gelöst: Script Fenster nach vorn holen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
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

Beitrag von Drahtseil » 02.08.2011 15:20:37

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.
Zuletzt geändert von Drahtseil am 04.08.2011 20:02:51, insgesamt 1-mal geändert.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Script Fenster nach vorn holen

Beitrag von cosmac » 02.08.2011 16:24:16

hi,

probier' mal Debianxdotool. 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")
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):

Code: Alles auswählen

xdotool windowmap $XVKBD_ID
xdotool windowraise $XVKBD_ID
xdotool windowfocus $XVKBD_ID
Das pgrep ist dann eigentlich nicht mehr nötig. Wenn es kein Fenster mit dem Titel gibt, bleibt $XVKBD_ID leer.
Beware of programmers who carry screwdrivers.

Benutzeravatar
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

Beitrag von Drahtseil » 02.08.2011 17:02:33

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

:THX:

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

Antworten