# 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
# 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.
- 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
# 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';
# 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
}