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.

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

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


xdotool getactivewindow key F5sollte das gleiche Ergebnis produzieren
user3804598
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.