我使用 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 的路径中。