X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=zsh%2Frc;h=779d0dde656e7706bdc68c8d7ef6bda1164ac9ba;hb=b55cf4872f4553ae4a3a28f34123e4b5c786392e;hp=4f5d10029e595ba1af957c5eecdf7d070440323b;hpb=7b1ae14f7cb522ffc143465dd02afd2bfdad1d62;p=config%2Fdotfiles.git diff --git a/zsh/rc b/zsh/rc index 4f5d100..779d0dd 100644 --- a/zsh/rc +++ b/zsh/rc @@ -370,7 +370,7 @@ if [[ $TERM == screen* || $TERM == xterm* || $TERM == rxvt* ]]; then # Replace fg with the resumed job name. if [[ $program_name == fg ]]; then program_name=${jobtexts[%+]} - elif [[ $program_name == fg* ]]; then + elif [[ $program_name == fg\ * ]]; then program_name=${jobtexts[${program_name#fg }]} fi @@ -541,7 +541,7 @@ zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # is no longer displayed. Display current position in percent (%p). zstyle ':completion:*:default' list-prompt '%p' # Display group name (%d) (like 'external command', 'alias', etc.), in bold. -# Also display a message if _approximate found errors and if no matches were +# Also display a message if _approximate found errors and no matches were # found. zstyle ':completion:*' format ' %B%d%b:' zstyle ':completion:*:corrections' format ' %B%d%b (errors: %e)' @@ -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. - session=$(screen -list | grep 'Detached' | awk '{ print $1; exit }') + 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. - window_preexec "screen" + 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 - exec screen + if [[ -z $use_tmux ]]; then + exec screen + else + exec tmux + fi # Reattach to a running session. else - exec screen -r $session + 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'; @@ -739,7 +760,7 @@ done &) # Run reminder and redisplay it every four hours (if it's available). PERIOD=14400 periodic() { - which rem > /dev/null && [ -f ~/.reminders ] && rem -h + (( $+commands[rem] )) && [ -f ~/.reminders ] && rem -h }