Dopieszczanie Zellij-a
Ostatnio “przeprosiłem się” z Zellije-m. Idea multiplekserów zawsze do mnie trafiała… ale nie na tyle, żebym przebijał się przez konfigurację Tmux-a ;) .
Jakie problemy te narzędzia rozwiązują? Umożliwiają uruchomienie równolegle kilku sesji terminalowych i ułatwiają nawigację między nimi. Można z ich pomocą podzielić ekran terminalowy na kilka części, utworzyć odpowiednik zakładek - i pracować z kilkoma aplikacjami równolegle. Ponadto taką sesję da się zapisać - i odtworzyć później. Tym samym można kontynuować pracę później (następnego dnia etc) niemal dokładnie w miejscu w którym się skończyło. Nic nie stoi na przeszkodzie żeby multiplekser działał na zdalnym serwerze - można więc delegować pracę na urządzenie do którego mamy dostęp z wielu miejsc.
Zellij jest dobrym startem w tym temacie - wyposażony jest w paski z podpowiedziami pomocne dla początkujących. Ponadto ma dość sensowne ustawienia domyślne.
Ma jednak trochę wad:
- wspomniane paski zajmują nieco miejsca
- … podobnie wszystkie ramki
- niektóre skróty klawiszowe kłócą się z np. skrótami Neovim-a
- trochę przesadza z podkreślaniem, że korzystasz z Zellij-a na każdym kroku
… co w praktyce oznacza, że bez wprowadzenia modyfikacji szanse na używanie go przeze mnie na co dzień były nikłe.
Domyślnie to narzędzie wygląda mniej więcej tak:

Skróty klawiszowe
Dużą część problemów z skrótami klawiszowymi rozwiązuje włączenie trybu w którym ustawienia można zmienić dopiero po odblokowaniu. Można to zrobić bezpośrednio z panelu aplikacji:

Odpowiada też za to wpis w pliku konfiguracyjnym (domyślnie zlokalizowanym w $HOME/.config/zellij/config.kdl) default_mode "locked".
Pozostałe konflikty można łatwo wyeliminować edytując właśnie ten plik.
Na tym etapie dodałem też od razu w sekcji keybinds, locked skrót umożliwiający rozciągnięcie wybranego sektora na pełen ekran:
bind "Ctrl Shift f" { ToggleFocusFullscreen; SwitchToMode "locked"; }
Optymalizacje układu
Początkowo chciałem po prostu skorzystać z wbudowanego trybu kompaktowego. Wtedy jest tylko jeden pasek na dole… ale z mocno obciętą funkcjonalnością i nadal ze zbędną informację o tym, że właśnie używany jest Zellij ;) .
Zdecydowałem się stworzyć własny szablon wykorzystujący 2 pluginy:
https://github.com/dj95/zjstatus
https://github.com/b0o/zjstatus-hints
Pliki z nimi umieściłem w $HOME/.config/zellij/plugins/ i dodałem ich automatyczne ładowanie w config.kdl.
Drażniła mnie też nieco ramka wokół głównego sektora w którym zamierzam mieć uruchomionego przede wszystkim Neovim-a. Stąd też w obecnym, roboczym szablonie, jest ona wyłączona (zostawiłem ja dla reszty sekcji) i kod do niego wygląda tak:
layout {
pane split_direction="vertical" {
pane size="75%" name="code" borderless=true
pane name="terminal"
}
pane size=1 borderless=true {
plugin location="zjstatus" {
format_left "#[fg=black,bg=#707070,bold]{mode}"
format_center "#[bg=#303030]{pipe_zjstatus_hints}"
format_right "#[bg=#303030]{tabs}#[fg=white,bg=#303030] {session} "
format_space "#[bg=#303030]"
border_enabled "false"
mode_normal "#[fg=black,bg=#98c379] {name} #[fg=#98c379,bg=#303030]"
mode_locked "#[fg=black,bg=#707070,bold] {name} #[fg=#707070,bg=#303030] unlock with ctrl+g"
mode_resize "#[fg=black,bg=#89B4FA] {name} "
mode_pane "#[fg=black,bg=#89B4FA] {name} "
mode_tab "#[fg=black,bg=#89B4FA] {name} "
mode_scroll "#[fg=black,bg=#89B4FA] {name} "
mode_enter_search "#[fg=black,bg=#89B4FA] {name} "
mode_search "#[fg=black,bg=#89B4FA] {name} "
mode_rename_tab "#[fg=black,bg=#89B4FA] {name} "
mode_rename_pane "#[fg=black,bg=#89B4FA] {name} "
mode_session "#[fg=black,bg=#89B4FA] {name} "
mode_move "#[fg=black,bg=#89B4FA] {name} "
mode_prompt "#[fg=black,bg=#89B4FA] {name} "
mode_tmux "#[fg=black,bg=#ffc387] {name} "
pipe_zjstatus_hints_format "#[bg=#303030]{output}"
tab_normal "#[fg=#6C7086,bg=#303030] {name} "
tab_active "#[fg=#9399B2,bg=#303030,bold] {name} "
}
}
}
Co daje następujący wynik :) :

Być może jeszcze coś pozmieniam - ale już jestem w miarę zadowolony i zachęcony do tworzenia kolejnych szablonów pod konkretne zadania.
Edytowałem też używany schemat kolorystyczny, tak aby te ramki, które zostały były mniej nachalne.
Codzienna praca
Na tę chwilę uruchamiam Zellij-a przede wszystkim wtedy gdy programuję. Przydaje się wtedy uruchomienie poprzez:
zellij -l welcome
W tym powitalnym ekranie można sobie skonfigurować nową sesję (wybrać szablon oraz folder roboczy!), lub przywrócić wcześniejszą.

Multiplekser okazał się też bardzo przydatny gdy ćwiczyłem Docker Swarm-a - bardzo ułatwiał podgląd węzłów wchodzących w skład klastra.
Ciekawym zastosowaniem, którym na pewno będę się jeszcze bawił jest uruchomieniem go na domowym serwerze. Posiadanie jednego urządzenia do pracy z którym się łączę i mam od razu wszystko skonfigurowane i pozostawione dokładnie w miejscu w którym skończyłem pracę to ciekawe doświadczenie. Zwłaszcza, że dostęp do niego mam właściwie wszędzie dzięki Netbird-owi / Tailscale.