Na blogu se pouštím do nové série Škola kouzel v Linuxu, což bude taková série článků pro začátečníky s Linuxem. Ideálním prvním kandidátem je tmux. Proč? Přijde mi důležitý hned pro začátek, protože má spoustu výhod právě i pro začátečníky, například jeho zavření omylem nezpůsobí ukočení všeho, co je v terminálu rozdělané, protože přináší do terminálnu další „vrstvu“ a za mě další hlavní výhodou je rozdělení terminálu na více obrazovek. Velkým plusem je, že se na něm člověk naučít pracovat s klávesovými zkratkami, což je na Linuxu extrémně důležité, opravdu.
Co je tmux? Zjednodušeně: terminálový multiplexor. Umožňuje rozdělit jeden terminál na více oken a panelů, odpojit se a později se vrátit – třeba i z mobilu přes SSH.
Proč vůbec chtít další „vrstvu“ nad terminálem?
- Přežití odpojení – přípojíte se na SSH na server, pustíte composer install, zavře se víko notebooku, Wi‑Fi se odpojí a… a tmux se prostě jede dál, proces se nezabije.
- Rozdělená obrazovka – log vlevo, běžící testy vpravo, a u toho si ještě dole můžete něco psát do vimu.
- Sdílená sezení – pár kliků a kolega sleduje stejnou konzoli. Parádní na společné debugování.
Upřímně: jakmile to člověk vyzkouší, je návrat k „čistému“ terminálu stejně bolestivý jako návrat k myši po týdnu práce s vimem (čemuž teda předcházelo půl roku naučení se s vimem, ale chápeme se).
Instalace
# Debian/Ubuntu
sudo apt install tmux
# Fedora
sudo dnf install tmux
Session → Window → Pane: orientace v tmuxu
Termín | Přirovnání | Co si zapamatovat |
---|---|---|
Session | celý dům | Uvnitř je vše, co právě děláte. Uzavřená kapsule, kterou můžete odpojit a připojit později. |
Window | jednotlivé pokoje | V každém okně můžete mít jiný projekt, shell nebo log. Připomíná karty v prohlížeči. |
Pane | nábytek v pokoji | Rozděluje okno na části. Každý pane je plnohodnotný shell – svislý, vodorovný, jak chcete. |
Základní zkratky
Tmux začně poslouchat pokud nejprvě stisknete zkratkuCtrl‑b
(říká se tomu prefix a dá se změnit, viz konfiguraci níže). Po prefixu zmáčkněte další klávesu:
Akce | Klávesa |
---|---|
nové okno | c |
svislé rozdělení | % |
vodorovné rozdělení | " |
přepnutí mezi panely | ← → ↑ ↓ |
přepnutí mezi panely dle pořadí | q a poté číslo (počítá se od nuly) |
odpojení (detach) | d |
seznam sessions | s |
Mini‑hack: pokud vás štve, že
Esc
ve Vimu reaguje pomalu, přidejteset -g escape-time 0
do konfigurace. Váš malíček vám poděkuje.
Detach & Reattach v praxi
tmux new -s work # Spustím session „work“
< … programuji, spouštím testy … >
Ctrl-b d # Odpojení
tmux attach -t work # O hodinu později (nebo z jiného PC) se vracím
Když omylem zavřete terminál, nic se neděje – procesy i výstupy na vás počkají.
Moje oblíbené workflow (recept pro PHP projekty)
tmux new -s api
Ctrl-b "
– nahoře vim, dole symfony server:startCtrl-b %
– napravo tail -f var/log/dev.log- Když se testy zbarví do červena, prohoďte panely
Ctrl-b o
. A můžete kouzlit dál.
Vlastní nastavení: .tmux.conf
Doporučuju ale měnit především vizuální věci, protože když si člověk přemapuje zkratky a připojí se na jiný SSH, tak bude značně zmatený :D
# Přepnu prefix na Ctrl-a (jako ve screen)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Barevný stavový řádek
set -g status-bg colour235
set -g status-fg white
set -g status-left "#[fg=green]#(whoami)@#h #[fg=cyan]%Y-%m-%d %H:%M#[default]"
set -g status-right "#[fg=yellow]#(uptime | cut -d, -f1) #[fg=magenta]%d.%m.%Y"
# Rychlejší Esc pro Vim
set -g escape-time 0
Soubor uložte do ~/.tmux.conf
a restartujte tmux (Ctrl-b :source-file ~/.tmux.conf
).
Pluginy
Na pluginy existuje Tmux Plugin Manager (TPM). Stačí:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
…a do .tmux.conf
přidat :
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-sensible'
run '~/.tmux/plugins/tpm/tpm'
Ctrl-b I
stáhne pluginy, Ctrl-b U
je aktualizuje. Díky Resurrect se vám po restartu vrátí celá session i s panely. To dokáže zachránit víc než jeden páteční večer.
Závěrem
Tmux je trochu jako vesmír sám o sobě – na začátku se cítíte ztracení, ale jakmile pochopíte základní principy (session, window, pane), začne vám dávat smysl a nakonec si bez něj nedokážete představit pracovní den.
Tohle bylo jen rychlé představení, protože tmux má spoustu dalších vychytávek, třeba změna rozměrů panelu, určitě doporučuju, pokud vás to zajímá, dohledat si o něm více :)