Ich denke, xdotool getactivewindow
ist 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 getwindowpid
beispielsweise getactivewindow
die ID auf dem Fensterstapel ab und getwindowpid
verwendet 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 getactivewindow
Sie, das gewünschte Fenster innerhalb von zwei Sekunden auszuwählen.
Bei der Verwendung xdotool
mit anderen Tools für die Fensterhandhabung treten Komplikationen auf :
Während die xdotool
Ausgabe 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
xdotool getactivewindow
Befehl 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)