GNU Screen vs tmux:
Migration & Translation Guide
A complete command translation chart, configuration directive mapping, and migration guide for developers transitioning from legacy GNU Screen to modern tmux.
Keybinding Translation Table
Side-by-side shortcut mapping for GNU Screen users transitioning to tmux keybindings.
| Action | GNU Screen Key | tmux Equivalent Key |
|---|---|---|
| Default Prefix Key | Ctrl+a |
Ctrl+b (Configurable) |
| Create Window | Ctrl+a c |
Ctrl+b c |
| List Windows | Ctrl+a " |
Ctrl+b w |
| Detach Session | Ctrl+a d |
Ctrl+b d |
| Rename Window | Ctrl+a A |
Ctrl+b , |
| Split Horizontally | Ctrl+a S |
Ctrl+b " |
| Split Vertically | Ctrl+a | |
Ctrl+b % |
| Enter Copy Mode | Ctrl+a [ or Esc |
Ctrl+b [ (Cheat Sheet) |
CLI Command Equivalences
Command line invocation mapping between GNU Screen binaries and tmux CLI subcommands.
| Operation | GNU Screen Command | tmux Equivalent Command |
|---|---|---|
| Start Named Session | screen -S myname |
tmux new -s myname |
| List Sessions | screen -ls |
tmux ls |
| Attach to Session | screen -r myname |
tmux attach -t myname |
| Force Reattach | screen -d -r myname |
tmux attach -d -t myname |
Configuring tmux to use Screen's Ctrl+a Prefix
Preserve muscle memory by remapping tmux prefix to Ctrl+a in ~/.tmux.conf.
# Remap prefix from 'Ctrl+b' to 'Ctrl+a' (like GNU Screen)
unbind C-b
set -g prefix C-a
bind-key C-a send-prefix
# Double Ctrl+a to switch to last active window (Screen behavior)
bind-key C-a last-window
Configuration Directive Mapping (.screenrc → .tmux.conf)
Direct translation table for translating .screenrc settings to modern .tmux.conf parameters.
| Configuration Goal | GNU Screen (.screenrc) | tmux Equivalent (~/.tmux.conf) |
|---|---|---|
| Scrollback Buffer Lines | defscrollback 10000 |
set -g history-limit 10000 |
| Disable Visual Bell | vbell off |
set -g visual-bell off |
| Status Line Customization | hardstatus alwayslastline "%H %m/%d" |
set -g status-right "%H:%M %d-%b-%y" |
| Automatic Window Renaming | defhstatus "screen: ^E" |
setw -g automatic-rename on |
Multi-User Pair Programming (screen -x vs tmux -S)
Sharing terminal workspaces via UNIX sockets for real-time remote collaboration.
# 1. Developer A creates a shared socket session
$ tmux -S /tmp/shared-pair-socket new-session -s pair-session
$ chmod 777 /tmp/shared-pair-socket
# 2. Developer B attaches to the exact same shared socket
$ tmux -S /tmp/shared-pair-socket attach-session -t pair-session
Explore Related Guides
Deepen your terminal workflows with these additional resources.
Tmux Keybindings Cheat Sheet →
Comprehensive visual reference for all default and custom keyboard shortcuts.
Full Command Line Reference →
Exhaustive technical documentation for all tmux subcommands and flags.
Zellij vs tmux Comparison →
Comparing modern Rust terminal workspaces with classic C daemons.