Screensaver-Any

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN



0.006   2019-09-04  Released-By: PERLANCAR; Urgency: medium

	- Add function: screensaver_is_enabled.


0.005   2019-09-03  Released-By: PERLANCAR; Urgency: medium

	- [bugfix] Detect xscreensaver first for cases where a user uses KDE
	  plasma desktop but xscreensaver (like me personally).


0.004   2018-02-28  Released-By: PERLANCAR

	- Check ~/.config/kscreenlockerrc for kde.


0.003   2018-02-28  Released-By: PERLANCAR

	- Add logging.

README  view on Meta::CPAN


          timeout:    0:05:00

        modifies the line, save the file, and HUP the xscreensaver process.

    *   gnome

        To set timeout for gnome screensaver, the program executes this
        command:

          gsettings set org.gnome.desktop.session idle-delay 300

    *   cinnamon

        Not yet supported.

    *   KDE

        To set timeout for the KDE screen locker, the program looks for this
        line in "~/.kde/share/config/kscreensaverrc":

lib/Screensaver/Any.pm  view on Meta::CPAN


    my $which = $args{_which};
    my $mins = $args{_mins};
    my $screensaver = $args{screensaver} // detect_screensaver();
    return [412, "Can't detect any known screensaver running"]
        unless $screensaver;

    if ($screensaver eq 'gnome') {
        if ($which eq 'set') {
            my $secs = $mins*60;
            system "gsettings", "set", "org.gnome.desktop.session",
                "idle-delay", $secs;
            return [500, "gsettings set failed: $!"] if $?;
        }
        my $res = `gsettings get org.gnome.desktop.session idle-delay`;
        return [500, "gsettings get failed: $!"] if $?;
        $res =~ /^uint32\s+(\d+)$/
            or return [500, "Can't parse gsettings get output"];
        my $val = $1;
        return [200, "OK", ($which eq 'set' ? undef : $val), {
            'func.timeout' => $val,
            'func.screensaver'=>'gnome',
        }];
    }

lib/Screensaver/Any.pm  view on Meta::CPAN

  `~/.xscreensaver`:

      timeout:    0:05:00

  modifies the line, save the file, and HUP the xscreensaver process.

* gnome

  To set timeout for gnome screensaver, the program executes this command:

      gsettings set org.gnome.desktop.session idle-delay 300

* cinnamon

  Not yet supported.

* KDE

  To set timeout for the KDE screen locker, the program looks for this line in
  `~/.kde/share/config/kscreensaverrc`:

lib/Screensaver/Any.pm  view on Meta::CPAN

    summary => 'Enable screensaver that has been previously disabled',
    args => {
        %arg_screensaver,
    },
};
sub enable_screensaver {
    my %args = @_;
    my $screensaver = $args{screensaver} // detect_screensaver();

    if ($screensaver eq 'gnome') {
        system "gsettings", "set", "org.gnome.desktop.lockdown", "disable-lock-screen", "false";
        if ($?) { return [500, "Failed"] } else { return [200, "OK"] }
    }

    [501, "Not yet implemented except for gnome"];
}

$SPEC{disable_screensaver} = {
    v => 1.1,
    summary => 'Disable screensaver so screen will not go blank or lock after being idle',
    args => {
        %arg_screensaver,
    },
};
sub disable_screensaver {
    my %args = @_;
    my $screensaver = $args{screensaver} // detect_screensaver();

    if ($screensaver eq 'gnome') {
        system "gsettings", "set", "org.gnome.desktop.lockdown", "disable-lock-screen", "true";
        if ($?) { return [500, "Failed"] } else { return [200, "OK"] }
    }

    [501, "Not yet implemented except for gnome"];
}

$SPEC{screensaver_is_enabled} = {
    v => 1.1,
    summary => 'Check whether screensaver is enabled',
    args => {
        %arg_screensaver,
    },
};
sub screensaver_is_enabled {
    my %args = @_;
    my $screensaver = $args{screensaver} // detect_screensaver();

    if ($screensaver eq 'gnome') {
        my $read = readpipe "gsettings", "get", "org.gnome.desktop.lockdown", "disable-lock-screen";
        if ($?) { return [500, "Failed"] } else { return [200, "OK", $read =~ /false/ ? 1 : $read =~ /true/ ? 0 : undef] }
    }

    [501, "Not yet implemented except for gnome"];
}

$SPEC{activate_screensaver} = {
    v => 1.1,
    summary => 'Activate screensaver immediately and lock screen',
    args => {

lib/Screensaver/Any.pm  view on Meta::CPAN

C<~/.xscreensaver>:

  timeout:    0:05:00

modifies the line, save the file, and HUP the xscreensaver process.

=item * gnome

To set timeout for gnome screensaver, the program executes this command:

  gsettings set org.gnome.desktop.session idle-delay 300

=item * cinnamon

Not yet supported.

=item * KDE

To set timeout for the KDE screen locker, the program looks for this line in
C<~/.kde/share/config/kscreensaverrc>:



( run in 0.466 second using v1.01-cache-2.11-cpan-299005ec8e3 )