wms/rwm_shepperd.sh

83 lines
1.4 KiB
Bash
Raw Normal View History

2023-03-06 19:08:25 +01:00
#!/bin/sh
2023-03-15 05:40:44 +01:00
## sort windows by herds/flock ##
2023-03-07 14:01:29 +01:00
2023-03-06 19:08:25 +01:00
. $HOME/.config/rootwm/rwm_var
2023-03-15 05:40:44 +01:00
NAMES="$HOME/.config/rootwm/names" # disponible names
FLAG=$1 # input
FW=$(pfw) # focused window id
AMW=$(lsw) # all maped windows
2023-03-06 19:08:25 +01:00
usage() {
echo "usage:
2023-03-15 05:40:44 +01:00
rwm_shepperd.sh [ -a, -r, -t ]
2023-03-06 19:08:25 +01:00
-a) add
-A) add all
-d) delete
-D) delete all
-t) togle"
}
2023-03-15 05:40:44 +01:00
name() {
$XMENU < $NAMES
}
2023-03-09 05:41:12 +01:00
# create atom in focused window
add_focused() {
2023-03-15 05:40:44 +01:00
if [ -n "name" ]; then
atomx WM_HERD="$(name)_$FW" $FW
fi
2023-03-09 05:41:12 +01:00
}
# create atom in all maped windows
add_all() {
2023-03-15 05:40:44 +01:00
if [ -n "name" ]; then
for wid in $(lsw); do
atomx WM_HERD="$(name)_$wid" $wid
done
fi
2023-03-09 05:41:12 +01:00
}
# delete atom from focused window
del_focused() {
2023-03-15 05:40:44 +01:00
atomx -d WM_HERD $FW
2023-03-09 05:41:12 +01:00
}
del_all() {
2023-03-15 05:40:44 +01:00
atomx -d WM_HERD $AMW
2023-03-09 05:41:12 +01:00
}
# togle groups
togle() {
2023-03-15 05:40:44 +01:00
herds=$(atomx WM_HERD $(lsw -a) | cut -d '_' -f1 | sort -u) # herds
if [ -n "$herds" ]; then # check if any herd exist
h_target=$(printf "$herds" | $XMENU) # select herd target
map_wind=$(atomx WM_HERD $(lsw -u) | grep $h_target | cut -d '_' -f2) # windows to map
unmap_wind=$(atomx WM_HERD $(lsw) | grep -v $h_target | cut -d '_' -f2) # windows to unmap
mapw -m $map_wind & mapw -u $unmap_wind
2023-03-09 05:41:12 +01:00
fi
}
case $FLAG in
-a)
add_focused
;;
-A)
add_all
;;
-d)
del_focused
;;
-D)
dell_all
;;
-t)
togle
2023-03-06 19:08:25 +01:00
;;
*)
usage # self-explained
;;
esac