我正在开发一个将在 Linux 上运行以始终全屏运行的应用程序(没有菜单或托盘或任何可见的东西)。
该应用程序将用 Python 开发,就窗口管理器而言,这并不重要,但我很难选择一个窗口管理器。
我需要占用空间最小的东西,它可以让我在宽屏分辨率(宽屏、16:10、16:9 等)下运行图形 Python 应用程序并同时拥有一个 mplayer 窗口。除此之外,它不需要很多功能,但最终占用空间大小是我要关注的最重要的事情。
你会推荐什么窗口管理器?
编辑:不会与所需的应用程序进行任何交互。
我正在开发一个将在 Linux 上运行以始终全屏运行的应用程序(没有菜单或托盘或任何可见的东西)。
该应用程序将用 Python 开发,就窗口管理器而言,这并不重要,但我很难选择一个窗口管理器。
我需要占用空间最小的东西,它可以让我在宽屏分辨率(宽屏、16:10、16:9 等)下运行图形 Python 应用程序并同时拥有一个 mplayer 窗口。除此之外,它不需要很多功能,但最终占用空间大小是我要关注的最重要的事情。
你会推荐什么窗口管理器?
编辑:不会与所需的应用程序进行任何交互。
您可能是指窗口管理器。显示管理有KDM、GDM等。Windoe 管理器,例如 GNOME、Xfce、KDE、ratpoison、fvwm、twm、blackbox 等等。ratpoison 为前台应用程序提供全屏显示,但需要大量的键盘交互(因此命名为 ratpoison)并且根本不需要鼠标交互。
您实际上不需要任何窗口管理器或显示管理器。您需要做的就是打开与根窗口具有相同几何形状的初始窗口。我想如果你愿意的话,你甚至可以直接在根窗口中绘制。
如果您正在使用某些显示库,它可能有一种简单的方法可以打开全屏窗口。例如,您可以通过 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 像素。
我假设您将以某种几何组合运行您的 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 应用程序可能最终会使用“丑陋”的主题,因此您可能需要以某种方式处理工具包样式配置。
我在我的“机顶盒”上做类似的事情,我不使用任何窗口管理器。
它启动 debian,并从 inittab 自动登录运行显示的用户。该用户的 .profile 启动 X,它运行 .xinitrc,它启动我的 python 应用程序,它作为 mplayer 前面的网络服务器运行(在 -slave 模式下运行 mplayer)。
我的 python 应用程序没有 GUI 元素 - 只有 mplayer 在 X 显示器上运行。但在你的情况下,应该没有什么不同。正如我在对另一个答案的评论中提到的那样,您可能想研究如何重新设置 mplayer 窗口的父级,以便更好地控制其位置和/或移动/大小。
这样做避免了显示管理器和窗口管理器。这简化了解决方案,启动速度更快,占用空间更小(它运行 SD 卡,有大量空间)。
我意识到这是一个老问题,但我在我的系统上使用 openbox,我创建了一个自定义配置文件,它禁用所有鼠标键盘快捷键,并删除应用程序上的边框等。在 openbox 配置中,我什至创建了一些可以运行 fx 的秘密快捷方式。用于在盒子上进行实时调试的 xterm。
openbox 文档对于搞清楚一切非常有帮助,我在大约 30 分钟内完成了配置。