17 kwietnia 2021 blog tmux
tmux jest genialnym multiplekserem linuksowego terminala, bez którego nie wyobrażam sobie pracy z konsolą. Jest o nim mnóstwo informacji w sieci, więc odsyłam do wyszukiwarki. Czasem można znaleźć strony dotyczące poprzedniej wersji tmuksa, zawsze warto skonfrontować znalezione informacje z aktualną wersją podręcznika.
mx jest moim "centrum dowodzenia tmuksem" :)
Wywołany bez parametrów, pokaże listę aktywnych sesji i krótką pomoc.
$ mx
Attach to existing tmux session or create new one. Optionally run command inside the session.
Usage:
/home/dmn/bin/scripts/mx name [command]
List sessions:
x: 2 windows (created Sun Apr 17 13:03:11 2021) (attached)
Wywołując z jednym parametrem, nazwą sesji, skrypt sprawdzi, czy sesja o takiej nazwie istnieje. Jeśli tak, podłączy się do niej, a jeśli nie, utworzy nową. Dzięki temu pisząc
mx x
Zawsze znajdziemy się w sesji o nazwie x
.
Trzecia możliwość wykorzystania skryptu to podanie programu do uruchomienia w sesji. Tak samo jak w poprzednim przypadku, jeśli sesja istnieje, program zostanie uruchomiony w oknie w istniejącej sesji, a jeśli sesja nie istnieje, zostanie utworzona, a program w niej uruchomiony.
mx x vim ~/.bashrc
Uruchomi vim
w sesji o nazwie x
.
mx również przy tworzeniu nowej sesji sprawdza, czy istnieje konfiguracja specyficzna dla tej sesji. Czyli najpierw sprawdza, czy jest obecny plik .tmux.conf
i używa go do skonfigurowania tmuksa. Potem sprawdza, czy jest obecny plik .tmux-x.conf
(w przypadku sesji o nazwie x
) i jeśli tak, to również go wczytuje. Dzięki temu można tworzyć customowe sesje, np. opisana poniżej sesja do aktualizacji systemu.
Każdy system od czasu do czasu trzeba zaktualizować, ja robię to tak:
mx y
Konfiguracja sesji siedzi w ~/.tmux-y.conf
:
new-window -n yay sh -c "echo 'pacman -Syu' ; pacman -Syu ; echo done ; read keyy"
swap-window -t 1
select-window -t 2
kill-window
Czyli tworzone jest nowe okno z pacman
, a to, które automatycznie się utworzyło, jest usuwane. W mojej konfiguracji okna numerowane są od 1 (set-option -g base-index 1
).
Moja konfiguracja nie różni się niczym nadzwyczajnym od najczęściej publikowanych przykładów. Pełna wersja siedzi w repozytorium, tutaj jest fragment odpowiedzialny za pasek statusu:
set-option -g base-index 1
set-option -g status-interval 1
set-option -g status-position bottom
set-option -g status-style fg=colour222,bg=colour235
set-option -g window-status-current-style fg=default,bold
set-option -g window-status-style fg=colour244
set-option -g status-left-length 30
set-option -g status-left-style fg=colour154,bg=colour238
set-option -g status-left "#[fg=colour238,bg=colour154] #S #[fg=colour154,bg=colour238] #H #[fg=colour238,bg=colour235] "
set-option -g status-right-length 10
set-option -g status-right-style fg=colour250,bg=colour238
set-option -g status-right "#[fg=colour238,bg=colour235]#[fg=colour250,bg=colour238] %H:%M "
W sieci jest mnóstwo przykładów, każdy może znaleźć coś dla siebie. Konfiguracja powyżej jest na tyle nieskomplikowana, że nie jest trudno dostosować ją do nowszej wersji tmux
lub poeksperymentować.