哪个显示管理器适合非交互式Python应用和mplayer?
我正在开发一个应用程序,这个程序会在Linux系统上运行,并且会一直全屏显示(不会有菜单、托盘或者其他任何东西可见)。
这个应用程序是用Python开发的,虽然这和窗口管理器关系不大,但我现在最头疼的就是选择一个合适的窗口管理器。
我需要一个占用资源最小的窗口管理器,它能够让我同时运行一个图形化的Python应用和一个mplayer窗口,并且支持宽屏分辨率(比如16:10、16:9等)。除此之外,它不需要太多功能,但我最看重的就是它的占用空间要尽量小。
你会推荐哪个窗口管理器呢?
补充说明:这个应用程序不需要任何用户交互。
5 个回答
我想你会同时运行你的Python图形界面和mplayer,可能会把它们放在一个组合的窗口里,这样可以一起填满屏幕。
正如评论中所说,你不需要窗口管理器就能做到这一点。你可以让你的Python图形界面应用程序接收命令行参数来设置它的窗口大小,同时也可以用-geometery参数调用全屏的mplayer。这样就能按预期填满屏幕,而且不会有任何窗口装饰。
现在,你可以为运行这一切的用户调用startx脚本,并让一个自定义的~/.xinitrc脚本做一些事情,比如:
#!/bin/sh
exec python my_gui_app --whatever-sets-geom &
exec mplayer -fs video.avi
如果你的Python应用程序会启动mplayer,那么只需保留第一个'exec'调用(去掉'&'),并按需要调用mplayer,设置好'-fs'模式下的尺寸。
请注意,你可能需要使用像'xset'这样的程序来禁用监视器的省电黑屏,隐藏光标(虽然我记得mplayer会为自己的窗口处理这个),以及其他类似的事情。
另外,有时候在没有窗口管理器的X显示下运行GTK应用程序可能会使用一种“丑陋”的主题,所以你可能需要以某种方式处理工具包样式的配置。
你可能想说的是窗口管理器。显示管理器像KDM、GDM这些。窗口管理器,比如GNOME、Xfce、KDE,还有ratpoison、fvwm、twm、blackbox等等。ratpoison会把前面的应用程序全屏显示,但需要你用键盘来操作,完全不允许用鼠标,所以才叫ratpoison(老鼠毒药)。
其实你并不需要任何窗口管理器或显示管理器。你只需要打开一个和根窗口大小一样的初始窗口。其实如果你愿意,甚至可以直接在根窗口上绘图。
如果你使用某个显示库,它可能会有简单的方法来打开一个全屏窗口。例如,使用一个足够新的SDL版本通过pygame,你可以这样做:
pygame.display.init()
surface = pygame.display.set_mode((0,0),pygame.FULLSCREEN,0)
这样就能得到一个填满整个屏幕的窗口。即使没有运行窗口管理器,这个方法也能正常工作。
至于mplayer,它接受-geometry
这个参数,所以你可以用类似mplayer -geometry 640x480+20+20
的命令来显示mplayer窗口,窗口距离顶部20像素,距离左边20像素,大小为640x480像素。