在 XBMC 中观看视频时防止屏幕关闭

tho*_*ter 8 xbmc power-management 12.10

在 12.04 中,在 XBMC 中观看视频时屏幕从未进入睡眠状态。但是,在升级到 12.10 并且不更改任何设置后,它确实如此。

有什么方法可以防止在 XBMC 中播放视频时屏幕自动关闭,而无需在其他时间实际禁用屏幕关闭?

理想情况下,是否有针对此的 XBMC 特定设置?这是 XBMC 的一个功能,现在在 12.10 中以某种方式被破坏了,还是由于 Ubuntu 中的其他一些非 XBMC 变化而改变了?

Adi*_*tya 11

我们可以创建一个 shell 脚本,它会以指定的时间间隔(仅在 XBMC 运行时)模拟鼠标移动并防止您的屏幕关闭。

按照步骤:

  1. 安装必要的工具:

    我们需要xdotool安装 xdotool为我们做这项工作。通过在终端中运行以下命令来安装它:

    sudo apt-get install xdotool
    
    Run Code Online (Sandbox Code Playgroud)
  2. 剧本:

    将以下脚本保存在 PC 上的任意位置。可以sleep_period根据自己的需要修改,我设置为60秒。脚本检查是否有一个叫做xbmc.binrunning的进程;如果它找到一个,那么它会在进程处于活动状态时循环以模拟鼠标移动。否则,在指定的时间间隔后再次检查进程。

    #!/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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使这个脚本可执行:

    右键单击您刚刚保存的文件 >> 选择Properties>> 在Permission选项卡中,将复选标记放在 上Execute

    使脚本可执行

  4. 在每次启动时自动执行此脚本:

    我们可以在Startup Applications的帮助下做到这一点。通过按下Enter并查询Startup Applications>> 在启动应用程序窗口中打开您的 Dash ,单击Add>> 然后,在弹出的对话框中,填写信息:

    名称:可选,无论你想命名这个。

    命令:保存文件的路径。

    评论:可选,如果您想添加一些。

    启动应用程序首选项

  5. 重新启动您的系统并使用 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
Run Code Online (Sandbox Code Playgroud)

并用xbmc.bin您选择的进程名称替换第 2 行和第 3 行。


如何找到进程名称

  • 使用 GUI (GNOME):

    我们可以使用System Monitor来查找进程的名称。按Super打开 Dash 并查询“系统监视器”以启动它。在Processes选项卡中,我们可以找到进程名称作为第一列。

    系统监视器

  • 带终端:

    我们可以运行top列出所有正在运行的进程。调用的最后一Command列为我们提供了进程的名称(但仅限于前 15 个字符)。

    终端 <code>top</code> 命令

在这里我们可以看到 Firefox 只是命名为firefox. 所以,如果我们想要在 Firefox 运行时出现这种行为;我们将xbmc.bin在脚本中替换为,firefox其他一切都可以正常工作。


致谢:我在这里找到了脚本。但是,我进行了必要的修改以使其紧凑并满足问题的要求。

  • 我不会称之为黑客。人们一直使用 shell 脚本来做这些事情。很棒的答案+1。 (3认同)

Ger*_*ger 8

一个非常简单的解决方案是咖啡因。Caffeine 是一个“状态栏应用程序,能够暂时阻止屏幕保护程序和“睡眠”省电模式的激活。

启用它就像单击状态栏指示器一样简单,但您也可以将其设置为在您启动 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
Run Code Online (Sandbox Code Playgroud)

从 15.10 开始,您可以在没有 ppa 的情况下安装

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

享受!


Nan*_*nne 7

这似乎是ubuntu 的 XBMC 包中的一个错误

我不确定您安装了哪个版本,但 PPA* 中的版本似乎没有出现在我的系统上。这当然可能是因为我在 ubuntu 中有不同的设置,所以你的千年可能会有所不同。

如果你不这样做,你可以尝试使用 XBMC 作为会话(在你的登录屏幕上,按你的名字旁边的 ubuntu 标志并选择 XBMC。你不会得到统一,但只是全屏 XMBC)。unity 的设置将不存在,因此您可能会因为没有屏幕保护程序而走运。(如果您设置了自动登录,则需要按注销才能获得登录屏幕)

* https://launchpad.net/~team-xbmc/+archive/ppa