在12.04中,在XBMC中观看视频时,屏幕从未进入休眠状态。但是,升级到12.10并不更改任何设置后,它会执行。
有什么方法可以防止在XBMC中播放视频时自动关闭屏幕,而又不禁止其他时间关闭屏幕?
理想情况下,是否有针对此的XBMC特定设置?这是XBMC的一项功能,现在已在12.10中以某种方式打破了,还是由于Ubuntu中的一些其他非XBMC更改而有所更改?
在12.04中,在XBMC中观看视频时,屏幕从未进入休眠状态。但是,升级到12.10并不更改任何设置后,它会执行。
有什么方法可以防止在XBMC中播放视频时自动关闭屏幕,而又不禁止其他时间关闭屏幕?
理想情况下,是否有针对此的XBMC特定设置?这是XBMC的一项功能,现在已在12.10中以某种方式打破了,还是由于Ubuntu中的一些其他非XBMC更改而有所更改?
Answers:
这似乎是ubuntu的XBMC软件包中的错误
我不确定您安装的是哪个版本,但是PPA *中的版本似乎没有安装在我的系统上。这可能是因为我在ubuntu中当然有不同的设置,所以您的身高可能有所不同。
如果不这样做,则可以尝试将XBMC用作会话(在登录屏幕上,按名称旁边的ubuntu徽标,然后选择XBMC。您将不会获得团结,而只会获得全屏XMBC)。统一设置将不存在,因此您可能没有屏幕保护程序就很幸运。(如果设置了自动登录,则需要按注销才能进入登录屏幕)
我们可以创建一个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
使此脚本可执行:
右键单击刚刚保存的文件>>选择Properties>>在Permission选项卡中,将复选标记置于Execute。
每次启动时自动执行此脚本:
我们可以借助Startup Applications来做到这一点。通过按下Enter并查询Startup Applications
>>来打开Dash,在Startup Applications窗口中单击Add>>,然后在弹出的对话框中填写以下信息:
名称:可选,无论您要如何命名。
命令:保存文件的路径。
评论:可选,如果您想添加一些。
重新启动系统,并使用XBMC欣赏电影。
这是XBMC(流程名称xbmc.bin
)的示例。但是,它也可以用于您选择的任何其他过程,只需将您xbmc.bin
在步骤2中提到的脚本替换为所需过程的名称即可。在上面的脚本中找到以下几行:
while true; do
if [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; then
while [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; do
并xbmc.bin
在第2行和第3行中用您选择的进程名称替换。
使用GUI(GNOME):
我们可以使用System Monitor
查找进程的名称。按下Super以打开Dash并查询“系统监视器”以启动它。在Processes选项卡中,我们可以找到“进程名称”作为第一列。
带终端:
我们可以运行top
以列出所有正在运行的进程。最后一Command
列为我们提供了流程的名称(但是仅限于前15个字符)。
在这里我们可以看到Firefox仅被命名为firefox
。因此,如果我们在运行Firefox时想要这种行为;我们将xbmc.bin
在脚本中替换为,firefox
其他所有东西都将正常工作。
致谢:我在这里找到了脚本。但是,我进行了必要的修改以使其紧凑并满足问题的要求。
一个非常简单的解决方案是咖啡因。咖啡因是一种“状态栏应用程序,能够临时阻止激活屏幕保护程序和“睡眠”节能模式。
启用它就像单击状态栏指示器一样容易,但是您也可以对其进行设置,以使其在启动xbmc时自动禁用屏幕保护程序。见下面的截图
如果您使用的是Gnome,则可以安装咖啡因gnome扩展程序。如果不是,对于Ubuntu 15.04(vivid)以下版本,您可以从启动板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运行时(而不只是在播放视频时)关闭屏幕保护程序。因为它具有内置的UPnP服务器,所以我让它保持24/7运行,但是我只想在本地播放视频时禁用屏幕保护程序。
这是我想到的:在XBMC中启用http和JSON支持。然后循环发出一个请求,以找出播放器是否处于活动状态。如果是这样,请发出xscreensaver-command -disable(您可以根据自己的屏幕保护程序进行调整)。如果没有,则什么也不做。每隔50秒检查一次对我来说就足够了。
此处的Python代码:http://sumnerhayes.com/software/