2009-03-16 11 views
3

Ich arbeite an alten Motif-basierten Anwendung für Linux. Ich möchte das aktive Fenster unserer Anwendung programmgesteuert ändern können. Ich kann die Eingabe mithilfe der XSetInputFocus() - Funktion umleiten, und die Tastatureingabe beginnt, dorthin zu gehen, aber die Funktionen XReconfigureWMWindow() und XRaiseWindow() funktionieren einfach nicht.Wie ändere ich den Fokus in X-Windows?

Ich habe gelesen, dass Window Manager versuchen, dieses Verhalten zu stoppen, also versucht, konfigurieren Umleitung zu deaktivieren, aber das funktioniert auch nicht. Irgendwelche Ideen, wie man eines meiner eigenen Fenster oben auf dem Fensterstapel macht?

+0

Hallo @theJonan, haben Sie eine Lösung gefunden, wie Sie sich konzentrieren können? Ich möchte eine Sammlung aller Lösungen erstellen, damit ich eine Cross-Window-Manager-Lösung erstellen kann. – Noitidart

Antwort

0

Sie können die Antwort darauf finden hängt davon ab, den Window Manager den Benutzer verwendet, oder sogar, welche Einstellungen sie dem Window Manager gegeben haben. Ich setze meine Fenstermanager gerne auf "Fokus folgt Maus", was bedeutet, dass Sie den Fokus nicht auf ein Fenster senden können, auf das ich meine Maus nicht gelegt habe, es sei denn Sie verzerren die Maus dort (ist diese Funktion XWarpMouse) ?).

2

Es gibt ein winziges Programm namens wmctrl (zumindest in Debian/Ubuntu ist es in der Standarddistribution), das viele Operationen auf Windows und Desktops durchführen kann und viele Fenstermanager verwaltet. Ich würde vorschlagen zu testen, ob es in Ihrer Umgebung funktioniert, und wenn ja, spähen Sie auf seine Quellen.

+0

Als Alternative zu wmctrl, siehe [xdotool] (http://www.semicomplete.com/projects/xdotool/). –

Verwandte Themen