Перейти к содержимому

Omarchy: система для разработчика

В разделах про Linux и Docker мы разбирали серверную сторону: systemd, сети, контейнеры. Но есть машина, на которой ты проводишь больше всего часов, — твоя рабочая. И вот тут у большинства разработчиков забавный разрыв: продакшен описан кодом, пайплайны воспроизводимы, а личный десктоп собран кликами мыши за пару вечеров и никак не восстанавливается, кроме как «ну, я вроде помню, что там ставил».

Omarchy закрывает именно эту дыру. Это не дистрибутив в классическом смысле, а слой поверх Arch Linux с тайловым оконным менеджером Hyprland: готовая, красивая, горячая конфигурация системы, где всё уже подобрано — терминал, лаунчер, панель, темы, шрифты, и при этом всё остаётся текстовыми конфигами, которые можно править и держать в Git. Философия проекта проста: разработчик не должен тратить неделю на сборку окружения, но должен иметь возможность докрутить любой винтик.

В краткой версии учебника мы просто перечисляли полезный софт для Arch (см. приложение «Инструментарий для Arch Linux»). Здесь идём глубже: как Omarchy устроен изнутри, почему его конфиги нельзя править в одном месте и нужно в другом, и что на самом деле происходит, когда ты меняешь тему одной командой — а цвета меняются в терминале, панели, редакторе и браузере одновременно.

Слово opinionated — «имеющий мнение» — здесь ключевое. Vanilla Arch не имеет мнения ни о чём: он даёт тебе ядро, pacman и пустой экран, а дальше — собирай сам. Это свобода, но свобода ценой недели чтения вики и перебора вариантов. Omarchy имеет мнение обо всём: терминал будет Alacritty или Ghostty, лаунчер — встроенное меню Omarchy, панель — omarchy-shell, шелл — zsh с нормальным промптом, хоткеи — как у нормальных людей, а не как в сыром Hyprland.

Парадокс в том, что ограничение выбора ускоряет. Когда терминал, шрифт и лаунчер уже выбраны хорошо, ты не тратишь вечер на сравнение десяти терминалов — ты работаешь. А если выбор не нравится, никто не мешает его сменить: под всем этим лежит обычный Arch и обычные конфиги. Opinionated — это не «заперт», это «разумные дефолты».

Из практики: я видел немало сеньоров, чьё рабочее окружение — это «как-то само собралось за пять лет». Сломался диск — и неделя на восстановление, потому что никто не помнит, откуда брались все эти хоткеи и скрипты. С Omarchy окружение описано файлами в ~/.config, лежит в репозитории dotfiles, и новая машина поднимается за вечер: ставишь Omarchy, клонируешь dotfiles, готово.

Сердце пользовательского опыта — команда omarchy с подкомандами. Это тонкие обёртки над типичными задачами: поменять тему, поставить пакет, обновить систему, перезапустить компонент. Запоминать десятки команд разных утилит не нужно — есть один глагол.

Окно терминала
# Поставить тему во всех приложениях разом
omarchy theme set tokyo-night
# Посмотреть доступные темы
omarchy theme list
# Установить пакет (обёртка над pacman/AUR с учётом репозиториев Omarchy)
omarchy pkg add lazydocker
# Обновить систему и применить миграции Omarchy
omarchy update
# Перезапустить компонент после правки его конфига
omarchy restart shell

Разберём, что тут важно. omarchy theme set — не «сменить обои», а каскадное применение темы: цвета терминала, панели, лаунчера, Neovim, уведомлений, границ окон Hyprland. omarchy update — осмысленная замена голому pacman -Syu: помимо пакетов применяются миграции конфигов Omarchy, чтобы новая версия слоя не конфликтовала с твоими правками. omarchy restart знает, как корректно перезапустить shell, terminal или tmux, не роняя сессию.

Где лежат конфиги и почему /usr/share/omarchy трогать нельзя

Заголовок раздела «Где лежат конфиги и почему /usr/share/omarchy трогать нельзя»

Ключевой архитектурный момент, который ломает новичков: в Omarchy конфиги живут в двух слоях.

  • /usr/share/omarchy (и соседние системные пути) — дефолты, принадлежащие пакету. Они обновляются при omarchy update вместе с новой версией. Любая твоя правка здесь будет либо перезаписана, либо станет источником молчаливых конфликтов при миграции.
  • ~/.config — твой слой. Здесь живут hypr/, alacritty/, omarchy/ (конфиг и темы shell), nvim/, tmux и остальные конфиги, которые читают приложения. Hyprland, как и большинство современных утилит, следует спецификации XDG Base Directory: сначала пользовательский конфиг, потом системный дефолт.

Правило простое: хочешь изменить поведение — сначала посмотри, как это сделано в дефолте (/usr/share/omarchy — отличный читаемый справочник), а правь в ~/.config. Конфиг Hyprland, например, это ~/.config/hypr/hyprland.lua, и дефолтный файл Omarchy обычно сам подключает пользовательские overrides — тебе нужно только дописать свои строки, а не переписывать всё.

Окно терминала
# Посмотреть, как устроен дефолт, не меняя его
less /usr/share/omarchy/config/hypr/hyprland.lua
# Твои правки — только сюда
nvim ~/.config/hypr/hyprland.lua

Это тот же паттерн, что и в Docker: базовый образ не редактируют, поверх него добавляют слой. Пойми это один раз — и ты перестанешь бояться обновлений системы, потому что твои изменения физически отделены от чужих.

Hyprland и горячие клавиши: тайлинг за пять минут

Заголовок раздела «Hyprland и горячие клавиши: тайлинг за пять минут»

Hyprland — динамический тайловый композитор для Wayland. «Тайловый» значит: окна не плавают друг над другом, а раскладываются по экрану без пересечений; «динамический» — раскладка перестраивается сама при открытии и закрытии окон. Ты больше не ищешь окно мышью среди двадцати перекрывающихся — окон столько, сколько помещается, а остальное живёт на воркспейсах.

Базовый набор хоткеев Omarchy (все с модификатором Super, он же «клавиша Windows»):

  • Super + Enter — открыть терминал. Самая нажимаемая комбинация системы.
  • Super + Space — лаунчер приложений (меню Omarchy): начни печатать имя — Enter — запущено.
  • Super + 1..9 — переключение между воркспейсами. Воркспейс — отдельный рабочий стол: на первом редактор, на втором браузер, на третьем логи.
  • Super + Shift + 1..9 — перенести текущее окно на воркспейс.
  • Super + Q — закрыть окно, Super + F — fullscreen, Super + V — переключить окно в плавающий режим.

Мышечная память вырабатывается за пару дней, если заставить себя не тянуться к мыши. Приём из практики: распределяй воркспейсы по смыслу и держи распределение постоянным — «1 — код, 2 — браузер, 3 — терминалы с логами, 9 — мессенджер». Через неделю руки сами знают, куда прыгать, а переключение контекста перестаёт стоить внимания.

Терминал в Omarchy — Alacritty или Ghostty (оба GPU-ускоренные, оба конфигурируются текстом). Практической разницы для старта нет; важно другое: терминал здесь — первоклассный гражданин, а не «окошко для команд». Из него стартует весь следующий слой стека — Neovim и tmux, которым посвящены отдельные главы.

Открой lazygit или nvim с файловым деревом без правильного шрифта — и увидишь квадратики вместо иконок. Причина: TUI-приложения рисуют интерфейс символами, и для иконок используют глифы из Private Use Area юникода — точки, которых нет в обычных шрифтах. Nerd Font — это обычный моноширинный шрифт (JetBrains Mono, Fira Code), в который вшиты тысячи дополнительных глифов: иконки файлов, git-статусы, стрелки, логотипы технологий.

Окно терминала
# Проверить, какие Nerd Fonts установлены
fc-list | grep -i nerd
# Пример записи в конфиге терминала (alacritty.toml)
# [font]
# normal = { family = "JetBrainsMono Nerd Font" }

Тонкость: Nerd Font должен быть выбран в эмуляторе терминала, а не в системе вообще — терминал сам решает, каким шрифтом рисовать глифы. Если иконки «превратились в квадраты», в девяти случаях из десяти терминал смотрит не на тот шрифт. И ещё одна ловушка для SSH: шрифт рендерится на твоей машине, поэтому на сервере Nerd Font ставить не нужно — достаточно, чтобы он был на клиенте.

Под капотом: как тема доезжает до всех приложений

Заголовок раздела «Под капотом: как тема доезжает до всех приложений»

Самая красивая механика Omarchy — omarchy theme set. Снаружи это «поменялись цвета везде». Внутри — конвейер из трёх стадий, который стоит понять, потому что ровно так устроены все системы управления конфигурацией, которые ты встретишь дальше.

Стадия 1: тема как данные. Каждая тема в Omarchy — это директория с файлами-фрагментами: палитра для терминала, цвета для панели, схема для Neovim, цвета границ для Hyprland. Тема — не картинка, а набор значений, разложенный по форматам конкретных приложений.

Стадия 2: генерация и линковка. Команда берёт выбранную тему и материализует её в те места, откуда приложения читают конфиги: либо перегенерирует файлы, либо (чаще) обновляет симлинки — ~/.config/<app>/theme указывает на фрагмент активной темы. Приложение при этом думает, что у него «просто конфиг», и ничего не знает про Omarchy. Это классическая инверсия зависимости: система тем не влезает в приложения, а подсовывает им файлы, которые они и так читали бы.

Стадия 3: hot-reload. Файлы на месте — осталось, чтобы приложения их перечитали. У каждого свой механизм: Hyprland перечитывает конфиг сам при изменении, панель (omarchy-shell) подхватывает новые цвета на лету, терминал получает сигнал. Самое элегантное — Neovim: конфиг LazyVim слушает изменение файла темы и применяет новую цветовую схему в живой сессии, без перезапуска редактора. Ты меняешь тему системы — и открытый редактор перекрашивается на глазах.

Окно терминала
# Посмотреть, что реально поменялось после смены темы
omarchy theme current # какая тема активна сейчас
omarchy theme dir tokyo-night # где лежат файлы темы
ls -la ~/.config/alacritty/ # что поменялось в конфиге терминала

Почему это важно за пределами красоты: это живой пример паттерна «конфигурация как данные + генерация + реактивное применение», который дальше встречается везде — от Helm-шаблонов до feature flags. Omarchy просто показывает его на понятном, наглядном примере.

  • Правка /usr/share/omarchy вместо ~/.config. Уже разобрали, но повторю: это грабля номер один. Плохо: отредактировал дефолт, потерял при обновлении. Хорошо: скопировал фрагмент в ~/.config, переопределил там.
  • «Omarchy сломался после pacman -Syu» — почти всегда это «я обновил систему, но не запустил omarchy update с миграциями». Сначала пакеты, потом миграции, потом перелогин.
  • Квадраты вместо иконок. Не установлен или не выбран Nerd Font в терминале. Проверка: fc-list | grep -i nerd и семейство шрифта в конфиге терминала.
  • Ставить Nerd Font на сервер по SSH. Шрифт рендерит клиентский терминал; на сервере он бесполезен. Экономь время.
  • Пересобирать хоткеи с нуля в первый день. Дефолты Omarchy подобраны так, чтобы их учить. Сначала две недели на дефолтах, потом точечные изменения — иначе получишь уникальный конфиг, к которому не приложена ни одна шпаргалка.
  • Игнорировать воркспейсы и открывать всё на одном. Тайлинг раскрывается именно с воркспейсами; десять окон на одном экране — это возврат к хаосу, только квадратному.
  1. Чем тайловый оконный менеджер отличается от stacking (плавающего)? В stacking окна перекрываются, и навигация — через alt-tab и мышь. В тайлинге окна раскладываются без перекрытий, навигация и управление — клавиатурные, а воркспейсы заменяют «поиск окна глазами». Профит — не скорость нажатий, а снятие переключений контекста.
  2. Что такое XDG Base Directory и зачем он нужен? Спецификация, определяющая, где лежат пользовательские конфиги (~/.config), данные (~/.local/share) и кэш (~/.cache). Она позволяет держать home чистым, а конфиги — собирать в dotfiles-репозиторий одним путём.
  3. Почему нельзя править файлы, принадлежащие пакету? Потому что пакетный менеджер считает их своими: при обновлении они перезаписываются или конфликтуют. Правильный путь — слой переопределений: пользовательский конфиг, drop-in директории, overrides. Тот же принцип, что у systemd unit override и Docker-слоёв.
  4. Что такое Nerd Font и где он должен быть установлен при работе по SSH? Моноширинный шрифт с вшитыми иконочными глифами (Private Use Area). Нужен только на машине, которая рендерит текст, — то есть на клиенте с эмулятором терминала.
  5. Как ты перенесёшь своё окружение на новый ноутбук? Dotfiles в Git (всё содержимое ~/.config), установка базовой системы, клонирование dotfiles, симлинки или копирование, установка пакетов по зафиксированному списку. Цель — воспроизводимость за десятки минут, а не неделю воспоминаний.
  6. Чем Wayland-композитор (Hyprland) отличается от X11-сервера архитектурно? В X11 был отдельный сервер-процесс между приложениями и железом; в Wayland композитор сам является сервером — приложения отдают ему буферы напрямую. Меньше посредников, лучше производительность, но и вся ответственность (ввод, рендер, скриншоты) — на композиторе.
  1. Поставь Omarchy (на отдельную машину, в VM или рядом с текущей системой). Критерий: система загружается, omarchy theme list показывает темы, терминал открывается по Super+Enter.
  2. Проживи день без мыши для окон. Все переключения — Super+цифры, все запуски — Super+Space. Веди список моментов, где рука потянулась к мыши, — это карта того, что надо доучить.
  3. Смени тему и проследи каскад. omarchy theme set <другая>, затем найди, какие файлы в ~/.config изменились или куда теперь указывают симлинки. Критерий: можешь объяснить вслух путь темы до терминала, панели и Neovim.
  4. Сделай первое переопределение правильно. Поменяй один хоткей или один цвет, не трогая /usr/share/omarchy: только ~/.config. Затем выполни omarchy update и убедись, что правка выжила.
  5. Заведи dotfiles-репозиторий. Закоммить ~/.config/hypr, конфиг терминала и (по мере прохождения раздела) nvim и tmux. Критерий: git log репозитория рассказывает историю твоего окружения.
  • Omarchy — официальный сайт и документация — философия проекта, установка, команды.
  • Hyprland Wiki — первоисточник по конфигу композитора: хоткеи, воркспейсы, правила окон.
  • Arch Wiki — лучший технический справочник по Linux вообще, не только по Arch.
  • XDG Base Directory Specification — короткая спецификация, объясняющая, почему конфиги живут в ~/.config.
  • Nerd Fonts — каталог пропатченных шрифтов и объяснение, откуда берутся иконки в TUI.