#! /bin/sh fail() { echo "$@" 1>&2 exit 1 } clients_count() { bspc wm -d | jshon -e clientsCount } window() { local cmd=$1 local iter=${2:-1} local delta=${3:-1} local interval=${4:-0.05} local max_tries=${5:-40} while [ $iter -gt 0 ] ; do local cur=$(clients_count) local trg local tries=0 case "$cmd" in add) trg=$((cur + delta)) ./test_window & ;; remove) trg=$((cur - delta)) bspc node -c ;; *) fail "window: unknown command: ${cmd}." ;; esac while [ $cur -ne $trg ] ; do cur=$(clients_count) sleep $interval tries=$((tries + 1)) [ $tries -ge $max_tries ] && break done iter=$((iter - 1)) done }