【问题标题】:Which display manager for a non interactive Python app and mplayer?非交互式 Python 应用程序和 mplayer 的显示管理器?
【发布时间】:2012-02-13 20:54:40
【问题描述】:

我正在开发一个将在 Linux 上运行以始终全屏运行的应用程序(没有菜单或托盘或任何东西可见)。

应用程序将使用 Python 开发,就窗口管理器而言,这并不重要,但我很难选择一个窗口管理器。

我需要占用空间最小的东西,它可以让我在宽屏分辨率(宽屏、16:10、16:9 等)下运行图形 Python 应用程序并同时拥有一个 mplayer 窗口。除此之外,它不需要很多功能,但最终占用空间大小是我要关注的最重要的事情。

你会推荐什么窗口管理器?

编辑:不会与所需的应用程序进行任何交互。

【问题讨论】:

    标签: python linux embedded-linux xorg


    【解决方案1】:

    您实际上不需要任何窗口管理器或显示管理器。您需要做的就是打开与根窗口具有相同几何形状的初始窗口。我想如果你愿意的话,你甚至可以直接在根窗口中绘制。

    如果您使用某些显示库,它可能有一种简单的方法可以打开全屏窗口。例如,您可以通过 pygame 使用足够新的 SDL 版本

    pygame.display.init()
    surface = pygame.display.set_mode((0,0),pygame.FULLSCREEN,0)
    

    获得一个填满整个屏幕的窗口。即使没有运行窗口管理器,这也可以工作。

    对于 mplayer,它接受 -geometry 标志,因此您可以使用 mplayer -geometry 640x480+20+20 之类的东西来显示 mplayer 窗口,距左侧前 20 像素 20 像素,大小为 640x480 像素。

    【讨论】:

    • 如果您可以将 mplayer 窗口重新设置为 python 应用程序的父级可能会更好。如果没有窗口管理器,我不确定如何保证 mplayer 窗口将显示在 python 窗口的顶部。如果你不做父母,至少要注意这些分层问题。
    【解决方案2】:

    您可能指的是窗口管理器。显示管理有KDM、GDM等。 Windoe 管理器,例如 GNOME、Xfce、KDE、ratpoison、fvwm、twm、blackbox 等等。 ratpoison 为前台应用程序提供全屏显示,但需要大量的键盘交互(因此得名 ratpoison)并且根本不需要鼠标交互。

    【讨论】:

    • 我会调查老鼠药。我忘了提到不会与此应用程序进行任何交互。
    • 看起来鼠毒只适用于终端应用程序。我们需要运行具有 720p+ 视频的 mplayer,并且可能在其中运行一些硬件加速图形。
    • 如果你问 MPlayer 是否在鼠毒下工作,它可以工作。最近几个月我没有用过ratpoison,但是我在ratpoison下运行过MPlayer、XPdf、Firefox。我的意思是与窗口管理器的交互。既然你说会有一个 Python 应用程序和一个 MPlayer 窗口,我想你可能会在两者之间切换。 xwinman.org/others.php 列出了一些轻量级的窗口管理器。也看看那里。我喜欢老鼠药,因为我根本不用碰鼠标。
    • 澄清一下,GNOME、KDE ​​和 Xfce 不是窗口管理器,而是desktop environments
    【解决方案3】:

    我假设您将以某种几何组合运行您的 python GUI 和 mplayer,同时显示两者,填满屏幕。

    正如所评论的,您不需要窗口管理器来实现这一点。您可以让您的 python GUI 应用程序获取用于设置其窗口几何形状的命令行参数,并使用 -geometry 参数调用全屏 mplayer。这应该按预期填满屏幕,没有任何窗口装饰。

    现在您可以让用户调用 startx 脚本来运行它,并让自定义 ~/.xinitrc 脚本执行以下操作:

    #!/bin/sh
    
    exec python my_gui_app --whatever-sets-geom &
    exec mplayer -fs video.avi
    

    如果您的 pyhon 应用程序将启动 mplayer,则只需保留第一个 'exex' 调用(删除 '&')并让它根据需要调用 mplayer,并在 '-fs' 模式下使用预期的尺寸。

    请注意,由于节能,您可能需要使用“xset”程序来禁用显示器消隐,隐藏光标(尽管 IIRC 是 mplayer 为自己的窗口所做的),以及类似的事情。

    此外,例如,在裸 X 显示器上运行的 GTK 应用程序可能最终会使用“丑陋”的主题,因此您可能需要以某种方式处理工具包样式配置。

    【讨论】:

    • 尚未对此进行测试,但我很确定您不想执行第一个,因为它将用 python 替换 startx 进程,这意味着 mplayer 永远不会运行。如果我错了,请纠正我。
    【解决方案4】:

    我在我的“机顶盒”上做类似的事情,我不使用任何窗口管理器。

    它启动 debian,并从 inittab 我自动登录运行显示器的用户。该用户的 .profile 启动 X,它运行 .xinitrc,它启动我的 python 应用程序,该应用程序作为 mplayer 前面的网络服务器运行(在 -slave 模式下运行 mplayer)。

    我的 python 应用程序没有 GUI 元素 - 只有 mplayer 在 X 显示器上运行。但在你的情况下,应该没有什么不同。正如我在对另一个答案的评论中提到的那样,您可能想研究如何重新设置 mplayer 窗口的父级,以便更好地控制其位置和/或移动/大小。

    这样做避免了显示管理器和窗口管理器。这简化了解决方案,启动速度更快,占用空间更小(它使用 SD 卡运行,有大量可用空间)。

    【讨论】:

      【解决方案5】:

      我意识到这是一个老问题,但我在我的系统上使用 openbox,我创建了一个自定义配置文件,该文件禁用所有鼠标键盘快捷键,并删除应用程序上的边框等。 在 openbox 配置中,我什至创建了一些可以运行 fx 的秘密快捷方式。用于在盒子上进行实时调试的 xterm。

      openbox 文档对解决所有问题非常有帮助,我在大约 30 分钟内完成了配置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-08
        • 1970-01-01
        • 2017-04-13
        • 1970-01-01
        • 2013-08-17
        相关资源
        最近更新 更多