Ich brauche einen Befehl unter Linux (mein Fenstermanager ist Fluxbox), der den aktuellen Arbeitsbereich als Ausgabe zurückgibt (wenn möglich eine einfache Ausgabe, da ich diese Informationen für ein Python-Skript brauche).
Ich habe das „man“ (Handbuch) von Fluxbox geprüft und es enthält nur wenige Informationen. Als ich online danach gesucht habe, wurde mir nur erklärt, wie es in einem anderen Fenstermanager funktioniert.
Antwort1
fluxbox
IstEWMHkompatibler Fenstermanager und das bedeutet, dass wir Tools wie verwenden können, um wmctrl
mit ihm zu interagieren. So finden Sie den aktuellen Arbeitsbereich:
$ wmctrl -d | grep '*' | cut -d ' ' -f1
man wmctrl
sagt:
-d Listet alle Desktops auf, die vom Fenstermanager verwaltet werden. (...) Die zweite Spalte enthält ein '*'-Zeichen für den aktuellen Desktop, andernfalls ein '-'-Zeichen.
BEARBEITEN: Ich habe gerade überprüft, dass Sie einen Arbeitsbereich mit einem einzigen benennen können *
. In diesem Fall würde der obige Befehl zwei Ergebnisse zurückgeben. Verwenden Sie awk
:
$ wmctrl -d | awk '{ if ($2 == "'*'") print $0}'
Antwort2
shortway to @arkadiusz-drabczyk verwendet diesen Code
$ wmctrl -d | awk '$2=="*"'
awk-Erklärung:
'$2=="*"'
, awk wird dieses Muster sehen- print ist die Standardaktion für awk, es ist wie
{print $0}
, also müssen Sie es nicht schreiben, es sei denn, Sie möchten ein bestimmtes Argument drucken, wie die ersten Wörter mit$1
Weitere Einzelheiten zum Muster finden Sie unter diesem Link:https://www.gnu.org/software/gawk/manual/gawk.html#Pattern-Overview