For those who are using a screensaver other than gnome-screensaver (which is the default screensaver in Ubuntu starting with the 11.10 version) this answer may be helpful.
Personally, I didn't change out gnome-screensaver for something else and, I don't know for what reasons, Caffeine doesn't work for me in any way (maybe is outdated).
That being said, starting from others' bash scripts (this, this and this), I managed to make a new script, gnome_screensaver_off.sh
that works perfectly for what I intended when YouTube is using Flash player for rendering videos.
Disable gnome-screensaver while YouTube is using Flash player
Open a terminal and run next commands followed by instructions:
mkdir -p bin
- this command will make a bin
directory in your home
folder if you don't already have it.
gedit ~/bin/gnome_screensaver_off.sh
-this will create the new file gnome_screensaver_off.sh
in gedit.
- Copy and paste there next script:
#!/bin/bash
# Getting the previous configuration
back=$(gsettings get org.gnome.settings-daemon.plugins.power sleep-display-ac)
screensaver_is_off=0
delay=$[$back - 10]
# Defining the restore function
function restore {
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac $back
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-battery $back
gsettings set org.gnome.desktop.session idle-delay $back
bmin=$[$back / 60]
#notify-send "Screen sleep time restored to $bmin minutes."
notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "Screen sleep time restored to $bmin minutes."
}
# Defining the disable_screensaver function
function disable_screensaver {
# Making sure the user don't mess up...
trap 'restore && exit 0' INT HUP
# Disabling sleep time
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac 0
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-battery 0
gsettings set org.gnome.desktop.session idle-delay 0
notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "Screen sleep time turned off."
}
while true; do
if [ "$delay" -le "50" ]; then
sleep 50
else
sleep $delay
fi
flash_on=0
#Check if Chrome, Chromium or Firefox is open with a flash video running on it
if pgrep -lfc ".*((c|C)hrome|chromium|firefox|).*flashp.*" > /dev/null ; then
flash_on=1
else
flash_on=0
fi
if [ "$flash_on" -eq "1" ] && [ "$back" -ne "0" ] && [ "$screensaver_is_off" -eq "0" ]; then
disable_screensaver
screensaver_is_off=1
elif [ "$flash_on" -eq "0" ] && [ "$screensaver_is_off" -eq "1" ]; then
restore
screensaver_is_off=0
fi
done
exit 0
- Save the file and close it.
- Go back into terminal and run:
chmod +x gnome_screensaver_off.sh
- to grant execute access for the script.
- To run your new script, run
~/bin/gnome_screensaver_off.sh
.
If you prefer, you can set this script to run at logon by doing the following:
- Search in Dash for Startup Applications, open it and click Add.
- Under name type "YouTube Monitor" or something you will recognise.
- Under command type "/home/$USER/bin/gnome_screensaver_off.sh" (change $USER with your username).
- Under comment (if you want), type a brief description (e.g. "Stops screen turning off when Flash player is running in browser").
Disable gnome-screensaver while YouTube is using HTML5 player
The question remains open in this sense...
Thanks for the suggestions offered by: fossfreedom, Meer Borg, njallam, desgua and others.