Mercurial > sat_docs
comparison flatpak/libervia_wrapper-dbus_keep.py @ 171:a213053a03be
flatpak: update files following names change + Python 3 update:
- `build_manifest.py` has been fixed to work with recent SàT/Libervia
- filenames/scripts have been udpated to reflect project name change
- installation now uses `requirements.txt` when dev version is requested
- there are now 3 types of commands wrapper:
* `libervia_wrapper.py` uses `pb` bridge, starts backend before frontend, and stops it
when frontend is stopped. It's used by `Libervia Desktop` (Cagou)
* `libervia_wrapper-dbus.py` uses `dbus` bridge, starts backend before frontend, and
stops it when frontend is stopped. It's used for `Libervia TUI` (Primitivus)
* `libervia_wrapper-dbus.py` uses `dbus` bridge, starts backend if necessary and
doesn't stop it (to avoid waiting for backend start next time). It's used by
`Libervia CLI` (jp).
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 30 Nov 2021 21:42:06 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
170:e38a968cb873 | 171:a213053a03be |
---|---|
1 #!/usr/bin/env python3 | |
2 | |
3 """This script launch Libervia backend if it's not before running command, and keep it running afterwards""" | |
4 | |
5 # We keep the backend running to avoid the backend launching cost each time the frontend is used | |
6 | |
7 import os | |
8 import sys | |
9 import dbus | |
10 import subprocess | |
11 from sat.tools import config | |
12 | |
13 command = "##COMMAND##" | |
14 const_INT_PREFIX = "org.libervia.LiberviaCLI" | |
15 const_OBJ_PATH = '/org/libervia/Libervia/bridge' | |
16 | |
17 const_INT_PREFIX = config.getConfig( | |
18 config.parseMainConf(), | |
19 "", | |
20 "bridge_dbus_int_prefix", | |
21 "org.libervia.Libervia") | |
22 | |
23 # we remove any path with "/home" from PYTHONPATH because we have | |
24 # "--filesystem=home" permission and packages in .local/lib/pythonX/site-packages may | |
25 # conflict with the ones from flatpak | |
26 clean_pythonpath = ':'.join(p for p in sys.path if p and not p.startswith('/home')) | |
27 os.environ['PYTHONPATH'] = clean_pythonpath | |
28 os.environ['PYTHONNOUSERSITE'] = '1' | |
29 | |
30 try: | |
31 sessions_bus = dbus.SessionBus() | |
32 db_object = sessions_bus.get_object(const_INT_PREFIX, | |
33 const_OBJ_PATH) | |
34 except dbus.exceptions.DBusException as e: | |
35 if e._dbus_error_name != 'org.freedesktop.DBus.Error.ServiceUnknown': | |
36 raise e | |
37 # backend not found, we need to launch it | |
38 print("Launching Libervia backend") | |
39 subprocess.check_call("libervia-backend") | |
40 | |
41 os.execlp(command, command, *sys.argv[1:]) |