当我在线观看video时,屏幕会在几分钟后关闭

在某些网站上,当我在浏览器中观看电影而我没有触摸计算机时屏幕关闭。 在像Youtube这样的其他网站我没有那个问题。 我尝试使用咖啡因,但我不喜欢每次看video时都必须手动启用和禁用咖啡因。 我也尝试过在互联网上找到的其他方法,但没有任何效果。 有什么建议? 我正在使用chrome并运行ubuntu 16.04。

更新2017/08/23:将脚本更改为不发送击键但在video全屏播放时暂时禁用dpms和屏幕保护程序的脚本。

这仅适用于全屏运行但未最大化的应用程序。


首先安装xdotool

 sudo apt install xdotool 

然后我在我的主文件夹中创建了一个scripts文件夹,我可以将任何脚本删除到我想保留的脚本中:

 mkdir -p ~/scripts 

然后我在~/scripts文件夹中创建了一个名为check_full.bsh文件,并向其中添加了以下内容:

由于我的屏幕保护程序设置为20分钟,我将脚本中的睡眠定时器设置为10分钟(600秒)。 您可以根据屏幕保护程序设置更改此设置。

 #!/bin/bash #Get DPMS settings dpms_set=$(xset -q | grep -i "dpms is" | awk '{print $NF}') #Get screensaver type and command scrnsvr=$(ps -ef | grep screensav | grep -v grep | awk '{print $8}') scrnsvrcmd=$(ps -ef | grep screensav | grep -v grep | awk '{print substr($0,index($0,$8))}') #Sleep Timer in seconds. SL=600 while true; do result=() #Get all window geometries all=($(xdotool search --name - | while read win; do xdotool getwindowgeometry $win | grep Geometry | awk '{print $2}'; done)) #Get all screen resolutions detected and build array. SCREENS=($(xrandr | grep \* | awk '{print $1}')) SCRN=" ${SCREENS[*]} " #Get result of all windows and match for item in ${all[@]}; do if [[ $SCRN =~ " $item " ]] ; then result+=($item); fi; done #If a result exists disable power management and screensaver if [[ ${result[@]} ]]; then ps -ef | grep $scrnsvr | grep -v grep >/dev/null if [[ $? == 0 ]]; then kill $(ps -ef | grep $scrnsvr | grep -v grep | awk '{print $2}') fi if [[ $dpms_set == "Enabled" ]];then xset -dpms fi else ps -ef | grep $scrnsvr | grep -v grep >/dev/null if [[ $? == 1 ]]; then ${scrnsvrcmd} & fi if [[ $dpms_set != "Disabled" ]];then xset dpms fi fi result=() sleep $SL done 

使脚本可执行:

 chmod +x ~/scripts/check_full.bsh 

出于某种原因,cron作业无法正确运行。 所以我在启动时添加了一个条目来调用这个脚本。 在~/.config/autostart/文件夹中,我创建了一个名为Check_Full.desktop的文件, Check_Full.desktop包含以下内容:

我喜欢在启动时添加延迟,因为它们通常会更好地加载。

 [Desktop Entry] Type=Application Name=Check_Full Comment=Prevent screensaver from activating when full screen video is playing Exec=bash -c 'sleep 5 && /home//scripts/check_full.bsh' 

更改Exec行以匹配您的主文件夹。

为文件设置适当的权限:

 chmod 664 ~/.config/autostart/check_full.desktop 

注销并重新登录后, check_full.bsh现在正在运行,如果活动应用程序全屏,则每10分钟检查一次。 如果没有,屏幕保护程序/锁定屏幕在正常时间启动。


希望这可以帮助!

Youtube没有这个问题,因为它使用HTML5播放器。 您遇到问题的网站正在使用Flash Player。 这是Adobe Flashplayer中的一个错误 ,简而言之,它永远不会通知WM它遇到了全屏。 您可能已经听说Adobe Flash通常是一个有缺陷的应用程序,因此一种解决方法是禁用它,并仅使用带有HTML5video的站点。

正如你提到咖啡因,你可能已经找到了解决方案。 您可以做的另一件事是完全禁用“省电” ,即强制屏幕永不关闭。