mirror of
https://github.com/alrayyes/dotfiles/
synced 2023-11-14 15:56:30 +00:00
48 lines
1.3 KiB
Plaintext
48 lines
1.3 KiB
Plaintext
|
#!/bin/sh
|
||
|
|
||
|
# Get class of a wid
|
||
|
get_class() {
|
||
|
id=$1
|
||
|
if [ -z $id ]; then
|
||
|
echo ""
|
||
|
else
|
||
|
xprop -id $id | sed -n '/WM_CLASS\|WM_COMMAND/s/.*"\(.*\)".*/\1/p'
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
swallow() {
|
||
|
addedtodesktop=$2
|
||
|
echo $addedtodesktop
|
||
|
lasttermdesktop=$(bspc query -D -n prev)
|
||
|
echo $lasttermdesktop
|
||
|
swallowerid=$1
|
||
|
swallowingid=$(bspc query -n prev -N)
|
||
|
if [ $addedtodesktop = $lasttermdesktop ]; then
|
||
|
cat ~/.config/bspwm/noswallow ~/.config/bspwm/terminals | grep "^$(get_class $swallowerid)$" && return
|
||
|
grep "^$(get_class $swallowingid)$" ~/.config/bspwm/terminals || return
|
||
|
echo $swallowerid $swallowingid >>/tmp/swallowids
|
||
|
bspc node $swallowingid --flag hidden=on
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
spit() {
|
||
|
spitterid=$1
|
||
|
grep "^$spitterid" /tmp/swallowids || return
|
||
|
spittingid=$(grep "^$spitterid" /tmp/swallowids | head -n1 | awk '{print $2}')
|
||
|
bspc node $spittingid --flag hidden=off
|
||
|
bspc node $spittingid -f
|
||
|
sed -i "/^$spitterid/d" /tmp/swallowids
|
||
|
}
|
||
|
|
||
|
bspc subscribe node_add node_remove | while read -r event; do
|
||
|
|
||
|
case "$(echo $event | awk '{ print $1 }')" in
|
||
|
node_add)
|
||
|
swallow $(echo $event | awk '{print $5 " " $3}')
|
||
|
;;
|
||
|
node_remove)
|
||
|
spit $(echo $event | awk '{print $4}')
|
||
|
;;
|
||
|
esac
|
||
|
done
|