Zum Hintergrund:
auf meinem Netbook mit Touchscreen habe ich jetzt die Bildschirmtastatur xvkbd installiert. Um diese aufzurufen, habe ich ein Panel, in dem der entsprechende Starter sitzt. Wenn ich jetzt 2x auf den Starter klicke, habe ich die Tastatur natürlich auch 2x auf dem Bildschirm.
Was ich gern hätte ist ein Script, das prüft, ob xvkbd bereits läuft. Wenn ja, soll es "nach vorn" geholt werden, also "topmost".
Ersteres kann ich mit "pgrep xvkbd" prüfen, aber wie hole ich das Fenster nach vorn oder setzte ihm den Fokus?
Das ganze soll in Gnome laufen, Debian Squeeze.
gelöst: Script Fenster nach vorn holen
- Drahtseil
- Beiträge: 501
- Registriert: 11.10.2010 18:37:25
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Paderborn
-
Kontaktdaten:
gelöst: Script Fenster nach vorn holen
Zuletzt geändert von Drahtseil am 04.08.2011 20:02:51, insgesamt 1-mal geändert.
Re: Script Fenster nach vorn holen
hi,
probier' mal xdotool. Das gewünschte Fenster wird über eine Window-ID angesprochen. Die bekommt man z.B. raus, indem man nach dem Fenstertitel sucht:
damit kann man dann diverse Benutzeraktivitäten simulieren. Welche sinnvoll oder nötig sind, hängt vom verwendeten Windowmanager und vom Zustand des Fensters ab (z.B. minimiert):
Das pgrep ist dann eigentlich nicht mehr nötig. Wenn es kein Fenster mit dem Titel gibt, bleibt $XVKBD_ID leer.
probier' mal xdotool. Das gewünschte Fenster wird über eine Window-ID angesprochen. Die bekommt man z.B. raus, indem man nach dem Fenstertitel sucht:
Code: Alles auswählen
XVKBD_ID=$(xdotool search --title "Virtual Keyboard")
Code: Alles auswählen
xdotool windowmap $XVKBD_ID
xdotool windowraise $XVKBD_ID
xdotool windowfocus $XVKBD_ID
Beware of programmers who carry screwdrivers.
- Drahtseil
- Beiträge: 501
- Registriert: 11.10.2010 18:37:25
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Paderborn
-
Kontaktdaten:
[gelöst] Re: Script Fenster nach vorn holen
Ich hatte gerade mit xwit gespielt, bekam aber gar nichts hin.
Zum xdotool, das sieht jetzt so aus (zum Üben nutze ich das Taschenrechner Fenster):
$ xdotool search --title "Taschenrechner"
75497475
$ xdotool windowfocus 75497475
--> geht, Fenster erhält Fokus, bleibt aber unten
$ xdotool windowrais 75497475
Speicherzugriffsfehler
$ xdotool windowmap 75497475
--> macht nichts, bringt auch keine Fehlermeldung
$ xdotool windowactivate 7549747
--> BINGO, holt das Fenster nach vorn und setzt Fokus
Die Liste der Fensternummern kann übrigens lang sein. Zuerst hatte ich Bluefish gespielt, da kamen 5 IDs, obwohl kein Dokument geladen war. Bei den meistern Nummern kamen Fehlermeldungen.
So, jetzt geht's ans Script.
edit: hier das script, falls jemand etwas ähnliches machen will:
Zum xdotool, das sieht jetzt so aus (zum Üben nutze ich das Taschenrechner Fenster):
$ xdotool search --title "Taschenrechner"
75497475
$ xdotool windowfocus 75497475
--> geht, Fenster erhält Fokus, bleibt aber unten
$ xdotool windowrais 75497475
Speicherzugriffsfehler
$ xdotool windowmap 75497475
--> macht nichts, bringt auch keine Fehlermeldung
$ xdotool windowactivate 7549747
--> BINGO, holt das Fenster nach vorn und setzt Fokus
Die Liste der Fensternummern kann übrigens lang sein. Zuerst hatte ich Bluefish gespielt, da kamen 5 IDs, obwohl kein Dokument geladen war. Bei den meistern Nummern kamen Fehlermeldungen.
So, jetzt geht's ans Script.
edit: hier das script, falls jemand etwas ähnliches machen will:
Code: Alles auswählen
#!/bin/bash
# Handle On-screen keyboard xvkbd
# load keyboard if program is not yet running. This puts it automatically on top
# if already running, just put it on top and focus
# requires xvkbd, xdotools
#
XVKBD_ID=$(xdotool search --name "xvkbd")
if [ -z "$XVKBD_ID" ]
then
xvkbd
else
xdotool windowactivate $XVKBD_ID
fi
exit