summaryrefslogtreecommitdiff
path: root/qutebrowser/utils
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-03-31 09:50:25 +0200
committerFlorian Bruhin <me@the-compiler.org>2021-03-31 13:10:09 +0200
commit8b49d87526dd34380df6e98800ecc82367b48be1 (patch)
tree2184c84afd80600965962a441d757ca6a85ba63f /qutebrowser/utils
parent5a4b51a784b4332242191a61a24d72bca3ff60dc (diff)
downloadqutebrowser-8b49d87526dd34380df6e98800ecc82367b48be1.tar.gz
qutebrowser-8b49d87526dd34380df6e98800ecc82367b48be1.zip
flatpak: Try getting ID from /.flatpak_info
Diffstat (limited to 'qutebrowser/utils')
-rw-r--r--qutebrowser/utils/standarddir.py3
-rw-r--r--qutebrowser/utils/version.py27
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]: