package App::XScreenSaver::DBus;
use v5.20;
use Moo;
use experimental qw(signatures postderef);
use Net::DBus::Reactor;
use Log::Any;
use App::XScreenSaver::DBus::InhibitSleep;
use App::XScreenSaver::DBus::Saver;
has reactor => (
is => 'lazy',
builder => sub { Net::DBus::Reactor->main() },
);
has inhibit_sleep => (
is => 'lazy',
builder => sub { App::XScreenSaver::DBus::InhibitSleep->new() },
);
has saver => (
is => 'lazy',
builder => sub($self) {
App::XScreenSaver::DBus::Saver->new(reactor => $self->reactor);
},
);
has log => ( is => 'lazy', builder => sub { Log::Any->get_logger } );
sub run($self) {
$self->inhibit_sleep->start();
$self->saver->start();
$self->reactor->run;
}
1;