Ну вот например.
Что изменилось с прошлого раза: я попробовал десяточку и мне понравилось: 3D в интерфейсе, вот это всё, сразу такое ощущение появилось как будто 21 век уже наступил. К сожалению в WSL не заработал Void, что-то Майксософт не допилило ещё. Пока Майкрософт допиливает, решил попробовать собрать чего-то такого же в технологическом плане, только на линуксе.
В прошлый раз я оставил убунтовский компиз и выбросил всё остальное, теперь решил зайти с другой стороны: попробовать оставить всё остальное, но выбросить компиз. Выяснилось, что по крайней мере лаунчер и дэш могут работать без компиза и без патчей в Gtk, худ вероятно тоже, но я уже забил.
Ещё скриншоты на реальном железе в разных комбинациях: https://imgur.com/a/wGrfc
Сверху-вниз:
- Xfce4/Xfwm4 (без компиза)
- MATE/compiz-reloaded
- Openbox/xcompmgr
Я проверял на WM: Xfce4/MATE/Openbox/Cinnamon, на композиторах: встроенный в Xfwm4/встроенный в MATE/compiz-reloaded/xcompmgr/compton - работает довольно бодренько. Может быть на чём-то ещё взлетит, но мне надоело перебирать. Основное требование к менеджеру окон - поддержка Xshape input и работающий композитинг. В AwesomeWM/Fluxbox/i3 по причине отсутствия поддержки Xshape не работает например. Думаю возможна альтернативная реализация без необходимости Xshape, но я сделал так: полноэкранный оверлей который рендерит себя в прозрачный фреймбуфер, ввод от мышки должен проходить сквозь его прозрачную часть и попадать в окна которые находятся под ним.
На самом деле конечно не всё радужно, Юнити интегрируется с наутилусом, компизом и собственными компонентами, про Thunar оно ничего не знает и не может в нём открыть корзину с лаунчера, некоторые десктопные эффекты типа expose или блюра делались компизом, экспозе пока что пришлось уйти, блюр теперь надо делать компизом снаружи приложения, а не изнутри, ещё кое-что отвалилось по мелочи и не по мелочи. Есть определённое количество технического долга в виде зависимостей на гном и гтк, или например есть зависимости на systemd и upstart, на upstart опциональная, а на systemd обязательная, но при желании можно обойтись без них обоих, я например просто закоментировал эти части. В общем есть определённое количество мусора, но не так чтобы ужас-ужас всё пропало. Наоборот, оно завелось и взлетело на удивление легко и просто, всего 64 комита я сделал чтобы получить то, что на скриншоте, по-моему это не много, как для проекта такого размера.
Ну в общем, как наверное и так понятно из скриншотов, технические проблемы Юнити о которых можно прочитать в интернете мягко говоря сильно преувеличены. Я не могу вспомнить ещё один десктопный шелл который мог бы работать на Openbox с xcompmgr также как на MATE с compiz-reloaded, по-моему это настолько далеко от технических проблем, насколько это вообще может быть от них далеко. Про iPhone X говорят, что он минимум на 2,5 года опережает конкурентов, а с момента релиза Юнити прошло более 7 лет, какое ещё DE может делать аппаратно-ускореную графику с полной поддержкой 3D в интерфейсе в 2к18? Ну наверное что-нибудь на Qt, да? Вот есть Юнити 8 на Qt/QML:
// Rotating 3 times at top/bottom because that increases the perspective.
// This is a hack, but as QML does not support real 3D coordinates
// getting a higher perspective can only be done by a hack. This is the most
// readable/understandable one I could come up with.
...
// Because rotating it 3 times moves it more to the front/back, i.e. it gets
// bigger/smaller and we need a scale to compensate that again.
Тут написано, что QML не поддерживает настоящий 3D и вместо того чтобы повернуть изображение на определённый угол, оно три раза поворачивается на меньший угол, затем исправляется искажение возникающее при такой операции. Ну вот, Юнити 8 на Qt/QML, дамы и господа. Но вейленд-то сейчас придёт и точно спасёт нас от всех ужасов десктопного линукса, да?
Я когда проверял поддержку нескольких мониторов, столкнулся с такой проблемой: существующие менеджеры окон не могут зарезервировать место в определённых частях экрана. Оказалось, что это известная проблема иксов, единственное, что меня смутило - это то, что в убунтовском компизе это уже 7 лет работает. Я почитал, что про это пишет разработчик kwin и понял, что то, что он предлагает в моём случае работать не будет.
Что он предлагает: а) создать окно; б) установить тип окна в «панель»; в) настроить как это окно должно взаимодействовать с другими окнами (перекрывать/не перекрывать/т.д.); а kwin уже зарезервирует место под панель «где надо». Как работает то, что на скриншоте: 1) создаётся одно окно которое разворачивается на весь экран; 2) резервируется область экрана меньшая чем размер окна; 3) в некоторых случаях надо зарезервировать несколько областей в разных частях экрана. Как 1), 2) и 3) выразить через а), б) и в)?
Короче света в конце туннеля не видно, да и это наверное не туннель.
И вообще я думаю, что Марк Шаттлворт прав, что выбросил и Юнити 7, и Юнити 8, и дисплейный сервер Мир вероятно тоже не нужен. Свою роль в повышении популярности убунты это всё уже сыграло, зачем дальше тянуть резину?
Да и если так подумать, то зачем это всё на линуксе? Композитинг по Портеру/Даффу? Анимация с помощью трёхмерной призмы вращающейся вокруг своей оси? Да не, бред какой-то. Любой менеджер окон может открыть и терминал и браузер, а что ещё нужно? Fade-in - это тоже хорошая анимация, а когда окошко как бы выезжает слева-направо - это просто взрыв мозга, я и не знал, что так можно.
И расстраиваться конечно не из-за чего. Ещё лет через 7-15 десктопный линукс наверняка достигнет уровня Юнити и год линукса на десктопах обязательно настанет, только попозже, но обязательно настанет, к гадалке не ходи. А пока что вот вам артефакты древней цивилизации:
Исходники того, что на скриншоте (GPL v3): https://github.com/alekseyt/unity7/tree/void
Шаблон для сборки под Void: https://github.com/alekseyt/void-packages-private/tree/master/unity7-chromatic
>>> Просмотр (1920x1080, 614 Kb)