xss-lock.1.rst.in

xss-lock / doc / xss-lock.1.rst.in

========
xss-lock
========

-------------------------------------
use external locker as X screen saver
-------------------------------------

:Author: Raymond Wagenmaker <raymondwagenmaker@gmail.com>
:Date: November 2013
:Manual section: 1

Synopsis
========

| xss-lock [-n *notify_cmd*] [--ignore-sleep] [-l] [-v|-q] [--] *locker* [*arg*] ...
| xss-lock --help|--version

Description
===========

**xss-lock** hooks up your favorite locker to the MIT screen saver extension
for X and also to systemd's login manager. The locker is executed in response
to events from these two sources:

- X signals when screen saver activation is forced or after a period of user
  inactivity (as set with ``xset s TIMEOUT``). In the latter case, the notifier
  command, if specified, is executed first.

- The login manager can also request that the session be locked; as a result of
  ``loginctl lock-sessions``, for example. Additionally, **xss-lock** uses the
  inhibition logic to lock the screen before the system goes to sleep.

**xss-lock** waits for the locker to exit -- or kills it when screen saver
deactivation or session unlocking is forced -- so the command should not fork.

Also, **xss-lock** manages the idle hint on the login session. The idle state
of the session is directly linked to user activity as reported by X (except
when the notifier runs before locking the screen). When all sessions are idle,
the login manager can take action (such as suspending the system) after a
preconfigured delay.

Options
=======

-n cmd, --notifier=cmd
                Run *cmd* when the screen saver activates because of user
                inactivity. Shell-style quoting is supported. The notifier is
                killed when X signals user activity or when the locker is
                started. The locker is started after the first screen saver
                cycle, as set with ``xset s TIMEOUT CYCLE``.

                This can be used to run a countdown or (on laptops) dim the
                screen before locking. For an example, see the script
                *@CMAKE_INSTALL_PREFIX@/share/doc/xss-lock/dim-screen.sh*.

-l, --tranfer-sleep-lock
                Allow the locker process to inherit the file descriptor that
                represents the delay lock obtained from the login manager. The
                corresponding index will be made available in the environment
                variable **$XSS_SLEEP_LOCK_FD**; this will only be set if the
                reason for locking is that the system is preparing to go to
                sleep. The locker should close this file descriptor to indicate
                it is ready.

                Example scripts that wrap existing lockers are available as
                *@CMAKE_INSTALL_PREFIX@/share/doc/xss-lock/transfer-sleep-lock-\*.sh*.

--ignore-sleep  Do not lock on suspend/hibernate.

-q, --quiet     Output only fatal errors.

-v, --verbose   Output more messages.

-h, --help      Print help message and exit.

--version       Print version number and exit.

Signals
=======

SIGHUP
    Upon receiving this signal, **xss-lock** resets the screen saver, but only
    if the screen is not currently locked (unlike ``xset s reset``).

    This can be used in MPlayer's configuration as a workaround for MPlayer's
    failure to restart the screen saver timer when playback is paused::

        heartbeat-cmd="killall -HUP xss-lock"
        stop-xscreensaver=false

    .. note::
       This is ineffective with mplayer2 (and mpv), because its heart keeps
       beating while playback is paused.

SIGINT/SIGTERM
    Upon receiving this signal, **xss-lock** exits after killing any running
    notifier or locker.

Notes
=====

- Some applications rely on the **xdg-screensaver** script from xdg-utils,
  which uses ``xset s off`` and ``xset s default`` to suspend and resume the
  screen saver, respectively. The latter resets the timeout and cycle to the
  server defaults (``xset s on`` uses a hardcoded default instead), so this
  only works if you are happy with (or can control) the server settings.
  
  To fix the resume action in this script (or a copy in *~/bin* preceding the
  original in **$PATH**), either replace ``on`` by your preferred timeout and
  cycle, or avoid hardcoded time values by patching the script to run a suspend
  loop as it does for other screen savers, using
  *@CMAKE_INSTALL_PREFIX@/share/doc/xss-lock/xdg-screensaver.patch*.

Examples
========

- Run **xlock** after ten minutes of inactivity::

    xset 600
    xss-lock xlock +resetsaver

  Without ``+resetsaver``, **xlock** forces a screen saver reset during
  startup, thereby telling **xss-lock** to immediately kill **xlock** again.

- Dim the screen after three minutes of inactivity, lock the screen two minutes
  later using **i3lock**::

    xset 180 120
    xss-lock -n dim-screen.sh -- i3lock -n

  .. note::
     A script is provided to use **i3lock**'s forking mode with the
     ``--tranfer-sleep-lock`` option (see above).

See also
========

**xset**\(1),
**systemd-logind.service**\(8)