LINUX.ORG.RU

Правильная Настройка DBUS

 , ,


0

1

Как правильно настроить работу dbus ? Мой мозг к сожалению не может переварить страницы документации…

Суть проблемы.

Запускают cwm через .xinitrc как

dbus-launch --exit-with-session cwm

Google chrome не сыпет ошибками

А если запускаю cwm как exec cwm в .xinitrc

Начинаются сыпаться ошибки типа

Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix" " 

При этом сервис\демон dbus запущен. Переменная выставлена

DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

Что здесь не так ? Я обязан запускать оконный менеджер через dbus-launch или я могу все же через exec cwm и при этом не получать ошибки ? Надо ли что-то вообще менять в конфигах dbus ??

p.s. distr - voidlinux. runit.



Последнее исправление: kambulya999 (всего исправлений: 1)

При этом сервис\демон dbus запущен.

Кто бы его запустил?

p.s. distr - voidlinux. runit.

Я думаю, не дождёшься ты ответа на так странно заданный вопрос про такую экзотическую штуку. Расследуй глубже, задай вопрос конкретнее, иначе без шансов.

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

runit это экзотика ?

dbus запущен как ln -s /etc/sv/dbus /var/service/

sudo sv status /var/service/* - показывает,что работает.

Дело не в рабочем или не рабочем dbus. Дело в том, что обязан ли я юзать dbus-launch в .xinitrc для старта оконного менеджера ? Или все это может быть как-то настроено вокруг демона dbus ? через конфиг файлы или экспорт переменной нужной ? Или dbus-launch вообще должен сам запускаться когда приложениям это надо ?

У меня сейчас есть файлы которые живут своей жизнью….

/run/dbus/system_bus_socket - 
/tmp/dbus-NGM7Drz0It - 
/home/user/.dbus/session-bus/9112478b29d8f8a2158e798a635bcaee-0

Экспорт переменной DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus Ничего не меняет. Хотя по идее должны писаться в другое место.

Права и владелец папки

700 user:user /run/user/1000/

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

sudo sv status /var/service/*

а почему sudo?

dbus пользовательский сервис.

Попробуй запустить рабочий режим и нерабочий, запускай dbus-monitor и смотри, какая разница. А потом запусти dbus клиент типа dbus-test-tool и пробуй связаться с dbus ручками.

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

sudo потому что permission denied

Т.е. я должен запускать сервис/daemon dbus как пользователь, а не root ? В чем разница будет ?

Применительно к моему вопросу про dbus-launch, что изменится запустив демон dbus от юзера ?

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

Это специфика runit требующая запускать вручную сессионную шину dbus, а затем оконный менеджер для корректной работы приложений ? SytemD-based системы сами по дефолту запускают шину ?

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

В чем смысл проверки dbus-launch и установленной переменной «$DBUS_SESSION_BUS_ADDRESS» ? Типа если нет у тебя dbus-launch и нет нужной переменной, то окна не стартанут ? Даже на Void linux dbus поставляется в минимальной комплектации. Я конечно не эксперт, но это кажется как код ради кода. Даже если нет явного экспорта $DBUS_SESSION_BUS_ADDRESS, то запись будет в home директории.

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

смысл в том, что эта конструкция не генерит никаких ошибок и не ломает ничего, что может быть после неё. Ну оптимизируй, убери лишние проверки.
man dbus-launch там есть пример.

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

Это обычный порядок запуска dbus во всех системах инициализации.

cat /etc/X11/xinit/xinitrc.d/00-start-message-bus.sh
#!/bin/sh
# Copyright (C) 2008 Red Hat, Inc.
#
# All rights reserved. This copyrighted material is made available to anyone
# wishing to use, modify, copy, or redistribute it subject to the terms and
# conditions of the GNU General Public License version 2.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#

DBUS_SESSION_BUS_ADDRESS=`printenv DBUS_SESSION_BUS_ADDRESS`

if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
        eval `dbus-launch --sh-syntax --exit-with-session`
fi

$ rpm -qf /etc/X11/xinit/xinitrc.d/00-start-message-bus.sh
dbus-x11-1.10.24-13.el7_6.x86_64

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

Ладно. Тема ушла куда-то не туда. Ответ «Это не генерит ошибки и все здорово». Не совсем меня устраивает. Если программа что-то пишет в stderr, значит есть проблемы и надо решать, за исключением когда это не фиксится. Можно везде добавить >/dev/null 2>&1 и думать, что все нормально.

Короче. Начало темы в шапке. Там вопрос. Где находится man и где freedesktop.org я тоже знаю. Хотел получить доступный и понятный ответ на пальцах. Зачем еще форумы по LINUX если это уже все в документациях есть…

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

Разве это не говорит, что если $DBUS_SESSION_BUS_ADDRESS false, тогда мы запускаем dbus-launch, а если true значит не надо. Так вот у меня вручную выставлен $DBUS_SESSION_BUS_ADDRESS зачем мне еще писать dbus-launch ? Судя по этому скрипту

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

Так вот у меня вручную выставлен $DBUS_SESSION_BUS_ADDRESS зачем мне еще писать dbus-launch ?

Откуда ты взял, что запуск dbus-launch нужен только для того, чтобы выставить $DBUS_SESSION_BUS_ADDRESS, загадка.

Попробуй разобраться в логике. Программу можно ведь и дважды запустить…

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

А теперь я тебя посылаю подумать логически и затем мне отвечать. Вот реально, не шаришь , чего флудить и давать какие то юзерские решения не понимая что вообще в системе творится и что вообще скрипты делают хотя бы поверхностно. Сорри…но вы реально что-то не то пишите (

kambulya999
() автор топика
Последнее исправление: kambulya999 (всего исправлений: 1)