From b5a2aca208003314ecf366460546f5df2779d930 Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Tue, 7 Aug 2012 14:42:13 +0200 Subject: [PATCH] zsh/rc: Add option to use tmux instead of screen. Can be configured in zsh/rc.local. --- zsh/rc | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/zsh/rc b/zsh/rc index 733921f..a1acba5 100644 --- a/zsh/rc +++ b/zsh/rc @@ -699,26 +699,47 @@ fi # LOAD ADDITIONAL CONFIGURATION FILES +# Configuration option for rc.local to use tmux. By default screen is used. +use_tmux= + source_config ~/.zsh/rc.local # RUN COMMANDS -# If not already in screen reattach to a running session or create a new one. -# This also starts screen on a remote server when connecting through ssh. -if [[ $TERM != dumb && $TERM != linux && -z $STY ]]; then +# If not already in screen or tmux, reattach to a running session or create a +# new one. This also starts screen/tmux on a remote server when connecting +# through ssh. +if [[ $TERM != dumb && $TERM != linux && -z $STY && -z $TMUX ]]; then # Get running detached sessions. + if [[ -z $use_tmux ]]; then session=$(screen -list | grep 'Detached' | awk '{ print $1; exit }') + else + session=$(tmux list-sessions 2>/dev/null \ + | sed '/(attached)$/ d; s/^\([0-9]\{1,\}\).*$/\1/; q') + fi # As we exec later we have to set the title here. + if [[ -z $use_tmux ]]; then window_preexec "screen" + else + window_preexec "tmux" + fi # Create a new session if none is running. if [[ -z $session ]]; then + if [[ -z $use_tmux ]]; then exec screen + else + exec tmux + fi # Reattach to a running session. else + if [[ -z $use_tmux ]]; then exec screen -r $session + else + exec tmux attach-session -t $session + fi fi fi @@ -730,7 +751,7 @@ fi # cases it doesn't work, the E alias can be used as workaround. # # Moved in the "run commands" section to prevent one unnecessary zsh process -# when starting screen (see above). +# when starting screen/tmux (see above). exec 2>>(while read -r -k -u 0 line; do printf '\e[91m%s\e[0m' "$line"; print -n $'\0'; -- 2.45.2