fullscreenlockscreeni3user-inactivity

Prevent xautolock/i3lock when watching fullscreen video


I use the i3 window manager and have

set $Locker i3lock --color=000000 && sleep 1
exec --no-startup-id xautolock -time 5 -locker "$Locker"

in its config file, so that it locks after 5 minutes.

The problem is that the 5 minutes timer counts down even when I'm whatching a video, which I definitely don't like. (Btw, I usually watch movies with mplayer, but sometimes I go on streaming websites as well, using qutebrowser.) On the contrary, I'd like to prevent xautolocks action in such situations.

One possible solution I was thinking of is changing the second line to

exec --no-startup-id myscript -time 5 -locker "$Locker"

where myscript is a bash/whatever script/program passing all options to xautolock only if I'm not watching some video stuff. But I don't know what to check with this hypothetical script.


Solution

  • One possible way to do this, without needing to implement all of xautolock's options in myscript would be to write your $Locker as a script or program to determine if the conditions are met to prevent locking. Otherwise, call the screen locker:

    xautolock -locker should_screen_lock.sh
                                       |
                       Yes <- fullscreen YouTube? -> No
                        |                            |
                      Abort                         Lock
    

    You can use xprop -root to learn the ID of the active window in the window manager and xprop -id against that ID to see if it's running in fullscreen mode.

    From there, it's just putting the two together and calling your window locker (i3lock in this case, but you could also have that as a custom script for a fancier lock screen).

    Here's my attempt at doing exactly this. Of note, I don't run xautolock from i3's config: It's a systemd user service. The locker (lock_screen.sh), however, is bound to a the keyboard so that I may bypass xautolock in case I have something in full screen.