# 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)'
# 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
# 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';