#!/usr/bin/env bash signal() { xsetroot -name "fsignal:$*" } case $# in 1) case $1 in focusurgent) ;& mirrorlayout) ;& mpdcontrol) ;& nametag) ;& pushdown) ;& pushup) ;& self_restart) ;& setlayout) ;& setcfact) ;& showhideclient) ;& switchcol) ;& view) ;& viewall) ;& viewtoleft) ;& viewtoright) ;& tagtoleft) ;& tagtoright) ;& tagandviewtoleft) ;& tagandviewtoright) ;& transfer) ;& transferall) ;& togglealttag) ;& togglebar) ;& togglefloating) ;& togglefullscreen) ;& fullscreen) ;& togglefakefullscreen) ;& togglesticky) ;& togglehorizontalmax) ;& toggleverticalmax) ;& togglemax) ;& togglegaps) ;& defaultgaps) ;& unfloatvisible) ;& winview) ;& xrdb) ;& zoom) ;& killclient) ;& quit) signal $1 ;; *) echo "Unknown command ($1) or missing one argument." exit 1 ;; esac ;; 2) case $1 in cyclelayout) ;& explace) ;& moveplace) ;& mpdchange) ;& setkeymode) ;& switchtag) ;& togglescratch) ;& view) signal $1 ui $2 ;; viewex) ;& toggleviewex) ;& tagallmon) ;& tagswapmon) ;& tagex) ;& toggletagex) ;& setborderpx) ;& setgaps) ;& setlayoutex) ;& setlayoutaxisex) ;& swapfocus) ;& focusstack) ;& pushstack) ;& inplacerotate) ;& rotatestack) ;& rotatelayoutaxis) ;& incnmaster) ;& incnstack) ;& incrgaps) ;& incrigaps) ;& incrogaps) ;& incrihgaps) ;& incrivgaps) ;& incrohgaps) ;& incrovgaps) ;& movestack) ;& shiftview) ;& shiftviewclients) ;& focusmon) ;& tagmon) signal $1 i $2 ;; setcfact) ;& setmfact) signal $1 f $2 ;; floatpos) signal $1 v $2 ;; *) echo "Unknown command ($1) or too many arguments" exit 1 ;; esac ;; 5) case $1 in setgaps) # Expects "setgaps oh ov ih iv" where -1 means to keep existing values [ $2 = -1 ] && oh=128 || oh=$2 [ $3 = -1 ] && ov=128 || ov=$3 [ $4 = -1 ] && ih=128 || ih=$4 [ $5 = -1 ] && iv=128 || iv=$5 signal $1 i $(((oh << 24) + (ov << 16) + (ih << 8) + iv)) ;; *) echo "Unknown command ($1) or too many arguments" exit 1 ;; esac ;; *) echo "Unknown command ($1) or too many arguments" exit 1 ;; esac