p3p*_*yl3 5 video google-chrome lock-screen
在某些网站中,当我在浏览器中观看电影并且不触摸计算机时,屏幕会关闭。在像 Youtube 这样的其他网站上,我没有这个问题。我尝试使用咖啡因,但我不喜欢每次观看视频时都必须手动启用和禁用它的想法。我还尝试了在互联网上找到的其他方法,但没有任何效果。有什么建议?我正在使用 chrome 并运行 ubuntu 16.04。
更新 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 分钟检查一次活动应用程序是否全屏显示。如果没有,屏幕保护程序/锁定屏幕会在正常时间启动。
希望这可以帮助!
Youtube 没有这个问题,因为它使用 HTML5 播放器。您遇到问题的网站正在使用 Flash Player。这是Adobe Flashplayer 中的一个错误,简而言之,它从不通知 WM 进入全屏模式。您可能听说过 Adobe Flash 是一个有缺陷的应用程序,因此一种解决方法是禁用它,并仅使用带有 HTML5 视频的网站。
正如您提到的咖啡因,您可能已经在寻找解决方案。您可以做的另一件事是完全禁用“省电”,即强制屏幕永不关闭。
归档时间: |
|
查看次数: |
2348 次 |
最近记录: |