Display Manager Policy: различия между версиями
(→pam) |
|||
Строка 45: | Строка 45: | ||
===== WMNAME для скриптов xinitrc ===== | ===== WMNAME для скриптов xinitrc ===== | ||
Согласно новому [[УпаковкаWM|полиси по упаковке оконных менеджеров]] (Window Managers), последние декларируют себя в системе с помощью файлов {{path|/usr/share/xsessions/<name>.desktop}}. | |||
Согласно [[УпаковкаWM|полиси по упаковке оконных менеджеров]] (Window Managers), последние декларируют себя в системе с помощью файлов {{path|/ | |||
Для каждого валидного и не скрытого (<tt>Hidden=true</tt>) desktop файла команда rundm --list выдаст уникальную не содержащую пробелов строку-название оконного менеджера <tt>WMNAME</tt>, которую можно отобразить в меню DE и при выборе пользователя передать в команду {{cmd|/etc/X11/Xsession}}. | |||
Кроме <tt>WMNAME</tt>-ов, полученных из файлов {{path|/usr/share/xsessions/*.desktop}}, существует специальное <tt>WMNAME</tt> «default» для сессии по умолчанию. | Кроме <tt>WMNAME</tt>-ов, полученных из файлов {{path|/usr/share/xsessions/*.desktop}}, существует специальное <tt>WMNAME</tt> «default» для сессии по умолчанию. | ||
Реализация для <tt>WMNAME</tt> | Реализация для <tt>WMNAME</tt> определена в {{prg|runwm}}. | ||
Текущая реализация <tt>WMNAME</tt>: | |||
Берется первое слово из поля <tt>Name=</tt> desktop файла. Если оно не уникально, то берется имя desktop файла без суффикса DNS и префикса .desktop. Иначе берется имя desktop файла. | |||
Пример: | |||
1) icewm имеет 1 desktop файл {{path|icewm-session.desktop}} с 'Name=IceWM Session', то <tt>WMNAME</tt> будет 'IceWM'. | |||
2) icewm имеет 2 desktop файла {{path|icewm-session.desktop}} с 'Name=IceWM Session' и {{path|icewm-classic.desktop}} с 'Name=IceWM Classic look&Feel' то <tt>WMNAME</tt> будут 'icewm-session' и 'icewm-classic'. | |||
===== получения списка оконных менеджеров скриптами xinitrc ===== | ===== получения списка оконных менеджеров скриптами xinitrc ===== |
Версия от 18:04, 13 ноября 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.
Для каждого валидного и не скрытого (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) icewm имеет 1 desktop файл icewm-session.desktop с 'Name=IceWM Session', то WMNAME будет 'IceWM'. 2) icewm имеет 2 desktop файла icewm-session.desktop с 'Name=IceWM Session' и icewm-classic.desktop с 'Name=IceWM Classic look&Feel' то WMNAME будут 'icewm-session' и 'icewm-classic'.
получения списка оконных менеджеров скриптами xinitrc
В файле /etc/X11/wms-methods.d/DMmethod для получения списка всех WMNAME для установленных в системе оконных менеджеров можно воспользоваться командой runwm --list. Можно также распарсить файлы в /usr/share/xsessions/ самостоятельно, не забыв добавить «default» для сессии по умолчанию.
Запуск 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