#!/bin/sh
i=1
case $1 in
dsktp) # Add or remove a desktop
    case $2 in
    add)
        current=$(bspc query -D | wc -l)
        if [ "$current" -lt "10" ]; then
            new=$((current + 1))
            bspc monitor -a $new
        else
            notify-send "You already have ten desktops" "Are those really necessary? Consider closing unneeded windows." -i warning
        fi
    ;;
    rm)
        current=$(bspc query -D | wc -l)
        if [ "$current" -gt "4" ]; then
            bspc monitor -r $(bspc query -D | sed -n ${current}p)
        else
            notify-send "You currently have four desktops" "That can be considered a bare minimum. You should not remove more." -i warning
        fi
    ;;
    esac
;;
empty)
    nextFreeDesktop=$(bspc query -D -d next.free)

    if [ -z "$nextFreeDesktop" ]
    then
        nextFreeDesktop=$(( $(bspc query -D | wc -l) + 1 ))
        bspc monitor -a $nextFreeDesktop
    fi

    case $2 in
        move)
            bspc window -d $nextFreeDesktop
            ;;
        next)
            bspc rule -a \* -o desktop=$nextFreeDesktop follow=true
            ;;
    esac
;;
tile) # Force every existing window to tile (the opposite is dumb IMHO)
    for window in $(bspc query -N -d focused)
    do
        bspc node $window -t tiled
    done
;;
float) # Force every existing window to float and place the windows
    for window in $(bspc query -N -d focused)
    do
        bspc node $window -t floating
        let i++
    done
;;

*)
	exit
;;
esac
