Fades a black window in over the screen through the compositor, so it works with redshift (no gamma
changes); does nothing without a compositor. README shows it in the xss-lock setup.
The backend comes from ~/.config/xidle-inhibit/config, else the installed locker. With xss-lock, pausing X blanking alone blocks locking and Lock uses loginctl; the unit's ExecStopPost runs --cleanup. Inhibits from the old xautolock-inhibit state file are taken over once. Also fix mypy with pygobject-stubs 2.19.
Save held inhibits to $XDG_RUNTIME_DIR/xautolock-inhibit.json and restore them on start if the previous instance stopped within --restore-window (default 30s) on the same bus and the senders are still connected. The file is touched every 10s while inhibits are held, so crashes are timed too.
Annotate all functions and check them with mypy --strict (needs
python-pygobject-stubs). pyproject.toml holds only tool config since
the PKGBUILD installs the script directly.
Steam calls it thousands of times per hour during controller play, which made up
~98% of the journal. Log the first call and a summary with the count after 5
minutes of quiet, when the client leaves, or on shutdown.
Browsers don't pause X blanking themselves, so the screen still went
black after 10 minutes even with xautolock disabled. Use
XScreenSaverSuspend (MIT-SCREEN-SAVER) instead of xset: no global
setting is changed, and the X server ends the pause on its own if the
daemon exits or crashes. The suspend also holds off DPMS.
Add libx11 and libxss to depends.
Own org.freedesktop.ScreenSaver on the session bus and translate
Inhibit/UnInhibit into xautolock -disable/-enable. Cookies are tracked
per sender and released when the sender leaves the bus. Inhibits with
an ignored reason ("Playing audio" by default) are logged but don't
block locking. xautolock is re-enabled on exit.
Add systemd user unit, PKGBUILD and LICENSE.