diff options
| author | JopStro <[email protected]> | 2020-06-09 13:58:55 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-06-09 13:58:55 +0100 |
| commit | 4b1c0a222394807bc1d0743aa9d12219c449422e (patch) | |
| tree | e99096fda2fcda75763bb2984dd6bdc2d70cecf3 | |
| parent | 80d6eafb0611540ec645ed6e88dbf61ecc5423e0 (diff) | |
Add script
| -rw-r--r-- | bspswallow | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/bspswallow b/bspswallow new file mode 100644 index 0000000..9f8acdf --- /dev/null +++ b/bspswallow @@ -0,0 +1,48 @@ +#!/bin/sh + +# Get class of a wid +get_class() { + id=$1 + if [ -z $id ]; then + echo "" + else + xprop -id $id | sed -n '/WM_CLASS/s/.*, "\(.*\)"/\1/p' + fi +} + +get_name() { + id=$1 + if [ -z $id ]; then + echo "" + else + xprop -id $id | sed -n '/^WM_NAME/s/.*\(.*\) = "//p' | sed 's/"$//' + fi +} + +swallow() { + swallowerid=$1 + swallowingid=$(bspc query -n prev -N) + grep "^$(get_class $swallowerid)$" ~/.config/bspwm/swallow || return + grep "^$(get_class $swallowingid)$" ~/.config/bspwm/terminals || return + echo $swallowerid $swallowingid >> /tmp/swallowids + bspc node $swallowingid --flag hidden=on +} + +spit() { + spitterid=$1 + grep "^$spitterid" /tmp/swallowids || return 0 + 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 + if [ $(echo $event | awk '{ print $1 }') = node_add ] + then + swallow $(echo $event | awk '{print $5}') + else + spit $(echo $event | awk '{print $4}') + fi +done |
