[devel] RFC: wayland session wrapper script

Igor Vlasenko vlasenko на imath.kiev.ua
Пт Дек 3 21:01:36 MSK 2021


On Fri, Dec 03, 2021 at 06:14:41PM +0300, Arseny Maslennikov wrote:
> > №!/bin/bash -login
> Nitpick: наверное, `--login'?

Да, спасибо. Пришло по наследству от /etc/X11/Xsession.
там тоже надо поправить.

> Не знаю, оффтоп или нет, но сейчас нет чёткого понимания, какова задача,
> стоящая перед /etc/profile{,.d}.
> Предназначены ли эти файлы только для установки переменных окружения или
> ещё и для произвольного кода?
> Если второе, то: каким интерпретатором они исполняются? Если
> логин-шеллом пользователя, т. е. "от балды", то это вряд ли хорошо.

Сейчас 'только для установки переменных окружения' предлагается
   pam_env /etc/environment
 и systemd /etc/environment.d
 pam_env(8) environment(5) environment.d(5)
/etc/environment неудобный, /etc/environment.d
удобный, но только под systemd.

Эх. если бы допилить pam_env, чтобы читал и /etc/environment.d,
можно бы было переезжать основной частью /etc/profile{,.d} ...

 
> > Поэтому вот что еще хочу туда добавить:
> > 
> > 2) обёртки
> 
> > 3) XDG_SESSION_TYPE.
> 
> > 4) redirect stderr to a file
> 
> На systemd нужна возможность направить это в журнал, а не в файл.
> Она особенно полезна в случае, когда хомяк в системе медленный и
> маленький, а /var быстрее и больше, да и проворачивается (logrotate) он
> самостоятельно.

Перенаправлением stderr сейчас занимается DM. Это к его конфигам.
а я сделал подстраховку, если -c /proc/self/fd/2
то скрипт шевелится перенаправлять.
 
> >    Возможно, проверить сначала, что мы не запущены под GDM, sddm, ...
> Не возможно, а точно. :)

Видел где-то какие-то волшебные переменные, которые говорят,
что мы из-под GDM.
Нигде не найду, как понадобились :(

> > Смысл его существования в том, что ряд тулкитов и приложений
> > поддерживают wayland, но без волшебного понуждения в виде
> > магических переменных вида THIS_APP_PLEASE_DO_USE_WAYLAND=1
> > все равно по умолчанию запускаются под XWayland.
> 
> Кроме известных и популярных исключений, лучше не надо такое выставлять,
> особенно в стабильных конфигурациях и дистрибутивах. Когда разработчики
> приложений начинают полагать, что под wayland их продукт работает хорошо
> (лучше, чем с Xorg/Xwayland), они убирают необходимость прописывать
> такие переменные. Если такая переменная нужна — значит, апстрим не
> уверен в себе, а мы и подавно — но усер может захотеть сам такую
> переменную выставить.

Да.
 
> Потому что просто profile.d рассчитан на срабатывание ещё и в текстовых
> сеансах, в т. ч. удалённых?

Гм. к примеру xdg-user-dirs.sh. Если пользователь
залогинился с консоли, почему бы не выполнить xdg-user-dirs.sh?

Если бережемся удалённые грузить (что правильно),
надо просто добавить проверку на $SSH_CONNECTION.
 
> > /etc/X11/profile.d/ssh-agent.sh
> 
> С одной стороны, его запускать на systemd не надо, потому что есть user
> unit (иными словами, предусмотреть там проверку, как вы предложили
> выше). С другой, как заставить этот user unit работать только при
> наличии локальных сеансов, не патча systemd --user?

Я пока вручную перебираю сессии, и отсеиваю framebuffer'ные.
а для остальных запускаю /etc/X11/profile.d/ssh-agent.sh
 
> > логика понятна, не хочется вызывать этот скрипт в
> > случае удаленного логина по ssh.
> > Но там вроде бы достаточно дополнительно проверить,
> > есть ли $SSH_CONNECTION, и с такой проверкой
> > можно смело переносить в /etc/profile.d
> > (поправьте, если не так, знающие люди!)
> > 
> > Что касается оставшихся скриптов
> > /etc/X11/profile.d/xdg-user-dirs.sh
> > /etc/X11/profile.d/zdg-user-dirs-install.sh
> > /etc/X11/profile.d/zdg-move-templates.sh
> > то мне не очень понятно, почему они не в /etc/profile.d.
> > (расскажите, знающие люди!)
> > 
> > Если их все же нельзя перенести в /etc/profile.d,
> > то придется дополнительно вводить каталог
> > <sessions>/profile.d,
> > Откуда будут читать и wayland-session,
> > и патченый /etc/X11/Xsession.
> 
> Здесь и в иных местах: не лучше ли <sessions>/profile.d и иные
> нововводимые каталоги, в которые пакеты будут класть файлы, помещать
> вне /etc, например, в /usr/share (и соотв. за-.-ить их)? /etc же для
> администратора.

Да, было бы хорошо. Но куда?
В SuSE видел, к примеру, usr/etc. Насколько это FHS?

> Если wayland-сервера никогда не будет, то тогда это не wayland-session,
> а нечто другое... И обёртка там нужна своя, аналогичная, но без
> X11-specific и wayland-specific действий.

я добавил это списком исключений (fbcon/fbterm)
и установкой для них XDG_SESSION_TYPE=tty

А для запуска чего-то уже когда сервер есть,
нужно пользоваться xdg autostart.

-- 

I V


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