#!/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