wms/rwm_shepperd.sh
rootniformaticaservice 26efa5d809 code changes
2023-03-09 01:41:12 -03:00

78 lines
1.5 KiB
Bash
Executable file

#!/bin/sh
## sort windows by flock ##
. $HOME/.config/rootwm/rwm_var
NAMES="$HOME/.config/rootwm/names" # disponible names
FLAG=$1 # input
FW=$(pfw) # focused window id
AMW=$(lsw) # all maped windows
usage() {
echo "usage:
rwm_groups.sh [ -a, -r, -t ]
-a) add
-A) add all
-d) delete
-D) delete all
-t) togle"
}
# create atom in focused window
add_focused() {
atomx WM_GROUP=$($XMENU < $NAMES) $FW
}
# create atom in all maped windows
add_all() {
atomx WM_GROUP=$($XMENU < $NAMES) $AMW
}
# delete atom from focused window
del_focused() {
atomx -d WM_GROUP $FW
}
del_all() {
atomx -d WM_GROUP $AMW
}
# togle groups
togle() {
groups=$(atomx WM_GROUP $(lsw -a) | sort -u) # groups
if [ -n "$groups" ]; then # check if any grpup exist
gtarget=$(printf "$groups" | $XMENU) # select group target
utarget=$(for wid in $(lsw -u); do # unmaped targets
printf '%s\n' "$wid $(atomx WM_GROUP $wid)" | grep $gtarget
done)
mtarget=$(for wid in $(lsw); do # maped targets
if [ -n "$(atomx WM_GROUP $wid)" ]; then
printf '%s\n' "$wid $(atomx WM_GROUP $wid)" | grep -v $gtarget
fi
done)
mapw -m $utarget & mapw -u $mtarget # map utargets and unmap mtargets
fi
}
case $FLAG in
-a)
add_focused
;;
-A)
add_all
;;
-d)
del_focused
;;
-D)
dell_all
;;
-t)
togle
;;
*)
usage # self-explained
;;
esac