Coverage for /home/antoine/projects/xpra-git/dist/python3/lib64/python/xpra/platform/xposix/paths.py : 76%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# This file is part of Xpra.
2# Copyright (C) 2010 Nathaniel Smith <njs@pobox.com>
3# Copyright (C) 2010-2019 Antoine Martin <antoine@xpra.org>
4# Xpra is released under the terms of the GNU GPL v2, or, at your option, any
5# later version. See the file COPYING for details.
7import os.path
8import sys
9import site
12def do_get_desktop_background_paths():
13 return [
14 "/usr/share/backgrounds/images/default.png",
15 "/usr/share/backgrounds/images/*default*.png",
16 "/usr/share/backgrounds/*default*png",
17 "/usr/share/backgrounds/gnome/adwaita*.jpg", #Debian Stretch
18 "/usr/share/backgrounds/images/*jpg", #CentOS 7
19 ]
22def do_get_install_prefix():
23 #special case for "user" installations, ie:
24 #$HOME/.local/lib/python3.8/site-packages/xpra/platform/paths.py
25 try:
26 base = site.getuserbase()
27 except Exception:
28 base = site.USER_BASE
29 if __file__.startswith(base):
30 return base
31 if sys.argv:
32 p = sys.argv[0].find("/bin/xpra")
33 if p>0:
34 return sys.argv[0][:p]
35 return sys.prefix
37def do_get_resources_dir():
38 #is there a better/cleaner way?
39 from xpra.platform.paths import get_install_prefix
40 options = [get_install_prefix(), sys.exec_prefix] + \
41 os.environ.get("XDG_DATA_DIRS", "/usr/local/share:/usr/share").split(":")
42 for x in options:
43 p = os.path.join(x, "share", "xpra")
44 if os.path.exists(p) and os.path.isdir(p):
45 return p
46 try:
47 # test for a local installation path (run from source tree):
48 local_share_path = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "..", "share", "xpra"))
49 if os.path.exists(local_share_path) and os.path.isdir(local_share_path):
50 return local_share_path
51 except Exception:
52 pass
53 return os.getcwd()
55def do_get_app_dir():
56 from xpra.platform.paths import get_resources_dir
57 return get_resources_dir()
59def do_get_icon_dir():
60 from xpra.platform.paths import get_app_dir
61 return os.path.join(get_app_dir(), "icons")
63def do_get_libexec_dir():
64 from xpra.os_util import is_Fedora, is_CentOS, is_RedHat
65 if is_Fedora() or is_CentOS() or is_RedHat():
66 return "/usr/libexec/"
67 return "/usr/lib"
69def do_get_mmap_dir():
70 return _get_xpra_runtime_dir() or os.getenv("TMPDIR", "/tmp")
72def do_get_xpra_tmp_dir():
73 xrd = _get_xpra_runtime_dir()
74 return os.path.join(xrd, "tmp")
77def do_get_script_bin_dirs():
78 #versions before 0.17 only had "~/.xpra/run-xpra"
79 script_bin_dirs = []
80 runtime_dir = _get_xpra_runtime_dir()
81 if runtime_dir:
82 script_bin_dirs.append(runtime_dir)
83 return script_bin_dirs
86def do_get_system_conf_dirs():
87 dirs = ["/etc/xpra", "/usr/local/etc/xpra"]
88 for d in os.environ.get("XDG_CONFIG_DIRS", "/etc/xdg").split(":"):
89 dirs.append(os.path.join(d, "xpra"))
90 #hope the prefix is something like "/usr/local" or "$HOME/.local":
91 from xpra.platform.paths import get_install_prefix
92 prefix = get_install_prefix()
93 if prefix not in ("/usr", "/usr/local"):
94 if prefix.endswith(".local"):
95 idir= os.path.join(prefix, "xpra") #ie: ~/.local/xpra
96 else:
97 idir= os.path.join(prefix, "/etc/xpra/") #ie: /someinstallpath/etc/xpra
98 if idir not in dirs:
99 dirs.append(idir)
100 return dirs
103def do_get_user_conf_dirs(uid):
104 #per-user configuration location:
105 #(but never use /root/.xpra or /root/.config/xpra)
106 if uid is None:
107 uid = os.getuid()
108 dirs = []
109 if uid>0:
110 dirs += [os.path.join(os.environ.get("XDG_CONFIG_HOME", "~/.config"), "xpra")]
111 dirs.append("~/.xpra")
112 return dirs
115def get_runtime_dir():
116 runtime_dir = os.environ.get("XDG_RUNTIME_DIR")
117 if runtime_dir or sys.platform.startswith("linux"):
118 return "$XDG_RUNTIME_DIR"
119 for d in ("/run/user", "/var/run/user"):
120 if os.path.exists(d) and os.path.isdir(d):
121 runtime_dir = d+"/$UID"
122 break
123 return runtime_dir
125def _get_xpra_runtime_dir():
126 runtime_dir = get_runtime_dir()
127 if not runtime_dir:
128 return None
129 return os.path.join(runtime_dir, "xpra")
131def do_get_socket_dirs():
132 SOCKET_DIRS = []
133 runtime_dir = _get_xpra_runtime_dir()
134 if runtime_dir:
135 #private, per user: XDG_RUNTIME_DIR/xpra
136 # (ie: "/run/user/1000/xpra")
137 SOCKET_DIRS.append(runtime_dir)
138 #for shared sockets (the 'xpra' group should own this directory):
139 if os.path.exists("/run"):
140 SOCKET_DIRS.append("/run/xpra")
141 elif os.path.exists("/var/run"):
142 SOCKET_DIRS.append("/var/run/xpra")
143 #Debian and Ubuntu often don't create a reliable XDG_RUNTIME_DIR
144 #other distros may not create one when using "su"
145 SOCKET_DIRS.append("~/.xpra")
146 return SOCKET_DIRS
149def do_get_client_socket_dirs():
150 DIRS = []
151 runtime_dir = _get_xpra_runtime_dir()
152 if runtime_dir:
153 DIRS.append(os.path.join(runtime_dir, "clients"))
154 return DIRS
157def do_get_default_log_dirs():
158 log_dirs = []
159 v = _get_xpra_runtime_dir()
160 if v:
161 log_dirs.append(v)
162 log_dirs.append("/tmp")
163 return log_dirs
165def do_get_sound_command():
166 from xpra.platform.paths import get_xpra_command
167 return get_xpra_command()
169def do_get_xpra_command():
170 #try to use the same "xpra" executable that launched this server,
171 #whilst also preserving the python interpreter version:
172 if sys.argv and sys.argv[0].lower().endswith("/xpra"):
173 return ["python%i.%i" % (sys.version_info.major, sys.version_info.minor), sys.argv[0]]
174 return ["xpra"]