Получение имени работающего сервера отображения в Python

2

Как я могу получить имя на Python сервера отображения, которое используется в текущей сессии Linux? Я хочу знать, использует ли пользователь Xorg или Wayland.

  • 0
    вам нужно уточнить, что вы подразумеваете под текущей сессией. X-протокол, используемый различными реализациями X-сервера, является сетевым протоколом. X-сервер (ы), работающий на компьютере, на котором выполняется приложение, может отличаться от X-сервера, на котором отображается приложение.
Теги:
xorg

2 ответа

1
Лучший ответ

Вам понадобится указатель Xlib Display и способ вызвать ServerVendor() и, возможно, VendorRelease().

С помощью pygtk вы можете использовать gdk_x11_display_get_xdisplay(), чтобы получить Display *.

Обновление: я стою исправлено: gtkmm имеет привязку к этой функции, но pygtk, по-видимому, не делает.

Библиотека по-прежнему может предоставлять доступ к информации, возвращаемой ServerVendor() (быстрый поиск показывает несколько вызовов, но большинство из них, похоже, используется для обходных путей совместимости).

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

1

Я точно не знаю, что это делает с Wayland, но вы можете использовать xdpyinfo следующим образом:

import subprocess

p = subprocess.Popen(['xdpyinfo'], stdout=subprocess.PIPE)
for line in p.communicate()[0].split('\n'):
    if line.startswith('vendor'):
        k, v = line.split(':')
        v = v.strip()
        print "%s=%s" % (k, v)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню