Wyszukiwanie w witrynie

Zastąpiłem Tmux, Screen i cały mój przepływ pracy w terminalu używając jednego pojedynczego multiplexer'a


Zawsze byłem dumny ze swojego workflow w terminalu. Czasami obejmuje on przekształcanie terminala w sesję webową do udostępniania. Screen był integralną częścią mojego setupu na każdym zdalnym serwerze, a Tmux napędzał moją lokalną maszynę z niestandardowymi skrótami klawiszowymi, wtyczkami i skryptami przywracającymi sesje. Ten setup działał dobrze i był szybki.

Zauważyłem jednak, że dużo czasu poświęcałem na synchronizowanie plików konfiguracyjnych między komputerami, a także zajmowałem się debugowaniem, zwłaszcza po aktualizacjach. W poszukiwaniu lepszego rozwiązania wypróbowałem Zellij i po pięciu minutach zdałem sobie sprawę, że to jest rozwiązanie.

Screen był przetrwaniem, Tmux był mocą — oba pozostawiły mnie przy utrzymywaniu stosu

Narastająca złożoność

Zacząłem używać Screen, ponieważ elegancko rozwiązywał problem odłączania i ponownego dołączania. Jest wstępnie zainstalowany na większości serwerów Unix/Linux, co czyni go wygodną opcją. Mogę się odłączyć, kiedy tylko chcę, po uruchomieniu procesu długotrwałego. Po prostu działał; jednak miał ograniczenia. Pierwszym była minimalna kontrola układu. Była też skąpa wizualna informacja zwrotna i wymagał więcej dyscypliny niż narzędzi do zarządzania skomplikowanymi projektami.

Tmux jest niezbędnym narzędziem w moim zestawie do wielozadaniowości w Linuksie. Chociaż zaczynałem tak prosto, jak to możliwe, szybko dodałem wsparcie dla myszy, niestandardowe skróty klawiszowe, zarządzanie wtyczkami za pomocą TPM (Tmux Plugin Manager) oraz utrwalanie sesji dzięki tmux-resurrect. Każda z tych zmian rozwiązała rzeczywiste problemy, takie jak przewijanie bez klawiszy prefiksu i niezgodności w pamięci mięśniowej, a w połączeniu stworzyłem system, który rozumiałem.

Był to system o wysokiej wydajności, ale odbywało się to kosztem konserwacji. Musiałem upewnić się, że pliki konfiguracyjne pozostają zsynchronizowane między moimi maszynami, a także musiałem zapamiętać pełną mapę skrótów klawiszowych Tmux. Bardzo łatwo było, aby pamięć mięśniowa została zakłócona przez niewielkie niedopasowanie konfiguracji na zdalnym komputerze. Dlatego nieustannie zarządzałem moją platformą, nawet gdy technicznie nic nie było zepsute.

Pierwsze pięć minut Zellij zmieniło umowę

Terminal, który wyjaśnia się sam, podczas gdy go używasz

Uruchomienie Zellij było jak powiew świeżego powietrza, ponieważ nie wymagało ode mnie niczego: żadnego pliku konfiguracyjnego, menedżera wtyczek, ani zwykłego rytuału konfiguracji. Wszystko, co otrzymałem, to interfejs z funkcjonalnym układem i paskiem stanu u dołu. To właśnie pasek stanu przykuł moją uwagę.

Pasek stanu Zellij aktualizuje się w zależności od kontekstu, który jest określany przez wybrany tryb. Tryby te mogą obejmować Pane, Tab, Resize, Scroll lub Session, z których każdy ma własny zestaw dostępnych działań. Zamiast zgadywać lub zapamiętywać, jak robiłem to wcześniej, po prostu czytasz. Ta architektoniczna konstrukcja daje Zellij ogromną przewagę nad Tmux.

Możesz uznać ten projekt za przyjazny dla początkujących, ale jest on czymś więcej. To projekt, który naprawia długoterminowe problemy, z którymi zwykle mierzyłem się w innych narzędziach. Po kilku tygodniach niezmieniania rozmiaru panelu, wystarczy chwila, aby przypomnieć sobie, jak to zrobić. Zellij ma czytelny, ale opcjonalny plik konfiguracyjny (~/.config/zellij/config.kdl), i nawet zanim dostosujesz narzędzie, jest już użyteczne.

Model panelu naprawił problemy, które wcześniej obchodziliśmy za pomocą skryptów

Pływające panele, obsługa myszy i znaczenie tymczasowego kontekstu

Podstawowe operacje na panelach w Zellij nie rozczarowują podczas obsługi poziomych i pionowych podziałów. Zellij pozwala na płynne zmienianie rozmiaru i intuicyjną nawigację między panelami. Te funkcje nie są przełomowe, ale są rozsądnymi ustawieniami domyślnymi, które działają dobrze zaraz po uruchomieniu.

Jednak funkcją, która zmieniła sposób, w jaki pracuję, były pływające panele. Ten panel nakłada się na istniejący układ, a ja zazwyczaj używam go do szybkiego wykonywania poleceń i przeglądania logów. Gdy skończę, znika, a moja struktura pozostaje nienaruszona. Zanim zacząłem używać Zellij, musiałbym otworzyć nowe okno terminala lub stworzyć tymczasowy podział, aby osiągnąć ten sam efekt. Pracę wykonywałem, ale zawsze z pewnym zakłóceniem struktury.

Również cenię sobie obsługę myszy w Zellij. Klikam, aby ustawić fokus, i przeciągam, aby zmienić rozmiar, a przewijanie działa naturalnie. Mogłem uzyskać podobne zachowanie myszy w Tmux, ale dopiero po konfiguracji, i wciąż nie działało to tak dobrze. Zellij daje prawdziwą spójność, szczególnie że ciągle przesiadam się między narzędziami GUI.

Pliki układu zastąpiły moje skrypty bootstrap

Deklarowanie projektu raz zamiast składania go za każdym razem

W przeszłości, jeśli potrzebowałem otworzyć projekt, zazwyczaj musiałem odtwarzać kontekst. Mogłem używać do tego skryptów; innym razem przydatne okazywały się narzędzia sesji Tmux. Jednak skrypty zazwyczaj się dezaktualizowały, a nawet moje sesje wydawały się odchodzić od ich zamierzonego użycia.

Moim obecnym rozwiązaniem są układy Zellij. Używam tych deklaratywnych plików .kdl do definiowania struktury paneli i poleceń startowych. Muszę zdefiniować moje środowisko tylko raz. Potem mogę je uruchomić tym poleceniem:

zellij --layout myproject

Mogę wywołać plik po nazwie, jeśli znajduje się on w tym katalogu: ~/.config/zellij/layouts/.

Uruchomienie tej komendy wydrukuje domyślny układ Zellij na standardowe wyjście: zellij setup --dump-layout default. Otrzymujesz gotowy punkt wyjścia do skopiowania i modyfikacji dla własnych układów projektów.

Jeszcze jedną rzeczą, którą mogę zrobić, jest zastosowanie układu w trakcie trwającej sesji jako nowej karty. Jest to efektywny sposób na oddzielenie „definicji projektu” od „bieżącego stanu sesji”. Ten plik układu ostatecznie stał się moją żywą dokumentacją tego, jak projekt powinien działać, a to odkrycie oznaczało koniec pisania skryptów startowych.

Ciągłość jest wbudowana, a rozszerzalność jest odizolowana

Gdy Zellij działa jako serwer w tle, nawet po zamknięciu okna terminala sesja trwa dalej, a jeśli stracę połączenie SSH, pozostaje aktywna. Kiedy potrzebuję zobaczyć wszystkie aktywne sesje, używam polecenia zellij list-sessions, podczas gdy zellij attach pozwala mi ponownie się przyłączyć. Dla każdego, kto woli nawigację wizualną, wizualny menedżer sesji okazuje się przydatny.

Chociaż przywracanie sesji nie odtwarza wszystkich procesów po pełnym uruchomieniu systemu, przywraca układy i niezawodność bufora przewijania, zachowując wystarczającą ilość stanu, aby wydawało się to niezawodne.

Zellij był odpowiednim narzędziem do zastąpienia Tmux i Screen, po prostu dlatego, że najlepiej pasował do mojego sposobu pracy. Jeśli pracujesz głównie na maszynach lokalnych i cenisz sobie środowiska deklaratywne, a w dodatku przenosisz coraz więcej swojego workflow do terminala, Zellij może być właśnie narzędziem dla ciebie.

Powiązane artykuły