diff options
Diffstat (limited to 'lib/App/XScreenSaver/DBus/InhibitSleep.pm')
-rw-r--r-- | lib/App/XScreenSaver/DBus/InhibitSleep.pm | 16 |
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; |