Задача по работе с mkimage-profiles и сборке образа с KDE
Поэкспериментировал с настройками виртуальной машины. Заметил, что GRUB не зависает в UEFI режиме. Немного протестировал сборку, записал список задач и проблем, которые необходимо решить. Подготовил некоторый базовый набор софта, пока это грубоватый набросок, который надо отрефакторить. Разбираюсь с проблемой неработоспособности spice-vdagent в своей сборке, пока источник проблемы не выявил, но она затрудняет тестирование и работу. Поэтому в дальнейшем буду разбираться. В течении дня также проверял работу OEM установщика в Fedora Workstation, как он работает. Начал думать, как реализовать нечто похожее сейчас. О проблемах Cage я писал в прошлых отчётах. Потратив много времени, я разобрался, что ReadySet можно запустить без рута (в моей тестовой сборке были проблемы с зависимостями, не позволяющие этого сделать). Через DM я смог правильно запустить kwin_wayland вместе с ReadySet. Нечто похожее я сейчас прорабатываю для Hyprland и GNOME (во втором уже есть готовые решения даже). Я надеюсь, что моя реализация решит проблемы с настройкой пользователя, поскольку в текущий момент она имеет довольно много проблем, которые вполне возможно исправить. Большая часть дня ушла на чтение XDG документации, попытки запуска оконного менеджера без рута и различных «костылей» и в целом много тестов, чтобы убедиться, что моя задумка не обречена на провал из-за отсутствия поддержки.
Сегодня было много тестирований. Проверял, как ведёт себя KWin в определённых условиях, сформировал список проблем ReadySet, которые завтра я отправлю и нашёл разных интересных особенностей в SDDM. Половину дня потратил на перебор разных возможных вариантов для решения проблемы с ReadySet. Было много дискуссий, но в конечном счёте пришли пока к такому: https://bugs.etersoft.ru/18689 Был поднят вопрос про дисплейный менеджер, Чуть позже, вероятно, заведу под него отдельную багу: - SDDM не обновлялся больше года и может иметь множество проблем в работе. Как минимум я исследовал его сегодня и часто натыкался на какое-то нелогичное поведение в разных вещах: неработоспособность Wayland при запуске от systemd, автозапуск, работающий только с файлом /etc/sddm.conf.d/kde_settings.conf, нерабочий вход в систему при отсутствии пароля. В общем, все эти проблемы требуют отладки и думаю часть из них лежит на пакете - GDM привязан к GNOME. Поэтому, вероятно, Ximper GNOME не будет затронут - Дисплейный менеджер от KDE всё ещё в разработке, поэтому он пока в пролёте - LightDM функционален и в отличии от SDDM полезен в своих функциях для корпоративных пользователей, но работает на X11 - Предлагается использовать ReGreet в качестве универсального DM. Этот вопрос мне предстоить изучить Также выяснил, что ReadySet может что-то записывать, поэтому его нельзя использовать в пользователе без домашней директории. Выяснил, что он использует Polkit для всех своих административных задач, а ещё у него есть проблема с переключением раскладки в KDE Plasma. Если запускать ReadySet, то ему нужен запущенный plasma-polkit-agent.service KWin спокойно работает от рута, не записывает в домашнюю директорию ничего при запуске и выглядит хорошим вариантом для работы с тем же ReadySet, но это уже отдельная бага. Ожидаю улучшения структуры файла ximper.mk от Кирилла, чтобы начать выкладывать свои наработки по сборке Ximper KDE. Следующие ISO сборки также буду проводить на deferred-devel, ибо выяснил много неприятных багов со старым срезом Sisyphus. Выяснил также проблемы с привязанностью Plasma к X11 зависимостям, хотя этого не должно быть. Буду решать, уже записал в todo-list (туда же записал и другие баги, которые встретил и часть из них удалось даже определить на bugs.kde.org).
Сегодня собирал разный список пакетов, необходимый для работы специфичных Intel моментов. Параллельно с этим я выявил один баг со Spectacle, связанный с аппаратным ускорением (уже зарепортил). - intel-opencl и intel-ocloc: для работы OpenCL и не только (на данный момент он не работает по каким-то причинам в ffmpeg, я разбираюсь) - libva-intel-media-driver, onevpl-intel-gpu, libva-driver-intel: для реализации нового VA-API, аппаратное ускорение декодирования/кодирования и не только - firmware-intel-ucode: микрокод Intel процессора (вообще существует ещё firmware-intel-real-ucode) - libze-intel-gpu-raytracing: oneAPI Level Zero Ray Tracing Support, для некоторых графических программ полезно Прям весь список я не буду поставлять с дистрибутивом, только часть из них. Большинство пакетов ещё работают не для всех видеокарт, поэтому это тоже стоит учесть. Буду разбираться параллельно.
Пока в качестве тестовой сборки я решил сконцентрироваться на SDDM, ибо я лучше всего его знаю. Поздно заметил, но забыл прописать отключение экранной клавиатуры в SDDM. Надо будет разобраться, как лучше всего прописать это в mkimages-profiles (по хорошему это должно быть в самом пакете, но изучить не помешает) Также подбираю новый список ПО, в частности я заменил некоторый софт на KDE-шные аналоги. Особую трудность сейчас занимают KDE PIM приложения, поскольку они имеют очень много маленьких зависимостей, которые надо собирать чуть ли не по кусочкам, чтобы была вся функциональность KDE. Удалось собрать зависимости для работы с почтой, календарём, задачами. Akonadi запускается и работает нормально, вроде ничего не упустил. Экспериментировал с установщиком (заметил некоторые грехи с оформлением, изучаю способ, как его можно легко запустить не пересобирая образ). Думаю над добавлением некоторых Intel пакетов в установщике, но это лучше обсудить с другими. Также я провёл несколько тестов TLP заместо power-profiles-daemon и в определённых ситуациях он давал более ощутимый выигрыш в энергопотреблении, нежели power-profiles-daemon. Однако это изменение тоже нельзя внедрять резко, есть ещё tuned, который выглядит выигрешнее, но его необходимо обновить в репозитории. Так как дистрибутив создан для новичков, а у наших сборок есть удобная категория, связанная с дополнительные надстройками, я планирую внедрить ZRAM и готовую конфигурацию для взаимодействия с отпечатками пальцев (на данный момент это занятие на пол дня с настройкой всего, чего можно автоматизировать). Этот момент я обсужу с коллегами, если ZRAM интегрировать удалось достаточно легко через systemd службу с генератором, то вот отпечатки пальцев это уже прямая тема, связанная с безопасностью (и по хорошему это нужно внедрить так, чтобы откат был достаточно лёгким. Возможно это лучше реализовать в Tuned) Подготовил список некоторых багов KDE Plasma и багов в ALT (среди них был баг с аккаунтами в параметрах системы, но к счастью, недавно его зарепортил один из участников регулярки). Общий список вышел довольно внушительным, вероятно, выделю отдельный день на тестирование и доложение обо всех проблемах. Я не уверен, что мета-пакеты KDE в регулярке поставляют нужные пакеты и не тащат лишнего, поэтому поэкспериментировал с формированием собственного списка пакетов и, кажется, вышло даже легче. Я всё ещё ищу баланс между наполненностью и лёгким размером (опыт Рабочей станции К повторять не хочется). Протестировал в тестовой сборке шифрование LUKS. Заметил, что SWAP раздел не шифруется (что является некоторой проблемой безопасности, особенно если используется гибернация). Пока не знаю, на кого лучше повесить эту проблему. Но зашифровать SWAP удалось. Выявил проблему с интеграцией spice-vdagent, это немного раздражает, потому что нарушается интеграция виртуалки и разрешение экрана вручную приходится менять. Буду разбираться и репортить. Сейчас занимаюсь очисткой некоторого своего мусора. Я долго не понимал, как мне максимально безопасно делать коммиты в репозиторий и при этом случайно не сломать сборку. Осознал, что могу создать свой форк, сделать PR и безопасно вносить изменения. Но засорять лишними коммитами репозиторий тоже не хочется, поэтому буду вносить в коммит только протестированные и «окончательные» решения.
Необходимо как-то изменять настройки Plasmashell по умолчанию. У GNOME для этого есть довольно удобный инструмент dconf (это мои предположения, на самом деле я не смотрел). У Hyprland, как я понял, используется наш инструмент ximperconf для установки пресетов конфигурации. Появилась мысль использовать ximperconf, однако спустя несколько несколько попыток редактировать конфигурации Plasma через kwriteconfig - я понял, насколько это ненадёжно. У Plasma очень много разных разделов и конфигурационных файлов. Одно редактирование меню приложения требует около трёх правок в двух файлах (например, в ~/.config/plasma-org.kde.plasma.desktop-appletsrc и ~/.config/kglobalshortcutsrc). Вот пример для редактирования обычного меню приложения: Надо заменить в .config/plasma-org.kde.plasma.desktop-appletsrc plugin=org.kde.plasma.kicker На: plugin=org.kde.plasma.kickoff Плюс заменить в ~/.config/kglobalshortcutsrc activate widget ЧИСЛО=,none,Сделать виджет «Классическое меню приложений» активным На: activate widget ЧИСЛО=,none,Сделать виджет «Меню запуска приложений» активным И после этого заставить Plasma перечитать конфигурацию: systemctl --user restart plasma-plasmashell.service И это кошмар, это слишком неустойчиво и костыльно. Учитывая, что это нужно парсить и получать индекс. Я стал искать оптимальный выход из этой проблемы и изучил, как Plasma генерирует стандартную конфигурацию. Решение нашлось - Template. https://develop.kde.org/docs/plasma/scripting/templates/ Это JavaScript-скрипты, которые хранятся в /usr/share/plasma/layout-templates/ или ~/.local/share/plasma/layout-templates/. Они, к слову и пропатчены в ALT-репозиториях (вот пример с меню приложением): - https://git.altlinux.org/gears/p/plasma-desktop.git?p=plasma-desktop.git;a=blob;f=alt-def-panel.patch;h=2b508d3d8a51f111f3defd387681dbfe11a13e47;hb=44a1fe143ee7faaeb9721ddbd17545a3b1986321 Например, там прописано использование org.kde.plasma.desktop.defaultPanel. А все свойства прописаны вот здесь: https://develop.kde.org/docs/plasma/widget/properties/#kpackagestructure Чтобы изменения было проще применять, узнал про существование интерактивной консоли Plasma (Alt+F2 => desktop console). Она позволяет писать JavaScript код и сразу применять его, что очень удобно для тестирования. Позволяет применять скрипт как для Plasmashell, так и KWin. Посмотрел на опыт других дистрибутивов и находил ещё интересные скрипты с использованием kwriteconfig: - https://gist.github.com/Zren/d39728991f854c0a5a6a7f7b70d4444a#file-opensuse_postinstall-sh-L337 - https://gist.github.com/Zren/764f17c26be4ea0e088f4a6a1871f528 (вспомогательная утилита, может быть полезной)
Стал странно работать Spectacle. Он не мог копировать изображение, plasmashell сбоил и проблема оставалась очень долго. Баг-репорт закрыли ибо не смогли воспроизвести, поэтому пришлось самому продебажить и найти причину проблемы. Проблема оказалась в пакете kf6-kguiaddons. Все подробности здесь: https://bugzilla.altlinux.org/57621
Целью данной баги ставлю первый релиз Ximper KDE
Недавно в репозитории Сизифа выпустили Qt 6.10. Нейт (один из главных разработчиков KDE Plasma) рассказывал, что восстановление сеанса заработает в KDE Plasma 6.4 с Qt 6.10. А так как я в сборке Ximper KDE использую некоторые экспериментальные переменные для улучшения опыта (например, KWIN_WAYLAND_SUPPORT_XX_PIP_V1=1, чтобы включить поддержку Wayland протокола xdg-pip для окон с режимом «Картинка в картинке»), я подумал, что мы должны включить эту по умолчанию из-за её высокого спроса. В X11 для восстановления сеанса использовался протокол XSMP, в Wayland для этого нужен протокол xdg-session-v1. Но что имеем: Поддержка со стороны KWin: - https://invent.kde.org/plasma/kwin/-/merge_requests/7475 — поддержка протокола xdg-session-v1 влита в KWin, milestone 6.4 (10 апреля 2025) - Для активации нужна переменная: KWIN_WAYLAND_SUPPORT_XX_SESSION_MANAGER=1 Сторона тулкита (Qt): - https://codereview.qt-project.org/c/qt/qtbase/+/649886 — "wayland: Add xx-session-management-v1 support" влит в ветку dev 27 июня 2025 - Feature freeze Qt 6.10 был 30 мая 2025, ветка 6.10 создана 2 июня 2025 — коммит опоздал на 25 дней и не попал в Qt 6.10 - Для включения на стороне клиента нужна переменная: QT_WAYLAND_ENABLE_XX_SESSION_MANAGER=1 Видимо это была ошибка в статье https://blogs.kde.org/2025/06/28/this-week-in-plasma-inertial-scrolling-rdp-clipboard-syncing-and-more-session-restore/ и со стороны https://bugs.kde.org/436318 Релиз Qt 6.11 не раньше 17 марта (https://wiki.qt.io/Qt_6.11_Release), но до Сизифа ещё долго будет идти.