#!/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 <&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