Quando assisto a um vídeo on-line, a tela é desligada após alguns minutos

5

em alguns sites, quando vejo um filme em um navegador e não toco no computador, a tela é desativada. Em outros sites como o Youtube eu não tenho esse problema. Eu tentei usar cafeína, mas não gosto da ideia de ter que ativá-lo e desativá-lo manualmente toda vez que assisto a um vídeo. Eu também tentei outros métodos que encontrei na internet, mas nada funcionou. alguma sugestão? Estou usando o chrome e executando o Ubuntu 16.04.

    
por p3pc1styl3 28.05.2016 / 15:28

2 respostas

6

UPDATE 2017/08/23: script alterado para um que não envia pressionamentos de tecla, mas desativa dpms e o protetor de tela temporariamente enquanto um vídeo está sendo reproduzido em tela cheia.

Isso só funciona com aplicativos em tela cheia, não maximizados.

Primeiro, instale xdotool :

sudo apt install xdotool

Eu criei uma pasta scripts na minha pasta pessoal para que eu deixasse os scripts que eu queria manter:

mkdir -p ~/scripts

criei um arquivo chamado check_full.bsh na minha pasta ~/scripts e adicionei o seguinte conteúdo a ele:

Como meu protetor de tela está definido por 20 minutos, configurei o cronômetro de espera no script para 10 minutos (600 segundos). Você pode alterar isso com base nas configurações do protetor de tela.

#!/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

torne o script executável:

chmod +x ~/scripts/check_full.bsh

Por algum motivo, um cron job não executaria isso corretamente. Então, adicionei uma entrada à minha inicialização para chamar esse script. Na pasta ~/.config/autostart/ , criei um arquivo chamado Check_Full.desktop com o seguinte conteúdo:

Eu gosto de ter atrasos adicionados à inicialização, pois eles costumam carregar melhor.

[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'

altere a linha Exec para corresponder à sua pasta pessoal.

Defina as permissões adequadas para o arquivo:

chmod 664 ~/.config/autostart/check_full.desktop

Depois de sair e voltar, check_full.bsh está agora em execução e a cada 10 minutos se a aplicação ativa estiver em tela cheia. Caso contrário, o protetor de tela / tela de bloqueio é iniciado nos horários normais.

Espero que isso ajude!

    
por Terrance 28.05.2016 / 22:34
5

O Youtube não tem esse problema porque usa o player HTML5. Os sites com os quais você está tendo problemas estão usando o Flash Player. É um bug no Adobe Flashplayer , que, em resumo é que nunca notifica o WM que correu para o ecrã inteiro. Você pode ter ouvido falar que o Adobe Flash é um aplicativo com bugs em geral, portanto, uma solução é desativá-lo e usar apenas sites com vídeo em HTML5.

Como você mencionou a cafeína, você provavelmente já procurou uma solução. Outra coisa que você poderia fazer é disable "power salvando "completamente , ou seja, para forçar a tela a nunca desligar.

    
por Hi-Angel 28.05.2016 / 22:47