35 lines
1.0 KiB
Bash
Executable File
35 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
WIN_CLASS="nvim_notes"
|
|
|
|
find_node() {
|
|
for id in $(bspc query -N -n .window); do
|
|
xprop -id "$id" WM_CLASS 2>/dev/null | grep -q "$WIN_CLASS" && echo "$id" && return
|
|
done
|
|
}
|
|
|
|
NODE=$(find_node)
|
|
|
|
if [ -n "$NODE" ]; then
|
|
# если окно скрыто — показать, иначе скрыть
|
|
HIDDEN=$(bspc query -N -n "$NODE" --names 2>/dev/null | grep -q hidden && echo yes || echo no)
|
|
# надёжно: проверим фокус
|
|
FOC=$(bspc query -N -n focused.window 2>/dev/null)
|
|
if [ "$NODE" = "$FOC" ]; then
|
|
bspc node "$NODE" -g hidden=on
|
|
exit 0
|
|
fi
|
|
# toggle hidden state
|
|
# попробуем прочитать флаг hidden через query -T (если доступно)
|
|
if bspc query -T -n "$NODE" 2>/dev/null | grep -q '"hidden": true'; then
|
|
bspc node "$NODE" -g hidden=off
|
|
bspc node "$NODE" -d focused
|
|
bspc node "$NODE" -f
|
|
else
|
|
bspc node "$NODE" -g hidden=on
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
# если не найден — запустить
|
|
~/.config/bspwm/scripts/nvim_notes.sh &
|