LINUX.ORG.RU

gdm/gdmflexiserver - список сеансов


0

1

Хочу присобачить к openbox меню переключения пользователя как в GNOME/KDE. С запуском нового сеанса всё более менее понятно. Подскажите как получить список запущенных сеансов, и как между ними переключаться (про Ctrl+Alt+F# в курсе, а вот как из скрипта переключиться?).

Так, со списком ясно - who. Теперь бы понять как переключить консоль.

Lonli-Lokli ★★
() автор топика

Так, нашёл chvt, ток из под иксов пишет «Не могу получить файловый дескриптор, соответствующий консоли».

Lonli-Lokli ★★
() автор топика
Ответ на: комментарий от Lonli-Lokli

>Вы так пишете, как будто знаете гораздо более кошерный вариант)
Нет, не знаю. Просто не исключаю вероятности, что он есть.

HTaeD ★★★★
()
Ответ на: комментарий от Lonli-Lokli
$ ck-list-sessions 
Session2:
	unix-user = '1000'
	realname = 'My Real Name'
	seat = 'Seat1'
	session-type = ''
	active = TRUE
	x11-display = ':0'
	x11-display-device = '/dev/tty1'
	display-device = ''
	remote-host-name = ''
	is-local = TRUE
	on-since = '2011-03-09T10:05:22.202907Z'
	login-session-id = '1'

Не подойдет?

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

Спасибо. Надо будет почитать, что из себя consolekit предвставляет.

Lonli-Lokli ★★
() автор топика
Ответ на: комментарий от vga

Чегой-то я не понял нафиг оно надо, держать отдельный демон для получения легко грипаемых данных неохота.

Где-нить можно в сжатой форме почитать, зачем оно?

Lonli-Lokli ★★
() автор топика

Получилась вот такая менюшка. В качестве бонуса кажет подключения по ssh.

#!/bin/sh
echo "<openbox_pipe_menu>"
echo "    <item label=\"new session\">"
echo "        <action name=\"execute\">"
echo "            <command>gdmflexiserver</command>"
echo "        </action>"
echo "    </item>"
echo "    <separator />"

who | awk '{
print "    <item label=\"" $1 " - " $2 "\">";
print "        <action name=\"Execute\">";
if ($2 ~ /tty[0-9]+/)
    print "            <command>sudo chvt " substr($2,4) "</command>";
if ($2 ~ /:[0-9]+/) {
    print "            <command>sudo chvt $(ps -C Xorg -o tty,cmd | \\";
    print "                     grep " $2 " | \\"
    print "                     sed \"s/^tty\\([0-9]\\+\\).*$/\\1/\")";
    print "            </command>";
}
print "        </action>";
print "    </item>";
}'

echo "</openbox_pipe_menu>"

Lonli-Lokli ★★
() автор топика
Ответ на: комментарий от Lonli-Lokli

>Где-нить можно в сжатой форме почитать, зачем оно?

ConsoleKit is a system-wide service that tracks seats and sessions. It's existence is justified by that it's needed for both multi-seat and f-u-s.

It's a pretty simple service that exports a few interfaces

* to enumerate the physical seats that is part of the system. A «Seat» corresponds to a physical console, e.g. a monitor + keybord/mouse.

* to enumerate desktop sessions, what seat the desktop session is on, and whether it's active (multiple desktop sessions can run on the same console, that's fast-user-switching)

Чегой-то я не понял нафиг оно надо, держать отдельный демон для получения легко грипаемых данных неохота.


Ну вот чтобы не грепать и написан. Тоже видать грепали, грепали, а потом устали, и написали на C с dbus-интерфейсом :-). Но если уже все нагрепалось, то да, смысла мало.

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

consolekit пишлось всётаки поставить для переключения пользователей при заблокированном экране. Только всёравно очень легко уткнуться в пустой экран (поэксперементировал с 2мя пользователями, приглашение gdm переместилось в итоге с tty7 на tty9). С kdm3 без consolekit как то надёжнее работало и удобнее =(

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