
我使用 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 ...
.
該腳本必須駐留在 shell 的路徑中。