Чтобы следить за тем, что сказал Rocket101, есть проблемы с последними драйверами NVidia, если у вас установлена более старая карта. Очевидно, они работают над их сортировкой, но они сделали мою собственную систему настолько неустойчивой, что я их удалил и вместо этого использовал драйверы noveau. Смотрите мой пост здесь:
https://askubuntu.com/questions/126843/clean-install-of-12-04-results-in-constant-freezes-x-org-suspected [!d1 ]
Возможно, это не сработает, если вы используете версию Ubuntu более позднюю, чем 12.04 (пробовали в 13.04 и 13.10, и она просто не работает вообще). Кажется, что главный разработчик больше не работает в этом проекте, поэтому вероятность его исправления не очень хороша.
В моей системе (Ubuntu 11.10) я использую Caffeine. Вы можете попробовать, если он работает в Xubuntu тоже. Он добавляет значок области уведомлений, где вы можете включить / отключить скринсейвер для некоторых программ. Чтобы установить Caffeine, сделайте следующее:
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, который должен делать трюк, который вы хотите.
В основном он ищет полноэкранное видео (flash в firefox или chromium, mplayer или vlc), и если это отключить x [] d3] HOW TO USE: Start the script with the number of seconds you want the checks for fullscreen to be done. Example: "./lightsOn.sh 120 &" will Check every 120 seconds if Mplayer, VLC, Firefox or Chromium are fullscreen and delay screensaver and Power Management if so. You want the number of seconds to be ~10 seconds less than the time it takes your screensaver or Power Management to activate. If you don't pass an argument, the checks are done every 50 seconds.
Таким образом, вызов сценария из папки автозапуска в качестве GitHub называется lightsOn ! d1]. Откорректируйте скрипт для того, используете ли вы flash / vlc / mplayer не забудьте выполнить права запуска скрипта, т. е. chmod +x lightsOn.sh
Не совсем то, что вам нужно, но этот маленький скрипт регистрирует движение мыши каждый раз, когда он запускается. Вы можете бросить его в cron, чтобы запускать его раз в х-время. Это остановило бы экран от выключения, и движение 1 1 мыши едва заметно, если оно работает, когда вы НЕ смотрите видео
#!/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
Вы должны не только проверять параметры заставки, но также параметры управления питанием, особенно параметр «Поставить дисплей в режим сна при неактивном для ...».
Обратите внимание, что на ноутбуках есть два с этим именем: когда ноутбук работает от сети переменного тока и когда он работает от аккумулятора.
Использовать Caffeine: ppa page.
Как установить:
sudo apt-add-repository ppa:caffeine-developers/ppa
sudo apt-get update
sudo apt-get install caffeine
Как запустить:
Нажмите Alt + F2, затем введите . Нажмите значок «Кофеин», затем нажмите «Отключить заставку».Немного устарел, но здесь он поддерживает несколько браузеров:
#!/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).
Для тех, кто использует скринсейвер, отличный от gnome-screensaver (который является заставкой по умолчанию в Ubuntu, начиная с версии 11.10), этот ответ может быть полезен.
Лично я не менял gnome-screensaver для чего-то еще, и я не знаю, по каким причинам Caffeine не работает для меня каким-либо образом (может быть, устарел).
Как говорится, начиная с других сценариев bash ( этот ответ , это и это), мне удалось создать новый скрипт gnome_screensaver_off.sh, который отлично работает для того, что я намеревался, когда 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
mkdir -p bin - эта команда сделает каталог bin в вашей папке home, если у вас его еще нет. Вернитесь в терминал и запустите: chmod +x gnome_screensaver_off.sh - чтобы предоставить доступ для выполнения сценария. gedit ~/bin/gnome_screensaver_off.sh - это создаст новый файл gnome_screensaver_off.sh в gedit. Если вы предпочитаете, вы можете установить этот сценарий для запуска при входе в систему, выполнив следующее:
Поиск в Dash для приложений для запуска, откройте его и нажмите «Добавить». Под названием «Монитор YouTube» или что-то, что вы узнаете. Под командой введите «/home/$USER/bin/gnome_screensaver_off.sh» (измените $ USER с вашим именем пользователя). Под комментарием (если хотите) введите краткое описание (например, «Стоп-экран отключается, когда Flash-плеер запущен в браузере»).Вопрос остается открытым в этом смысле ...
Спасибо за предложения, предлагаемые: fossfreedom, Meer Borg, njallam, desgua и др.
Решение для воспроизведения 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
Я запускаю сценарий во время воспроизведения видео, а затем останавливаю его, когда он больше не нужен. [!d3 ]
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, тогда тест, вероятно, будет чем-то вроде (untested):
if [[ ! -z $(grep RUNNING /proc/asound/card*/pcm*/sub*/status) ]] ; then...
Потенциальный недостаток из этого решения заключается в том, что ваш экран не будет спать, даже если вы просто слушаете музыку или радио, но я предполагаю, что в большинстве случаев это не проблема.
Для тех, у кого есть полное или ручное управление у них
Эта командная строка может установить время задержки заставки:
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
Как запустить скрипт:
Скопировать текст в пустой файл, Сохранить файл, Сделать исполняемым файл, Запустить его с терминала.VLC в этом PPA в дополнение к текущей версии VLC также корректно реализует торможение экранной заставки.
Вы можете добавить этот PPA, используя эту команду
sudo add-apt-repository ppa:n-muench/vlc
Вы можете просто выполнить / установить эту команду во время запуска:
gconftool --type string --set /apps/compiz-1/plugins/fade/screen0/dim_unresponsive false
Также вы можете отключить опцию аппаратного ускорения в firefox?
Для тех, кто использует Ubuntu-Gnome 14.04, есть простой, но полезный Extension, называемый Caffeine, который предоставляет значок переключения, который позволяет вам отключить поведение подсветки экрана и экранной заставки с верхнего бара щелчком.
[d2 ] Расширение можно установить по этой ссылке на сайт Gnome-Shell Extensions:https://extensions.gnome.org/extension/517/caffeine/
Источник: комментарии 'в этой статье:
Это мое решение:
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.md
Просто скачайте the-bund-light.sh и добавьте его в startbooting application:
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 вы используете. В 11.10 вы можете найти «Системные настройки», щелкнув значок шестеренки в правом верхнем углу экрана. Выберите это, и в появившемся диалоговом окне выберите «Экран». Вы можете установить время, в течение которого ваш компьютер будет простаивать до того, как экран закроется в раскрывающемся меню, или отключите эту функцию, нажав кнопку «Lock».
Если у вас установлена более старая система, вы возможно, придется искать в другом месте для этой настройки, но она где-то там.
Я использую следующий сценарий в качестве обходного пути:
#!/bin/bash
while true
do
xdotool key Shift_L
sleep 1m
done
Он имитирует нажатие левой клавиши сдвига один раз каждую минуту, что предотвращает тусклый экран. Недостатком этого, конечно же, является то, что вам нужно запускать скрипт каждый раз, когда вы смотрите на YouTube. С другой стороны, это просто и работает с большинством, если не все, конфигурациями.
Возможно, вам потребуется установить этот
sudo apt-get install xdotool
Сценарий на вышеприведенной вершине не работает для меня на 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 находится в верхней части потребителей ЦП.