如何与其他应用程序一起使用

如何与其他应用程序一起使用

在 12.04 中,在 XBMC 中观看视频时屏幕从未进入休眠状态。然而在升级到 12.10 并且不更改任何设置后,屏幕进入休眠状态。

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

理想情况下,是否有针对此问题的 XBMC 特定设置?这是 XBMC 的一个功能,但在 12.10 中不知为何出现了问题,还是由于 Ubuntu 中的其他非 XBMC 更改而发生了变化?

答案1

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

按照步骤:

  1. 安装必要的工具:

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

    sudo apt-get install xdotool
    
  2. 剧本:

    将以下脚本保存到您的 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
    
  3. 使该脚本可执行:

    右键单击刚刚保存的文件>>选择Properties>>在Permission选项卡中,勾选Execute

    使脚本可执行

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

    我们可以借助启动应用程序. 按 打开 DashEnter并查询Startup Applications>> 在启动应用程序窗口中,单击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

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


如何查找进程名称

  • 使用 GUI(GNOME):

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

    系统监视器

  • 使用终端:

    我们可以运行top来列出所有正在运行的进程。最后一列Command给出了进程的名称(但限制为前 15 个字符)。

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

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


致谢:我找到了剧本这里。不过,我做了必要的修改,使其紧凑并满足问题的要求。

答案2

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

启用它就像单击状态栏指示器一样简单,但您也可以将其设置为在启动 xbmc 时自动禁用屏幕保护程序。请参阅下面的屏幕截图

在此处输入图片描述

如果你使用 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

享受!

答案3

这似乎是一个ubuntu 的 XBMC 软件包中的 bug

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

如果没有,您可以尝试使用 XBMC 作为会话(在登录屏幕上,按下您姓名旁边的 ubuntu 徽标并选择 XBMC。您不会获得 unity,而只是全屏 XMBC)。unity 的设置不会出现在那里,因此您可能没有屏幕保护程序。(如果您设置了自动登录,则需要按注销才能获得登录屏幕)

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

答案4

这些解决方案都会在 xbmc 运行时关闭屏幕保护程序,而不仅仅是在播放视频时关闭。由于它有一个内置的 UPnP 服务器,我让它全天候运行,但我只想在本地播放视频时禁用屏幕保护程序。

这是我的想法:在 XBMC 中启用 http 和 JSON 支持。然后循环发出请求以查明播放器是否处于活动状态。如果是,则发出 xscreensaver-command -disable(您可以根据屏幕保护程序进行调整)。如果不是,则不执行任何操作。每 50 秒检查一次对我来说已经足够了。

Python 代码如下:http://sumnerhayes.com/software/

相关内容