summaryrefslogtreecommitdiff
path: root/lib/App/XScreenSaver/DBus/InhibitSleep.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/App/XScreenSaver/DBus/InhibitSleep.pm')
-rw-r--r--lib/App/XScreenSaver/DBus/InhibitSleep.pm16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/App/XScreenSaver/DBus/InhibitSleep.pm b/lib/App/XScreenSaver/DBus/InhibitSleep.pm
index ce205a7..226facf 100644
--- a/lib/App/XScreenSaver/DBus/InhibitSleep.pm
+++ b/lib/App/XScreenSaver/DBus/InhibitSleep.pm
@@ -4,6 +4,7 @@ use Moo;
use experimental qw(signatures postderef);
use curry;
use Net::DBus;
+use IPC::Run;
use Log::Any;
# VERSION
# ABSTRACT: implements the logind "inhibitor locks" protocol
@@ -96,16 +97,27 @@ sub _inhibit($self) {
sub _going_to_sleep($self,$before) {
if ($before) {
$self->log->debug('locking');
- system(qw(xscreensaver-command -suspend));
+ $self->_xscreensaver_command('-suspend');
$self->log->debug('locked');
$self->_set_inhibit_fd(undef);
}
else {
$self->log->debug('woken up');
- system(qw(xscreensaver-command -deactivate));
+ $self->_xscreensaver_command('-deactivate');
$self->_inhibit();
}
return;
}
+sub _xscreensaver_command($self,$command) {
+ my ($out, $err);
+ IPC::Run::run(
+ ['xscreensaver-command',$command],
+ \undef, \$out, \$err,
+ );
+ $self->log->tracef('xscreensaver-command %s said <%s>',$command,$out);
+ $self->log->warnf('xscreensaver-command %s errored <%s>',$command,$err)
+ if $err;
+}
+
1;