首先,检测X11是否正在运行并且可用于python脚本的最佳/最简单方法是什么。
父进程?
会议负责人?
X环境变量?
其他?
其次,我希望有一个实用程序(python脚本)来呈现一个gui(如果可用),否则使用命令行支持的工具。
我想到了这个
-main python脚本(检测gui是否可用并启动适当的脚本)
-gui或命令行python脚本开始
- 使用通用模块进行实际工作
我非常愿意提出简化这一建议的建议。
答案 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等图形用户环境中很常见。