Display Manager Policy: различия между версиями
Строка 6: | Строка 6: | ||
== История == | == История == | ||
* Версия 1.0 (с бранча 5.1) | * Версия 1.0 (с бранча 5.1) | ||
* Версия 2.0 (с бранча 10). Вынесена на [https://lists.altlinux.org/pipermail/devel/2021-October/215680.html обсуждение | * Версия 2.0 (с бранча 10). Вынесена на [https://lists.altlinux.org/pipermail/devel/2021-October/215680.html обсуждение] (переезд на стандарт Freedesktop; поддержка {{path|/etc/X11/wms-methods.d}} оставлена для DM, не соответствующих стандарту Freedesktop). [https://bugzilla.altlinux.org/41271 metabug] | ||
== поддержка выбора оконного менеджера (WM)/рабочей среды (DE) == | == поддержка выбора оконного менеджера (WM)/рабочей среды (DE) == |
Версия от 13:13, 11 ноября 2021
Полиси по упаковке 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, не соответствующие стандарту Freedesktop
DM, не соответствующий стандарту Freedesktop, не умеет читать .desktop-файлы в каталоге /usr/share/xsessions напрямую.
Обновление меню Display Manager’а
Для обновления своего меню Display Manager должен предоставлять метод-файл /etc/X11/wms-methods.d/DMmethod.
Этот файл будет запускаться служебными скриптами[1] каждый раз при установке, обновлении, удалении оконных менеджеров, а также при установке и обновлении самого Display Manager’а. Служебный скрипт вызывается из файл-триггера пакета xinitrc автоматически.
Метод-файл /etc/X11/wms-methods.d/DMmethod должен быть исполняемым.
Известное исключение:
Sergey V Turchin> kdm из kde3/4: они пользуются сами `runwm --list`
Запуск оконного менеджера
Скрипты обновления меню для Display Manager'а может осуществлять парсинг файлов в /usr/share/xsessions/ и запуск оконного менеджера самостоятельно. Однако поскольку DM не соответствует стандарту Freedesktop, то он скорее всего не производит всех необходимых действий, тербуемых стандартом, к примеру, не выставляет переменную окружения $XDG_CURRENT_DESKTOP.
Поэтому для получения списка оконных менеджеров и запуска оконного менеджера рекомендуется пользоваться скриптами из пакета xinitrc.
Использование скриптов xinitrc для эмуляции стандарта Freedesktop
WMNAME для скриптов xinitrc
Согласно полиси по упаковке оконных менеджеров (Window Managers), последние декларируют себя в системе с помощью файлов /usr/share/xsessions/<name>.desktop. Для каждого desktop файла команда rundm --list выдаст строку WMNAME, которую можно передать команду /etc/X11/Xsession.
Кроме WMNAME-ов, полученных из файлов /usr/share/xsessions/*.desktop, существует специальное WMNAME «default» для сессии по умолчанию.
Реализация для WMNAME будет определена в новом релизе пакета xinitrc.
Возможная реализация:
В поле Name= desktop файла указывается уникальная строка-название оконного менеджера. Далее первое слово этой строки будем называть WMNAME. К примеру, для 'Name=IceWM Session' WMNAME будет 'IceWM'.
получения списка оконных менеджеров скриптами xinitrc
В файле /etc/X11/wms-methods.d/DMmethod для получения списка всех WMNAME для установленных в системе оконных менеджеров можно воспользоваться командой runwm --list. Можно также распарсить файлы в /usr/share/xsessions/ самостоятельно, не забыв добавить «default» для сессии по умолчанию.
Запуск WM скриптами xinitrc
Для запуска оконного менеджера Display Manager должен вызывать команду /etc/X11/Xsession с параметром WMNAME.
pam
на момент версии 2.0 раздел pam является заглушкой.
Похоже, что конфигурация pam для DM нуждается в стандартизации на уровне дистрибутива.
Планируется со временем собрать рекомендации по настройке pam и выпустить на их основе проект этого полиси версии 2.1.
Примечания
- ↑ в настоящее время — /usr/sbin/update_wms