Mit dem Linux-Kommandozeilentool wmctrl
können Sie unter anderem alle Fenster oder alle Desktops auflisten. Im Desktop-Auflistungsmodus wird der aktuelle Desktop mit einem Sternchen markiert.
Ich brauche ein Tool, das den Titel des aktuell aktiven Fensters herausfinden kann. Leider wmctrl
gibt es keinen Helfer, der das kann – obwohl es weiß, welches Fenster aktuell aktiv ist (siehe :ACTIVE:
Markierung).
Gibt es ein anderes Befehlszeilentool, das mir die Fenster-ID und/oder den Fenstertitel des aktuellen Fensters geben kann?
Antwort1
Installieren xdotool
und ausführen
xdotool getwindowfocus getwindowname
Es wird beispielsweise für die aktuell in Firefox geöffnete Webseite Folgendes angezeigt:
linux - Detecting currently active window - Super User - Mozilla Firefox
Antwort2
Dies ist direkter und verwendet nur xprop
und cut
:
xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_NAME
Diese Befehle sind lediglich eine Extraktion von Eigenschaften aus dem Stammfenster und dem Anwendungsfenster, aber gemäß der Anfrage von Lorenzo von Matterhorn:
Erste,
xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW
Extrahiert die
_NET_ACTIVE_WINDOW
Eigenschaft aus der Wurzel, wodurch Sie die XID des aktiven Fensters erhalten. Dies32x '\t$0'
weist Sie anxprop
, die Ausgabe so zu formatieren, dasscut
sie später leicht analysiert werden kann.Extrahieren Sie dann nur die XID aus der Ausgabe mit
cut -f 2
Übergeben Sie dann die XID als Parameter an
xprop -id XID _NET_WM_NAME
Dadurch wird der Name dieses Fensters gedruckt.
Antwort3
Die gibt es, aber keine kurze Antwort oder Lösung.
$ wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')
Ergebnis:
0x03800004 0 16459 xxxxxxxxxx /bin/bash
In Benutzung:
$ for x in $(seq 1 10); do sleep 5; wmctrl -lp | grep $(xprop -root | \
grep _NET_ACTIVE_WINDOW | head -1 | awk '{print $5}' | sed 's/,//' | \
sed 's/^0x/0x0/'); done
0x03800004 0 16459 xxxxxxxxxx /bin/bash
0x020000a4 0 13524 xxxxxxxxxx linux - Detecting currently active window - Super User - Mozilla Firefox (Build 20120129142219)
Antwort4
Relativ kurz und verarbeitet Fensternamen, die Anführungszeichen enthalten, korrekt:
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME |
sed -nr 's/.*= "(.*)"$/\1/p'