core: adjust guid parameters when running on KDE5
On KDE5 native decoration plugin is used and requires special properties set (instead of `_QUBES_VMNAME` etc). Special care needs to be taken when detecting environment, because environment variables aren't good enough - this script may be running with cleared environment (through sudo, or from systemd). So check properties of X11 root window. QubesOS/qubes-issues#1784
This commit is contained in:
parent
55af04293b
commit
94d52a13e7
@ -1763,6 +1763,33 @@ class QubesVm(object):
|
||||
guid_cmd += ['-v', '-v']
|
||||
elif not verbose:
|
||||
guid_cmd += ['-q']
|
||||
# Avoid using environment variables for checking the current session,
|
||||
# because this script may be called with cleared env (like with sudo).
|
||||
if subprocess.check_output(
|
||||
['xprop', '-root', '-notype', 'KDE_SESSION_VERSION']) == \
|
||||
'KDE_SESSION_VERSION = 5\n':
|
||||
# native decoration plugins is used, so adjust window properties
|
||||
# accordingly
|
||||
guid_cmd += ['-T'] # prefix window titles with VM name
|
||||
# get owner of X11 session
|
||||
session_owner = None
|
||||
for line in subprocess.check_output(['xhost']).splitlines():
|
||||
if line == 'SI:localuser:root':
|
||||
pass
|
||||
elif line.startswith('SI:localuser:'):
|
||||
session_owner = line.split(":")[2]
|
||||
if session_owner is not None:
|
||||
data_dir = os.path.expanduser(
|
||||
'~{}/.local/share'.format(session_owner))
|
||||
else:
|
||||
# fallback to current user
|
||||
data_dir = os.path.expanduser('~/.local/share')
|
||||
|
||||
guid_cmd += ['-p',
|
||||
'_KDE_NET_WM_COLOR_SCHEME=s:{}'.format(
|
||||
os.path.join(data_dir,
|
||||
'qubes-kde', self.label.name + '.colors'))]
|
||||
|
||||
retcode = subprocess.call (guid_cmd)
|
||||
if (retcode != 0) :
|
||||
raise QubesException("Cannot start qubes-guid!")
|
||||
|
Loading…
Reference in New Issue
Block a user