web-dev-qa-db-fra.com

Lorsque je regarde une vidéo en ligne, l'écran s'éteint après quelques minutes.

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.

5
p3pc1styl3

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!

6
Terrance

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.

5
Hi-Angel