LINUX.ORG.RU

Легковесный multiseat с автологином

 , ,


0

1

Доброго времени суток, дамы и господа. Имеется медиасервер (обычный системник за телевизором). На нем соседствуют kodi, chromium (в режиме киоска) и steam. Все это добро живет на разных виртуальных терминалах в разных сессиях X'ов. До недавнего времени все это бегало под управлением xbmcbuntu (ubuntu 14.04) и запуском всех приложений занимался lightdm (все на разных seat'ах). Приятной особенностью lightdm'овских seat'ов было, то что приложения не запускались до тех пор пока не переключишься на нужный терминал. Сейчас сервер мигрировал под управление gentoo, и встал вопрос кого назначить управлять сессиями с минимальными затратами про ресурсам и не разворачивая лишних пакетов (lightdm тянет за собой либо ворох пакетов из гнома, либо из кедов). Хорошим претендентом был xdm, его у него нет автологина. Решит вопрос запуском напрямую из inittaba, не вызывая при этом кровотечения из глаз, не вышло, поэтому сейчас автоматом запускается только kodi. Есть какие-нибудь идеи как элегентно организовать запуск «по требованию» не засоряя систему лишними библиотеками?

lightdm тянет за собой либо ворох пакетов из гнома, либо из кедов

А на убунте он их что, не тянул что-ли?

COMMON_DEPEND=">=dev-libs/glib-2.32.3:2
        dev-libs/libxml2
        sys-apps/accountsservice
        virtual/pam
        x11-libs/libX11
        >=x11-libs/libxklavier-5
        introspection? ( >=dev-libs/gobject-introspection-1 )
        qt4? (
                dev-qt/qtcore:4
                dev-qt/qtdbus:4
                dev-qt/qtgui:4
                )"
RDEPEND="${COMMON_DEPEND}
        >=sys-auth/pambase-20101024-r2"
DEPEND="${COMMON_DEPEND}
        dev-util/gtk-doc-am
        dev-util/intltool
        gnome-base/gnome-common
        sys-devel/gettext
        virtual/pkgconfig"
PDEPEND="gtk? ( x11-misc/lightdm-gtk-greeter )
        kde? ( x11-misc/lightdm-kde )"

Это от версии 1.10.5. При сборке с USE="-gtk -kde" список зависимостей не такой уж и большой... Не уверен правда, насколько он при этом юзабелен - сам им не пользуюсь

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от OldManClone

В этом случае все будет стартовать при запуске системы, вне зависимости от надобности. Нужен именно запуск по требованию.

Khorynthium
() автор топика
Ответ на: комментарий от Pinkbyte

На бубунте это все уже было предустановленно, да и отношение к ней было как к помойке. В генте обязательно указание минимум одного из двух юзов, можно конечно поломать ebuild, но это как-то грязно получается. :-)

Khorynthium
() автор топика

DWM + по каждому приложению на тег

mystery ★★
()
Ответ на: комментарий от r3lgar

Да, ты прав, я перечитал wiki и понял что под multiple sessions имелся ввиду выбор из установленных DE, а не запуск нескольких иксов

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Так я давно его юзаю, и сильно лососнул тунца при попытке запилить с ним мультисит.

r3lgar ★★★★★
()

Приятной особенностью lightdm'овских seat'ов было, то что приложения не запускались до тех пор пока не переключишься на нужный терминал.

Это интересно, не пробовал.

У меня multiseat на X и KDE, но реально два рабочих места, телик и монитор. Если при загрузки телик не в режиме HDMI, то второй X не запускается и только одна сесия на мониторе (ресурсы экономит). Но при включении телика в режим HDMI я __руками__ прередергиваю вторые упавшие иксы. То есть я даже не думал что бы их подымать автоматом. Автологин в кедах есть.

Телик при переходе с TV на HDMI чё то видяхе даёт, и это можно отлавливать для старта и остановки второй сесии кому надо...

Вот начал думать об избавлении от Х вообще, хочу перейти на wayland + kwin. Говорят wayland тоже multiseat умеет. Кто уже пробовал?

multihead
()

Все оказалось куда тривиальнее чем я думал. В очередной раз хотел перехитрить самого себя.

/etc/inittab

x3:2345:respawn:/usr/local/bin/login-seat steam :2 vt09
x2:2345:respawn:/usr/local/bin/login-seat chrome :1 vt08
x1:2345:respawn:/usr/local/bin/login-seat kodi :0 vt07

/usr/local/bin/login-seat

#!/bin/bash

USER=$1
DISPLAY=$2
VT=$3

su $USER -l -c /bin/bash --login --command "xinit -- $DISPLAY $VT &> /dev/null"

Сами приложения запускаются из .xinitrc /home/kodi/.xinitrc

#!/bin/bash

# Стандартная хрень из /etc/X11/xinitrc (пропустил для краткости)

exec ck-launch-session dbus-launch --sh-syntax --exit-with-session /usr/bin/kodi-standalone

Xorg сам не дурак и не запускает сессию на неактивных экранах/терминалах. Т.е. получаем как раз то, что нужно - приложения фактически не запускаются до тех пор, пока не переключимся на нужный экран.

В inittabe инвертирован порядок сессий для того, чтобы kodi инициализировался последний, так как именно последняя сессия останется активной после запуска.

PS: /usr/local/bin/login-seat можно заинлайнить в inittab - выносил его в отдельный скрипт, когда играл с agetty.

Khorynthium
() автор топика
Ответ на: комментарий от Khorynthium

Всем спасибо за участие. «Проблему» можно считать решенной.

Khorynthium
() автор топика
Ответ на: комментарий от multihead

Сам wayland не пробовал, но где-то (кажется на гентушной вики) натыкался на то, что для работы с ним нужны модифицированные gtk/qt, что сильно снижает интерес. Возможно я заблуждаюсь.

Возможно (99%) подключение телека к hdmi можно отловить udev'ом, а там уже и автоматический перезапуск привинтить не долго.

Khorynthium
() автор топика
Ответ на: комментарий от Khorynthium

Сам wayland не пробовал, но где-то (кажется на гентушной вики) натыкался на то, что для работы с ним нужны модифицированные gtk/qt, что сильно снижает интерес. Возможно я заблуждаюсь.

По моему wayland с QT уже готов, не знаю как multiseats в нём работает. С GTK там сложности.

Возможно (99%) подключение телека к hdmi можно отловить udev'ом, а там уже и автоматический перезапуск привинтить не долго.

Да, если автоматом, то правилами eudev ловить события подключения мониторов/теликов и дёргать соответствующую X сесию. А при отключении мониторов/теликов можно автоматом её тушить, чтобы ресурсы не жрала!

С inittab та же проблема, Х не запускается пока не активный монитор, но если, поработав, его выключить то Х сесия останется висеть в фоне.

multihead
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.