%20%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
私は xdotool を使用して、ドックのようなウィンドウのセットをマップ/アンマップします。現在、xdotool にはトグル (マップ/アンマップ) コマンドが付属しておらず、複数のウィンドウで同時に同じ操作を実行することもできません。そのため、スクリプトを使用して、クラブ トグルを実行しようとしています。最新の操作がマップだったのか、アンマップだったのかを確認する方法が必要です。
答え1
ある意味では、ファイルはグローバル変数を保存する簡単な方法と考えることができます。グローバルなので、どこからでも見ることができます。そのため、状態 (マップ済み/マップされていない) は、文字列としてファイルに保存できます。
最もエレガントなものではありませんが、今のところはこのスクリプト (xctl という名前) で十分でしょう。
#!/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
ウィンドウのセットを切り替えるには、 を実行しますxctl toggle window1 window2 ...
。
スクリプトはシェルのパスに存在する必要があります。