My contribution to xflock4

Jarno Suni sunijarno at gmail.com
Fri Mar 26 09:47:05 CET 2021


Hi,

I have made some changes to xflock4 shell script. That is currently
only on my local git branch as a single commit. I guess you want that
the result is done in more than one commit, because there are a few
changes, though it is extra work.

I Cc:ed this to user mailing list, too, because I am interested in
their comments.

Here are some related bug issues:
https://gitlab.xfce.org/xfce/xfce4-session/-/issues/17
https://gitlab.xfce.org/xfce/xfce4-session/-/issues/29

I tried to do the changes so that the modified xflock4 could be used
as such with older releases of Xfce4, too.

Below is the summary of the changes in git. Any comments?

    Add known lockers and features in xflock4

    Make xflock4 executable.

    Unset IFS to get expected word splitting for sure. Use bash settings
    to find errors more easily.

    If the script is run in terminal, apply 1 second delay before launching
    a screensaver to avoid unwanted effect when raising key up.

    'gnome-screensaver-command --lock' returns always 0, so it has to be
    handled specially. Tested on gnome-screensaver 3.6.1; the project
    seems to be unmaintained.

    Recognize new fallback screensavers:
    light-locker (which also turns audio off while locking)
    mate-screensaver
    cinnamon-screensaver

    Recognize new fallback lockers:
    i3lock
    xtrlock
    slimlock
    alock

    /general/LockCommand is evaluated with care so that user does not
    accidentally run e.g. a shell function, instead of a command, but user
    has an option to run shell commands by starting the line by ';', '&&'
    or '&' or by postfixing the initial command by '&'. User can pass
    quoted arguments for the desired command.

    Support new xfconf properties of xfce4-session channel:

    /general/LockCommandForks (boolean; default false):

    If the locker set in /general/LockCommand does not fork, this has to be
    false so that xflock4 exits before unlocking; it will exit one second
    after launching the command then.

    /general/LockSetDPMS (boolean, default is false):

    Whether to change DPMS setting for the locker. DPMS is never applied
    for fallback screensavers and always applied for fallback lockers.

    /general/LockInitialDelayDPMS (unsigned integer; default is 1):

    Apply DPMS mode after this initial delay in seconds after the locker is
    started. Actual delay is at least 1 second if /general/LockCommandForks
    is false.

    /general/LockDelayDPMS (unsigned integer; default is 15):

    Apply DPMS mode after this amount of time of inactivity in seconds.
    The old setting is restored after locker exits. This does not have an
    effect if /general/LockCommandForks is true. This does not have an
    effect either if the locker set in /general/LockCommand forks (because
    it exits right off).

    /general/LockModeDPMS (string with allowed values
    standby, suspend and off; default is off):

    Some DPMS mode might work better than other depending on system.


More information about the Xfce mailing list