guest@6admin.io:~$

tmux: the multiplexer that took the chair

Screen is twenty-three years old, byobu dressed its flaws and there remain irritants neither of them fixes: no true panes (Screen does regions, which resize badly), a retrofitted UTF-8, a $HOME/.screenrc config with bindkeys inherited from the 80s. That is where tmux enters, born in 2007 on OpenBSD and starting to take the chair in 2010.

The client-server model

The architectural difference that changes everything: Screen runs a server per user (sessions share one process), tmux runs one server per session and clients attach to it. Practical consequences:

  • tmux sessions survive independently: killing one client disturbs no others;
  • tmux attach becomes genuinely single-session, done with the ghost sessions lingering around;
  • window and pane splitting is native, not a region-splitting hack painted on a screen.

The panes, at last

# ~/.tmux.conf
set -g prefix C-a                    # the Screen habit does not die
unbind C-b
bind C-a send-prefix

set -g default-terminal "screen-256color"
set -g status-bg colour238
set-window-option -g mode-keys vi

# splits, the real ones
bind | split-window -h
bind - split-window -v
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

A prefix | cuts vertically, prefix - horizontally and hjkl navigate pane to pane. The copy buffer is shared across panes and windows, scrolling happens in copy mode with vi keys. UTF-8 is handled natively from the start: accented prompts and unicode stop breaking at the first split.

What Screen keeps

Era honesty: Screen remains irreplaceable on systems that do not ship it in a package (old Debians and exotic boxes) and some reflexes (C-a C-a to bounce between two windows) have no immediate equivalent. And byobu still wraps Screen where tmux is not installed. The migration happens by habit, not by decree: new server, new tmux; old server, the Screen attachment stays.

The point you only see in hindsight

tmux’s real gift is not the panes, it is the readable config. $HOME/.tmux.conf reads from one server to the next, gets versioned in dotfiles, transfers by rsync. The era’s Screen config was a bag of bindkeys without comments. It is exactly the kind of file that, a few years later, naturally ends up in a dotfiles repo with a loader.