Přeskočit na obsah
</> { } <div> </> {} </> function() </> {}

Škola kouzel v Linuxu – tmux

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řidejte set -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)

  1. tmux new -s api
  2. Ctrl-b " – nahoře vim, dole symfony server:start
  3. Ctrl-b % – napravo tail -f var/log/dev.log
  4. 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 :)