(Filip Vervloesem) Je kan multitasken in de shell door meerdere terminalvensters te openen op je desktop. Maar zo verlies je gauw het overzicht over al je terminals. Dan is het handiger om een terminal multiplexer te gebruiken zoals Terminator of tmux. Met die apps deel je één terminalvenster verder op om zo meerdere shells te starten.

Hoewel Terminator en tmux qua functionaliteit erg op elkaar lijken, zijn er toch enkele fundamentele verschillen. Terminator vervangt de standaard terminalapplicatie van je desktop en voegt een aantal features toe. Qua bediening lijkt het erg op de vertrouwde terminal en ook de sneltoetsen zijn grotendeels identiek. Tmux is daarentegen een echte commandline applicatie die je binnen je vertrouwde terminal start. Zonder voorkennis is tmux lastig te gebruiken. Je moet toch echt wel enkele sneltoetsen en commando’s memoriseren vooraleer je aan de slag kan. Anderzijds is tmux een pak veelzijdiger dan Terminator. Je kan tmux immers ook starten binnen ssh-sessies naar remote machines of op één van de virtuele terminals van je pc.

Terminator
Ben je een fervente gebruiker van de commandline? Dan raden we je absoluut aan om Terminator uit te testen. Het is een mooie upgrade van de standaardterminal en vergt nauwelijks gewenning om te gebruiken. Een opvallend verschil is de afwezigheid van een menubalk: klik rechts in het venster om een contextmenu te openen. Uiteraard ondersteunt Terminator meerdere tabs, maar “Split horizontally” en “Split vertically” zal je véél vaker gebruiken. Via die functies deel je het terminalvenster op in meerdere kleine vensters. Nadien wijzig je de afmetingen van die vensters eenvoudig door op de randen te klikken en met de muis te slepen. Vensters herordenen is ook mogelijk, bijvoorbeeld om een verticaal opgedeeld venster terug de volledige breedte te geven. Daarvoor klik je op de titelbalk van het venster in kwestie en versleep je dat naar de gewenste locatie.

01_terminator.png: Terminator is een erg toegankelijke terminal met split window functionaliteit.

Sneltoetsen
Voor de power user bestaan er gelukkig ook sneltoetsen voor alle hierboven vermelde functies. Met Ctrl-Shift-e en Ctrl-Shift-o deel je het venster horizontaal of verticaal op en met Ctrl-Shift plus de pijltjestoetsen vergroot/verklein je de vensters. Wisselen tussen vensters doe je via Ctrl-Tab of Alt plus de pijltjestoetsen en wisselen tussen tabs met Ctrl-PageUp/PageDown. Een nieuwe tab open je met Ctrl-Shift-t en een venster sluit je met Ctrl-Shift-w. Uiteraard mag je ook Ctrl-D of “exit” gebruiken om de shell netjes af te sluiten. Een tweede Terminator venster in je desktop open je met Ctrl-Shift-i (en niet Ctrl-Shift-n zoals je zou verwachten). Onder Preferences > Keybindings vind je een overzicht van alle sneltoetsen.

Extra’s
Met de “Maximize terminal”-functie of Ctrl-Shift-x maximaliseer je het actieve venster tot de volledige grootte van het Terminatorvenster. De andere deelvensters blijven in de achtergrond actief. De oorspronkelijke vensterlayout herstel je wederom met Ctrl-Shift-x. Dat is vooral handig als je even wilt focussen op een taak in één van de kleinere vensters. Via Preferences > Layouts bewaar je je favoriete vensterindelingen om ze nadien weer snel op te roepen. Ook is het mogelijk om de toetsenbordinvoer naar meerdere vensters tegelijk te versturen. Dat doe je via de verschillende opties onder het icoontje linksboven in elk venster. We raden je aan om de documentatie op https://bit.ly/2Py6l6z grondig te lezen vooraleer je die functionaliteit gebruikt. Tot slot ondersteunt Terminator ook plugins om de functionaliteit nog verder uit te breiden.

Tmux
Het grootste verschil tussen tmux en Terminator is dat tmux volledig onafhankelijk is van de terminalapplicatie in je desktop. Zo kan je bijvoorbeeld een terminal openen in je desktop, tmux starten, een commando starten in de shell, tmux afkoppelen (waarover later meer), je gebruiker afmelden van de desktop, switchen naar een virtuele terminal of via ssh inloggen op je computer, daar de tmux-sessie weer oproepen en verder werken waar je gebleven was. Helaas komt die veelzijdigheid met een keerzijde: de leercurve is iets steiler dan bij Terminator.

Om opdrachten te geven aan tmux, druk je eerst de zogenaamde prefixtoets in: standaard is dat Ctrl-b. Laat die toetsen los en voer nu een : in om onderaan het venster de tmux opdrachtprompt te openen. Tmux bevat tientallen commando’s om het venstergedrag aan te passen. Probeer bijvoorbeeld eens:
:split-window -v
:split-window -h

Om het venster verticaal of horizontaal op te delen. Een overzicht van alle beschikbare tmux-commando’s vraag je op met:
$ tmux lscm

Veel mensen verkiezen overigens Ctrl-a als prefixtoets, omdat Ctrl-b al een andere functie heeft in bijvoorbeeld vim en less (je moet dan tweemaal Ctrl-B invoeren om die sneltoets in vim te gebruiken). De prefix-toets wijzig je door volgende optie in ~/.tmux.conf te plaatsen:
set -g prefix ^a

02_tmux.png: Tmux vergt iets meer tijd om onder te knie te krijgen, maar is erg veelzijdig.

Sneltoetsen
Ook in tmux zijn er heel wat sneltoetsen gedefinieerd (zie de manpage voor meer informatie). Een venster opdelen doe je met prefix + % (horizontaal) of ” (verticaal). Je drukt dus eerst Ctrl-b in, laat die vervolgens log en drukt dan % in. Het vergroten of verkleinen van vensters vergt enige oefening. Na de prefixtoets druk je nogmaal Ctrl in, houd je die ingedrukt en gebruik je de pijltjestoetsen. Je moet ook echt de pijltjestoetsen steeds opnieuw indrukken: ingedrukt houden werkt niet! Stop je even met de pijltjestoetsen te gebruiken vooraleer je klaar was? Dan moet je opnieuw de prefixtoets invoeren als je het venster verder wilt vergroten of verkleinen. Wisselen tussen vensters gaat via prefix + pijltjestoetsen. De gekleurde rand én de aanwezigheid van de cursor geven aan welk venster actief is.

Tabs
Wat wij in de vorige paragraaf vensters noemden, zijn in tmux-terminologie eigenlijk panes (panelen). Een tmux-venster is dan weer wat in Terminator een tabblad is. In de statusbalk onderaan zie je een overzicht van actieve vensters met een volgnummer (vanaf 0) en een naam (standaard het actieve commando). Met prefix + c maak je een nieuw venster aan en je navigeert tussen de vensters met prefix + p (previous) of prefix + n (next). Heb je veel actieve vensters? Met prefix + <volgnummer> spring je meteen naar het juiste venster! Snel even één pane maximaliseren? Met prefix + z (des)activeer je de zoom-functie. Een Z achter de naam van het huidige venster geeft aan dat de zoom-functie actief is.

Sessies
Met prefix + d koppel je een tmux-sessie af. Je komt nu terug in de shell buiten tmux, terwijl tmux verder draait op de achtergrond:
$ tmux list sessions

Om een tmux-sessie weer aan te koppelen, gebruik je de sessienaam (standaard een volgnummer vanaf 0) in volgend commando:
$ tmux attach -t <session name>

Houd je graag het overzicht over verschillende sessies, geef ze dan een naam wanneer je tmux start:
$ tmux new -s <session name>

Tot slot nog één tip: kijk zeker ook naar de verschillende plugins voor tmux. Zo bestaan er bijvoorbeeld plugins die vrij goede muisondersteuning toevoegen aan tmux (om te wisselen tussen venster, te scrollen of tekst te kopiëren).