на некоторых сайтах, когда я смотрю фильм в браузере и не касаюсь компьютера, экран выключается. На других сайтах, таких как Youtube, у меня нет такой проблемы. Я пытался использовать кофеин, но мне не нравится идея вручную включать и отключать его каждый раз, когда я смотрю видео. Я также пробовал другие методы, которые я нашел в интернете, но ничего не получалось. какие-либо предложения? Я использую Chrome и запускаю Ubuntu 16.04.
ОБНОВЛЕНИЕ 23.08.2017: Измененный сценарий к тому, который не отправляет нажатия клавиш, но отключает dpms
и экранная заставка временно, в то время как видео играет полный экран.
Это только работает с приложениями, выполняющими полный экран, не максимизируемый.
Первая установка xdotool
:
sudo apt install xdotool
затем я создал a 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
По некоторым причинам задание крона не выполнило бы это правильно. Таким образом, я добавил запись в свой запуск для вызова этого сценария. В ~/.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'
изменение выше Исполнительной строки для соответствия домашней папке.
Установите верные полномочия на файл:
chmod 664 ~/.config/autostart/Check_full.desktop
После того, чтобы выходить из системы и въезжают задним ходом, check_full.bsh
теперь выполняет и проверяет каждые 10 минут, является ли активное приложение полным экраном. В противном случае экранная заставка / блокирует экранный запуск в нормальные времена.
Надеюсь, это поможет!
YouTube не имеет той проблемы, потому что это использует плеер HTML5. Сайты, с которыми у Вас есть проблема, используют Flash player вместо этого. Это ошибка в Adobe Flashplayer , который, короче говоря, является, что это никогда не уведомляет WM, что столкнулось с полным экраном. Вы, возможно, услышали хотя, что Adobe Flash является ошибочным приложением в целом, таким образом, одно обходное решение должно отключить ее и использовать только сайты с видео HTML5.
, Поскольку Вы упомянули кофеин, Вы, вероятно, уже искали решение. Другая вещь, которую Вы могли сделать, к , отключают В «питание savingВ» полностью , т.е. вынудить экран никогда не выключить.