LINUX.ORG.RU

Как правильно пинать dbus-launch из ~/.xinitrc?

 , , ,


3

4

Когда иксы запускаются «вручную», т. е. с помощью startx, команды для запуска WM ищутся в файле ~/.xinitrc, и тогда к команде, запускающей WM, надо добавить dbus-launch, чтобы некоторые приложения работали нормально. B случае с DM и ~/.xsession dbus-launch запускает сам DM, поэтому я вот мучаюсь и экспериментирую.

dbus-launch --sh-syntax --exit-with-session
и
eval 'dbus-launch --sh-syntax --exit-with-session'
не хочет работать вообще. В тунаре примонтированные диски не отображаются.
dbus-launch --exit-with-session /usr/bin/ssh-agent -- /etc/X11/Sessions/Xsession
скопированное с gdm, работает получше – тунар показывает то, что можно примонтировать, но не монтирует, пишет not authorized. В это же время i3 начинает как-то странно себя вести, например, вместо выхода он перезагружает конфиг, как если бы я только вошёл. Но если сидеть в i3 из под gdm, то всё работает безукоризненно, тунар монтирует, i3 работает как положено.

По логам ничего сказать не могу, поскольку в поведении i3 не разбираюсь, но когда с кривым dbus-launch его начинает глючить, то в stderr сыпется какой-то поток «^@» из двух строк на 134KiB. В иксовом логе всё ок, а по логам i3 непонятно, где он что вообще делает.

Deleted

dbus в каком ранлевеле?

Должен быть в default:

rc-update add dbus default
это не решает проблему?

science ★★☆ ()

Сессия должна быть зарегистрирована с ConsoleKit (легко) и иметь статус ACTIVE (это сложнее, если не используется DM с изкоробочной поддержкой CK).

anonymous ()
Ответ на: комментарий от i_gnatenko_brain

Как они коррелируют? Я нашёл только что-то четырёхлетней давности про hal и какие-то systemd-проблемы. Случайно наткнулся на ck-launch-session, перепробовал
[code]exec ck-launch-session dbus-launch i3 -V -d all > ~/.i3/stdout 2> ~/.i3/stderr[/code]
[code]exec ck-launch-session dbus-launch --exit-with-session i3 -V -d all > ~/.i3/stdout 2> ~/.i3/stderr[/code]
[code]ck-launch-session dbus-launch --exit-with-session /usr/bin/ssh-agent — /etc/X11/Sessions/Xsession
exec i3 -V -d all > ~/.i3/stdout 2> ~/.i3/stderr[/code]
Но ничего из этого не работает.

Deleted ()
Ответ на: комментарий от i_gnatenko_brain

Когда в правке можно будет менять парсер?

Как они коррелируют? Я нашёл только что-то четырёхлетней давности про hal и какие-то systemd-проблемы. Случайно наткнулся на ck-launch-session, перепробовал

exec ck-launch-session dbus-launch i3 -V -d all > ~/.i3/stdout 2> ~/.i3/stderr
exec ck-launch-session dbus-launch --exit-with-session i3 -V -d all > ~/.i3/stdout 2> ~/.i3/stderr
ck-launch-session dbus-launch --exit-with-session /usr/bin/ssh-agent — /etc/X11/Sessions/Xsession
exec i3 -V -d all > ~/.i3/stdout 2> ~/.i3/stderr
Но ничего из этого не работает.

2 science В default и есть.

Анонимус, а поподробней?

Deleted ()
Ответ на: комментарий от HTaeD

Оно старое же. Да и фишка не в том, что у меня вообще не работает, а в том, что не работает без gdm.

$ ck-list-sessions 
Session75:
	unix-user = '1000'
	realname = '(null)'
	seat = 'Seat1'
	session-type = ''
	active = TRUE
	x11-display = ':0'
	x11-display-device = '/dev/tty7'
	display-device = ''
	remote-host-name = ''
	is-local = TRUE
	on-since = '2013-04-20T07:09:32.661163Z'
	login-session-id = ''
Session13:
	unix-user = '0'
	realname = 'root'
	seat = 'Seat1'
	session-type = ''
	active = FALSE
	x11-display = ''
	x11-display-device = ''
	display-device = '/dev/tty1'
	remote-host-name = ''
	is-local = TRUE
	on-since = '2013-04-19T12:31:22.930036Z'
	login-session-id = ''
	idle-since-hint = '2013-04-20T07:09:41.367945Z'
Это при логине через gdm, через xinitrc сессий может оказаться на одну больше, если dbus-launch была передана программа, а так в целом то же самое, только active = FALSE. Если пинать startx& из tty2, то перед запуском ck-list-sessions покажет active, а в иксах станет false для обоих tty2 и tty7.

В env в любом случае (с gdm или без) присутствует нечто наподобие

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ZSxQ3G3amX,guid=0c62ba643120889aea4b88b851723f2c
DBUS_SESSION_BUS_PID же в любом случае отсутствует. Пробовал также делать
eval `ck-launch-session dbus-launch --sh-syntax --exit-with-session`
export DBUS_SESSION_BUS_ADDRESS
export DBUS_SESSION_BUS_PID
exec i3 -V -d all > ~/.i3/stdout 2> ~/.i3/stderr
Но это тоже не работает. Пробовал в dbus-launch совать ssh-agent, i3, ~/.xsession, но всё бестолку.

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

Может и старое, но до сих работает. Правда, у меня коробка.
Иксы стартуют сами:

$ cat .zlogin                                                                               ~ 
if [ $USER = htaed  ] && [ "`tty`" = "/dev/tty1" ]; then
    exec startx > /tmp/xinit.login.log 2>&1;
fi
Сама коробка:
$ cat .xinitrc | tail -n1                                                                   ~ 
exec ck-launch-session dbus-launch --sh-syntax  --exit-with-session openbox-session
При этом:
$ ck-list-sessions                                                                                                      ~ 
Session1:
	unix-user = '1000'
	realname = 'HTaeD'
	seat = 'Seat1'
	session-type = ''
	active = FALSE
	x11-display = ''
	x11-display-device = ''
	display-device = '/dev/tty1'
	remote-host-name = ''
	is-local = TRUE
	on-since = '2013-04-20T06:48:33.018786Z'
	login-session-id = '2'
Session2:
	unix-user = '1000'
	realname = 'HTaeD'
	seat = 'Seat1'
	session-type = ''
	active = TRUE
	x11-display = ':0'
	x11-display-device = '/dev/tty4'
	display-device = '/dev/tty1'
	remote-host-name = ''
	is-local = TRUE
	on-since = '2013-04-20T06:48:39.170455Z'
	login-session-id = '2'

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

exec ck-launch-session dbus-launch --sh-syntax --exit-with-session openbox-session

$ cat ~/.xinitrc 
#!/bin/bash
xrdb ~/.Xresources
xset +fp /usr/share/fonts/terminus && xset fp rehash
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session i3 -V -d all > ~/.i3/stdout 2> ~/.i3/stderr
$ ck-list-sessions 
Session82:
	unix-user = '1000'
	realname = '(null)'
	seat = 'Seat24'
	session-type = ''
	active = FALSE
	x11-display = ':0'
	x11-display-device = '/dev/tty7'
	display-device = '/dev/tty2'
	remote-host-name = ''
	is-local = FALSE
	on-since = '2013-04-20T07:41:24.238338Z'
	login-session-id = ''
Session81:
	unix-user = '1000'
	realname = '(null)'
	seat = 'Seat1'
	session-type = ''
	active = FALSE
	x11-display = ''
	x11-display-device = ''
	display-device = '/dev/tty2'
	remote-host-name = ''
	is-local = TRUE
	on-since = '2013-04-20T07:41:23.568360Z'
	login-session-id = ''
	idle-since-hint = '2013-04-20T07:41:53.376246Z'
Session13:
	unix-user = '0'
	realname = 'root'
	seat = 'Seat1'
	session-type = ''
	active = FALSE
	x11-display = ''
	x11-display-device = ''
	display-device = '/dev/tty1'
	remote-host-name = ''
	is-local = TRUE
	on-since = '2013-04-19T12:31:22.930036Z'
	login-session-id = ''
	idle-since-hint = '2013-04-20T07:41:38.365180Z'
Deleted ()
Ответ на: комментарий от HTaeD

Ха, а вот этого не было. Выручил, спасибо.

А вот тут есть ещё про другие опции ядра, которые нужны, чтобы автомонтировать и выключать/перезагружать http://forums.gentoo.org/viewtopic-t-898974.html

zgrep -E 'AUDITSYSCALL|PM_RUNTIME|USB_SUSPEND' /proc/config.gz

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

Монитрует udisks через pipe-меню, выключает obshutdown.

$ zgrep -E 'AUDITSYSCALL|PM_RUNTIME|USB_SUSPEND' /proc/config.gz                                                                ~ 
CONFIG_AUDITSYSCALL=y
CONFIG_PM_RUNTIME=y
CONFIG_USB_SUSPEND=y

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