检测X11是否可用(python)

时间:2009-06-22 15:38:46

标签: python user-interface

首先,检测X11是否正在运行并且可用于python脚本的最佳/最简单方法是什么。

父进程?
会议负责人?
X环境变量?
其他?

其次,我希望有一个实用程序(python脚本)来呈现一个gui(如果可用),否则使用命令行支持的工具。

我想到了这个

-main python脚本(检测gui是否可用并启动适当的脚本)
-gui或命令行python脚本开始
- 使用通用模块进行实际工作

我非常愿意提出简化这一建议的建议。

3 个答案:

答案 0 :(得分:9)

我要检查是否设置了DISPLAY(这毕竟是C API X11应用程序所做的)。

答案 1 :(得分:8)

检查xset -q的返回代码:

def X_is_running():
    from subprocess import Popen, PIPE
    p = Popen(["xset", "-q"], stdout=PIPE, stderr=PIPE)
    p.communicate()
    return p.returncode == 0

关于问题的第二部分,我建议采用以下main.py结构:

import common_lib

def gui_main():
    ...

def cli_main():
    ...

def X_is_running():
    ...

if __name__ == '__main__':
    if X_is_running():
        gui_main()
    else:
        cli_main()

答案 2 :(得分:5)

您可以简单地启动gui部分,并捕获当X(或任何其他平台相关的图形系统不可用时引发的异常。

在运行基于文本的部件之前,请确保您确实拥有交互式终端。您的进程可能在没有可见终端的情况下启动,这在KDE,gnome或windows等图形用户环境中很常见。