408
408
env = line.split('=', 1)
409
409
self._user_env[env[0]] = env[1]
411
logging.exception("failed to read user env")
410
except subprocess.CalledProcessError as e:
411
if e.returncode == 1:
412
logging.debug("gnome-session not running for user")
414
logging.exception("failed to read user env")
413
416
def _inhibitIdle(self):
414
417
if os.path.exists("/usr/bin/gnome-session-inhibit"):
418
self._uid = os.environ.get('SUDO_UID', '')
420
self._uid = os.environ.get('PKEXEC_UID', '')
422
logging.debug("failed to determine user upgrading")
423
logging.error("failed to inhibit gnome-session idle")
415
425
self._getUserEnv()
426
if not self._user_env:
416
428
#seteuid so dbus user session can be accessed
417
429
os.seteuid(int(self._uid))
419
431
logging.debug("inhibit gnome-session idle")
421
idle = subprocess.Popen(["gnome-session-inhibit","--inhibit",
422
"idle", "--inhibit-only"],
433
xdg_desktop = self._user_env.get("XDG_CURRENT_DESKTOP", "")
435
logging.debug("failed to find XDG_CURRENT_DESKTOP")
436
logging.error("failed to inhibit gnome-session idle")
438
xdg_desktop = xdg_desktop.split(':')
439
idle = subprocess.Popen(["gnome-session-inhibit", "--inhibit",
440
"idle", "--inhibit-only"],
424
442
# leave the inhibitor in place on Ubuntu GNOME, since the
425
# lock screen will be broken after upgrade (LP :#1565178)
426
xdg_desktop = self._user_env["XDG_CURRENT_DESKTOP"].split(':')
443
# lock screen will be broken after upgrade (LP: #1565178)
427
444
for desktop in xdg_desktop:
428
445
if "GNOME" not in desktop:
429
atexit.register(idle.terminate);
446
atexit.register(idle.terminate)
431
448
logging.exception("failed to inhibit gnome-session idle")
432
449
os.seteuid(os.getuid())