# SPDX-License-Identifier: GPL-3.0-or-later
import logging
import os
-import time
import signal
import sys
-import shutil
import tools.config
import tools.helpers.ipc
from tools import services
do_stop(self.args, self.looper)
stop_container(quit_session=False)
+def handle_disconnect(args, looper):
+ do_stop(args, looper)
+ stop_container(quit_session=False)
+
def service(args, looper):
+ bus = dbus.SessionBus()
+ bus.set_exit_on_disconnect(False)
+ bus.add_signal_receiver(lambda: handle_disconnect(args, looper),
+ signal_name='Disconnected',
+ dbus_interface='org.freedesktop.DBus.Local')
dbus_obj = DbusSessionManager(looper, dbus.SessionBus(), '/SessionManager', args)
looper.run()
-def start(args, unlocked_cb=None):
+def start(args, unlocked_cb=None, background=True):
try:
name = dbus.service.BusName("id.waydro.Session", dbus.SessionBus(), do_not_queue=True)
except dbus.exceptions.NameExistsException:
dpi = "0"
session["lcd_density"] = dpi
+ session["background_start"] = "true" if background else "false"
+
mainloop = GLib.MainLoop()
def sigint_handler(data):
def sigusr_handler(data):
do_stop(args, mainloop)
+ GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGHUP, sigint_handler, None)
GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGINT, sigint_handler, None)
GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGTERM, sigint_handler, None)
GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGUSR1, sigusr_handler, None)
try:
tools.helpers.ipc.DBusContainerService().Start(session)
except dbus.DBusException as e:
+ logging.debug(e)
if e.get_dbus_name().startswith("org.freedesktop.DBus.Python"):
logging.error(e.get_dbus_message().splitlines()[-1])
else: