Как предотвратить затемнение экрана или запуск блокировки экрана при просмотре 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

Если вы предпочитаете, вы можете настроить этот скрипт для запуска при входе в систему, выполнив следующие действия:

  1. Запустите программу "Автозагрузка приложений"
  2. Нажмите "Добавить"
  3. Под именем типа "FlashMonitor" или что-то вы узнаете
  4. Под типом команды ~/bin/flash_saver.sh
  5. Под комментарием (если хотите) введите краткое описание. Например, "Останавливает выключение экрана при работе 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,

Если вы предпочитаете, вы можете настроить этот скрипт для запуска при входе в систему, выполнив следующие действия:

  1. Поиск в Dash для запуска приложений, откройте его и нажмите кнопку Добавить.
  2. Под именем типа "Монитор YouTube" или что-то вы узнаете.
  3. Под командой введите "/home/$USER/bin/gnome_screensaver_off.sh" (измените $ USER на свое имя пользователя).
  4. Под комментарием (если хотите) введите краткое описание (например, "Остановка отключения экрана, когда 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

Как запустить:

  1. Нажмите Alt + F2, затем введите caffeine,

  2. Нажмите значок "Кофеин", затем нажмите "Отключить заставку".

Немного старый, но здесь с поддержкой нескольких браузеров:

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

Как запустить скрипт:

  1. Скопируйте текст в пустой файл,
  2. Сохраните файл,
  3. Сделайте файл исполняемым,
  4. Запустите его из терминала.

Вы можете просто выполнить / установить эту команду при запуске:

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 вы можете найти "Системные настройки", нажав на значок шестеренки в правом верхнем углу экрана. Выберите это, и в появившемся диалоговом окне выберите "Экран". Вы можете установить период времени, в течение которого ваш компьютер будет простаивать, прежде чем экран откроется в раскрывающемся меню, или отключить эту функцию, нажав кнопку с надписью "Заблокировать".

Если у вас более старая система, вам, возможно, придется поискать этот параметр в другом месте, но он где-то есть.

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