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 xautolock
s 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.
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.