#!/usr/bin/env bash

# Toggle a scratch terminal window. A scratch terminal is a disposable terminal
# for one-off, quick commands that don't warrant a dedicated terminal.

SCRID=scratch
CMD=${1:-'tmux new-session -A -s scratch -n scratch'}
focused=$(xdotool getactivewindow)
scratch=$(xdotool search --onlyvisible --classname $SCRID)
if [[ -n $scratch ]]; then
    if [[ $focused == $scratch ]]; then
        xdotool windowkill $scratch
    else
        xdotool windowactivate $scratch
    fi
elif command -v urxvt >/dev/null; then
    urxvt -name $SCRID \
          -e $SHELL -c "$CMD"
elif command -v xst >/dev/null; then
    xst -t $SCRID -n $SCRID -c $SCRID \
        -f "$(xrdb -query | grep 'scratch\.font' | cut -f2)" \
        -e $SHELL -c "$CMD"
else
    >&2 echo "No shell to launch the scratch terminal with"
    exit 1
fi