Определить, доступен ли X11 (python) - PullRequest
4 голосов
/ 22 июня 2009

Во-первых, какой самый лучший / самый простой способ определить, работает ли X11 и доступен ли он для скрипта Python.

родительский процесс?
лидер сессии?
Х переменных среды?
Другой?

Во-вторых, я хотел бы иметь утилиту (скрипт Python) для представления графического интерфейса, если таковой имеется, в противном случае используйте инструмент с поддержкой командной строки.

С макушки головы я думал об этом

-основный скрипт на Python (определяет, доступен ли графический интерфейс и запускает соответствующий скрипт)
Сценарий Python -gui или командной строки запускается
-об использовать универсальный модуль для выполнения реальной работы

Я очень открыт для предложений по упрощению этого.

Ответы [ 3 ]

9 голосов
/ 22 июня 2009

Я бы проверил, установлен ли DISPLAY (в конце концов, именно это и делают приложения C API X11)

8 голосов
/ 22 июня 2009

Проверьте код возврата 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()
5 голосов
/ 22 июня 2009

Вы можете просто запустить часть графического интерфейса и поймать исключение, которое возникает, когда X (или любая другая зависимая от платформы графическая система недоступна.

Перед запуском текстовой части убедитесь, что у вас действительно есть интерактивный терминал. Ваш процесс мог быть запущен без видимого терминала, как это обычно бывает в графических пользовательских средах, таких как KDE, gnome или windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...