ubuntuusers.de

Das aktive Fenster erfragen, C-Programmierung

Status: Ungelöst | Ubuntu-Version: Ubuntu
Antworten |

fLiPr3VeRsE

Anmeldungsdatum:
18. November 2007

Beiträge: 30

Servus,

ich möchte mir ein kleines Programm schreiben, dass den Tastendruck meiner VX Nano abfängt und dann Programmspezifisch eine Aktion ausführt.
Nur dazu müsste ich wissen, welches das aktive Fenster ist.
Das Abfangen des Tastendrucks ist nicht das Problem.

Wie geht das in C?
Und welche Bib/Headerdatei wird benötigt?

Gruß,
fLiP

fred.reichbier

Anmeldungsdatum:
14. Dezember 2006

Beiträge: 350

Hallo,

ich habe mich für gestikk damit etwas näher beschäftigt. So ziemlich jeder Windowmanager hat eine Lib für sowas (für Gnome wnck, KDE hat einen netwm-Handler, XFCE4 hat Netk). Erst letztens bin ich auf die Standards icccm und netwm gestoßen, welche unabhängig vom Windowmanager sein sollten. Die funktionieren so, dass jedes X-Fenster bestimme Eigenschaften (Properties) gesetzt hat, die man mit der Xlib abfragen können sollte. Netwm ist da etwas aktueller und 'besser' als ICCCM, allerdings sah es bei meinen Tests so aus, als würde Xfce4 nicht alle Eigenschaften, die netwm beschreibt, richtig setzen. Daher wäre es dann wohl besser, wenn möglich, auch mit ICCCM zu arbeiten.

Im Grunde sieht die Vorgehensweise so aus: beim Rootwindow _NET_ACTIVE_WINDOW abfragen, das enthält die Xid des aktiven Fensters. Anhand dieser Angabe kann man dann über das Fenster einiges herausfinden, z.B. mit _NET_WM_NAME (netwm) oder WM_NAME (ICCM). Experimentieren kannst du mit diesen Sachen auf der Konsole mit dem Tool xprop. Ich vermute mal, dass dir die Xlib-Funktionen XDefaultWindow, XGetTextProperty helfen könnten 😉

Ich hoffe, das hilft dir etwas weiter. Meine Lösung in Python kannst du hier anschauen. Allerdings habe ich PyGTK statt der Xlib benutzt ☺

Antworten |