Display Manager Policy
Полиси по упаковке Display Manager’ов
История
- Версия 1.0 (с бранча 5.1)
- Версия 2.0 (с бранча 10). Вынесена на обсуждение (переезд на стандарт Freedesktop; поддержка /etc/X11/wms-methods.d оставлена для DM, не соответствующих стандарту Freedesktop). metabug
поддержка выбора оконного менеджера (WM)/рабочей среды (DE)
DM, соответствующие стандарту Freedesktop
Ничего менять не требуется. Используется стандартный механизм, когда оконные менеджеры регистрируются в системе через .desktop-файлы в каталоге /usr/share/xsessions/.
Рекомендуется настроить DM так, что если существует файл $XDG_BASE_DIRS/xsessions/default.desktop, то он был установлен в меню DM как выбор по умолчанию.
DM, не соответствующие стандарту Freedesktop
DM, не соответствующий стандарту Freedesktop, не умеет читать .desktop-файлы в каталоге /usr/share/xsessions напрямую и вынужден пользоваться сторонними программами.
Обновление меню Display Manager’а
статическая конфигурация Display Manager
Если конфигурация Display Manager статическая, т.е. меню выбора WM/DE жестко прописано в его файлах конфигурации, то для обновления своего меню Display Manager должен предоставлять метод-файл /etc/X11/wms-methods.d/DMmethod. Метод-файл /etc/X11/wms-methods.d/DMmethod должен быть исполняемым.
Этот файл будет запускаться служебными скриптами[1] каждый раз при установке, обновлении, удалении оконных менеджеров, а также при установке и обновлении самого Display Manager’а.
Служебный скрипт вызывается из файл-триггера пакета xinitrc автоматически.
динамическая конфигурация Display Manager
Если конфигурация Display Manager динамическая, т.е. пункты меню выбора WM/DE генерируются при запуске, метод-файл /etc/X11/wms-methods.d/DMmethod предоставлять не нужно.
Запуск оконного менеджера
Скрипты обновления меню для Display Manager'а может осуществлять парсинг файлов в /usr/share/xsessions/ и запуск оконного менеджера самостоятельно. Однако поскольку DM не соответствует стандарту Freedesktop, то он скорее всего не производит всех необходимых действий, требуемых стандартом, к примеру, не выставляет переменную окружения $XDG_CURRENT_DESKTOP. Поэтому для получения списка оконных менеджеров и запуска оконного менеджера рекомендуется пользоваться командой runwm.
Использование скриптов xinitrc и runwm для эмуляции стандарта Freedesktop
WMNAME для runwm
Согласно новому полиси по упаковке оконных менеджеров (Window Managers), последние декларируют себя в системе с помощью файлов /usr/share/xsessions/<name>.desktop.
Для каждого валидного и не скрытого (Hidden=true) desktop файла команда rundm --list выдаст уникальную не содержащую пробелов строку-название оконного менеджера WMNAME, которую можно отобразить в меню DE и при выборе пользователя передать в команду /etc/X11/Xsession.
Кроме WMNAME-ов, полученных из файлов /usr/share/xsessions/*.desktop, существует специальное WMNAME «default» для сессии по умолчанию.
Реализация для WMNAME определена в runwm.
Текущая реализация WMNAME: Берется первое слово из поля Name= desktop файла. Если оно не уникально, то берется имя desktop файла без суффикса DNS и префикса .desktop. Иначе берется имя desktop файла. Пример:
1) Пусть axewm имеет 1 desktop файл axewm-session.desktop с 'Name=AxeWM Session'. Тогда WMNAME будет 'AxeWM'.
2) Пусть axewm имеет 2 desktop файла org.axewm.axewm-session.desktop с 'Name=AxeWM Session' и org.axewm.axewm-classic.desktop с 'Name=AxeWM Classic look&Feel'. Тогда WMNAME будут 'axewm-session' и 'axewm-classic'.
3) Пусть deepin имеет 1 desktop файл deepin.desktop с 'Name=深度操作系统'. Тогда WMNAME будет '深度操作系统'.
получения списка оконных менеджеров командой runwm
Для получения списка всех WMNAME для установленных в системе оконных менеджеров можно воспользоваться командой runwm --list. Эту команду можно использовать в файле /etc/X11/wms-methods.d/DMmethod для обновления конфигурации DM, или напрямую вызвать из DM для получения меню выбора.
Запуск WM скриптами xinitrc
Для запуска оконного менеджера Display Manager должен вызывать команду /etc/X11/Xsession с параметром WMNAME.
Интеграция с системными темами branding-*
фон по умолчанию
Рекомендуется выставлять в настройках Display Manager фон (wallpaper) по умолчанию как
/usr/share/design/current/backgrounds/xpm.png
Чтобы файл /usr/share/design/current/backgrounds/xpm.png существовал бы в файловой системе, надо добавить в зависимости
Requires: design-graphics
pam
на момент версии 2.0 раздел pam является заглушкой.
Похоже, что конфигурация pam для DM нуждается в стандартизации на уровне дистрибутива.
Планируется со временем собрать рекомендации по настройке pam и выпустить на их основе проект этого полиси версии 2.1.
Примечания
- ↑ в настоящее время — /usr/sbin/update_wms