So erhalten Sie die Fenster-ID von xdotool Window Stack

12

Ich benötige die ID eines Fensters, das aktiv oder fokussiert ist. Ich versuche, xdotoolBefehl zu verwenden . Es gibt Befehl:

xdotool getactivewindow

Das Ergebnis wird im Fensterstapel gespeichert. Ich möchte eine Widnow-ID von diesem Fensterstapel erhalten. Befehl

xdotool getactivewindow getwindowpid

befriedigt mich nicht Ich möchte keine Fenster-ID nach Prozess-ID erhalten.

Mariusz
quelle

Antworten:

11

Ich denke, xdotool getactivewindowist was du willst - hast du es versucht?

Es druckt die Fenster-ID (aus dem Fensterstapel), wenn in der Befehlszeile keine weiteren xdotool-Unterbefehle vorhanden sind.

Legt xdotool getactivewindow getwindowpidbeispielsweise getactivewindowdie ID auf dem Fensterstapel ab und getwindowpidverwendet diese ID zum Abfragen der PID. Beachten Sie, dass beim Ausführen dieses Befehls im Terminal immer die ID des Terminalfensters zurückgegeben wird, da es aktiv ist. Um die ID aus einem anderen Fenster zu erhalten, versuchen sleep 2s && xdotool getactivewindowSie, das gewünschte Fenster innerhalb von zwei Sekunden auszuwählen.


Bei der Verwendung xdotoolmit anderen Tools für die Fensterhandhabung treten Komplikationen auf :

Während die xdotoolAusgabe Dezimalzahlen für Windwo-IDs verwendet, verwenden die meisten anderen Tools Hexadezimalzahlen für die Ausgabe (sie unterstützen normalerweise beide für die Eingabe).

Wenn Sie beispielsweise ein Fenster mit finden xdotool getactivewindow, finden Sie das Ergebnis nicht in der Ausgabe von xwininfo -root -tree, in der alle Fenster aufgelistet sind. Es muss zuerst in eine Hexadezimalzahl konvertiert werden:

$ xdotool getactivewindow                              
69206716
$ printf 0x%x 69206716                  
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
           0x42002bc (has no name): ("konsole" "Konsole")  1154x781+0+0  +1289+498


Konvertieren von Dezimal in Hexadezimal:

printf 0x%x 69206716

Hexadezimal in Dezimal umwandeln:

printf %i 0x42002bc
Volker Siegel
quelle
Ich habe versucht, xdotool getactivewindowBefehl und Problem ist, dass es nicht Ergebnis im Terminal druckt. Das Ergebnis wird im Fensterstapel gespeichert. Dieser Befehl gibt eine Nummer aus, aber es ist keine Fenster-ID (z. B. 35651588)
Mariusz
Warum ist 35651588 Ihrer Meinung nach nicht die Fenster-ID?
Volker Siegel
Ja, ich denke, dass 35651588 nicht die Fenster-ID ist. Sie können die Windows-ID mit dem Befehl xwininfo anzeigen, z. B. xwininfo -root -tree- Dieser Befehl druckt alle Fenster und Fenster haben andere Arten der Nummerierung.
Mariusz
1
xwininfozeigt die Fenster-ID als Hexadezimalzahlen an und xdotool zeigt Dezimalzahlen an, aber es ist genauso.
Volker Siegel
Du hast recht. 35651588 = 0x2200004. xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Mariusz
1

Dieser Befehl funktioniert bei mir

xdotool key --window "$(xdotool getactivewindow)" F5

xdotool Version 3.20160805.1

Ahmed Habiba
quelle
xdotool getactivewindow key F5sollte das gleiche Ergebnis produzieren
user3804598