Чи є життя після macOS, або Як я переїхав на Linux десктоп і не шкодую
Ось уже третій місяць поспіль для щоденної роботи я використовую Linux. Як людина, що до останнього їла кактус Тіма Кука, але змогла зіскочити, я ділюсь з вами досвідом переїзду з macOS на Linux та заохочую робити те саме.
Початок
З 2007 по 2015 я працював на Windows. На роботі в мене спершу був десктоп з Windows NT 2003, здається. Потім я переїхав на ноутбук ThinkPad. NT 2003 оновили до Windows 7. На той час я 100% працював з Java, тому проблем у мене не виникало.
У 2015 я змінив роботу, і там отримав MacBook Pro 13″ 2015 у мінімальній комплектації, з 128 GB SSD та 8 GiB RAM. Я досить швидко освоївся та нарешті збагнув, чому всі розробники на конференціях використовували макбуки та писали про них в статтях, туторіалах тощо. Це ж юнікс для людей! Жодних проблем зі встановленням усіляких SDK, бібліотек, інструментів. Жодних проблем з компіляцією того, що для Windows потребувало б якого-небудь Cygwin або MinGW. Чудовий UI, наявність усіх необхідних програм. Усе круто, я був задоволений, мені подобалось користуватися моїм ноутбуком. Особливо тачпадом — він не люфтив, точно передавав усі рухи та жести. Спочатку я продовжував за старою звичкою користуватися мишею, та потім відмовився від неї взагалі.
Минали роки. Пам’ять SSD засмічувалася XCode, образами емуляторів, кешами Gradle та npm. Швидкодія знижувалась, оперативної пам’яті для IntelliJ майже завжди не вистачало, система йшла у своп, але я це все терпів. Тому що зручно, тому що звик і тому що тачпад.
Раз на декілька місяців я запускав ncdu та розчищав авгієві стайні на диску. З часом я навіть придбав SD-карту зменшеного розміру, спеціально для макбуків, яка вставляється у слот та не випирає з корпусу. На неї переніс старі проекти та медіафайли.
У 2017 я почав замислюватися про апгрейд, адже вже тоді стало очевидно, що 8 гігабайт пам’яті абсолютно недостатньо для комфортної розробки та існування. Проте Apple почала подавати тривожні знаки: макбук 2016 року випустили без портів, без MagSafe та, як виявилося за певний час, ще й з поганою клавіатурою. Функціональні клавіші замінили на беззмістовний тачбар.
Незважаючи на те що я був готовий витратити 2k+ баксів за оверпрайснутий шматок алюмінію з нульовою ремонтопридатністю та апгрейдабельністю, зламані клавіатури мене зупинили, тож я вирішив чекати. Спочатку покладав надії на 2017 рік, потім на 2018, потім на 2019.
Сумніви
У роки очікування я щомісяця читав на HN пости про те, як все погано у нових моделях, клавіатури не покращуються, процесори перегріваються та тротлять, порти вбивають пристрої, шлейфи переламуються, тачбар не потрібен — і взагалі, схоже, що Apple більше не цікаво виробляти якісну техніку. Люди скиглили, проте продовжували їсти кактуси. Хтось писав про свій досвід переїзду на Linux або Windows, хтось наважувався купити новий ноутбук та страждав. Я ж продовжував абияк існувати зі своїм улюбленим, але таким повільним макбуком та мріяти про той день, коли за три куски я зможу придбати якісну техніку.
У цей час я створив декілька тем на форумі DOU — «лінукс на ноутбуці» та «хакінтош», намагаючись скласти уявлення про актуальний стан альтернативних рішень. Відгуки були дуже різними: хтось вже сто років як сидить на лінуксах і йому ок, хтось стверджував, що я маю залишитися з макбуком, інші казали, що вінда та WSL готові для роботи.
Увесь цей час у мене під столом стояв десктоп із Windows. Нічого особливого — core i7 4770, 16 GiB RAM, AMD RX 570. Там я грав у Counter Strike, писав гітару та голос (адже macOS не підтримує мою досить стару звукову картку, а Windows 7 — підтримує). Час від часу мене накривало, і я думав про те, щоб оновити цей десктоп новим залізом і поставити туди хакінтош, але всі ці рухи якось не надихали. Замолоду я полюбляв порпатися з кряками та іншим варєзом, але зараз хотілося просто натиснути одну кнопку та отримати робочу систему.
Я навіть розглядав придбання старого відра (Mac Pro), але абсолютно неадекватна вартість ($3k) купи застарілого брухту мене зупинила. Моноблоки теж не радували вартістю, mac mini — швидкодією. До macOS я вже звик, та змінювати щось не хотілось абсолютно. Проте регулярне користування вінодвсодекстопом, де все працювало дуже швидко, почало мене підточувати, і зерна сумнівів дали серйозний урожай.
Я замислився про те, щоб поставити на десктоп лінукс і працювати за ним. Люди ж якось живуть? Та й 2019 рік надворі, прогрес не стоїть на місці. Коли моя шхуна ще ходила океанами аутсорсу, всі наші розробники працювали за лінукс десктопами — в когось Mint, в когось Ubuntu — і почували себе чудово. Урешті-решт я вирішив спробувати. Вирішальним фактором виявилось те, що для хакінтоша потрібна була флешка на 16 гігабайт, а в мене була тільки на 4. Шукати чи купувати нову флешку я не хотів, тож пішов на DistroWatch і почав роздивлятися, що там зараз у тренді.
Муки вибору
Я звузив коло дистрибутивів до deb-based, адже, на мій суб’єктивний погляд, вони значно популярніші за RPM та інші арчлінукси і генту. З CentOS я працював багато, та, як правило, імовірність знайти вирішення своєї проблеми на Stack Overflow для CentOS нижча. Тож я навіть не дивився у бік не Debian-based дистрибутивів (окрім Manjaro). Отож, наслухавшись мудрих порад з DOU та ще раз переглянувши рейтинги DistroWatch, я вирішив почати з MX.
Завантажив дистрибутив з офіційного сайту, завантажився з флешки, за 5 хвилин встановив. Я вже не пам’ятаю точно, що не запрацювало, можливо, застарілі версії деяких потрібних мені пакетів (MX базується на Debian), але з якоїсь причини MX мене не влаштував. Далі я перейшов до активно рекомендованого на DOU Manjaro. Завантажив варіант з Xfce, встановив. Після старту виявилося, що не працює Wi-Fi — ніяк не хотів підключатися до моєї домашньої мережі. Порпатися з пошуком необхідних драйверів не було жодного бажання, тож я перезавантажився у Windows та пішов шукати інший дистрибутив.
Я дещо засмутився, адже мені здавалося, що периферія
Ubuntu було завантажено та встановлено, здається, все запрацювало, і я навіть почав налаштовувати SDK, оточення і таке інше, але потім зненацька зрозумів, що GNOME або ж Unity, чи як в них називається графічна оболонка, мені зовсім не до вподоби. Тобто взагалі не подобається. Вони там ще напхали якихось зондів, рекламу і місцевий апстор, коротше кажучи, якось воно взагалі не зайшло, і хоча я вже встановив IntelliJ, налаштував RVM та викачав проекти, все одно вирішив відмовитися.
Я знову засмутився. Невже доведеться купувати флешку на 16 гігабайт та ставити хакінтош? Чи апгрейдити макбук? Але щойно я його відкрив та запустив IntelliJ, то знову сповнився рішучості спробувати лінукс ще раз. Загадавши, що у трьох розробників з моєї шхуни було встановлено Mint, я вирішив дати йому шанс. Як завжди, інсталяція закінчилася за 5 хвилин, і тут — о диво! — під час старту системи я почув звуки привітання!
Невеличке пояснення — чому це мене так здивувало? Річ у тому, що колонки та навушники в мене під’єднано до звукової картки
Зовнішній вигляд оболонки Cinnamon мене теж дуже потішив — із всіх протестованих (GNOME, KDE, i3) ця виявилась найгарнішою.
Робоче оточення
Коли я ще ходив під вітрилами на своїй шлюпці, то бачив, що один з кофаундерів, який працював якраз на Mint, мав проблеми зі Skype — MS чи то не підтримував десктопну версію, чи підтримував її погано, одним словом, йому доводилося працювати у Web-клієнті.
Виявилося, що зараз завдяки тому що весь софт Electron-ізовано та запаковано, проблем з програмами для лінуксу немає жодних. Майже в усіх виробників, програмами яких я користуюсь, є версія для Linux, яка функціонально нічим не відрізняється від інших платформ. Тож з точки зору програм переїзд був простим та безболісним. Зупинюся на задачах, аби було приблизне розуміння, що мені потрібно: щодня я займаюся розробкою на Java, Ruby on Rails, Python, Node.js та трішки фронтендом. Отож, що я використовував на macOS та що так само використовую на Linux:
- IntelliJ IDEA — основний інструмент, який годує мене вже десяток років. Працює, звісно, без проблем, тому що JVM.
- Telegram, Skype, Slack, Viber, Zoom — месенджери та відеоконференції теж всі працюють без проблем, що нативні, що з-під електрону.
- Браузери — Firefox, Firefox Developer Edition, Firefox Beta, Firefox Nightly, Iridium. Я навіжений і для кожного замовника чи проекту тримаю окремий браузер, щоб не перетиналась пошта, акаунти для браузерів тощо. Тут теж все зрозуміло — працює як треба. На macOS я теж користувався Firefox. Так, я знаю про профілі, але вони мені не подобаються.
- Steam — пограти в Counter Strike: Global Offensive (який працює під лінуксом нативно).
- Discord — працює ок, але крашиться раз на годину. Проблему маю не лише я. Жити можна.
- Postman, VS Code (майже не використовую) — абсолютно аналогічні тому, що є під Windows aбо macOS. Слава електрону.
Ось і весь десктопний софт, який я використовую щоденно. Міграція минула без проблем, буквально за один вечір. MS Office в мене не встановлено, вистачало Numbers. Натомість в Linux є LibreOffice, ніби норм, але я ним не дуже користуюсь — немає потреби. Фотошоп мені не потрібен та не був встановлений на macOS. iTerm успішно був замінений місцевим терміналом. Я не користувався особливостями iTerm, тому мені норм. Зверху поставив Oh My Zsh з такими самими плагінами та темами, як і на macOS. Крім того, звісно, було встановлено купу софту для розробки: перш за усе RVM, потім Node, Pyenv, Docker, нативні бібліотеки для PG/MySQL/Redis і т. д., те, що під macOS не завжди встановлюється без нюансів (хоча команда brew працює круто, тут жодних заперечень).
До речі, Docker я практично не використовую саме як робочий інструмент (знаю, що дехто піднімає собі базу даних або інші сервіси) — так, інколи перевірити, що контейнери коректно збираються. На macOS докер я не встановлював (тому що немає місця та тому що раніше він потребував додаткових програм для віртуалізації — не впевнений, як зараз з цим справи), але під лінуксом все працює дуже швидко. І білд, і запуск.
Минуло декілька днів, і я відчував себе майже як риба у воді. З робочими питаннями я розібрався, залишилося лише дещо підлаштувати: хоткеї та інші системні речі.
Система
Найболючішим питанням при зміні оточення для мене виявилася зміна хоткеїв, до яких я звик. На лінуксах вони, звісно, досить сильно відрізняються від macOS. Я вирішив спробувати переналаштувати клавіші під ті, які мав на macOS. Для цього я замінив місцями клавіші Win та Alt (клавіатура у мене з Windows-розкладкою, HyperX Alloy FPS на MX Red), перебив Alt+Tab на Win+Tab, вихід з програм на Win+W, одним словом — влаштував собі macOS для бідних :) Все це можна було зробити через UI, без редагування конфігурації.
Також вирішив питання з розкладкою. На macOS я користувався модифікованою розкладкою Іллі Бірмана, яка містила третій шар для російських букв ы э ъ ё, таким чином для набору текстів кирилицею мені не доводилося переключатися між українським та російським варіантами клавіатури. Приблизно тиждень я не поспішаючи шукав таке ж рішення, врешті-решт знайшов та підправив від себе (тут довелося трішки попоратися з конфігами). Переключення локалі по Caps Lock налаштовується через UI.
Аналог f.lux називається Redshift, хоча виглядає він не так гарно (а радше — взагалі не виглядає, для GUI треба встановлювати окрему програму). Для музики є досить адекватний Rhytmbox. Система оновлює себе нашим улюбленим apt-get update && apt-get upgrade — взагалі без проблем. Ті, хто мали справу з побудовою докер-образів, не пропадуть. Томи з NTFS автоматично підхоплюються на запис без додаткових налаштувань. Wi-Fi працює як треба, хоча деколи (раз на тиждень, або ще рідше) відвалюється та потребує перезапуску. Профілі для VPN можна встановлювати відразу у .ovpn форматі і відкривати через мережеві налаштування — не потрібно ставити ніяких TunnelBlick!
На жаль, не всі програми можуть підхопити мою круту звукову картку з не менш крутим конденсаторним мікрофоном як пристрій введення. Виведення — так, тут без проблем. А ось введення — ні. Я гадаю, що це якось вирішується, але поки що не хотів витрачати на це час. У мене є веб-камера з хорошим мікрофоном (яка, до речі, теж запрацювала з коробки). Але на macOS звукова картка взагалі не працювала, тому до лінуксу тут в мене претензій жодних. Хоча може якось знайду час, зберу докупи всі ці Jack, ALSA, PulseAudio та інші штуки — і радуватиму співбесідників оксамитовим голосом.
Зі шрифтами та згладжуванням у мене проблем немає. Працюю я за тим самим екраном, який підключав до макбука як зовнішній (Dell U2415, 16:10, 1920×1200), тож різниці не помічаю. Додаткових налаштувань я не робив. Suspend/resume працює без проблем. Кажуть, що на ноутах з цим негаразди, підтвердити чи спростувати не можу. На десктопі аптайм кілька тижнів стабільно. Перезавантажуюсь у Windows лише для звукозапису.
Ось як виглядає мій десктоп. Основні інструменти — IntelliJ IDEA та купка браузерів. CS:GO у віконному режимі, щоб розбавити воллпапер, граю я у фулскріні, звісно.
Проблеми
Декілька проблем з софтом та системою, які я так і не зміг вирішити або вирішив не інвестувати в них час:
- Відсутність ⌘+c/⌘+v. За роки роботи я вже настільки до цього звик, що змінити м’язову пам’ять було складно. В терміналі можна налаштувати цю комбінацію, але для всієї системи — зась. Доводиться пам’ятати, де ти зараз знаходишся, та натискати відповідні клавіші.
- Cinnamon чомусь вважає ок вішати на F10 системний хоткей (виклик меню). Довго не міг зрозуміти, чому в мене не закривається mc. Як відключити цю поведінку для всієї системи, не лише для терміналу, не знайшов.
- Те саме, тільки для Alt+клац мишкою. На macOS в IntellIJ таким чином працювало блочне виділення, а тут викликається якийсь системний менеджер вікон — абищо, коротше кажучи.
- Неможливо нормально відрегулювати швидкість миші. У мене миша Razer Deathadder, там досить висока роздільна здатність та, відповідно, висока швидкість курсору. Мінімальна швидкість для мене все одно занадто висока. Спробував щось там конфіжити через XInput, проте не допомогло. Урешті-решт просто змирився і забив, проблем руками буде менше. CS:GO вміє читати сирий потік з миші, тож там можна відрегулювати все як треба.
- В IntelliJ не працює мапінг клавіші win для хоткеїв, тобто не можна собі зробити ⌘+n для пошуку класу, потрібно CTRL+N натискати. Вже звик.
- Середня кнопка миші працює як CTRL+V, ще не знаю, як це відключити, але й не надто шукав.
- Спелчекер в FF якось дивно перемикає мови. Іноді не перемикає взагалі та детектить англійську як кирилицю і навпаки.
- За відчуттями, FPS в CS:GO дещо нижче, ніж під Windows, 100 проти
150-200, десь так. Хоча я все одно не перезавантажуюся та катаю з хлопцями під лінуксом. Драйвери на відекарту AMDшні.
І ще декілька дрібних проблем. Найсерйозніша з цього переліку — то перша, з копіюванням та вставкою, а інше — то дрібниці, я вже до всього звик та не помічаю різниці.
Ітогі падведьом ©
Уже три місяці Linux Mint є моїм основним середовищем. Макбук я відкриваю надзвичайно рідко, щоб скопіювати якусь конфігурацію або секрет, які не переніс раніше, щоб подивитися відосик у ліжку та деколи — щоб попрацювати на кухні. Також, поки я не купив новий ноутбук, макбук залишається тревел-девайсом. Зараз я нікуди особливо не їжджу, сиджу вдома, але розмірковую потроху про покупку ноуту, щоб поставити туди лінукс. Кажуть, що Thinkpad’и для цієї справи гарні, і я б залюбки придбав щось на кшталт такого.
Доки писалася та версталася ця стаття, Apple випустила 16″ макбук з фізичною кнопкою Esc та виправленою клавіатурою, що не ламається від крихт та пилу. Носити такого велетня у рюкзаку я не хочу, та й за macOS я, чесно кажучи, не надто сумую. Тачбар не потрібен, USB-C не потрібні — ну ви зрозуміли.
Також запропонували новий Mac Pro за космічним прайсом (з люто оверпрайснутою RAM), але віддавати $6k за залізо, яке, за відчуттями, навряд буде швидшим за мій десктоп, щось не хочеться. Та й, загалом, $6k для мене — це надто багато за залізо (навіть якщо це не включало оверпрайс за яблуко, а було лише ціною власне комплектних деталей). Я, на жаль, ще не маю такого рівня статків.
Зараз ще й AMD випустила Threadripper’ів купу, тож можна недорого докупити 24 ядра і непогано себе почувати. Утім, мені цілком вистачає чотирьох інтелівських, навіть з патчами на Meltdown та інші дірки камінців Intel.
...
Лише півроку тому я гадав, що нікуди не дінусь з macOS. Хоткеї, софт, звички здавалися мені непохитними. Утім, людина швидко адаптується. Буквально за два тижні після переїзду я вже почував себе комфортно та збирався писати цей матеріал, але вирішив почекати ще трошки, аби відловити усі проблеми та переконатися, що я дійсно можу працювати під лінуксом на довгій дистанції.
Тепер я можу зробити однозначний висновок — лінукс на десктопі живе. Можливо, ви маєте свої вимоги до софту, який є винятково під Windows або macOS, але я особисто вважаю, що для бекендера/дата-саєнтіста/фронтендера/андроїд-розробника Linux є відмінним вибором та повноцінною заміною macOS.
Тепер що стосується саме макбука. Уважний читач помітить, що весь матеріал присвячений саме десктопу і софту, а не тачпаду та блискучому алюмінієвому корпусу. Я не писав про вибір ноутбука, тому що ще цим не займався. Але найімовірніше дивитимуся у бік ремонтопридатних ноутів. Якщо все працює на десктопі — значить, можна завести на ноуті.
Швидкість та апгрейдабельність
А ось що мене тішить у новій робочій станції понад усе — то це швидкість її роботи. Я неодноразово писав про важливість хорошого робочого заліза, швидкості збірок та компіляцій для щоденної роботи. У мене старий процесор — core i7 4770, лише 16 гігабайт пам’яті, дешевий SSD Crucial (адже матплата в мене теж стара та не вміє завантажувати систему NVMe, до того ж немає m.2 слоту), і все це працює суб’єктивно просто в рази швидше за макбук (на якому, між іншим, процесор на кілька поколінь старший та й SSD, напевно, не гірший). Настільки швидше, що я не чекаю, доки відкриється проект в IntelliJ, браузери відкриваються моментально, збірка Webpack навіть не встигає підняти оберти штатного вентилятора, і взагалі все гаразд.
Я майже не дивлюся в htop і не цікавлюсь, що ж з’їло всю оперативну пам’ять. Я припинив користуватися ncdu та індиферентний до оновлень системи, кешів, логів та іншого мотлоху, який залишають за собою програми у процесі життєдіяльності.
В перші тижні у мене було відчуття, наче до цього п’ять років бігав з вантажем на ногах — настільки швидше все почало працювати. Я навіть відчував легку ейфорію та бажання попрацювати (чого зазвичай зі мною не трапляється). Тепер організм уже звик до високої швидкості та сприймає це як належне. Кілька днів тому відкрив макбук подивитися кіно і був вражений, наскільки той повільний.
Тепер я знаю, що якщо завтра мені потрібно буде додати потужності, то я зможу просто купити новий процесор або матплату + процесор. Поставити одне замість іншого, і життя знову заграє швидкістю. Не потрібно думати про мотлох на диску — якщо треба буде збирати товсті образи або перемелювати бігдату, я просто прикуплю SSD за $50 і буду щасливий.
Я ніби повернувся назад у дитинство, коли за браком коштів доводилось лише дивитися на прайс-листи, огляди та рекламні проспекти у журналах «Компьютерное обозрение» та CHIP, тільки тепер можна купити все, що там продають, і зовсім не потрібно чекати, доки Apple поверне модель 2015 року, з нормальними портами, магсейфом та можливістю проапгрейдити або відремонтувати пристрій.
Якщо ти, читачу, все ще сидиш за старим макбуком, я гадаю, що ти тепер знаєш: за межами macOS життя є.
Fin.
Якщо вам сподобалося, як я пишу, то долучайтеся до мого телеграм-каналу.