diff options
author | Martin Whitaker <mageia@martin-whitaker.me.uk> | 2018-08-07 23:59:33 +0100 |
---|---|---|
committer | Martin Whitaker <mageia@martin-whitaker.me.uk> | 2018-08-07 23:59:33 +0100 |
commit | 70c038828228992b07a7c48da5ed1cdf85d917bf (patch) | |
tree | 2855d5728e5fa78dd897cb814f7e09da386ddd91 /draklive-install.wrapper | |
parent | af1d4d8b55b4e9bafe344ecc0b1e5da138c4dfc7 (diff) | |
download | draklive-install-70c038828228992b07a7c48da5ed1cdf85d917bf.tar draklive-install-70c038828228992b07a7c48da5ed1cdf85d917bf.tar.gz draklive-install-70c038828228992b07a7c48da5ed1cdf85d917bf.tar.bz2 draklive-install-70c038828228992b07a7c48da5ed1cdf85d917bf.tar.xz draklive-install-70c038828228992b07a7c48da5ed1cdf85d917bf.zip |
Disable screensaver/lock whilst installer is running.
(as requested by the QA team)
Diffstat (limited to 'draklive-install.wrapper')
-rwxr-xr-x | draklive-install.wrapper | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/draklive-install.wrapper b/draklive-install.wrapper index 5a8f4eb..1da9f0e 100755 --- a/draklive-install.wrapper +++ b/draklive-install.wrapper @@ -1,6 +1,20 @@ -#!/bin/sh -if [[ "$UID" != "0" ]] ; then - /usr/bin/pkexec /usr/sbin/draklive-install-lock-storage "$@" - exit $? -fi -exec /usr/sbin/draklive-install-lock-storage "$@" +#!/bin/perl +use Net::DBus; + +if ($>) { + if (system('ps -C xscreensaver') == 0) { + # xscreensaver doesn't implement the freedesktop API, so we just have to kill it, + # We expect the user to reboot after the install completes, so don't bother to + # reenable it. + system('xscreensaver-command -exit'); + } else { + my $bus = Net::DBus->session; + my $service = $bus && $bus->get_service('org.freedesktop.ScreenSaver'); + my $manager = $service && $service->get_object('/ScreenSaver', 'org.freedesktop.ScreenSaver'); + my $cookie = $manager && $manager->Inhibit('draklive-install', 'Install in progress'); + # The screensaver will be automatically uninhibited when this process exits. + } + my $status = system("/usr/bin/pkexec /usr/sbin/draklive-install-lock-storage @ARGV"); + exit($status); +} +exec("/usr/sbin/draklive-install-lock-storage @ARGV"); |