Gibt es eine Möglichkeit, den aktuellen Arbeitsbereich in einer Befehlszeile unter Linux zu erkennen?

Gibt es eine Möglichkeit, den aktuellen Arbeitsbereich in einer Befehlszeile unter Linux zu erkennen?

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

fluxboxIstEWMHkompatibler Fenstermanager und das bedeutet, dass wir Tools wie verwenden können, um wmctrlmit ihm zu interagieren. So finden Sie den aktuellen Arbeitsbereich:

$ wmctrl -d | grep '*' | cut -d ' ' -f1

man wmctrlsagt:

-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

verwandte Informationen