Когда я смотрю видео онлайн, экран выключается через несколько минут

На некоторых сайтах, когда я смотрю фильм в браузере и не касаюсь компьютера, экран выключается. На других сайтах, таких как Youtube, у меня нет такой проблемы. Я пытался использовать кофеин, но мне не нравится идея вручную включать и отключать его каждый раз, когда я смотрю видео. Я также пробовал другие методы, которые я нашел в интернете, но ничего не получалось. какие-либо предложения? Я использую Chrome и работаю Ubuntu 16.04.

2 ответа

ОБНОВЛЕНИЕ 2017/08/23: изменен сценарий, который не отправляет нажатия клавиш, но отключает dpms и экранная заставка временно во время воспроизведения видео в полноэкранном режиме.

Это работает только с приложениями, работающими в полноэкранном режиме, но не в развернутом виде.


Первая установка xdotool:

sudo apt install xdotool

Затем я создал scripts папка в моей домашней папке, в которую я могу поместить любые скрипты, которые я хочу сохранить:

mkdir -p ~/scripts

Затем я создал файл с именем check_full.bsh в моем ~/scripts папку и добавил следующее содержание:

Поскольку моя заставка настроена на 20 минут, я установил таймер сна в сценарии на 10 минут (600 секунд). Вы можете изменить это в зависимости от настроек заставки.

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

сделать скрипт исполняемым:

chmod +x ~/scripts/check_full.bsh

По какой-то причине задание cron не будет работать правильно. Поэтому я добавил запись в свой запуск, чтобы вызвать этот скрипт. в ~/.config/autostart/ папку, я создал файл с именем Check_Full.desktop со следующим содержанием:

Мне нравится добавлять задержки при запуске, поскольку они обычно загружаются лучше.

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

измените строку выше Exec, чтобы она соответствовала вашей домашней папке.

Установите правильные разрешения для файла:

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

После выхода из системы и обратно, check_full.bsh теперь запущен и проверяет каждые 10 минут, является ли активное приложение полноэкранным. Если нет, заставка / экран блокировки запускается в обычное время.


Надеюсь это поможет!

У YouTube такой проблемы нет, потому что он использует проигрыватель HTML5. Сайты, с которыми у вас проблемы, используют вместо этого Flash Player. Это ошибка в Adobe Flashplayer, которая заключается в том, что она никогда не уведомляет WM о запуске в полноэкранном режиме. Вы, возможно, слышали, что Adobe Flash - это приложение с ошибками в целом, поэтому одним из обходных путей является его отключение и использование только сайтов с видео HTML5.

Как вы упомянули кофеин, вы, вероятно, уже искали решение. Другое, что вы можете сделать, это полностью отключить "энергосбережение", то есть заставить экран никогда не выключаться.

Другие вопросы по тегам