Решил попробовать Void Linux в виртуалке. Заинтересовал тем, что в качестве инита используется runit.
Хорошая система инциализации, работает сама: создал симлинк в /var/service - runit сам поднял сервис, удалил симлинк - runit потушил сервис. Я с ним забыл, что сервисы надо стартовать или останавливать, оно просто работает. Загружается очень быстро даже в виртуалке, работает как волшебство, впечатления исключительно положительные.
Void имеет свой пакетный менеджер который называется XBPS. Рецепты для сборки пакетов - это обычные shell-скрипты в которых можно творить любое колдунство для того чтобы собрать нужный пакет. Я пробовал только x86_64, но в репах есть ещё пакеты для альтернативной libc (musl) и 64-битного ARM'а.
XBPS контролирует зависимости на уровне динамических библиотек и сам определяет зависимости пакетов. Например если приложение линкуется с libstdc++, то XBPS это определит и сам поставит зависимость. Этот эффект распространяется вниз по дереву пакетов и в итоге рантайм автоматически получается целостным и без дырок. В случае с приложениями на питоне или чём-то таком, можно руками дописать нужное в depends.
На скриншоте XFCE с несколькими модификациями. Изначально я пытался собрать Unity 7 и мне удалось собрать несколько компонентов: compiz, nux, dash, hud, launcher, которые даже запускались, но, разумеется, нормально не работали без остальных зависимостей. Я посмотрел на это всё и решил оставить только компиз от юнити, для, так сказать, эффекта присутствия, а остальное попытаться заменить тем, что есть в пакетах или на гитхабе.
Менеджер окон - compiz 0.9, декоратор - emerald. Фича с отключением заголовков развёрнутых окон в компизе делается легко, декорации отключаются для окон в таком состоянии:
!(state=maxvert & state=maxhorz)
Для того чтобы на верхней панели появлялись кнопки для развёрнутых окон, нужен плюгин xfce4-windowck-plugin. Из коробки он работает неправильно, поэтому его пришлось пропатчить (ссылка на патчи внизу). Для глобального меню используется vala-panel-appmenu.
В качестве дока - Plank, для запуска приложений - Albert. Albert - это ещё одно очень годное приложение которое позволяет делать поиск по системе: по приложениям, по файлам, или выполнить арифметическое действие как в калькуляторе и т.д. То есть это что-то типа dash из Unity, но сильно проще (или сложнее, кому как), это скорее Alfred из MacOS.
Зацените блюр в терминале и доке. Круто?
А по-моему выглядит как Windows 98 с доком и глобальным меню. Технологически это откат на десятилетие назад, примерно так это всё и выглядело в 2006 году когда компиз впервые зарелизили. Я для скриншота выбрал приложения поприличнее, а если полазить по разным окнам, то повылазят гномо-приложения на Gtk3 и произойдёт апгрейд с Windows 98 до Windows ME.
Никаких glBegin(), текстур, шейдеров, шейдеров поверх шейдеров. Компиз иногда добавляет на рабочий стол объём и спецэффекты, но всё остальное рисуется в плоский canvas, не хватает только какого-нибудь пиксель-арта для завершения картины.
Видите индикатор раскладки клавиатуры на котором написано «us» маленькими буквами жирным шрифтом? У меня от него глаза вытекают. И это ещё уменьшенный, а можно в настройках сделать покрупнее. А видите рядом с ним баг в отрисовке иконки NetwokManager'а? Теперь вы не можете это развидеть. А знаете ли вы, что XFCE сортирует иконки в трее по имени приложения? Зачем? ¯\_(ツ)_/¯ Но иконка NetworkManager'а при этом оказывается то рядом с индикатором раскладки, то между ними вклинивается иконка xchat'а. Я сделал ещё один патч для xfce4-panel который отключает сортировку иконок...
Это всё можно было бы запатчить, имея достаточный заряд энтузиазма, но я забил. Каждый компонент который видно на скриншоте как-то багует или работает криво. Каждый багует по-своему, например compiz-reloaded падает в одних случаях, но стабильно работает там где падает компиз из юнити, компиз из юнити в свою очередь стабильно работает там где падает compiz-reloaded. Индикатор раскладки клавиатуры был таким же десять лет назад, видимо это всех устраивает, раз за десять лет никто это не исправил. На гитхабе в issues xfce4-windowck-plugin оригинальных разработчиков не видно, какие-то люди обсуждают свои проблемы и говорят, что неплохо было бы портировать плюгин на Gtk 3, но не похоже, чтобы они его портировали. Людей поддерживающих compiz-reloaded я не стал беспокоить, у них и без меня проблем хватает. Разработчики XFCE, я так подозреваю, тоже заняты портом на Gtk 3, а потом будет Gtk 4, Gtk 5, Gtk 6. В общем доделывать патчи я не стал.
В принципе этим можно пользоваться с минимумом патчей если вы готовы терпеть небольшую кучку косяков разного размера и вам не жалко ваших глаз. Я пользуюсь, прямо в виртуалке, но я пользуюсь в основном консолью и браузером. Или можно ещё держать свой убунту-стайл патчсет и накладывать его во время сборки пакетов, но это плохая примета. Патчи, или скорее хаки, которые я сделал, находятся здесь: https://github.com/alekseyt/void-packages, надеюсь будет кому-нибудь полезно, но наверное нет.
Для себя я сделал такие выводы:
1. Void Linux - это прекрасно. Говорю без всякой иронии. Это был как глоток чистого воздуха, ИМХО именно таким и должен быть линукс. Однозначно буду пользоваться.
2. На десктопе надо использовать MacOS или десяточку с WSL. Хочется верить, что открытые исходники в конечном итоге всё равно победят, но я думаю, что эти открытые исходники ещё не написаны.
>>> Просмотр
(1920x1080,
373 Kb)