Nahradil som Tmux, Screen a celý svoj terminálový pracovný tok pomocou jediného multiplexera


Vždy som bol hrdý na svoj terminálový pracovný tok. Niekedy zahŕňa aj premenu terminálu na zdieľateľnú webovú reláciu. Screen bol neoddeliteľnou súčasťou môjho nastavenia na každom vzdialenom serveri a Tmux poháňal môj lokálny počítač s vlastnými klávesovými skratkami, pluginmi a skriptmi na obnovu. Toto nastavenie fungovalo dobre a bolo rýchle.

Však som si všimol, že veľa času sa strávilo synchronizáciou dotfiles medzi počítačmi, a tiež som sa zabral do ladania chýb, najmä po aktualizáciách. Takže, hľadajúc lepšie riešenie, som vyskúšal Zellij, a po piatich minútach som si uvedomil, že to bolo riešenie.

Screen bol prežitie, Tmux bol sila — oboje ma nechalo udržiavať stack

Nabraňujúca sa zložitosť

Začal som používať Screen, lebo elegantne vyriešil problém s odpojením a pripojením. Je predinštalovaný na väčšine serverov Unix/Linux, čo ho robí pohodlnou voľbou. Môžem sa odpojiť kedykoľvek po spustení dlhodobého procesu. Fungovalo to jednoducho; mali však obmedzenia. Prvým bolo minimálne riadenie rozloženia. Ale tiež to poskytovalo mrzkú vizuálnu spätnú väzbu a vyžadovalo si to viac disciplíny než nástroje na riadenie komplexných projektov.

Tmux je nevyhnutný nástroj v mojom repertoári pre multitasking na Linuxe. Aj keď som začal čo najjednoduchšie, rýchlo som pridal podporu pre myš, vlastné klávesové skratky, správu doplnkov cez TPM (Tmux Plugin Manager) a zachovanie relácií cez tmux-resurrect. Každá z týchto zmien riešila reálne problémy, ako napríklad posúvanie bez prefixových kláves a nesúlad svalovej pamäte, a spolu som vytvoril systém, ktorému som rozumel.

Toto bol vysoko výkonný systém, ale išlo to na úkor údržby. Musel som zabezpečiť, aby dotfiles zostali synchronizované naprieč mojimi zariadeniami, a musel som si zapamätať celú mapu klávesových skratiek Tmux. Bolo veľmi ľahké, aby sa svalová pamäť zmiatla pri malom rozdiele v konfigurácii na vzdialenom počítači. Takže som neustále spravoval svoju platformu, aj keď technicky nič nebolo poškodené.

Prvých päť minút Zellij zmenilo zmluvu

Terminál, ktorý sa vysvetľuje sám, zatiaľ čo ho používate

Spustenie Zellij bolo ako nádych čerstvého vzduchu, pretože odo mňa nič nechcelo: žiadny konfiguračný súbor, žiadne spravovanie pluginov ani obvyklý inštalačný rituál. Všetko, čo som dostal, bolo rozhranie s funkčným usporiadaním a stavovým riadkom v spodnej časti. Stavový riadok bol tým, čo ma naozaj zaujalo.

Zellijov stavový riadok sa aktualizuje podľa kontextu, ktorý je určený vybraným režimom. Tieto režimy môžu byť Panel, Záložka, Zmena veľkosti, Posúvanie alebo Relácia, pričom každý má vlastnú sadu dostupných akcií. Takže namiesto hádania alebo zapamätávania ako som to robil ja, jednoducho čítate. Táto architektonická koncepcia dáva Zelliju obrovskú výhodu oproti Tmuxu.

Môžete považovať tento dizajn za priateľský pre začiatočníkov, ale je to viac než to. Je to dizajn, ktorý rieši dlhodobé problémy, s ktorými som sa zvyčajne stretával pri iných nástrojoch. Po niekoľkých týždňoch bez zmeny veľkosti panela stačí len okamih na to, aby ste znovu objavili, ako na to. Zellij má čitateľný, ale voliteľný konfiguračný súbor (~/.config/zellij/config.kdl), a dokonca aj pred prispôsobením nástroja je už použiteľný.

Model panela opravil problémy, na ktoré som kedysi používal skripty

Plávajúce panely, podpora myši a dôležitosť dočasného kontextu

Základné operácie s panelmi pre Zellij nesklamú pri práci s horizontálnym a vertikálnym delením. Zellij umožňuje plynulé zmenu veľkosti a intuitívnu navigáciu medzi panelmi. Tieto funkcie nie sú prelomové, ale sú rozumnými predvolenými nastaveniami, ktoré fungujú dobre okamžite po nainštalovaní.

Avšak, funkcia, ktorá zmenila spôsob, akým pracujem, boli plávajúce panely. Tento panel sa zobrazuje nad existujúcim rozložením a zvyčajne ho používam na rýchle spustenie príkazov a kontrolu logov. Keď skončím, zmizne a moja štruktúra zostáva nedotknutá. Predtým, než som začal používať Zellij, by som musel otvoriť nové terminálové okno alebo vytvoriť dočasné rozdelenie, aby som dosiahol rovnaký efekt. Prácu som síce dokončil, ale vždy to bolo sprevádzané istým narušením štruktúry.

Tiež si užívam podporu myši v Zellij. Klikám pre zaostrenie a ťahám na zmenu veľkosti, a rolovanie funguje prirodzene. Mohol by som dosiahnuť správanie myši v Tmux, ale to prišlo až po konfigurácii, a stále to nefungovalo tak dobre. Zellij poskytuje skutočnú konzistenciu, najmä preto, že sa neustále pohybujem medzi GUI nástrojmi.

Súbory rozloženia nahradili moje bootstrap skripty

Deklarovanie projektu raz namiesto jeho sestavovania zakaždým

V minulosti, ak som potreboval otvoriť projekt, zvyčajne som musel rekonštruovať kontext. Možno by som na to použil skripty; inokedy sa hodili nástroje Tmux session. Avšak skripty obyčajne zastarali a dokonca aj moje sessions sa zdali odplávať od svojho zamýšľaného použitia.

Moje aktuálne riešenie sú rozloženia Zellij. Tieto deklaratívne .kdl súbory používam na definovanie štruktúry panelov a štartovacích príkazov. Svoje prostredie musím definovať iba raz. Potom ho môžem spustiť týmto príkazom:

zellij --layout myproject

Môžem volať súbor podľa mena, ak sa nachádza v tomto adresári: ~/.config/zellij/layouts/.

Spustením tohto príkazu sa na štandardný výstup vytlačí predvolená zostava Zellij: zellij setup --dump-layout default. Získate pripravený východiskový bod, ktorý môžete skopírovať a upraviť pre vlastné rozloženie projektov.

Ešte jedna vec, ktorú môžem urobiť, je aplikovať rozloženie v priebehu bežiacej relácie ako novú kartu. Je to efektívny spôsob, ako odlíšiť „definíciu projektu“ od „aktuálneho stavu relácie“. Tento súbor rozloženia sa nakoniec stal mojou živou dokumentáciou toho, ako by mal projekt bežať, a toto objavenie znamenalo koniec písania bootstrap skriptov.

Trvácnosť je zabudovaná a rozšíriteľnosť je izolovaná

Keď Zellij beží ako pozadový server, aj keď zatvorím okno terminálu, relácia pokračuje a ak stratím SSH pripojenie, pretrváva. Keď potrebujem vidieť všetky aktívne relácie, používam príkaz zellij list-sessions, zatiaľ čo zellij attach mi umožňuje sa znovu pripojiť. Pre každého, kto uprednostňuje vizuálne prehliadanie, je vizuálny správca relácií veľmi užitočný.

Hoci obnova relácie nevytvára každý proces po úplnom reštarte systému, obnovuje rozloženia a spoľahlivosť spätného posunu, pričom zachováva len toľko stavu, aby pôsobila spoľahlivo.

Zellij bol správnym nástrojom na nahradenie Tmuxu a Screenu jednoducho preto, že najviac zodpovedal môjmu pracovnému postupu. Ak pracujete predovšetkým na lokálnych strojoch a oceňujete deklaratívne prostredia, a tak či tak ste presúvali väčšinu svojho pracovného postupu do terminálu, Zellij môže byť práve tým nástrojom pre vás.

Súvisiace články