summaryrefslogtreecommitdiff
path: root/lib/App/XScreenSaver/DBus/Lock.pm
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2021-05-06 15:08:15 +0100
committerdakkar <dakkar@thenautilus.net>2021-05-06 15:08:15 +0100
commit67d30e007b8f2b2ee10529bc76460adcdf7e6c10 (patch)
treed8ca512b022503b4379197051fa02db83ff51122 /lib/App/XScreenSaver/DBus/Lock.pm
parentlock the screen when logind says so (diff)
downloadxscreensaver-dbus-67d30e007b8f2b2ee10529bc76460adcdf7e6c10.tar.gz
xscreensaver-dbus-67d30e007b8f2b2ee10529bc76460adcdf7e6c10.tar.bz2
xscreensaver-dbus-67d30e007b8f2b2ee10529bc76460adcdf7e6c10.zip
compact the code
Diffstat (limited to 'lib/App/XScreenSaver/DBus/Lock.pm')
-rw-r--r--lib/App/XScreenSaver/DBus/Lock.pm111
1 files changed, 0 insertions, 111 deletions
diff --git a/lib/App/XScreenSaver/DBus/Lock.pm b/lib/App/XScreenSaver/DBus/Lock.pm
deleted file mode 100644
index 22410f2..0000000
--- a/lib/App/XScreenSaver/DBus/Lock.pm
+++ /dev/null
@@ -1,111 +0,0 @@
-package App::XScreenSaver::DBus::Lock;
-use v5.20;
-use Moo;
-use experimental qw(signatures postderef);
-use curry;
-use Net::DBus;
-use IPC::Run;
-use Log::Any;
-# VERSION
-# ABSTRACT: implements the logind "session lock" protocol
-
-=head1 SYNOPSIS
-
- use Net::DBus::Reactor;
- use App::XScreenSaver::DBus::Lock;
- my $is = App::XScreenSaver::DBus::Lock->new;
- $is->start;
-
- Net::DBus::Reactor->new->run;
-
-=attr C<bus>
-
-the DBus system bus
-
-=cut
-
-has bus => ( is => 'lazy', builder => sub { Net::DBus->system() } );
-
-=attr C<logind_srv>
-
-the (e)logind DBus service
-
-=cut
-
-has logind_srv => (
- is => 'lazy',
- builder => sub { shift->bus->get_service('org.freedesktop.login1') },
-);
-
-=attr C<logind_obj>
-
-the (e)logind DBus object
-
-=cut
-
-has logind_obj => (
- is => 'lazy',
- builder => sub { shift->logind_srv->get_object('/org/freedesktop/login1') },
-);
-
-=attr C<session_obj>
-
-the (e)logind session DBus object
-
-=cut
-
-has session_obj => (
- is => 'lazy',
- builder => sub($self) {
- my $session_path = $self->logind_obj->GetSessionByPID($$);
- return $self->logind_srv->get_object($session_path);
- },
-);
-
-=attr C<log>
-
-a logger
-
-=cut
-
-has log => ( is => 'lazy', builder => sub { Log::Any->get_logger } );
-
-=method C<start>
-
-starts listening to the C<Lock> and C<Unlock> signals from the
-session, and activates the screen saver
-
-=cut
-
-sub start($self) {
- $self->session_obj->connect_to_signal(
- 'Lock',
- $self->curry::weak::_lock,
- );
- $self->session_obj->connect_to_signal(
- 'Unlock',
- $self->curry::weak::_unlock,
- );
- return;
-}
-
-sub _lock($self) {
- $self->_xscreensaver_command('-lock');
-}
-
-sub _unlock($self) {
- $self->_xscreensaver_command('-deactivate');
-}
-
-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;