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

p3p*_*yl3 5 video google-chrome lock-screen

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

Ter*_*nce 6

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

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


首先安装xdotool

sudo apt install xdotool
Run Code Online (Sandbox Code Playgroud)

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

mkdir -p ~/scripts
Run Code Online (Sandbox Code Playgroud)

然后我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
Run Code Online (Sandbox Code Playgroud)

使脚本可执行:

chmod +x ~/scripts/check_full.bsh
Run Code Online (Sandbox Code Playgroud)

出于某种原因,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'
Run Code Online (Sandbox Code Playgroud)

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

为文件设置适当的权限:

chmod 664 ~/.config/autostart/Check_full.desktop
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助!

  • @p3pc1styl3 不客气!请检查我的答案旁边的复选标记,表明它对您有所帮助,并且可以帮助其他人寻找相同的东西。我想出这个是因为虽然有很好的解决方案,但没有一个允许我运行我想观看视频的任何播放器,所以我想出了这个脚本来检测全屏模式下的任何内容。认为这只是让它变得更容易。很高兴它对你有帮助!=) (2认同)

Hi-*_*gel 5

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

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