aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJopStro <[email protected]>2020-06-09 13:58:55 +0100
committerGitHub <[email protected]>2020-06-09 13:58:55 +0100
commit4b1c0a222394807bc1d0743aa9d12219c449422e (patch)
treee99096fda2fcda75763bb2984dd6bdc2d70cecf3
parent80d6eafb0611540ec645ed6e88dbf61ecc5423e0 (diff)
Add script
-rw-r--r--bspswallow48
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