Seite 1 von 1
Linux: Zugriff auf X11-Atoms über Python?
Verfasst: Dienstag 23. Juni 2009, 15:09
von fhoech
Der Thread-Titel formuliert eigentlich schon fast meine Frage, gibt es einen (nativen) Weg über Python auf X11-Atoms zuzugreifen? Im Moment behelfe ich mir mit dem subprocess-Modul und dem Kommandozeilentool xprop, aber evtl. gibt es ja einen anderen Weg?
Verfasst: Dienstag 23. Juni 2009, 19:02
von fred.reichbier
Hallo,
was willst du tun? Ein Atom ist in der X-Welt eigentlich nur eine "Nummer" mit einem zugehörigen Namen. Willst du vielleicht auf Fenstereigenschaften zugreifen?
X11-Bindings gäbe es einige ... nutzbar wären da am ehesten
python-xlib oder
ooxcb, wobei ich voreingenommen bin, weil ich ooxcb entwickle :p ooxcb verändert sch momentan allerdings ziemlich schnell, vielleicht wäre es also das Beste, auf die python-Xlib zurückzugreifen.
Hier mal ein Beispiel für python-xlib, welches die Eigenschaft
_NET_CURRENT_DESKTOP des Rootwindows ausliest; grundsätzlich kannst du natürlich jede Eigenschaft jedes Fensters so auslesen
Code: Alles auswählen
import Xlib
from Xlib.display import Display
# Erstmal mit dem X-Server verbinden ...
display = Display()
# Dann das Root-Window des normalen Screens holen.
root = display.screen().root
prop = root.get_full_property(
# Das Atom der Eigenschaft ...
display.intern_atom('_NET_CURRENT_DESKTOP'),
# Die Eigenschaft hat den Typ 'CARDINAL': eine Liste
# von positiven Ganzzahlen ...
display.intern_atom('CARDINAL'))
# prop.value[0] ist dann (sofern der Fenstermanager
# _NET_CURRENT_DESKTOP gesetzt hat) der Index
# des aktuellen Desktops.
print prop.value[0]
Der Vollständigkeit halber hier nochmal dasselbe für die neue, sich noch in der Entwicklung befindende ooxcb-Version:
Code: Alles auswählen
import ooxcb
from ooxcb.protocol import xproto
conn = ooxcb.connect()
# Das Rootwindow des bevorzugten Screens holen ...
root = conn.setup.roots[conn.pref_screen].root
prop = root.get_property('_NET_CURRENT_DESKTOP', 'CARDINAL').reply()
print prop.value[0]
Hilft dir das vielleicht erstmal weiter?
Gruß,
Fred
Verfasst: Dienstag 23. Juni 2009, 19:44
von fhoech
Oh ja, das tut es, danke! Genau so etwas hatte ich gesucht (eine Möglichkeit, auf Fenstereigenschaften zuzugreifen, vor allem interessiert mich dabei das root-Window). Werde mir beides mal anschaun.