#!/usr/bin/env bash

signal() {
	xsetroot -name "fsignal:$*"
}

case $# in
1)
	case $1 in
	focusurgent) ;&
	mirrorlayout) ;&
	mpdcontrol) ;&
	pushdown) ;&
	pushup) ;&
	self_restart) ;&
	setlayout) ;&
	setcfact) ;&
	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 or missing one argument."
		exit 1
		;;
	esac
	;;
2)
	case $1 in
	cyclelayout) ;&
	explace) ;&
	moveplace) ;&
	mpdchange) ;&
	switchtag) ;&
	togglescratch) ;&
	view)
		signal $1 ui $2
		;;
	viewex) ;&
	toggleviewex) ;&
	tagallmon) ;&
	tagswapmon) ;&
	tagex) ;&
	toggletagex) ;&
	setborderpx) ;&
	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
		;;
	*)
		echo "Unknown command or one too many arguments."
		exit 1
		;;
	esac
	;;
*)
	echo "Too many arguments."
	exit 1
	;;
esac
