update #1: upstream accepted my patch, so the next tmux release will provide window-status-alert-{attr,fg,bg} Only difference is the use of alert instead of flagged. It sounds better anyway I’ll adjust my patch on 1.2 as well
update #2 [2010/05/17]: uploaded my updated config file, now using ` as my prefix key
I gave tmux a try yesterday.
Clean config file, thorough documentation and a few nice touches here and there (i.e. better, persistent window splitting) make it a nice alternative to screen, but the biggest difference lies in memory usage. Screen can easily eat up to 40-50mb with just a few windows open, but tmux has yet to reach the 10mb mark!
You may argue that ram is cheap these days, but when you’re on a 360mb VPS ram matters
I did find a few bugs/annoyances, for instance if you add set-option -g default-terminal “screen-256color” in your config file,
I hacked my way out of this one by adding the following in my .bash_profile instead:
Turns out that’s not tmux’s fault but bash’s, I’ll have to create a patch for that as well If you have the same issue, you can use the above hack as a temporary fix.[[ $TERM == "screen" ]] && export -p TERM="screen-256color"
Also version 1.2 does not provide a way for you to customize the colors used on window titles with alerts (either monitored or when the bell is active), but I patched that and sent it upstream
You can find an ebuild with the patch in my overlay, wirelay (layman -a wirelay ).
The patch was accepted upstream so it’ll be in the next release.
My tmux looks like this:
and with some split panes:
finally, below is my (updated on 2010/05/17) tmux.conf config file, used in the above screenshots.
I decided to use ` as my prefix key, its really better than hitting ctrl-a all the time
# ` is an interesting key for a prefix set-option -g prefix ` # set-option -g prefix C-a unbind-key C-b bind-key C-a last-window bind-key ` last-window bind-key a send-prefix # we might need ` at some point, allow switching # we can also send the prefix char with `-a bind-key F11 set-option -g prefix C-a bind-key F12 set-option -g prefix ` # 0 is too far from ` set -g base-index 1 # set-option -g default-terminal "screen-256color" set-option -g mouse-select-pane on set-option -g status-keys vi set-option -g bell-action any set-option -g set-titles on set-option -g set-titles-string '#H:#S.#I.#P #W #T' # window number,program name,active (or not) set-option -g visual-bell on setw -g mode-keys vi setw -g mode-mouse on setw -g monitor-activity on bind e previous-window bind f next-window bind j up-pane bind k down-pane set-option -g status-utf8 on # set-option -g status-justify centre set-option -g status-justify left set-option -g status-bg black set-option -g status-fg white set-option -g status-left-length 40 set-option -g pane-active-border-fg green set-option -g pane-active-border-bg black set-option -g pane-border-fg white set-option -g pane-border-bg black set-option -g message-fg black set-option -g message-bg green #setw -g mode-bg black setw -g window-status-bg black setw -g window-status-current-fg green setw -g window-status-alert-attr default setw -g window-status-alert-fg yellow set -g status-left '#[fg=red]#h#[fg=green]:#[fg=white]#S #[fg=green]][#[default]' # set -g status-right '#[fg=green]][#[fg=white] #T #[fg=green]][ #[fg=blue]%Y-%m-%d #[fg=white]%H:%M#[default]' set -g status-right '#[fg=green]][ #[fg=blue]%Y-%m-%d #[fg=white]%H:%M#[default]' set -g history-limit 4096 # `+r reloads the configuration, handy bind r source-file ~/.tmux.conf