Jak automatycznie równoważyć panele tmux za każdym razem, gdy panel jest dodawany / usuwany?

2

Aby zrównoważyć panele w bieżącym oknie, można użyć Ctrl- b Meta- 1.. 5( 1 , 2 ). Czy istnieje jednak sposób automatycznego równoważenia za każdym razem, gdy panel jest dodawany lub usuwany?

Weźmy na przykład pod uwagę, że mam dwa równie wysokie panele w even-verticalukładzie. Teraz, kiedy podzielę bieżący panel na dwa (górny i dolny), chciałbym, aby tmux automatycznie równoważył wszystkie panele, dzięki czemu uzyskałem trzy równie wysokie panele w even-verticalukładzie.

s3rvac
źródło

Odpowiedzi:

3

Możesz podać własne powiązania składające się z poleceń połączonych \;. Na przykład w twoim ~/.tmux.confdodatku

bind-key '"' split-window \; select-layout -n \; select-layout -p

Powoduje to Ctrl-b "podzielenie okna, a następnie zmianę układu na następny układ, a następnie powrót do poprzedniego. Musisz to zrobić dla innych poleceń, które dodają lub usuwają okna.


Jeśli chcesz mieć więcej automatycznej kontroli, możesz napisać proces w trybie sterowania tmux w tle, aby słuchać prawdziwego procesu tmux. Otrzymuje powiadomienia o wszystkim, co dzieje się w prawdziwym tmuxie, a następnie możesz wysyłać select-layoutpolecenia za każdym razem, gdy zobaczysz powiadomienie o nowym oknie lub oknie usuniętym. Nie eksperymentowałem z tym dużo, ale jeśli użyjesz 2 terminali i uruchomisz normalną sesję w jednym

tmux new -s mysession

a w drugim

tmux -C attach -t mysession

wtedy, kiedy dzielisz okna, dodajesz nowe lub zamykasz je w normalnym tmux, otrzymasz linie takie jak

%layout-change @2 91a8,80x23,0,0[80x11,0,0,5,80x11,0,12,7]
%window-add @3
%window-close @1

w kontroli tmux. Kiedy je zobaczysz, możesz pisać select-layout -nw trybie sterowania, a to wpływa na pierwszy. Istnieje biblioteka Pythona do korzystania z tego mechanizmu, o której nie patrzyłem dalej.

meuh
źródło
Ale co, jeśli obecny układ różni się od even-vertical? Chciałbym zachować aktualnie używany układ.
s3rvac
Znalezienie bieżącego układu jest trudne. Zamiast tego możesz jeździć na rowerze do przodu, a następnie do tyłu. Zaktualizowałem odpowiedź.
Meuh
Dzięki. Pomyślałem jednak, że istnieje lepszy sposób niż ponowne powiązanie wszystkich kluczy. Na przykład regularnie zabijam okienko po prostu wychodząc ze skorupy, co jest prawie niemożliwe do „ponownego powiązania” w tmuxie.
s3rvac,
Dodałem możliwy mechanizm, który może cię zainteresować, tryb sterowania tmux. Nie korzystałem z niego, ale wygląda to na wykonalne, choć trochę przesada.
Meuh