Chr*_*284 5 video video-player screensaver xscreensaver
我正在运行 Ubuntu 12.04。我安装了 xscreensaver 来代替 gnome.screensaver。
我的问题是当我在 Movie Player 上看电影时,我无法让屏幕保护程序停止弹出。我已将 Movie Player 设置为禁用屏幕保护程序,但它在 xscreensaver 上不起作用。
如何在 Movie Player 运行时更改程序文件以禁用 xscreensaver?
您可以尝试与此脚本类似的脚本。通过 DBUS 观察玩家状态。
我将延迟降低到 55 秒,在 1 分钟的屏幕保护程序空闲时间下工作得更好。
示例VLC:
顺便说一句,Ubuntu 14.04 中的 VLC 默认启用了 DBUS 接口。在 Ubuntu 12.04 中没有。从以下位置检查:
工具 → 首选项 → 高级(或全部) → 界面 → 控制界面 → D-Bus 控制界面。(应用然后重新启动 VLC)
创建一个文件heartbeat.sh
中~/Desktop/
:
#!/bin/bash
while sleep 55
do
if [ "$(pgrep vlc)" != "" ]
then
state=$(bash -c 'gdbus call --session \
--dest org.mpris.MediaPlayer2.vlc \
--object-path /org/mpris/MediaPlayer2 \
--method org.freedesktop.DBus.Properties.Get \
"org.mpris.MediaPlayer2.Player" \
"PlaybackStatus"')
if [ "$state" = "(<'Playing'>,)" ]
then
#xscreensaver-command -deactivate
xset s reset
fi
fi
done
Run Code Online (Sandbox Code Playgroud)开放端子Ctrl+ Alt+t
添加运行权限:
chmod +x ~/Desktop/heartbeat.sh
Run Code Online (Sandbox Code Playgroud)运行脚本:
~/Desktop/heartbeat.sh
Run Code Online (Sandbox Code Playgroud)试试 VLC 播放器。
对于Gnome MPlayer(默认启用 D-Bus),使用:
"$(pgrep gnome-mplayer)"
和
--dest org.mpris.MediaPlayer2.gnome-mplayer
对于(图腾)视频播放器(默认禁用 D-Bus 插件),
编辑 → 插件 → 检查 D-Bus 服务。(重启图腾)
用:
"$(pgrep totem)"
和
--dest org.mpris.MediaPlayer2.totem
这被修改为与提供 MPRIS 的任何播放器一起使用。它动态获取列表(缺点,它不区分仅音频播放和视频播放)。我认为最好的方法是手动放置您喜欢的玩家列表:
#!/bin/bash
players_list=$(gdbus call --session --dest org.freedesktop.DBus \
--object-path / --method org.freedesktop.DBus.ListNames | \
awk 'BEGIN { RS=","; } /org.mpris.MediaPlayer2./ { gsub(/[\[\]()\x27]/, ""); print $1; }')
while sleep 55
do
for player in $players_list
do
state=$(gdbus call --session \
--dest $player \
--object-path /org/mpris/MediaPlayer2 \
--method org.freedesktop.DBus.Properties.Get \
"org.mpris.MediaPlayer2.Player" \
"PlaybackStatus")
if [ "$state" = "(<'Playing'>,)" ]
then
echo $player $state send signal
#xscreensaver-command -deactivate
#use xset to work with all screensaver tools and avoid dimming display ...
xset s reset
break
else
echo $player $state
fi
done
done
Run Code Online (Sandbox Code Playgroud)调试提示:
手表 X 空闲时间
watch -n1 xprintidle
Run Code Online (Sandbox Code Playgroud)
或者:
while sleep 1; do xprintidle; done;
Run Code Online (Sandbox Code Playgroud)检查禁用屏幕保护程序是否有效(运行此脚本时,不应弹出 xscreensave)
#!/bin/bash
while sleep 55
do
#xscreensaver-command -deactivate
#xdg-screensaver reset
xset s reset
done
Run Code Online (Sandbox Code Playgroud)检查 MPRIS 播放器接口的 DBUS 列表,例如运行 VLC:
gdbus call --session --dest org.freedesktop.DBus \
--object-path / --method org.freedesktop.DBus.ListNames | \
awk 'BEGIN { RS=","; } /org.mpris.MediaPlayer2./ { gsub(/[\[\]()\x27]/, ""); print $1; }'
Run Code Online (Sandbox Code Playgroud)
输出:
org.mpris.MediaPlayer2.vlc
org.mpris.MediaPlayer2.vlc.instance3939
Run Code Online (Sandbox Code Playgroud)
或者使用dbus-send
命令
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames \
| grep org.mpris.MediaPlayer2.
Run Code Online (Sandbox Code Playgroud)
输出:
string "org.mpris.MediaPlayer2.vlc"
string "org.mpris.MediaPlayer2.vlc.instance3939"
Run Code Online (Sandbox Code Playgroud)参考资料:
qdbusviewer
检查正确的目的地名称或使用其他的球员,你喜欢。 归档时间: |
|
查看次数: |
6994 次 |
最近记录: |