diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-03-31 09:50:25 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-03-31 13:10:09 +0200 |
commit | 8b49d87526dd34380df6e98800ecc82367b48be1 (patch) | |
tree | 2184c84afd80600965962a441d757ca6a85ba63f /qutebrowser/utils | |
parent | 5a4b51a784b4332242191a61a24d72bca3ff60dc (diff) | |
download | qutebrowser-8b49d87526dd34380df6e98800ecc82367b48be1.tar.gz qutebrowser-8b49d87526dd34380df6e98800ecc82367b48be1.zip |
flatpak: Try getting ID from /.flatpak_info
Diffstat (limited to 'qutebrowser/utils')
-rw-r--r-- | qutebrowser/utils/standarddir.py | 3 | ||||
-rw-r--r-- | qutebrowser/utils/version.py | 27 |
2 files changed, 25 insertions, 5 deletions
diff --git a/qutebrowser/utils/standarddir.py b/qutebrowser/utils/standarddir.py index 3ddde67c7..f1bd01a5f 100644 --- a/qutebrowser/utils/standarddir.py +++ b/qutebrowser/utils/standarddir.py @@ -240,7 +240,8 @@ def _init_runtime(args: Optional[argparse.Namespace]) -> None: # instances. *parts, app_name = os.path.split(path) assert app_name == APPNAME, app_name - flatpak_id = os.environ.get('FLATPAK_ID', 'org.qutebrowser.qutebrowser') + flatpak_id = version.flatpak_id() + assert flatpak_id is not None path = os.path.join(*parts, 'app', flatpak_id) _create(path) diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py index 22a2f1cce..e60dedcef 100644 --- a/qutebrowser/utils/version.py +++ b/qutebrowser/utils/version.py @@ -27,6 +27,8 @@ import platform import subprocess import importlib import collections +import pathlib +import configparser import enum import datetime import getpass @@ -189,10 +191,27 @@ def is_flatpak() -> bool: If packaged via Flatpak, the environment is has restricted access to the host system. """ - current_distro = distribution() - if current_distro is None: - return False - return current_distro.parsed == Distribution.kde_flatpak + return flatpak_id() is not None + + +_FLATPAK_INFO_PATH = '/.flatpak-info' + + +def flatpak_id() -> Optional[str]: + """Get the ID of the currently running Flatpak (or None if outside of Flatpak).""" + if 'FLATPAK_ID' in os.environ: + return os.environ['FLATPAK_ID'] + + # 'FLATPAK_ID' was only added in Flatpak 1.2.0: + # https://lists.freedesktop.org/archives/flatpak/2019-January/001464.html + # but e.g. Ubuntu 18.04 ships 1.0.9. + info_file = pathlib.Path(_FLATPAK_INFO_PATH) + if not info_file.exists(): + return None + + parser = configparser.ConfigParser() + parser.read(info_file) + return parser['Application']['name'] def _git_str() -> Optional[str]: |