Browse Source

Add new tmu command

Samuel W. Flint 3 years ago
parent
commit
35521d2a85
1 changed files with 76 additions and 0 deletions
  1. 76 0
      tmu

+ 76 - 0
tmu

@@ -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