[devel] Пошаговый переход Display_Manager_Policy к стандартам freedesktop.

Igor Vlasenko vlasenko на imath.kiev.ua
Вт Ноя 16 18:59:15 MSK 2021


Пошаговый переход Display_Manager_Policy к стандартам freedesktop.
Шаг 1.

Проблема: наша политика
https://www.altlinux.org/Display_Manager_Policy
устарела, не учитывает стандарты freedesktop
и новые freedesktop-совместимые DM,
не учитывает Wayland.

Как это работало раньше?

файлтриггер после изменений в /etc/X11/wmsession.d
вызывает скрипт конфигурации DM.
скрипт конфигурации DM вызывает runwm --list
runwm --list смотрит в /etc/X11/wmsession.d
получает список токенов
Plasma
Mate
IceWM
default
Прописывает их в меню DM: (к примеру)
WM_session=Plasma,Mate,IceWM,default

DM вызывает с этим токеном /etc/X11/Xsession,
к примеру,
/etc/X11/Xsession IceWM
Xsession, выполнив свои вызовы и настройки,
вызывает с этим токеном runwm:
к примеру,
runwm IceWM

Как это работает сейчас?

С появлением freedesktop-совместимых DM,
они начали смотреть в /usr/share/xsessions/,
что не работало со схемой выше.

В итоге для тех из них, кто хочет запускать /etc/X11/Xsession,
добавили хак #36913, см.
https://bugzilla.altlinux.org/show_bug.cgi?id=36913
добавив схему, когда freedesktop-совместимый DM,
смотрит в /usr/share/xsessions/ и вызывает
/etc/X11/Xsession со скриптом из ключа Exec= desktop файла.
Xsession, выполнив свои вызовы и настройки,
вызывает с этим скриптом runwm:
runwm /usr/bin/starticewm

runwm /usr/bin/starticewm ищет /usr/bin/starticewm
( ищет не в /usr/share/xsessions/, а в /etc/X11/wmsession.d !! )
и если находит, то запускает, иначе пишет, что нет такого wm.

Это достаточно кривой костыль, и для работы требует
одновременно и /etc/X11/wmsession.d и /usr/share/xsessions/,
при чем runwm не видит /usr/share/xsessions/.

Шаг 1 к переходу на стандарты freedesktop.

В Сизифе и в очереди к p10 находится пакет wm-select.git=0.9.8-alt1,
в котором, кроме wm-select, есть кандидат на замену старого runwm,
упакован как runwm.test, чтобы можно было потестировать и сравнить,
runwm.test --list
runwm --list

runwm.test по умолчанию и с опцией --alt читает /etc/X11/wmsession.d и эмулирует
старый runwm.

runwm.test с опцией --xdg (в будущем по умолчанию) читает /usr/share/xsessions/.
runwm.test так же поддерживает хак #36913.

В сборочнице в #289869 находится на тестирование пакет wm-select,
#289869 TESTED #1 [test-only] sisyphus wm-select.git=0.9.8-alt2 xinitrc.git=2.4.47-alt3

где новый runwm собран самостоятельным подпакетом runwm,
и минимально правленный xinitrc, который
1) владеет каталогом /usr/share/xsessions/
2) файлтриггер срабатывает и на каталог /usr/share/xsessions/
3) вместо старого runwm берется runwm из подпакета runwm пакета wm-select.

И первый шаг заключается в #289869 -- заменить старый runwm
на runwm, умеющий читать /usr/share/xsessions/,
затем включить в runwm /usr/share/xsessions/

При таком изменении получим
1) /etc/X11/wmsession.d станет не нужен,
2) Можно будет сохранить работоспособность старых не-freedesktop DM,
за счет добавления freedesktop-обвязки в новый runwm

и можно будет двигаться дальше.

Прошу тестировать и одобрять.

-- 

I V


Подробная информация о списке рассылки Devel