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

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

在某些网站上,当我在浏览器中观看电影并且不触摸电脑时,屏幕会关闭。在 Youtube 等其他网站上,我没有遇到这个问题。我尝试使用咖啡因,但我不喜欢每次观看视频时都必须手动启用和禁用它的想法。我也尝试了在互联网上找到的其他方法,但都没有用。有什么建议吗?我使用的是 chrome 并运行 ubuntu 16.04。

答案1

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

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


首次安装xdotool

sudo apt install xdotool

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

mkdir -p ~/scripts

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

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

#!/bin/bash

#Get DPMS settings
dpms_set=$(xset -q | awk '/DPMS is/ {print $NF}')

#Get screensaver type and command
scrnsvr=$(ps -ef | awk '/screensav/ {print $8}' | grep -v awk)
scrnsvrcmd=$(ps -ef | awk '/screensav/ {print substr($0,index($0,$8))}' | grep -v awk)

#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 | awk '/Geometry/ {print $2}'; done))

#Get all screen resolutions detected and build array.
SCREENS=($(xrandr | 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其内容如下:

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

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

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

为文件设置适当的权限:

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

退出并重新登录后,check_full.bsh现在每 10 分钟运行一次并检查活动应用程序是否全屏。如果不是,屏幕保护程序/锁定屏幕将按正常时间启动。

希望这可以帮助!

答案2

Youtube 没有这个问题,因为它使用 HTML5 播放器。你遇到问题的网站使用的是 Flash Player。Adobe Flashplayer 中的一个错误,简而言之,它从不通知 WM 它已进入全屏模式。不过您可能已经听说过,Adobe Flash 总体上是一个有缺陷的应用程序,因此一种解决方法是禁用它,并仅使用带有 HTML5 视频的网站。

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

相关内容