Wat doet tmux?
Uw SSH-verbinding valt weg halverwege een `apt upgrade`, en uw hele deploy staat stil omdat uw terminal dood is. Had u tmux gebruikt, dan draaide die upgrade gewoon door. Dit artikel legt uit wat tmux doet, hoe u het instelt en waarom het uw workflow verandert — voor wie werkt op Linux-servers of in een terminal met editors als Vim of Emacs.
Vereisten
- Een Linux-systeem (Debian/Ubuntu, RHEL/Fedora, of een andere distro) of macOS
- tmux versie 3.7c of nieuwer (controleer met `tmux -V`)
- Basiskennis van de commandoregel
- Een SSH-verbinding naar een server, of een lokale terminal
Wat tmux doet
Tmux is een terminal multiplexer: het laat u meerdere terminalsessies draaien binnen één scherm. De naam is een afkorting van terminal multiplexer — het vermenigvuldigt de functionaliteit van één terminalvenster door sessies, vensters en panes te ondersteunen binnen één interface.De kernfunctionaliteit is simpel: u start een sessie, u doet uw werk, en u kunt die sessie loskoppelen (detach) van uw scherm. De sessie blijft draaien op de achtergrond. Later koppelt u hem weer vast (re-attach), waar u ook bent. Uw processen stoppen niet als uw laptop dichtklapt of uw wifi wegvalt.
Dat maakt tmux onmisbaar voor langlopende taken: builds, scripts, serverprocessen, database-migraties. Zelf hosten klinkt prachtig, tot er iets omvalt op zondagavond half twaalf. Dan bent u geen klant die op de helpdesk wacht. Dan bént u de helpdesk — en dan wilt u dat uw sessie nog leeft.
Installatie
De kans is groot dat tmux al geïnstalleerd staat. Check het eerst:tmux -V
Staat er niets, installeer het dan via uw package manager:
<h2>Debian/Ubuntu</h2>
sudo apt install tmux
<h2>RHEL/Fedora</h2>
sudo dnf install tmux
<h2>macOS (via Homebrew)</h2>
brew install tmux
Basis: uw eerste sessie
Start een nieuwe sessie:tmux new -s werk
U zit nu in een tmux-sessie, maar dat merkt u nauwelijks — behalve aan de statusbalk onderin. Die toont uw sessienaam, vensters en de tijd.
Het belangrijkste concept is de prefix key: standaard `Ctrl+b`. Alles wat u in tmux wilt doen, begint met die combinatie. Daarna drukt u een tweede toets voor de actie.
De drie belangrijkste commando's om te onthouden:
| Actie | Toetsen | |-------|---------| | Detach (sessie loskoppelen) | `Ctrl+b` dan `d` | | Nieuw venster | `Ctrl+b` dan `c` | | Volgende venster | `Ctrl+b` dan `n` |
Detach is de belangrijkste. Druk `Ctrl+b`, laat los, druk `d`. U bent terug in uw normale shell, en uw sessie draait door.
Om terug te koppelen:
tmux attach -t werk
Als uw SSH-verbinding wegvalt, hoeft u alleen maar opnieuw in te loggen en bovenstaand commando te draaien. Alles staat er nog precies zoals u het achterliet.
Vensters en panes
Binnen één sessie kunt u meerdere vensters hebben — denk aan tabbladen in een browser. En binnen één venster kunt u het scherm splitsen in panes, zodat u twee of meer terminals tegelijk ziet.| Actie | Toetsen | |-------|---------| | Verticaal splitsen (links/rechts) | `Ctrl+b` dan `%` | | Horizontaal splitsen (boven/onder) | `Ctrl+b` dan `"` | | Wisselen tussen panes | `Ctrl+b` dan pijltjestoets | | Pane sluiten | `exit` typen, of `Ctrl+d` |
Dit is waar tmux zijn waarde bewijst voor editor-gebruikers. U opent Vim in één pane, een shell in het pane eronder, en een `tail -f` op een logbestand in het pane rechts. U hoeft niet meer te alt-tabben tussen terminalvensters.
Een praktische setup:
1. Start een sessie: `tmux new -s dev` 2. Splits horizontaal: `Ctrl+b` dan `"` 3. Open Vim in het bovenste pane: `vim` 4. Ga naar het onderste pane: `Ctrl+b` dan pijltje-omlaag 5. Draai daar uw build of tests
U ziet direct wat er gebeurt als uw code compileert of test draait, zonder van venster te wisselen.
Detach blijft draaien
Het client-servermodel van tmux is wat het verschil maakt. Wanneer u tmux start, draait er een serverproces dat uw sessies beheert. Uw terminal is slechts een client die erop aansluit. Verbreekt u de verbinding — bewust of door een netwerkstoring — dan blijft de server draaien.Test het zelf:
1. Start een sessie: `tmux new -s test` 2. Start een langlopend commando, bijvoorbeeld: `ping 8.8.8.8` 3. Detach met `Ctrl+b` dan `d` 4. Sluit uw terminal volledig af 5. Open een nieuwe terminal en typ: `tmux attach -t test`
De ping draait nog. Dat is het hele punt.
Configuratie: uw eigen tmux
Standaard gebruikt tmux emacs-stijl toetscombinaties. Werkt u met Vim, dan kunt u dat aanpassen. Tmux kijkt bij het opstarten naar uw `EDITOR`-omgevingsvariabele: bevat die 'vi', dan schakelt tmux automatisch over op vi-stijl key bindings in copy-mode.Voor verdere aanpassingen maakt u een configuratiebestand aan:
touch ~/.tmux.conf
Een basissetup die veel gebruikt wordt:
<h2>Verander de prefix key naar Ctrl+a (zoals GNU Screen)</h2>
set -g prefix C-a
unbind C-b
bind C-a send-prefix
<h2>Pas muisondersteuning toe</h2>
set -g mouse on
<h2>Verhoog de scrollback buffer</h2>
set -g history-limit 50000De muisoptie is controversieel: sommige gebruikers zweren erbij, anderen vinden het hinderlijk bij het selecteren van tekst in de terminal. Zet hem aan, probeer het een week, en zet hem uit als hij stoort. Het kost niets om te wijzigen.
Na een wijziging laadt u de configuratie opnieuw:
tmux source-file ~/.tmux.conf
Scriptbaarheid
Tmux laat zich niet alleen interactief bedienen, maar ook vanuit scripts. Dat maakt het mogelijk om complexe ontwikkelomgevingen op te zetten met één commando.Een voorbeeld: een sessie met drie vensters voor een project.
#!/bin/bash
tmux new-session -d -s project -n editor
tmux send-keys -t project 'vim src/index.js' C-m
tmux new-window -t project -n shell
tmux send-keys -t project 'git status' C-m
tmux new-window -t project -n logs
tmux send-keys -t project 'tail -f /var/log/app.log' C-m
tmux select-window -t project:editor
tmux attach -t projectDit script start een sessie met de naam `project`, opent Vim in het eerste venster, een shell met `git status` in het tweede, en een logviewer in het derde. Daarna koppelt het u eraan vast.
Er zijn ook tools die dit soort setups beheren — `tmuxinator` en `tmuxp` zijn de bekendste. Die werken met YAML-configuraties en zijn handig als u veel verschillende projectomgevingen hebt. Voor één of twee projecten is een simpel script genoeg; die tools voegen vooral structuur toe als u er tientallen hebt.
Veelgemaakte fouten
Vergeten dat u in tmux zit. U draait commando's, en ineens werkt een snelkoppeling niet meer. Controleer de statusbalk onderaan. Staat er een sessienaam, dan zit u in tmux. Druk `Ctrl+b` en daarna `d` om te detachen, of blijf en leer de prefix.`Ctrl+b` werkt niet in GNU Screen. Tmux en GNU Screen zijn verschillende programma's met verschillende prefix keys. Screen gebruikt standaard `Ctrl+a`. Als u gewend bent aan Screen, pas dan uw tmux-config aan zoals hierboven beschreven.
Scrollback werkt niet. In tmux scrollt u niet met uw muiswiel, tenzij u muisondersteuning aanzet. Zonder die optie gebruikt u `Ctrl+b` en daarna `[` om in copy-mode te gaan, waarna u met pijltjestoetsen of Page Up/Page Down door de buffer bladert. Met muisondersteuning aan werkt scrollen zoals u verwacht.
Sessie kwijt na reboot. Tmux-sessies overleven geen systeemherstart — ze draaien op de server, niet in uw terminal, maar wel in het geheugen van die server. Voor processen die een reboot moeten overleven, hebt u een service manager nodig zoals systemd. Tmux is voor het overleven van verbindingsstoringen, niet van stroomuitval.
Verificatie
Controleer of uw installatie werkt en u uw sessies beheert:<h2>Toon alle actieve sessies</h2>
tmux list-sessions
<h2>Toon tmux-versie</h2>
tmux -V
<h2>Toon alle actieve processen die tmux-server heten</h2>
ps aux | grep tmuxZiet u een sessie in `list-sessions`, dan draait uw tmux-server correct. Koppel er een aan met `tmux attach -t Veelgestelde problemen
`tmux attach` geeft "no sessions"
U hebt geen actieve sessies. Start er een met `tmux new -s werk`, of controleer met `tmux list-sessions` of u de sessienaam juist hebt.
Kleuren zien er anders uit in tmux Tmux ondersteunt 256 kleuren, maar uw terminal moet dat ook doen. Start tmux met `tmux -2` om 256-kleurenondersteuning te activeren, of zet `set -g default-terminal "screen-256color"` in uw `.tmux.conf`.
`tmux source-file` geeft fouten over onbekende opties Uw configuratie bevat opties die uw tmux-versie niet kent. Controleer uw versie met `tmux -V` en vergelijk met de documentatie voor die versie. Opties wijzigen tussen versies; een config geschreven voor 3.7 werkt niet altijd op 3.2.
Tmux is geen grafische tool en dat is precies de kracht. Alles draait op tekst en toetscombinaties, wat het lichtgewicht maakt — maar ook een leercurve geeft. De eerste dagen zult u `Ctrl+b` indrukken en vergeten welke toets daarna komt. Na een week zit het in uw spieren, en vraagt u zich af hoe u ooit zonder werkte. En als u dan toch een keer zonder zit — op een systeem waar tmux niet geïnstalleerd is — ontdekt u pas echt wat u mist: de rust van een sessie die blijft draaien, los van uw verbinding.