sur certains sites, lorsque je regarde un film dans un navigateur et que je ne touche pas à l'ordinateur, l'écran s'éteint. Dans d'autres sites comme Youtube, je n'ai pas ce problème. J'ai essayé d'utiliser de la caféine mais je n'aime pas l'idée de devoir l'activer et la désactiver manuellement chaque fois que je regarde une vidéo. J'ai aussi essayé d'autres méthodes que j'ai trouvées sur Internet mais rien n'a fonctionné. Aucune suggestion? J'utilise chrome et exécute Ubuntu 16.04.
MISE À JOUR 2017/08/23: Le script a été remplacé par un script qui n'envoie pas de frappe au clavier, mais désactive dpms
et l'économiseur d'écran temporairement pendant la lecture d'une vidéo en plein écran.
Ceci ne fonctionne qu'avec les applications fonctionnant en plein écran et non maximisées.
Première installation xdotool
:
Sudo apt install xdotool
j'ai ensuite créé un dossier scripts
dans mon dossier personnel dans lequel je pouvais insérer tous les scripts que je voulais conserver:
mkdir -p ~/scripts
j'ai ensuite créé un fichier nommé check_full.bsh
dans mon dossier ~/scripts
et y ai ajouté le contenu suivant:
Étant donné que mon économiseur d'écran est configuré pour 20 minutes, je règle la minuterie d'arrêt dans le script sur 10 minutes (600 secondes). Vous pouvez modifier cela en fonction de vos paramètres d’économiseur d’écran.
#!/bin/bash
#Get DPMS settings
dpms_set=$(xset -q | grep -i "dpms is" | awk '{print $NF}')
#Get screensaver type and command
scrnsvr=$(ps -ef | grep screensav | grep -v grep | awk '{print $8}')
scrnsvrcmd=$(ps -ef | grep screensav | grep -v grep | awk '{print substr($0,index($0,$8))}')
#Sleep Timer in seconds.
SL=600
while true;
do
result=()
#Get all window geometries
all=($(xdotool search --name - | while read win; do xdotool getwindowgeometry $win | grep Geometry | awk '{print $2}'; done))
#Get all screen resolutions detected and build array.
SCREENS=($(xrandr | grep \* | awk '{print $1}'))
SCRN=" ${SCREENS[*]} "
#Get result of all windows and match
for item in ${all[@]}; do if [[ $SCRN =~ " $item " ]] ; then result+=($item); fi; done
#If a result exists disable power management and screensaver
if [[ ${result[@]} ]]; then
ps -ef | grep $scrnsvr | grep -v grep >/dev/null
if [[ $? == 0 ]]; then
kill $(ps -ef | grep $scrnsvr | grep -v grep | awk '{print $2}')
fi
if [[ $dpms_set == "Enabled" ]];then
xset -dpms
fi
else
ps -ef | grep $scrnsvr | grep -v grep >/dev/null
if [[ $? == 1 ]]; then
${scrnsvrcmd} &
fi
if [[ $dpms_set != "Disabled" ]];then
xset dpms
fi
fi
result=()
sleep $SL
done
rendre le script exécutable:
chmod +x ~/scripts/check_full.bsh
Pour une raison quelconque, un travail cron ne l'exécuterait pas correctement. J'ai donc ajouté une entrée à mon démarrage pour appeler ce script. Dans le dossier ~/.config/autostart/
, j'ai créé un fichier appelé Check_Full.desktop
avec le contenu suivant:
J'aime avoir des retards ajoutés au démarrage car ils se chargent généralement mieux.
[Desktop Entry]
Type=Application
Name=Check_Full
Comment=Prevent screensaver from activating when full screen video is playing
Exec=bash -c 'sleep 5 && /home/<username>/scripts/check_full.bsh'
changez au-dessus de la ligne Exec pour correspondre à votre dossier personnel.
Définissez les autorisations appropriées sur le fichier:
chmod 664 ~/.config/autostart/Check_full.desktop
Après la déconnexion et la connexion, check_full.bsh
est en cours d'exécution et vérifie toutes les 10 minutes si l'application active est en plein écran. Si ce n’est pas le cas, l’économiseur d’écran/écran de verrouillage s’ouvre aux heures normales.
J'espère que cela t'aides!
Youtube n'a pas ce problème car il utilise le lecteur HTML5. Les sites avec lesquels vous rencontrez le problème utilisent plutôt Flash Player. C'est n bogue dans Adobe Flashplayer , ce qui, en bref, c'est qu'il ne notifie jamais à WM qu'il s'est passé en plein écran. Vous avez peut-être entendu dire cependant qu'Adobe Flash est une application buggy en général; une solution consiste donc à la désactiver et à utiliser uniquement les sites contenant de la vidéo HTML5.
Comme vous avez mentionné la caféine, vous avez probablement déjà cherché une solution. Une autre chose que vous pouvez faire est de désactiver complètement "l’économie d’énergie" , c’est-à-dire de forcer l’écran à ne jamais s’éteindre.