У меня запущен пример кода Python, который отлично подходит для рабочего стола Ubuntu:
import dbus, gobject
from dbus.mainloop.glib import DBusGMainLoop
from dbus.mainloop.glib import threads_init
import subprocess
from subprocess import call
gobject.threads_init()
threads_init()
dbus.mainloop.glib.DBusGMainLoop( set_as_default = True )
p = subprocess.Popen('dbus-launch --sh-syntax', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
call( "export DBUS_SESSION_BUS_ADDRESS" , shell=True )
call( "export DBUS_SESSION_BUS_PID" , shell=True )
bus = dbus.SessionBus()
# get DBUS objects, do other stuff with SESSION_BUS
# in same time we can start more independent processes with this file
# finaly kill the SESSION_BUS process
После успеха на рабочем столе я переместил код в серверную версию, которая только с оболочкой. Dbus-launch запускает процесс, но python dbus.SessionBus () возвращает ошибку с "/ bin / dbus-launch, прерванный ненормально со следующей ошибкой: Ошибка автозапуска: ошибка инициализации X11".
Надеюсь, что между SESSION_BUS и X11 не должно быть строгой зависимости, когда процесс, запущенный с помощью "dbus-launch", запускается и работает с успехом. Ошибка приходит в Python.
Лучшим решением будут чистые настройки среды Python или Linux, наихудшие, но, возможно, приемлемые с каким-нибудь поддельным или виртуальным X11 (мне не повезло, когда я попробовал)