#!/usr/bin/env bash # Script to adjust dpms settings when running certain programs, # that don't use fullscreen, but should not be "blanked" in between. export DISPLAY=:0.0 blankoff=0 programs=( ${programs} ) # loop all programs and check for running instances for i in "${programs[@]}" do pid=$(pidof -x $i) re='^[0-9]+$' if [[ $pid =~ $re ]]; then echo "$i running ($pid)" blankoff=1 fi done # if valuable programs are running, don't use screen blanking if [ $blankoff -gt 0 ]; then echo "Some program requires screensaver to be off." # print currently set values for screensaver timeout to tmp file echo "s $(xset q|grep timeout|awk '{print $2}') $(xset q|grep timeout|awk '{print $4}')" > $adjust_dpms echo "dpms $(xset q|grep Standby|awk '{print $2}') $(xset q|grep Standby|awk '{print $4}') $(xset q|grep Standby|awk '{print $6}')" >> $adjust_dpms # disable screensaver and dpms xset s off xset -dpms else xsetq=$(xset q|grep timeout|awk '{print $2}') # if the timeout is still 0, set it to its former value, or just switch on screensaver/dpms again if [[ $xsetq -eq 0 ]];then if [[ -f "$adjust_dpms" ]];then xset $(head -n1 $adjust_dpms) xset $(tail -n1 $adjust_dpms) rm -rf $adjust_dpms else xset +dpms xset s on fi fi fi