Такое решение принято в связи с ранее анонсированным усилением зависимости GNOME от systemd, делающим невозможным запуск gnome-shell/mutter на системах, свободных от systemd (к которым относится в том числе и использующий OpenRC Artix Linux), без нетривиальных патчей. Разрабатывать которые у мейнтейнеров нет ни времени, ни желания.
Всем привет. В этой статье я хотел бы поделиться набором рецептов, которые позволяют реализовать некоторые мелкие фичи в WM. Эти фичи обычно есть из коробки в DE вроде KDE, но переезжающие на WM о них особо не задумываются. Между тем их наличие повышает удобство работы. Я фокусируюсь на Sway, которым пользуюсь с момента выхода 1.0-alpha1, но большинство этих рецептов должны подойти и к другим WM, даже не обязательно использующим Wayland.
В этой статье я хотел бы рассказать о том, как управляю конфигурацией системных папок (/etc, /usr, etc) на своих машинах.
Для таких целей часто советуют применять инструменты вроде stow, ansible или разнообразных Docker Swarm с Kubernetes (для этих не хочу даже ссылки давать), но я их не использую.
Я создаю свои пакеты (для пакетного менеджера дистрибутива) и публикую их в своих репозиториях. Можно конечно заливать все нужные файлы руками по ssh (раньше я так и делал), но у пакетов есть важное преимущество: с их помощью легко не только добавлять или обновлять файлы, но и удалять их, и в целом контролировать, что есть в системе. Это предотвращает её захламление. В статье описано, как это делается для Alpine Linux (которым я пользуюсь на домашнем ПК) и, кратко, для Debian/Ubuntu.
Как я уже писал раньше, в систему инициализации OpenRC недавно добавлена возможность запускать сервисы в пользовательской сессии. В этой статье я покажу, как этим пользоваться, на примере pipewire в Alpine Linux.
Что было раньше
Раньше в пакете с pipewire поставлялся (и до сих пор поставляется) скрипт /usr/libexec/pipewire-launcher, который предлагалось прописывать в конфиге sway. Особенность этого сетапа в том, что после остановки Sway все запущенные им в background процессы оставались висеть в памяти, и перед последующим запуском их предлагалось прибивать с помощью pkill. Не говоря уже про полное отсутствие логов, их не было.
OpenRC – система инициализации для Linux-систем, которая поставляется вместо systemd в таких дистрибутивах как Gentoo и Alpine Linux.
В ветку master репозитория openrc добавлена функциональность, необходимая для запуска сервисов в сессии пользователя с помощью этой системы инициализации.
Конфигурационные файлы и скрипты инициализации пользовательских сервисов размещаются в следующих папках:
Все поставляемые с openrc утилиты, такие как собственно openrc и rc-*, получили дополнительную опцию --user / -U для работы с пользовательскими сервисами.
Данные изменения вероятно войдут в ещё не выпущенный релиз openrc 0.57.
нижняя панель — lavalauncher. Кстати, проект заброшен мейнтейнером. Единственное назначение — открыть браузер с телеграмом при запуске, для всего остального есть sway-launcher-desktop;
шрифт - Noto Emoji для значков типа громкости с сетью, и Cascadia Code для всего остального
Все это запускается под супервизором s6-svscan, потому что в openrc нет пользовательских юнитов. А если бы и были, то я бы огреб тех же самых проблем, что в systemd с пробрасыванием переменных окружения, корректным завершением при выходе и т.п., а так все просто и понятно.
Редактор — neovim с плагинами nvchad. В редакторе происходит процесс запиливания аналога wlr-sunclock без GTK, librsvg и прочей хрени, зато с корректным отображением линий терминатора.
Из опыта использования Alpine: если кому интересно — иногда встречаются небольшие wtf-ы. В опциях загрузки почему-то надо обязательно прописывать rootfstype=ext4, иначе не смонтируется. Yambar в репах собран без модулей, qt5ct и qt6ct почему-то только в testing, а pytorch (он мне нужен по работе) нет вообще нигде. А pytorch с офсайта собран только под glibc, парам-парам-пам. Впрочем, все рабочее один хрен в контейнерах. В целом — один хрен, тот же софт что в любом другом линуксе.
Pipewire в Arch обновился до версии 0.3.17, и теперь пакет pipewire-pulse конфликтует с pulseaudio. Похоже, скоро этому примеру последуют и все остальные мейнстримные дистры. Ну что же.
systemctl --user enable pipewire-pulse
Pavucontrol, pactl и всё остальное использующее пульсу не заметило подмены. Единственная проблема оказалась с микрофоном: чтобы он задетектился, пришлось править конфиг pipewire
Документации чуть менее чем никакой, но звук кажется идёт. А буквально пару часов назад в master-ветку сабжа добавили поддержку AptX и AptX-HD. Время танцевать с гробом пульсы?