簡體   English   中英

檢測 X11 是否可用 (python)

[英]Detect if X11 is available (python)

首先,檢測 X11 是否正在運行並且可用於 python 腳本的最佳/最簡單的方法是什么。

父進程?
會議負責人?
X 環境變量?
其他?

其次,如果可用,我想要一個實用程序(python 腳本)來呈現 gui,否則使用命令行支持的工具。

我突然想到了這個

-main python 腳本(檢測 gui 是否可用並啟動適當的腳本)
-gui 或命令行 python 腳本啟動
- 都使用通用模塊來做實際工作

我非常願意接受簡化這一點的建議。

檢查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()

我會檢查是否設置了 DISPLAY(這畢竟是 C API X11 應用程序所做的)。

import os

if os.environ.get('DISPLAY'):
    print("X11 is available")

您可以簡單地啟動 gui 部分,並捕獲它在 X(或任何其他平台相關圖形系統不可用時引發的異常)。

在運行基於文本的部分之前,請確保您確實有一個交互式終端。 您的進程可能在沒有可見終端的情況下啟動,這在 KDE、gnome 或 Windows 等圖形用戶環境中很常見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM