Обожаю за глубокую кастомизацию, скриптинг, за культуру open source. Ненавижу, потому что на десктопе Linux пьёт кровь.
Было время, когда я десятки раз перекомпилировал Gentoo на своём ноутбуке, потому что узнавал про новый USE-флаг, который вырезает весь ненужный мне мусор. Я постоянно читал логи установки пакетов и компиляции, отслеживал ошибки и убеждал себя в том, что я делаю свою систему чище и быстрее.
Я был в одном шаге от Linux from Scratch.
Когда я хотел в очередной раз узнать, стоит ли мне для root использовать xfs, btrfs или f2fs (она вроде самая быстрая по тестам на Phoronix), то я читал Arch Wiki, а потом Gentoo Wiki (чтобы углубить понимание). Наверное, профессиональный писатель с меньшим энтузиазмом перечитывал “Элементы стиля”, чем я “Installation guide - ArchWiki”.
Понятное дело, что это всё качало скиллы и избавляло от ощущения, что ты пользуешься чёрной коробкой. Но уже тогда я чувствовал, что от всего этого пахнет нездоровым фанатизмом.1
Назревает вопрос, что же тогда отвратило меня от Linux? Почему фанатизм угас и я предал элитарную стаю красноглазных линуксоидов?
Проблемы Linux
Начну с современного, с наболевшего.
Мне даже как продвинутому пользователю плевать, через какой протокол рисуются окна – через X11 или Wayland. Я пользуюсь программами, утилитами, пишу скрипты для bash и играю в игры. Мне важно, чтобы именно это работало стабильно и быстро.
Дерзну сделать предсказание, что год Linux на десктопе не наступит никогда.
Обилие дистрибутивов, способов упаковки пакетов и глобальный переход с X11 на Wayland (который ломает всё) – в совокупности это глобально ухудшает пользовательский опыт, делает его нестабильным. Явно или неявно, но это всё отвращает большинство людей использовать Linux.
Банально, если у Linux-юзера что-то поломалось, то разработчик, который сфокусирован на фичах своего приложения, едва ли захочет поднимать на (вероятнее всего) Mac виртуалку с Fedora, чтобы проверить, что там за ошибка с RPM-пакетом. Искать же под конкретный дистрибутив отдельного мэйнтейнера/разработчика – это головняк, который ещё хуже виртуалки. Возможно, ИИ в этом смысле может драматически изменить порядок вещей, но опять же – кто захочет жечь токены ради 4–5% Linux-юзеров?
Основная проблема Linux – это его разнообразие. И, пожалуй, меня радует тот факт, что хоть на серверах де-факто стала стандартом серверная сборка Ubuntu. На ней меня даже snap особо не раздражает. Даже скорее по-новому заставил посмотреть на автообновления.
Я мог бы легко пробежаться по всем популярным дистрибутивам и в красках описать внушительное количество проблем, которые успел на них пережить и решить. Но знаете, это всё утомительно. В этом слишком мало геройского и слишком много нездоровой тяги к тюнингу. В конечном итоге ни один дистрибутив не идеален. И мне кажется, куда более разумным сказать, к чему продуктивному и полезному пристрастил меня Linux.
В чём хорош Linux на десктопе
Уровень отвращения к плавающим окнам в Windows у меня по модулю равен любви к AwesomeWM, которым я пользовался многие годы.
Неожиданно для многих, но для меня Linux хорош тем, что в нём есть стабильно работающие тайлинговые менеджеры.
Кажется, что это ультранишевая вещь, но на самом деле, если дать обычному юзеру Niri, то через пару дней у него сорвёт крышу от того, насколько эффективный порядок можно организовать в работе с приложениями.
Помимо того, что тайлинговые менеджеры дают порядок, они также хорошо переплетаются со скриптингом и другими маленькими утилитами. Точнее, даже они способствуют тому, чтобы решать небольшие проблемы через скрипты и Rofi, а не через установку полноценных приложений. Это очень напоминает Инспектора Гаджета, который вроде бы выглядит как человек, но по сочетанию клавиш у него вываливается список с десятком через пайп (|) вызывающихся инструментов.
Также в моём случае тайлинговые менеджеры способствовали использованию TUI-приложений. Они банально быстрее и удобнее, чем полноценные аналоги. Даже сейчас на MacOS я использую Yazi как файловый менеджер, потому что это в 1000 раз быстрее, чем кликать мышкой по Finder.
Кстати, возможно из-за Yazi (и ранее из-за Ranger) я приучил себя к быстрому разбору любых директорий и файлов. Вероятно, из-за этого я также с трудом понимаю людей, которым нужен ИИ, чтобы разобрать их файловые помойки.
В конечном итоге ценность Linux в том, что он сближает тебя с консолью и терминальными утилитами, которые на порядки эффективнее многих GUI-приложений.
Сам unix-way не менее полезен. И сомневаюсь, что в суррогатах вроде WSL или через SSH-подключения этот паттерн можно глубоко распробовать и сделать частью повседневного мышления.
Но так или иначе никакой терминал и unix-way не спасёт ноутбук от физического износа.
Плавно к MacOS
Изначально и очень долгое время я считал, что MacOS – это что-то близкое к игрушечной, лакшери операционной системе. Я всегда думал: зачем мне этот алюминиевый кирпич? Чтобы как лакшери мальчик зависать в кофейнях, пить раф, открывать в ней свой макбук и делать вид, что я работаю?
Вдобавок тогда маки были горячими, тяжелыми, шумными, плюс была незнакомая операционная система. На нем даже MathCad нельзя было запустить. Зачем мне компьютер без MathCad?
Вспоминается первый раз, когда я задумался о MacBook как о чем-то серьезном.
Я часто по вечерам зависал в одном баре. Всякий раз, когда я пересекал порог, то тут же объявлялся мой товарищ web-разработчик. Он почти всегда брал работу в бар. Вся его работа целиком и полностью была сосредоточена на написании кода. От него я узнал, что такое pull request и review.
Он носил с собой Mac с такой дурацкой сенсорной панелью вместо F-клавиш. Он упорно меня убеждал, что это удобно, а я упорно говорил, что он отдал кучу денег за чушь. Получается, что история рассудила этот спор в мою пользу.
Кстати, он жил в 3-ёх минутах от бара. Никому не советую жить так близко к хорошим барам (по крайней мере, если вы не знаете меру и всегда пролетаете мимо пика Балмера, если таковой вообще существует).
Меня впечатлял не столько его Mac, сколько зарплата, которую он получал, используя этот Mac.
Нельзя же получать много денег, используя игрушечную ОС, ведь так?
Хотя у меня уже тогда был ноут, причем дороже его MacBook и с дискретной видеокартой Nvidia. Я мог установить на него Windows/Linux и без проблем работать со всеми нужными приложениями. Именно на нём я гонял Gentoo и десятки раз пересобирал ядро. Мне все нравилось. Я любил этот ноут. Зачем его менять?
Ответ оказался простым. Устаревание…
Деградирующая батарея, залипающие клавиши, ломающиеся петли, которые держат экран, Nvidia больше не поддерживает в драйверах мою архитектуру, дроссельный треск, непонятно откуда возникающее замыкание на USB портах, PyTorch и TensorFlow сыплет новыми ошибками о несовместимости с моим железом, даже Ollama сказала, что теперь модели будет гонять только на моем CPU.
Я старался ноутбук поддерживать в хорошем состоянии, но он все равно нещадно устаревал вопреки моей заботе. Хотя так до конца он и не умер.
Я начал носить с собой здоровенный повербанк и зарядник, чтобы просто мочь 3 часа писать текст не дома. В сумме с ноутом 5-6кг. Даже качка задолбало бы носить столько железа.
Короче говоря, это всё тяготило, и я начал понемногу думать, чем же стоит заменить мой ноут. Я начал присматриваться, и даже несмотря на часто меняющееся окружение, оказалось, что вокруг меня вообще никто не использует Windows или Linux. Я приглядывался на конференциях, в аудиториях, на работе. В других компаниях смотрел, чем люди пользуются. Там тоже подавляющее количество людей использовали именно технику Apple.
Сейчас я, в общем-то, понимаю, почему используют именно эту технику. Дикая производительность M-процессоров, впечатляющая автономность у ноутбуков, множество качественного софта для работы и креативности, микроскопическое количество проблем у связки железо + ОС – это именно то, что нужно юзерам.
Но я ведь Linux-юзер. Даже если я перейду на MacOS, наверняка же мне придется терпеть ограничения в кастомизации, страдать от того, что я использую проприетарную операционную систему, что у меня нет глубокого доступа к каким-то системным процессам.
MacOS
Значит, у MacBook есть всего один критический недостаток. Яблоко больше не светится. А ведь это круто выглядело. Стильно. Выпендрёжно. Если к этому добавить черную водолазку и заправить её в синие джинсы, то успех гарантирован.
Я серьезно. С Windows ты страдаешь, с Linux борешься. У MacOS нет критических проблем – ты с ней работаешь и получаешь лучше из двух миров.
У MacOS unix-консоль, которую я так люблю, для нее есть тайлинговые менеджеры и при этом есть достаточно возможностей, чтобы по минимуму видеть саму операционную систему.
А ещё стабильность… Мне теперь не нужно делать симлинки, потому что произошло обновление и какие-то приложения не могут найти нужные для них версии библиотек (ненавижу это). Не нужно самому переписывать PKGBUILD и делать самопальные быстрые патчи-заплатки в исходном коде. Мои волосы остаются на голове, потому что я закрыл ноут, открыл и он мгновенно включился. Без проблем. Без бегущих строчек лога с паникой ядра. Вы же понимаете о чём я?
Вдобавок все работает быстро. Крайне быстро.
А ещё же стали полноценно доступны Affinity Photo, DaVinci, iZotope RX. Это, конечно, на порядок более юзабельно и функционально, чем GIMP, Kdenlive и Audacity, которыми я пользовался до этого.
Да чего уж там, я на второй день поиграл в No Man’s Sky. Кайфанул от игры и от того, что ноутбук не издает ни единого звука (я решил взять Air - ему нечем эти звуки издавать… разве это не гениально выкинуть к чертям из ноута все вентиляторы?).
Возможно, вы скажете, что я проигнорировал критический недостаток: MacOS вообще-то так себе для игр. Но стоит тоже учитывать, что в моей голове лучший игровой опыт выглядит так
Лучший игровой опыт
Мягкий диван, здоровенный телек и Playstation. Пустой дом. Полный холодильник. Death Stranding. Неделя безудержного и беспрерывного гейминга.
Короче говоря, с новым ноутом я забыл о том, что у меня есть какие-то проблемы с библиотеками, паникой ядра или что нужно таскать 6кг железа ради 3-ёх жалких часов работы вне дома без розетки.
И все же ложка дёгтя
Хотя я Linux-фанат, меня глубоко удивил один факт. Я начал использовать MacOS, но по ощущениям я будто никуда не уходил. Сменились железки, слегка поменялся тулинг, и некоторые настройки переехали в GUI.
Мой развесистый zsh-конфиг с тонкими кэширующими оптимизациями зашел почти как влитой. Да и вообще все дотфайлы довольно быстро вписались в систему. Я по большей части лишь убрал специфичные для Linux программы и точно таким же образом через stow развернул свои дотфайлы.
У меня почему-то было стойкое ощущение, что интерфейс, все настройки MacOS прибиты гвоздями и мне придется мириться со всем этим, как если бы я использовал Windows.
Но нет. Те небольшие вещи, которые меня действительно раздражали, я поправил так же, как если бы был на Linux – через терминал и код.
Буквально в первые же часы я запустил терминал, установил пакетный менеджер brew, через него скачал нужный софт, поправил конфиги – ощущение будто я никуда особо и не уходил.
Первое, что меня сильно раздражало – это немгновенное переключение языка через 🌐 fn. При моей скорости печати это буквально выглядит как жесткий, тормозящий лаг.
Я отключил в настройках действие на 🌐 fn. И сделал переключение с помощью Karabiner и Hammerspoon.
В Karabiner я переназначил 🌐 fn на F18, чтобы нигде не возникало проблем с корректным считыванием именно этой клавиши.
$HOME/.config/karabiner/karabiner.json
...{ "description": "Fn: F18 on tap (Hammerspoon), F1-F12 on hold with function keys", "manipulators": [ { "type": "basic", "from": { "apple_vendor_top_case_key_code": "keyboard_fn" }, "to": [ { "apple_vendor_top_case_key_code": "keyboard_fn" } ], "to_if_alone": [ { "key_code": "f18" } ], "parameters": { "basic.to_if_alone_timeout_milliseconds": 200 } } ]}...
В Hammerspoon на F18 сделал мгновенное переключение раскладки.
$HOME/.hammerspoon/init.lua
hs.hotkey.bind({}, "F18", function() local current = hs.keycodes.currentSourceID() if current == "com.apple.keylayout.US" then hs.keycodes.currentSourceID("com.apple.keylayout.Russian") else hs.keycodes.currentSourceID("com.apple.keylayout.US") endend)
Про полезность этих двух софтин я скажу в разделе про приложения.
Во-вторых, в MacOS используется grep из BSD. Он не поддерживает опцию -P. Также системный Bash достаточно древний и в нем нет mapfile. В общем пришлось переписать некоторые скрипты на более универсальные решения.
Я почти уверен, что если бы мне пришлось делать это без искусственного интеллекта, то я бы куда злее написал об этой проблеме :)
В-третьих, стрелки на ноуте микроскопические. Нажимать на них неудобно. На Linux у меня все меню переключались на ctrl+j/k, но на MacOS оказалось куда более удобным переназначить caps lock как клавишу super и стрелки сделать на super + h/j/k/l. Т.е. это чисто vim-style. Причем это будет работать везде. Кайф!
Делается это через Karabiner. Тут я, пожалуй, полный конфиг прикреплю вместе с перебиндом клавиши fn:
Крайне функциональный лаунчер. Хотя самое нужное для меня в нём то, что на приложение можно поставить хоткей, и он будет работать по принципу switch or launch. На Linux я для этого использовал скрипт от юзера на Habr.
Изначально я хотел поставить Alfred ради более глубоких возможностей кастомизации. Но Raycast в бесплатной версии более чем покрывает мои потребности.
Тайлинг-менеджер в стиле i3. Его я выбрал потому, что в нём есть раскладка “аккордеон”, когда приложения на рабочем пространстве открываются друг под другом.
Это мой типичный подход, который я использовал в AwesomeWM. Суть в том, что у меня самый частый паттерн – это переключение между двумя пространствами (opt + tab) и переключение между приложениями на одном пространстве (opt + grave).
Крутая софтина для переназначения клавиш. Хотя я её использовал для создания клавиши super и переноса стрелок на hjkl, но с помощью неё можно также создавать дополнительные слои и на них назначать разные действия (перенос окон, открытие приложений и прочее).
По сути must-have программа для тех, кто не хочет вовсе убирать руки с клавиатуры.
Делает текстовые замены по триггерам. Для меня киллерфичей является то, что можно выводить результаты скриптов. По-моему, такого больше нет ни в одном текстовом экспандере.
Скриптинг на Lua, который через API обращается к разным системным функциям MacOS.
Я посмотрел, что делают продвинутые пользователи в нём. Для меня это пока что высокие и тонкие материи.
Просто для примера:
M.aw_browser = aw.new(function(appName, event, _app) if appName == "Brave Browser" and event == aw.deactivated then local clipb = hs.pasteboard.getContents() if not clipb then return end clipb = clipb:gsub("^(https://github%.com/.*)%?tab=readme%-ov%-file(#.*)", "%1%2") hs.pasteboard.setContents(clipb) endend):start()
Это скрипт, который при потере фокуса Brave-браузера копирует из него в буфер обмена и очищает url, если там был открыт GitHub-репозиторий.
Просто насколько нужно далеко зайти в оптимизации, чтобы такое решить автоматизировать?
Я страдал и мучался, чтобы подключить Groq через скрипты и Shortcut, AppleScript, а оказалось, что есть Spokenly, который делает это в бесплатной версии просто и быстро.
Вещь, которая драматическим образом может уменьшить процент работы с мышью или тачпадом. На Linux я пытался использовать подобные решения, но они были либо медленные, либо неточные.
Эта штука работает мгновенно. Мне она очень нравится, хотя я про неё постоянно забываю и зачастую таки тянусь за мышью.
Подводя итоги
Я думал, что перешел в другую экосистему, с другими правилами, но по сути я сменил железо на более мощное и энергоэффективное, которое стабильно работает на unix-подобной системе.
Когда-то давно попалась статья про телеметрию в Apple. Суть была в том, что Apple агрегирует невероятно огромное количество информации о том, как ты используешь их приложения, на что ты нажимаешь и как часто. По этой телеметрии можно было легко восстановить всё поведение пользователя.
Для меня подобное является невероятно наглым вмешательством в жизнь человека. Усугубляет ещё то, что эта телеметрия неотключаема.
Хотя та статья упала в копилку того, что не стоит использовать MacOS, сейчас же я думаю, что ведь можно поставить Little Snitch и запретить ноутбуку отдавать данные обо мне купертиновцам.
Если операционная система даёт инструменты для того, чтобы защитить свои персональные данные, и если система сама по себе функционально близка к Linux, то так ли важно, что она является проприетарной?
Footnotes
Когда-то попалось схожее под духу видео, где парень рассказывал, как пытался достичь предела минимализма и почему это нездоровое желание (DWM не предел. Предел – это tty и текстовый браузер). ↩