在观看YouTube时,如何防止屏幕变暗或屏幕锁定开始?

我的屏幕亮度在几秒钟后变暗以保存电池。 这是Ubuntu 12.04中的默认设置。 但是,在观看video时,它不应该暗淡。

当我使用VLC等本机应用程序观看video时,此function正常。 但是,使用浏览器内video时,屏幕不会变暗。 这非常烦人,因为你必须每10秒左右移动一次光标。

我曾经使用Mac OSX,我有相同的调光设置,并正确考虑了Flashvideo。

任何人都知道如何让YouTube阻止你的屏幕变暗?

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

编辑

如果您使用的是比12.04更新的Ubuntu版本(在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等。

咖啡因偏好

希望能帮助到你。

GitHub上有一个很好的小脚本叫做lightsOn ,可以做你想要的技巧。

基本上它寻找全屏video(在Firefox或Chrome,mplayer或vlc中闪存),如果是这样,请禁用xscreensaver以及自动电源管理器昏暗的屏幕function。

从脚本本身:

如何使用:使用您想要检查的秒数启动脚本
全屏要做。 例:
  “./lightsOn.sh 120&”将每120秒检查一次Mplayer,
 如果是这样,VLC,Firefox或Chromium是全屏和延迟屏幕保护程序和电源管理。
 您希望秒数比所需时间少~10秒
 您的屏幕保护程序或电源管理激活。
 如果您未传递参数,则每50秒进行一次检查。

因此, 根据我的回答,从您的自动启动文件夹中调用脚本。

调整脚本是否正在运行flash / vlc / mplayer

记得给脚本执行权限运行ie

 chmod +x lightsOn.sh 

不完全是你所追求的,但这个小脚本每次运行时都会记录鼠标移动。 您可以将其放入cron中,每x次运行一次。 这会阻止屏幕关闭,如果你不观看video时,鼠标的运动几乎不会引起注意

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

顺便说一下,我完全从xkcd漫画中得到了这个想法。 http://xkcd.com/196/

对于预先滚动的等效于@njallam提供的脚本,使用一个整洁的小Gnome UI元素,尝试使用Caffeine applet:

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

Webupd8有一篇关于Caffeine和Lightson.sh的文章 ,用于在播放Flash或HTML5video时禁用屏幕保护程序。 Lightson脚本适用于Firefox和Chrome,可以设置为包含VLC。 我希望这将有所帮助。

如果Webupd8提供的代码安装脚本如下:

 mkdir -p ~/scripts && cd ~/scripts wget https://raw.github.com/hotice/lightsOn/master/lightsOn.sh chmod +x lightsOn.sh 

您不仅应检查屏幕保护程序选项,还应检查电源管理选项,尤其是“将显示器置于非活动状态时睡眠…”选项。

请注意,在笔记本电脑上,有两个具有该名称的设置:当笔记本电脑使用交流电源运行时以及使用电池运行时。

使用咖啡因: 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运行)。

对于那些使用除gnome-screensaver之外的屏幕保护程序(这是Ubuntu中从11.10版开始的默认屏幕保护程序)的人, 这个答案可能会有所帮助。

就我个人而言,我没有更改gnome-screensaver的其他东西,我不知道为什么原因,Caffeine不会以任何方式为我工作(可能已经过时)。

话虽这么说,从其他人的bash脚本( 这个 , 这个和这个 )开始,我设法制作了一个新的脚本gnome_screensaver_off.sh ,完全符合我在YouTube使用Flash播放器渲染video时的预期。

在YouTube使用Flash播放器时禁用gnome-screensaver

打开终端并运行下一个命令,然后按说明操作:

  • mkdir -p bin – 如果你还没有它,那么这个命令会在你的home文件夹中创建一个bin目录。
  • gedit ~/bin/gnome_screensaver_off.sh这将在gedit中创建新文件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在浏览器中运行时停止屏幕关闭”)。

在YouTube使用HTML5播放器时禁用gnome-screensaver

从这个意义上讲,这个问题仍然存在

感谢您提供的建议: fossfreedom , Meer Borg , njallam , desgua等。

Chrome中的HTML5播放解决方案

概观

如果找到活动的全屏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 

我在播放video时启动脚本,然后在不再需要时停止播放。

可以使用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... 

这个解决方案的潜在缺点是,即使你只是在听音乐或收音机,你的屏幕也不会睡觉,但我认为在大多数情况下这不是问题。

对于那些喜欢完全或手动控制的人

此命令行可以设置屏幕保护程序延迟时间:

 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. 从终端运行它。

除了作为当前版本的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的人来说,有一个简单但有用的扩展名为Caffeine,它提供了一个切换图标,允许您通过单击从顶部栏禁用灯光调暗和屏幕保护程序行为。

可以通过此链接安装扩展程序到Gnome-Shell Extensions网站:

https://extensions.gnome.org/extension/517/caffeine/

来源:本文中的评论部分:

http://www.maketecheasier.com/prevent-ubuntu-sleep-while-watching-video/

这是我的解决方案:

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并将其添加到startbooting应用程序:

 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 <

注意: Exec在代码中的值应该是计算机中the-bund-light.sh路径。

这在某种程度上取决于您使用的是什么版本的Ubuntu。 在11.10中,您可以通过单击屏幕右上角的齿轮图标找到“系统设置”。 选择此项,然后在弹出的对话框中选择“屏幕”。 您可以使用下拉菜单设置计算机在屏幕空白之前空闲的时间,或通过单击标记为“锁定”的按钮禁用该function。

如果你有一个较旧的系统,你可能不得不寻找其他地方的设置,但它在某处。

我使用以下脚本作为解决方法:

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

顺便说一句,此脚本仅在video播放时禁用屏幕保护程序,即当flashplayer位于CPU使用者的顶端时。