17 kwietnia 2021 blog tmux

Jak używam tmux, czyli jak jeszcze bardziej można ułatwić sobie korzystanie z terminala.

tmux-theme

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

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.

tmux-y.conf

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).

tmux.conf

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ć.

Linki