%20%D0%BB%D0%B8%20%D0%BE%D0%BA%D0%BD%D0%BE%20X%20%D0%B8%D0%BB%D0%B8%20%D0%BD%D0%B5%D1%82%3F.png)
Я использую xdotool для сопоставления/отмены сопоставления набора окон типа dock. Теперь, xdotool не поставляется с командой переключения (map/unmap), и не поставляется с выполнением той же операции с несколькими окнами одновременно. Поэтому я пытаюсь выполнить дублированное переключение с помощью скрипта. Мне нужен способ узнать, была ли последняя операция сопоставлением или отменой сопоставления.
решение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 ...
.
Скрипт должен находиться в пути оболочки.