aboutsummaryrefslogtreecommitdiff
path: root/wmutils/bin/group
diff options
context:
space:
mode:
Diffstat (limited to 'wmutils/bin/group')
-rwxr-xr-xwmutils/bin/group105
1 files changed, 105 insertions, 0 deletions
diff --git a/wmutils/bin/group b/wmutils/bin/group
new file mode 100755
index 0000000..0d105dc
--- /dev/null
+++ b/wmutils/bin/group
@@ -0,0 +1,105 @@
+#!/bin/sh
+#
+# wmg by:
+#
+# ▓█████▄ ▄████▄ ▄▄▄ ▄▄▄█████▓
+# ▒██▀ ██▌▒██▀ ▀█ ▒████▄ ▓ ██▒ ▓▒
+# ░██ █▌▒▓█ ▄ ▒██ ▀█▄ ▒ ▓██░ ▒░
+# ░▓█▄ ▌▒▓▓▄ ▄██▒░██▄▄▄▄██░ ▓██▓ ░
+# ░▒████▓ ▒ ▓███▀ ░ ▓█ ▓██▒ ▒██▒ ░
+# ▒▒▓ ▒ ░ ░▒ ▒ ░ ▒▒ ▓▒█░ ▒ ░░
+# ░ ▒ ▒ ░ ▒ ▒ ▒▒ ░ ░
+# ░ ░ ░ ░ ░ ▒ ░
+# ░ ░ ░ ░ ░
+# ░ ░
+
+GRP_DIR="/tmp/wmutils/groups"
+USE_FIFO=yes
+
+setup() {
+ [ -d "$GRP_DIR" ] || mkdir -p $GRP_DIR
+ if [ -n "$USE_FIFO" ]
+ then
+ [ -p "$GRP_DIR/.fifo" ] || mkfifo $GRP_DIR/.fifo
+ fi
+}
+
+sed_apply() {
+ TMP=`mktemp /tmp/grp.XXXXXX`
+ sed $1 < $2 > $TMP && mv $TMP $2 || rm $TMP
+ [ -n "$DEBUG" ] && echo "sed $1 < $2 > $TMP && mv $TMP $2 || rm $TMP"
+}
+
+pop() {
+ sed_apply "/$1/d" $2
+}
+
+push() {
+ echo $1 >> $GRP_DIR/$2
+}
+
+view() {
+ while read WID
+ do mapw -m $WID
+ done < $GRP_DIR/$1
+}
+
+hide() {
+ while read WID
+ do mapw -u $WID
+ done < $GRP_DIR/$1
+}
+
+pop_from_all() {
+ for GRP in $GRP_DIR/*
+ do
+ pop $1 $GRP
+ done
+}
+
+case $1 in
+view)
+ setup
+ if [ -f "$GRP_DIR/$2" ]
+ then
+ for GRP in $GRP_DIR/*
+ do hide `basename $GRP`
+ done
+ view $2
+ else
+ echo "group does not exist"
+ exit 1
+ fi
+
+ # customize your fifo printing here
+ if [ -n "$USE_FIFO" ]
+ then
+ for GRP in $GRP_DIR/*
+ do
+ GRP_BASE="`basename $GRP`"
+ GRP_NUM=`wc -l < $GRP | tr -cd '[:digit:]'`
+ [ $GRP_NUM -ne 0 ] && printf '^fg(#888)' || printf '^fg(#555)'
+ [ $GRP_BASE -eq $2 ] && printf '^fg(orange)<'
+ printf "$GRP_BASE^fg()"
+ [ $GRP_BASE -eq $2 ] && printf '>^fg()'
+ done > $GRP_DIR/.fifo
+ echo >> $GRP_DIR/.fifo
+ fi
+
+ ;;
+hide)
+ setup
+ hide $2
+ ;;
+add)
+ setup
+ pop_from_all $2
+ push $2 $3
+ hide $3
+ view $3
+ ;;
+remove)
+ setup
+ pop_from_all $2
+ ;;
+esac