Как предотвратить затемнение экрана или запуск блокировки экрана при просмотре YouTube?


100

Моя яркость экрана уменьшалась через несколько секунд, чтобы сохранить заряд батареи. Это по умолчанию в Ubuntu 12.04. Однако при просмотре видео оно не должно тускнеть.

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

Раньше я использовал Mac OSX, где у меня были те же настройки затемнения, и Flash-видео были учтены правильно.

Кто-нибудь знает, как сделать так, чтобы YouTube предотвращал затемнение экрана?


4
Итак, поскольку это проблема, для которой большинству пользователей Ubuntu нужно решение, можем ли мы считать это ошибкой в ​​ОС или ошибкой в ​​программном обеспечении (Flash, Chrome, Firefox) и получить исправление, чтобы каждому пользователю не нужно было перейти на эту страницу AskUbuntu?
Блонг

1
Я ценю всю помощь, но это смешно, что это происходит в 2016 году. Да ладно, это основные вещи, которые не поддерживаются. Также HTML5 видео - почему это так медленно и глючит? Это такая огромная проблема, чтобы исправить ..? Он должен был заменить Flash .. теперь это кажется смешным.
Дор

Лично я ценю, что мой браузер не может предотвратить блокировку моего компьютера, поэтому я не считаю, что это ошибка. То, о чем вы просите, может сделать ваш компьютер менее безопасным.
earthmeLon

@earthmeLon или кто-нибудь другой, можете ли вы объяснить, как это будет менее безопасно?
Сергей Чупов

Ответы:


54

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


4
Если бы я мог, я бы проголосовал за это +5. Сценарий с форума Ubuntu очень хорошо написан, как и ваш ответ. Также большой палец вверх для фактического включения источника.
con-f-use


4
Это действительно работает только для Firefox. Кто-нибудь может переписать это для поддержки нескольких браузеров?
Стивен Руз

3
это будет работать с html5 видеоплеером?
кдурейды

2
Поддержка HTML5 видео действительно нужна.
Улидько

31

РЕДАКТИРОВАТЬ

Это, вероятно, не будет работать, если вы используете версию 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 и т. Д.

Предпочтения кофеина

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


Это работает довольно хорошо на 12.04, спасибо!
Geppettvs D'Constanzo

Спасибо за предложение решения, но это лучшее решение? Это не ошибка? Это должно быть ошибка. Это происходит на гноме, но не на единстве.
Джерард Рош

Сейчас у меня 12.04, и я до сих пор использую это приложение не для того, чтобы остановить заставку, а для быстрого отключения уменьшения яркости экрана. То, что я видел, если это ошибка, это в браузере: он должен запретить заставку в полноэкранном режиме.
Салем

Не устанавливается в 13.10
NoBugs

1
Этот ответ необходимо обновить, так как Caffeine даже работает в Ubuntu 16.04 Xenial. ;)
Андреа Лаззаротто

14

На GitHub есть небольшой симпатичный скрипт с именем lightsOn, который должен делать то, что вам нужно.

По сути, он ищет полноэкранное видео (прошивка в Firefox или Chromium, Mplayer или VLC), и если это так, отключите xscreensaver, а также возможность автоматического затемнения диспетчера мощности.

из самого скрипта:

КАК ИСПОЛЬЗОВАТЬ: Запустите скрипт с количеством секунд, которые вы хотите чеки
для полноэкранного режима. Пример:
 «./lightsOn.sh 120 &» будет проверять каждые 120 секунд, если Mplayer,
 VLC, Firefox или Chromium - это полноэкранный режим, заставка с задержкой и управление питанием, если это так.
 Вы хотите, чтобы количество секунд было на ~ 10 секунд меньше времени, которое требуется
 Заставка или Управление питанием для активации.
 Если вы не передадите аргумент, проверки будут выполняться каждые 50 секунд.

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

Настройте скрипт на то, используете ли вы flash / vlc / mplayer

не забудьте дать сценарию права на выполнение, т.е.

chmod +x lightsOn.sh

3
Лайтсон кажется незатронутым, но есть живые вилки ( github.com/partizand/lightsOn , github.com/unhammer/lightsOn )
Жером

10

Не совсем то, что вам нужно, но этот маленький скрипт регистрирует движение мыши при каждом запуске. Вы можете бросить его в cron, чтобы запускать каждый раз по x времени. Это помешало бы выключению экрана, и движение мыши почти не заметно, если он работает, когда вы НЕ смотрите видео

#!/bin/bash
#move the mouse
xte 'mousermove 1 1' 

Кстати, я полностью понял эту идею из комикса xkcd. http://xkcd.com/196/


Или запустите его из скрипта Bash (с while и sleep), как некоторые другие ответы здесь.
Питер Мортенсен

7

Для предварительно свернутого эквивалента сценария, поставляемого @njallam, с небольшим аккуратным элементом пользовательского интерфейса Gnome, попробуйте апплет Caffeine:

https://launchpad.net/caffeine
http://ubuntu-tweak.com/app/caffeine/


У меня был установлен кофеин, но я не видел, чтобы вам пришлось активировать его, чтобы он заработал. Спасибо!
Стивен Руз

Информация от разработчиков Caffeine: «Поддержка Flash-видео прекратилась, поскольку она была слишком сложной, чтобы поддерживать ее работу». Поэтому вы можете забыть о флажке Flash-видео в его настройках. Однако, если вы используете Firefox, добавьте plugin-containerв список программ, и Caffeine будет правильно активироваться на видео Flash (деактивация будет немного задерживаться, поскольку плагин-контейнер не выгружается сразу, когда вы закрываете вкладку с видео, это занимает несколько минут. ).
whtyger

6

В 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

1
Метод, используемый в этом скрипте ( lightsOn.sh) для определения, использует ли браузер проигрыватель HTML5, не очень хорош. Фактически, метод определяет, находится ли Firefox или Chromium в полноэкранном режиме ... В остальном статья хороша, и ваш ответ наиболее приближен к тому, что я спросил.
Раду Рэдяну

1
Я провел немного больше исследований и нашел сценарий, основанный на активности процессора или сети. Он расположен на форумах Mint и может дать вам немного лучший контроль. Приятного просмотра YouTube.
Гарри

5

Вы должны проверять не только параметры заставки, но и параметры управления питанием, особенно параметр «Перевести дисплей в спящий режим, если он неактивен для ...».

Обратите внимание, что на ноутбуках есть две настройки с таким именем: когда ноутбук работает от сети переменного тока и когда он работает от батареи.


2

Используйте кофеин: страница ppa .

Как установить:

sudo apt-add-repository ppa:caffeine-developers/ppa 
sudo apt-get update
sudo apt-get install caffeine

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

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

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


1
Я не собираюсь отключать заставку. Во всяком случае, я попробовал кофеин, но никак не работает. Я не думаю, что это обновлено до последней версии Gnome.
Раду Рэдяну

@ RaduRădeanu caffeine отключает заставку вашего компьютера, это не имеет никакого отношения к вашему веб-браузеру.
Алвар

@ Alvar Это если хочешь ... Во всяком случае, у меня не сработало.
Раду Рэдяну

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).



2

Для тех, кто использует заставку, отличную от 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в gedit.
  • Скопируйте и вставьте туда следующий скрипт:
#!/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 и другими.


2

Решение для воспроизведения 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

2

Простейшим неинтеллектуальным подходом, не зависящим от десктопа и основанным на 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...

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


1

Для тех, кто любит полное или ручное управление своими руками

Эта командная строка может установить время задержки заставки:

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. Запустите его из терминала.

1

VLC в этом PPA в дополнение к текущей версии VLC также правильно реализует запрет экранной заставки.

Вы можете добавить этот PPA с помощью этой команды

sudo add-apt-repository ppa:n-muench/vlc

Какое это имеет отношение к затемнению видео в браузере?
Питер Мортенсен

Много разных вопросов, похоже, были объединены в этот. Проверьте историю изменений, и вы можете увидеть, что некоторые вопросы касались проблем с заставкой.
Роб

0

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

gconftool --type string --set /apps/compiz-1/plugins/fade/screen0/dim_unresponsive false   

Также вы можете попробовать снять опцию аппаратного ускорения в Firefox?


2
Я говорил это раньше: я не собираюсь отключать заставку . Я только хочу, чтобы мой экран не тускнеет при просмотре YouTube.
Раду Радеану

0

Для тех, кто использует 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/


0

Это мое решение:

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вашему компьютеру.


0

Отчасти это зависит от того, какую версию Ubuntu вы используете. В 11.10 вы можете найти «Системные настройки», нажав на значок шестеренки в правом верхнем углу экрана. Выберите это, и в появившемся диалоговом окне выберите «Экран». Вы можете установить период времени, в течение которого ваш компьютер будет простаивать, прежде чем экран откроется в раскрывающемся меню, или отключить эту функцию, нажав кнопку с надписью «Заблокировать».

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


4
Да, но я не хочу отключать это навсегда.
ste_kwr

0

В качестве обходного пути я использую следующий скрипт:

#!/bin/bash
while true
do
   xdotool key Shift_L
   sleep 1m
done

Он имитирует нажатие левой клавиши переключения передач каждую минуту, что предотвращает затемнение экрана. Недостаток этого, конечно, заключается в том, что вам нужно запускать скрипт каждый раз, когда вы смотрите YouTube. С другой стороны, он прост и работает с большинством, если не со всеми конфигурациями.

Вам может понадобиться установить это

sudo apt-get install xdotool

0

Скрипт сверху не работает у меня на 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 находится в топе потребителей ЦП.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.