#!/usr/bin/env bash

TERMCMD=${TERMCMD:-urxvto}

PROGNAME=$(basename $0)

OPTSTRING="${PROGNAME} (-x) [ -h | -l | -z | -c name | -n name | -e name tab command ]"

if [[ $# -eq 0 ]] ; then
    echo ${OPTSTRING} >&2
    exit 1
fi

XWINFLAG=false

while getopts "c:n:e:zlxh" OPT
do
    # shift
    case "$OPT" in
        x)
            XWINFLAG=true
            ;;
        z)
            ${TERMCMD} -e screen
            ;;
        l)
            if [[ $XWINFLAG != "true" ]] ; then
                screen -list | sed '$ d' | sed 1d | awk '{print $1}'
            else
                if [[ -e `which rofi` ]] ; then
                    NAME=`screen -list | sed '$ d' | sed 1d | awk '{print $1}' | rofi -dmenu -p "screen session"`
                else
                    NAME=`screen -list | sed '$ d' | sed 1d | awk '{print $1}' | dmenu -p "screen session:"`
                fi
                [[ $NAME != "" ]] && ${TERMCMD} -e screen -x $NAME
            fi
            ;;
        c)
            if [[ $XWINFLAG != "true" ]] ; then
                screen -x "${OPTARG}"
            else
                urxtvo -e "screen -x \"${OPTARG}\""
            fi
            ;;
        n)
            if [[ $XWINFLAG != "true" ]] ; then
                screen -S "${OPTARG}"
            else
                ${TERMCMD} -e scr -n "${OPTARG}"
            fi
            ;;
        e)
            OPTIND1=$(( OPTIND + 1 ))
            TAB=${!OPTIND}
            COMMAND=${!OPTIND1}
            screen -x "${OPTARG}" -X screen -t ${TAB} ${COMMAND}
            exit
            ;;
        h)
            echo ${OPTSTRING} >&2
            cat <<HELP >&2

-h            Show this help.
-x            Turn on X-windows interaction.
-z            Create a new, unnamed screen session with X Terminal.
-l            List screen sessions (with -x, show in ROFI).
-c name       Connect (as an additional screen) to session "name".
-n name       Create and connect to a new screen session "name".
-e name tab command
              Create a tab named "tab" running the command "command" in session "name".
HELP
            exit
            ;;
    esac
done
