在XBMC中观看video时防止屏幕关闭
在12.04,屏幕在XBMC中观看video时从未进入睡眠状态。 但是在升级到12.10并且不更改任何设置之后,确实如此。
有什么办法可以防止屏幕在XBMC中播放video时自动关闭,而不会在其他时候禁用屏幕关闭?
理想情况下,是否有针对此的XBMC特定设置? 这是XBMC的一个function,现在在12.10中以某种方式被破坏或由于Ubuntu中的其他非XBMC更改而改变了吗?
这似乎是ubuntu的XBMC包中的一个错误
我不确定你安装的是哪个版本,但是PPA *的版本似乎没有在我的系统上安装。 这可能是因为我在ubuntu中有不同的设置,所以你的milleage可能会有所不同。
如果不这样做,您可以尝试使用XBMC作为会话(在登录屏幕上,按下您姓名旁边的ubuntu徽标并选择XBMC。您不会获得统一,而只是全屏XMBC)。 统一的设置不会存在,所以你可能没有屏幕保护程序。 (如果您有自动登录设置,则需要按logout才能获得登录屏幕)
我们可以创建一个shell脚本,它可以按指定的时间间隔模拟鼠标移动(仅当XBMC正在运行时)并阻止屏幕关闭。
按照步骤:
-
安装必要的工具:
我们需要xdotool 为我们做这份工作。 通过在终端中运行以下命令来安装它:
sudo apt-get install xdotool
-
剧本:
将以下脚本保存在PC上的任何位置。 您可以根据需要修改
sleep_period
,我将其设置为60秒。 该脚本检查是否有一个名为xbmc.bin
的进程正在运行; 如果它找到一个,那么它会在进程处于活动状态时循环以模拟鼠标移动。 否则,在指定的时间间隔后再次检查进程。#!/usr/bin/env bash sleep_period=60s #seconds mouse_x=0 mouse_y=0 movement_px=2 mouse_x=$(xdotool getmouselocation 2>/dev/null | sed -e 's/x://' -e 's/y//' -e 's/ screen:.*$//' -e 's/ //' | awk 'BEGIN {FS=":"} {print $1}') mouse_y=$(xdotool getmouselocation 2>/dev/null | sed -e 's/x://' -e 's/y//' -e 's/ screen:.*$//' -e 's/ //' | awk 'BEGIN {FS=":"} {print $1}') while true; do if [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; then while [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; do xdotool mousemove $((mouse_x+${movement_px})) $((mouse_y+${movement_px})) xdotool mousemove $((mouse_x-${movement_px})) $((mouse_y-${movement_px})) sleep ${sleep_period} done else sleep ${sleep_period} fi done
-
使此脚本可执行:
右键单击刚刚保存的文件>>选择“ 属性 ”>>在“ 权限”选项卡中,将“检查标记”设置为“ 执行” 。
-
每次启动时自动执行此脚本:
我们可以在启动应用程序的帮助下完成此操作。 按Enter并查询
Startup Applications
>>在启动应用程序窗口中打开您的Dash,单击添加 >>然后,在弹出的对话框中,填写以下信息:名称:可选,无论您想为此命名。
命令:保存文件的路径。
评论:可选,如果你想添加一些。
-
使用XBMC重新启动系统并欣赏电影。
如何与其他应用程序一起使用
这是XBMC(进程名称xbmc.bin
)的示例。 但是,它也可以用于您选择的任何其他进程,只需将步骤2中提到的脚本中的xbmc.bin
替换为您希望的进程名称即可。 在上面的脚本中找到以下行:
while true; do if [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; then while [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; do
并使用您选择的进程名称替换第2行和第3行中的xbmc.bin
。
如何查找进程名称
-
使用GUI(GNOME):
我们可以使用
System Monitor
来查找进程的名称。 按Super打开Dash并查询“System Monitor”以启动它。 在“ 进程”选项卡中,我们可以找到“进程名称”作为第一列。 -
带终端:
我们可以运行
top
来列出所有正在运行的进程。 名为Command
的最后一列为我们提供了进程的名称(但它仅限于前15个字符)。一个非常简单的解决方案是咖啡因 。 咖啡因是一种’状态栏应用程序,能够暂时阻止屏幕保护程序和“睡眠”省电模式的激活。
启用它就像单击状态栏指示器一样简单,但您也可以将其设置为启动xbmc时自动禁用屏幕保护程序。 请参见下面的屏幕截图
如果你正在使用Gnome,你可以安装caffeine gnome扩展 。 如果没有,对于Ubuntu高达15.04(生动),您可以从启动板ppa安装咖啡因:
sudo add-apt-repository ppa:caffeine-developers/ppa sudo apt-get update sudo apt-get install caffeine
从15.10开始,你可以安装没有ppa
sudo apt install caffeine
请享用!
我在〜/ bin /中使用这些:
#!/bin/bash # ssoff - disable screensaver and power mgmt pkill xscreensaver xset s 0 xset -dpms
#!/bin/bash # sson - activate screen and power mgmt xscreensaver > /dev/null 2>&1 & xset s 100 xset +dpms
当然你可以制作一个图标来运行这些,但我也不使用XBMC
每当xbmc运行时,这些解决方案都会关闭屏幕保护程序,而不仅仅是在播放video时。 由于它有一个内置的UPnP服务器,我让它全天候运行,但我只想在本地播放video时禁用屏幕保护程序。
这就是我想出的:在XBMC中打开http和JSON支持。 然后循环发出请求以确定玩家是否处于活动状态。 如果是,请发出xscreensaver-command -disable(您可以根据屏幕保护程序调整此值)。 如果没有,什么都不做。 每50秒检查一次对我来说很充实。
Python代码: http : //sumnerhayes.com/software/