Wie findet man heraus, ob ein X-Fenster zugeordnet (sichtbar) ist oder nicht?

Wie findet man heraus, ob ein X-Fenster zugeordnet (sichtbar) ist oder nicht?

Ich verwende xdotool, um eine Reihe von Dock-ähnlichen Fenstern zuzuordnen/die Zuordnung aufzuheben. xdotool verfügt jedoch nicht über einen Umschaltbefehl (zuordnen/aufheben) und auch nicht über die Möglichkeit, dieselbe Operation mit mehreren Fenstern gleichzeitig auszuführen. Ich versuche also, das Umschalten mit einem Skript durchzuführen. Ich muss herausfinden, ob die letzte Operation eine Zuordnung oder eine Aufhebung der Zuordnung war.

Antwort1

In gewisser Weise kann man sich Dateien als eine einfache Möglichkeit vorstellen, globale Variablen zu speichern, global, sodass sie von überall sichtbar sind. Der Status (zugeordnet/nicht zugeordnet) kann also als Zeichenfolge in einer Datei gespeichert werden.

Nicht die eleganteste Lösung, aber dieses Skript (mit dem Namen xctl) sollte fürs Erste genügen.

#!/usr/bin/env zsh

# This file serves as a global variable value holder showing if the windows are mapped or not.
state=/tmp/state

for process in ${@:1}; do
    case $1 in
        (show) xdotool search --class $process windowmap %@ windowraise %@;;
        (hide) xdotool search --onlyvisible --class $process windowunmap %@;;
        (*) break;;
    esac
done

[[ $1 == toggle ]] && {
    [[ -f $state ]] && [[ `cat $state` == show ]] && xctl hide ${@:1} || xctl show ${@:1}
} || echo $1 > $state

Um zwischen mehreren Fenstern umzuschalten, führen Sie aus xctl toggle window1 window2 ....

Das Skript muss im Pfad der Shell liegen.

verwandte Informationen