|
@@ -0,0 +1,76 @@
|
|
|
+#!/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 tmux
|
|
|
+ ;;
|
|
|
+ l)
|
|
|
+ if [[ $XWINFLAG != "true" ]] ; then
|
|
|
+ tmux list-sessions -F '#S'
|
|
|
+ else
|
|
|
+ if [[ -e `which rofi` ]] ; then
|
|
|
+ NAME=`tmux list-sessions -F '#S' | rofi -dmenu -p "screen session"`
|
|
|
+ else
|
|
|
+ NAME=`tmux list-sessions -F '#S' | dmenu -p "screen session:"`
|
|
|
+ fi
|
|
|
+ [[ $NAME != "" ]] && ${TERMCMD} -e tmux attach -t $NAME
|
|
|
+ fi
|
|
|
+ ;;
|
|
|
+ c)
|
|
|
+ if [[ $XWINFLAG != "true" ]] ; then
|
|
|
+ tmux attach -t "${OPTARG}"
|
|
|
+ else
|
|
|
+ urxtvo -e "tmux attach -t \"${OPTARG}\""
|
|
|
+ fi
|
|
|
+ ;;
|
|
|
+ n)
|
|
|
+ if [[ $XWINFLAG != "true" ]] ; then
|
|
|
+ tmux new -s "${OPTARG}"
|
|
|
+ else
|
|
|
+ ${TERMCMD} -e tmu -n "${OPTARG}"
|
|
|
+ fi
|
|
|
+ ;;
|
|
|
+ e)
|
|
|
+ OPTIND1=$(( OPTIND + 1 ))
|
|
|
+ TAB=${!OPTIND}
|
|
|
+ OPTIND1=$(( OPTIND + 1 ))
|
|
|
+ COMMAND=${!OPTIND1}
|
|
|
+ tmux new -s "${OPTARG}" -n "${TAB}" -d "${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
|