view flatpak/libervia_wrapper-dbus_keep.py @ 173:0d2eb834fc59

screenshots: more 0.8 screenshots + apng screencast
author Goffi <goffi@goffi.org>
date Tue, 30 Nov 2021 22:14:01 +0100
parents a213053a03be
children
line wrap: on
line source

#!/usr/bin/env python3

"""This script launch Libervia backend if it's not before running command, and keep it running afterwards"""

# We keep the backend running to avoid the backend launching cost each time the frontend is used

import os
import sys
import dbus
import subprocess
from sat.tools import config

command = "##COMMAND##"
const_INT_PREFIX = "org.libervia.LiberviaCLI"
const_OBJ_PATH = '/org/libervia/Libervia/bridge'

const_INT_PREFIX = config.getConfig(
    config.parseMainConf(),
    "",
    "bridge_dbus_int_prefix",
    "org.libervia.Libervia")

# we remove any path with "/home" from PYTHONPATH because we have
# "--filesystem=home" permission and packages in .local/lib/pythonX/site-packages may
# conflict with the ones from flatpak
clean_pythonpath = ':'.join(p for p in sys.path if p and not p.startswith('/home'))
os.environ['PYTHONPATH'] = clean_pythonpath
os.environ['PYTHONNOUSERSITE'] = '1'

try:
    sessions_bus = dbus.SessionBus()
    db_object = sessions_bus.get_object(const_INT_PREFIX,
                                        const_OBJ_PATH)
except dbus.exceptions.DBusException as e:
    if e._dbus_error_name != 'org.freedesktop.DBus.Error.ServiceUnknown':
        raise e
    # backend not found, we need to launch it
    print("Launching Libervia backend")
    subprocess.check_call("libervia-backend")

os.execlp(command, command, *sys.argv[1:])