Как предотвратить затемнение экрана или запуск блокировки экрана при просмотре YouTube?
Моя яркость экрана уменьшалась через несколько секунд, чтобы сохранить заряд батареи. Это по умолчанию в Ubuntu 12.04. Однако при просмотре видео оно не должно тускнеть.
Это работает правильно, когда я смотрю видео, используя родные приложения, такие как VLC. Однако при просмотре видео в браузере экран не защищен от затемнения. Это очень раздражает, так как вы должны перемещать курсор каждые 10 секунд или около того.
Раньше я использовал Mac OSX, где у меня были те же настройки затемнения, и Flash-видео были учтены правильно.
Кто-нибудь знает, как сделать так, чтобы YouTube предотвращал затемнение экрана?
20 ответов
HOWTO: отключить заставку во время работы Flash
Выполните следующую команду в терминале:
mkdir -p ~/bin
Откройте gedit или предпочитаемый вами текстовый редактор и введите:
#!/bin/bash
# Cleanup any bad state we left behind if the user exited while flash was
# running
gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool true
we_turned_it_off=0
while true; do
sleep 60
flash_on=0
for pid in `pgrep firefox` ; do
if grep libflashplayer /proc/$pid/maps > /dev/null ; then
flash_on=1
fi
ss_on=`gconftool-2 -g /apps/gnome-screensaver/idle_activation_enabled`
if [ "$flash_on" = "1" ] && [ "$ss_on" = "true" ]; then
gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled \
--type bool false
we_turned_it_off=1
elif [ "$flash_on" = "0" ] && [ "$ss_on" = "false" ] \
&& [ "$we_turned_it_off" = "1" ]; then
gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled \
--type bool true
we_turned_it_off=0
fi
done
done
Сохранить этот файл как ~/bin/flash_saver.sh
,
Вернитесь в терминал и запустите:
chmod +x ~/bin/flash_saver.sh
Для запуска перейдите в терминал и введите:
~/bin/flash_saver.sh
Если вы предпочитаете, вы можете настроить этот скрипт для запуска при входе в систему, выполнив следующие действия:
- Запустите программу "Автозагрузка приложений"
- Нажмите "Добавить"
- Под именем типа "FlashMonitor" или что-то вы узнаете
- Под типом команды
~/bin/flash_saver.sh
- Под комментарием (если хотите) введите краткое описание. Например, "Останавливает выключение экрана при работе Flash"
Источник: HOWTO: Отключить заставку во время работы Flash - ubuntuforums
РЕДАКТИРОВАТЬ
Это, вероятно, не будет работать, если вы используете версию Ubuntu, более новую, чем 12.04 (пробовали в 13.04 и 13.10, и она просто не работает вообще). Похоже, что главный разработчик больше не работает в этом проекте, поэтому шансы на его исправление невелики.
В моей системе (Ubuntu 11.10) я использую кофеин. Вы можете попробовать, если он работает в Xubuntu тоже. Он добавляет значок области уведомлений, где вы можете включить / отключить заставку для некоторых программ. Чтобы установить кофеин, сделайте следующее:
sudo add-apt-repository ppa:caffeine-developers/ppa
sudo apt-get update
sudo apt-get install caffeine
Затем выполните в терминале:
caffeine -p &
Затем вы можете выбрать программы, которые должны отключить заставку:vlc
для VLC, mplayer
для Movie Player и т. д.
Надеюсь, поможет.
На GitHub есть небольшой симпатичный скрипт с именем lightsOn, который должен делать то, что вам нужно.
По сути, он ищет полноэкранное видео (прошивка в Firefox или Chromium, Mplayer или VLC), и если это так, отключите xscreensaver, а также возможность автоматического затемнения диспетчера мощности.
из самого скрипта:
КАК ИСПОЛЬЗОВАТЬ: Запустите скрипт с количеством секунд, которые вы хотите чеки для полноэкранного режима. Пример: "./lightsOn.sh 120 &" будет проверять каждые 120 секунд, если Mplayer, VLC, Firefox или Chromium - это полноэкранный режим, заставка с задержкой и управление питанием, если это так. Вы хотите, чтобы количество секунд было на ~10 секунд меньше времени, которое требуется Заставка или Управление питанием для активации. Если вы не передадите аргумент, проверки будут выполняться каждые 50 секунд.
Таким образом, вызовите скрипт из вашей папки автозапуска согласно моему ответу здесь.
Настройте скрипт на то, используете ли вы flash/vlc/mplayer
не забудьте дать сценарию права на выполнение, т.е.
chmod +x lightsOn.sh
Не совсем то, что вам нужно, но этот маленький скрипт регистрирует движение мыши при каждом запуске. Вы можете бросить его в cron, чтобы запускать каждый раз по x времени. Это помешало бы выключению экрана, и движение мыши почти не заметно, если он работает, когда вы НЕ смотрите видео
#!/bin/bash
#move the mouse
xte 'mousermove 1 1'
Кстати, я полностью понял эту идею из комикса xkcd. http://xkcd.com/196/
Для предварительно свернутого эквивалента сценария, поставляемого @njallam, с небольшим аккуратным элементом пользовательского интерфейса Gnome, попробуйте апплет Caffeine:
https://launchpad.net/caffeine
http://ubuntu-tweak.com/app/caffeine/
В Webupd8 была статья о Caffeine и Lightson.sh, чтобы отключить заставку во время воспроизведения видео Flash или HTML5. Скрипт Lightson работает как для Firefox, так и для Chrome и может включать VLC. Я надеюсь, это поможет.
В случае, если код, предоставленный Webupd8 для установки скрипта, следует:
mkdir -p ~/scripts && cd ~/scripts
wget https://raw.github.com/hotice/lightsOn/master/lightsOn.sh
chmod +x lightsOn.sh
Вы должны проверять не только параметры заставки, но и параметры управления питанием, особенно параметр "Перевести дисплей в спящий режим, если он неактивен для...".
Обратите внимание, что на ноутбуках есть две настройки с таким именем: когда ноутбук работает от сети переменного тока и когда он работает от батареи.
Для тех, кто использует заставку, отличную от gnome-screensaver (которая является заставкой по умолчанию в Ubuntu, начиная с версии 11.10), этот ответ может быть полезен.
Лично я не поменял гном-заставку на что-то другое, и, я не знаю, по каким причинам, кофеин у меня никак не работает (возможно, устарел).
При этом, начиная с других скриптов bash ( это, это и это), мне удалось сделать новый скрипт, gnome_screensaver_off.sh
это прекрасно работает для того, что я задумал, когда YouTube использует Flash Player для рендеринга видео.
Отключить заставку gnome, когда YouTube использует Flash player
Откройте терминал и выполните следующие команды, следуя инструкциям:
mkdir -p bin
- эта команда сделаетbin
каталог в вашемhome
папку, если у вас ее еще нет.gedit ~/bin/gnome_screensaver_off.sh
-это создаст новый файлgnome_screensaver_off.sh
в гедит.- Скопируйте и вставьте туда следующий скрипт:
#!/bin/bash
# Getting the previous configuration
back=$(gsettings get org.gnome.settings-daemon.plugins.power sleep-display-ac)
screensaver_is_off=0
delay=$[$back - 10]
# Defining the restore function
function restore {
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac $back
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-battery $back
gsettings set org.gnome.desktop.session idle-delay $back
bmin=$[$back / 60]
#notify-send "Screen sleep time restored to $bmin minutes."
notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "Screen sleep time restored to $bmin minutes."
}
# Defining the disable_screensaver function
function disable_screensaver {
# Making sure the user don't mess up...
trap 'restore && exit 0' INT HUP
# Disabling sleep time
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac 0
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-battery 0
gsettings set org.gnome.desktop.session idle-delay 0
notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "Screen sleep time turned off."
}
while true; do
if [ "$delay" -le "50" ]; then
sleep 50
else
sleep $delay
fi
flash_on=0
#Check if Chrome, Chromium or Firefox is open with a flash video running on it
if pgrep -lfc ".*((c|C)hrome|chromium|firefox|).*flashp.*" > /dev/null ; then
flash_on=1
else
flash_on=0
fi
if [ "$flash_on" -eq "1" ] && [ "$back" -ne "0" ] && [ "$screensaver_is_off" -eq "0" ]; then
disable_screensaver
screensaver_is_off=1
elif [ "$flash_on" -eq "0" ] && [ "$screensaver_is_off" -eq "1" ]; then
restore
screensaver_is_off=0
fi
done
exit 0
- Сохраните файл и закройте его.
- Вернитесь в терминал и запустите:
chmod +x gnome_screensaver_off.sh
- предоставить доступ для выполнения сценария. - Чтобы запустить новый скрипт, запустите
~/bin/gnome_screensaver_off.sh
,
Если вы предпочитаете, вы можете настроить этот скрипт для запуска при входе в систему, выполнив следующие действия:
- Поиск в Dash для запуска приложений, откройте его и нажмите кнопку Добавить.
- Под именем типа "Монитор YouTube" или что-то вы узнаете.
- Под командой введите "/home/$USER/bin/gnome_screensaver_off.sh" (измените $ USER на свое имя пользователя).
- Под комментарием (если хотите) введите краткое описание (например, "Остановка отключения экрана, когда Flash Player работает в браузере").
Отключить заставку gnome, пока YouTube использует проигрыватель HTML5
Вопрос остается открытым в этом смысле...
Спасибо за предложения, предложенные: fossfreedom, Meer Borg, Njallam, Desgua и другими.
Используйте кофеин: страница ppa.
Как установить:
sudo apt-add-repository ppa:caffeine-developers/ppa
sudo apt-get update
sudo apt-get install caffeine
Как запустить:
Нажмите Alt + F2, затем введите
caffeine
,Нажмите значок "Кофеин", затем нажмите "Отключить заставку".
Немного старый, но здесь с поддержкой нескольких браузеров:
#!/bin/bash -eu
# List your browsers here
browsers_list=( "firefox" "chrome" "chromium" "opera" )
# Cleanup any bad state we left behind if the user exited while flash was running
gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool true
idle_off=0
while true; do
sleep 60
for browser in "${browsers_list[@]}" ; do
for pid in `pgrep $browser` ; do
flash_on=0
if [ -O /proc/$pid/maps ] && grep libflashplayer /proc/$pid/maps > /dev/null ; then
flash_on=1
fi
ss_on=`gconftool-2 -g /apps/gnome-screensaver/idle_activation_enabled`
if [ "$flash_on" = "1" ] && [ "$ss_on" = "true" ]; then
gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool false
idle_off=1
elif [ "$flash_on" = "0" ] && [ "$ss_on" = "false" ] && [ "$idle_off" = "1" ]; then
gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool true
idle_off=0
fi
done
done
done
Просто сохраните скрипт где-нибудь, chmod +x
и добавьте его в StartupApplications. Там может быть способ перечислить все доступные браузеры, используя что-то вроде:
update-alternatives --list x-www-browser
Но я не знаю, как справиться с тем фактом, что некоторые исполняемые файлы не имеют названия, чем их процессы (например, /usr/bin/google-chrome
работает как chrome
).
Решение для воспроизведения HTML5 в Chrome
обзор
Следующий скрипт отключает заставку, если он находит активный полноэкранный сеанс Chrome. По умолчанию проверка будет выполняться каждые 5 минут. Скрипт автоматически возобновит заставку, если выполнено одно из следующих трех условий:
- окно не полноэкранное
- окно не в фокусе
- окно больше не существует
скрипт
#!/bin/bash
## Variables ##
ChromeWmClass="Google-chrome"
FullScreenProperty="_NET_WM_STATE_FULLSCREEN"
CheckInterval="300" # check every 5 minutes
## Main ##
while true; do
sleep "$CheckInterval"
ActiveWinID=$(xdotool getactivewindow)
if [[ -z "$ActiveWinID" ]]; then
continue
fi
ActiveWinProp=$(xprop -id "$ActiveWinID")
if echo "$ActiveWinProp" | grep "$FullScreenProperty" > /dev/null 2>&1 \
&& echo "$ActiveWinProp" | grep "WM_CLASS" | grep "$ChromeWmClass" > /dev/null 2>&1
then
if [[ -z "$SuspendingID" ]]; then
echo "Suspending screensaver for $ActiveWinID"
xdg-screensaver suspend "$ActiveWinID"
SuspendingID="$ActiveWinID"
elif [[ "$ActiveWinID" = "$SuspendingID" ]]; then
echo "$ActiveWinID is already suspending screensaver."
elif [[ -n "$SuspendingID" ]]; then
echo "Resuming screensaver for $SuspendingID"
xdg-screensaver resume "$SuspendingID"
echo "Suspending screensaver for $ActiveWinID"
xdg-screensaver suspend "$ActiveWinID"
SuspendingID="$ActiveWinID"
fi
else
if [[ -n "$SuspendingID" ]] \
&& xprop -id "$SuspendingID" > /dev/null 2>&1
then
echo "Resuming screensaver for $SuspendingID"
xdg-screensaver resume "$SuspendingID"
SuspendingID=""
else
echo "No change."
fi
fi
done
Простейшим неинтеллектуальным подходом, не зависящим от десктопа и основанным на xdotool, будет симуляция нажатия клавиши каждые N секунд.
Я использую скрипт под названием heartbeat.sh
:
#!/bin/bash
while :
do
nice -n 1 xdotool key shift
date +%T ## show some sign of life
sleep 100
done
Я запускаю сценарий во время воспроизведения видео, а затем останавливаю его, когда он больше не нужен.
xdotool
может быть установлен с sudo apt-get install xdotool
,
Если вы также хотите иметь какое-то автоматическое обнаружение звука и у вас все в порядке с рецептом, специфичным для PulseAudio, то ниже приведен вариант решения выше, который проверяет, воспроизводится ли звук:
#!/bin/bash
while :
do
if [[ ! -z $(pacmd list-sink-inputs | grep RUNNING) ]] ; then
echo 'Audio is playing. Inhibiting screensaver'
nice -n 1 xdotool key shift ;
else
echo 'No audio detected'
fi
date +%T ## show some sign of life
sleep 100
done
Если использовать Alsa, то тест, вероятно, будет что-то вроде (не проверено):
if [[ ! -z $(grep RUNNING /proc/asound/card*/pcm*/sub*/status) ]] ; then...
Потенциальным недостатком этого решения является то, что ваш экран не будет спать, даже если вы просто слушаете музыку или радио, но я предполагаю, что в большинстве случаев это не проблема.
VLC в этом PPA в дополнение к текущей версии VLC также правильно реализует запрет экранной заставки.
Вы можете добавить этот PPA с помощью этой команды
sudo add-apt-repository ppa:n-muench/vlc
Для тех, кто любит полное или ручное управление своими руками
Эта командная строка может установить время задержки заставки:
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac 0
Используйте "0" (ноль), чтобы оставить его включенным, или другое значение, чтобы определить задержку в секундах.
Следующий скрипт будет держать экран включенным до нажатия какой-либо клавиши.
#!/bin/bash
#
# To turn screen sleep time off for a while then back on
#
# by desgua 2013/01/27
#
# Getting the previous configuration
back=$(gsettings get org.gnome.settings-daemon.plugins.power sleep-display-ac)
# Defining the restore function
function RESTORE {
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac $back
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-battery $back
gsettings set org.gnome.desktop.session idle-delay $back
bmin=$(echo "$back / 60" | bc)
#notify-send "Screen sleep time restored to $bmin minutes."
echo
echo "Screen sleep time restored to $bmin minutes."
echo
exit 0
}
# Making sure the user don't mess up...
trap 'RESTORE && exit 0' INT HUP
# Disabling sleep time
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac 0
gsettings set org.gnome.settings-daemon.plugins.power sleep-display-battery 0
gsettings set org.gnome.desktop.session idle-delay 0
echo
echo "Screen sleep time turned off."
echo
#notify-send "Screen sleep time turned off."
# Waiting for user to press some key and then restore the previous configuration
read -n 1 -p 'Press any key to turn it on again. ' b
RESTORE
exit 0
Как запустить скрипт:
- Скопируйте текст в пустой файл,
- Сохраните файл,
- Сделайте файл исполняемым,
- Запустите его из терминала.
Вы можете просто выполнить / установить эту команду при запуске:
gconftool --type string --set /apps/compiz-1/plugins/fade/screen0/dim_unresponsive false
Также вы можете попробовать снять опцию аппаратного ускорения в Firefox?
Скрипт сверху не работает у меня на Ubuntu 14.04 LTS Unity. Вот его обновленный вариант, который работает:
#!/bin/bash
id_saved=0
sac_saved=0
sbat_saved=0
dim_saved=false
ss_save()
{
id_saved=`gsettings get org.gnome.desktop.session idle-delay`
sac_saved=`gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout`
sbat_saved=`gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout`
dim_saved=`gsettings get org.gnome.settings-daemon.plugins.power idle-dim`
}
ss_set()
{
gsettings set org.gnome.desktop.session idle-delay "$1"
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout "$2"
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout "$3"
gsettings set org.gnome.settings-daemon.plugins.power idle-dim "$4"
}
ss_on()
{
ss_set "$id_saved" "$sac_saved" "$sbat_saved" "$dim_saved"
}
ss_off()
{
ss_set 0 0 0 false
}
trap ss_on EXIT
already_off=0
flash_on=0
ss_save
while true; do
if top -bcw 200 | sed -e '1,/PID/d' | head -1 | grep flash > /dev/null
then
flash_on=1
off_count=0
else
off_count=`expr $off_count + 1`
echo "flash_off_count=$off_count"
if [ $off_count -gt 5 ]; then
flash_on=0
fi
fi
if [ "$flash_on" = "1" -a "$already_off" = "0" ]; then
echo "screensaver: off"
ss_off
already_off=1
elif [ "$flash_on" = "0" -a "$already_off" = "1" ]; then
echo "screensaver: on"
ss_on
already_off=0
elif [ "$already_off" = "0" ]; then
echo "screensaver: save possibly new params"
ss_save # user may update the values
fi
sleep 30
done
Кстати, этот скрипт отключает заставку ТОЛЬКО во время воспроизведения видео, т.е. когда flashplayer находится в топе потребителей ЦП.
В качестве обходного пути я использую следующий скрипт:
#!/bin/bash
while true
do
xdotool key Shift_L
sleep 1m
done
Он имитирует нажатие левой клавиши переключения передач каждую минуту, что предотвращает затемнение экрана. Недостаток этого, конечно, заключается в том, что вам нужно запускать скрипт каждый раз, когда вы смотрите YouTube. С другой стороны, он прост и работает с большинством, если не со всеми конфигурациями.
Вам может понадобиться установить это
sudo apt-get install xdotool
Это мое решение:
https://github.com/yanyingwang/shanghai-tools/blob/master/kit/the-bund-light.md
https://github.com/yanyingwang/shanghai-tools/blob/master/kit/the-bund-light.sh
Просто скачайте the-bund-light.sh
и добавьте его в приложение начальной загрузки:
sudo apt-get install xdotool
cd ~ && wget https://raw.githubusercontent.com/yanyingwang/shanghai-tools/master/kit/the-bund-light.sh
cat >> ~/.config/autostart/the-bund-light.sh.desktop <<EOF
[Desktop Entry]
Type=Application
Exec=$HOME/shanghai-tools/kit/the-bund-light.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[zh_CN]=TheBundLight
Name=TheBundLight
Comment[zh_CN]=
Comment=
EOF
ВНИМАНИЕ: Exec
значение в коде должно быть путем the-bund-light.sh
в вашем компьютере.
Для тех, кто использует Ubuntu-Gnome 14.04, есть простое, но полезное расширение, называемое Caffeine, которое предоставляет значок переключения, который позволяет отключить управление яркостью и экранной заставкой с верхней панели одним щелчком мыши.
Расширение можно установить по этой ссылке на веб-сайт Gnome-Shell Extensions:
https://extensions.gnome.org/extension/517/caffeine/
Источник: раздел комментариев в этой статье:
http://www.maketecheasier.com/prevent-ubuntu-sleep-while-watching-video/
Отчасти это зависит от того, какую версию Ubuntu вы используете. В 11.10 вы можете найти "Системные настройки", нажав на значок шестеренки в правом верхнем углу экрана. Выберите это, и в появившемся диалоговом окне выберите "Экран". Вы можете установить период времени, в течение которого ваш компьютер будет простаивать, прежде чем экран откроется в раскрывающемся меню, или отключить эту функцию, нажав кнопку с надписью "Заблокировать".
Если у вас более старая система, вам, возможно, придется поискать этот параметр в другом месте, но он где-то есть.