dotfiles/scripts/xscreensaverstopper.sh

57 lines
1.7 KiB
Bash

#!/usr/bin/env sh
# xscreensaverstopper.sh
# This script is licensed under GNU GPL version 2.0 or above
# Uses elements from lightsOn.sh
# Copyright (c) 2011 iye.cba at gmail com
# url: https://github.com/iye/lightsOn
# This script is licensed under GNU GPL version 2.0 or above
# Description: Restarts xscreensaver's idle countdown while
# full screen applications are running.
# Checks every 30 seconds to see if a full screen application
# has focus, if so then the xscreensaver is told to restart
# its idle countdown.
# enumerate all the attached screens
tmp_file="/tmp/xscreensaverstopper$(date +%s)"
xvinfo | sed -n 's/^screen #\([0-9]\+\)$/\1/p' > $tmp_file
displays=""
while read id
do
displays="$displays $id"
done< $tmp_file
checkFullscreen()
{
# loop through every display looking for a fullscreen window
for display in $displays
do
#get id of active window and clean output
activ_win_id=`DISPLAY=:0.${display} xprop -root _NET_ACTIVE_WINDOW | \
cut -c 41-49`
# activ_win_id="$(printf "%b\n" "$activ_win_id" | cut -c 41-49 )"
# Check if Active Window (the foremost window) is in fullscreen state
[ -n "$activ_win_id" ] && isActivWinFullscreen=`DISPLAY=:0.${display} \
xprop -id $activ_win_id | grep _NET_WM_STATE_FULLSCREEN`
if [ -n "$isActivWinFullscreen" -a -z "${isActivWinFullscreen##*NET_WM_STATE_FULLSCREEN*}" ]; then
xscreensaver-command -deactivate
# xscreensaver-command -exit
# xscreensaver-command -restart
# xdotool key Caps_Lock && xdotool key Caps_Lock
# else
# xscreensaver -no-splash &
fi
done
}
while sleep $(( 30 )); do
checkFullscreen
done
exit 0