Wymuś otwarcie każdego nowego terminalu w nowej karcie

8

Mam zwyczaj otwierania terminala za pomocą polecenia „Otwórz tutaj terminal” w folderach. Powoduje to, że kilka terminali pozostaje otwartych, podczas gdy tak naprawdę ich już nie używam, lub mam wątpliwości, który terminal służył do którego celu.

Wiem, że mogę opisać zakładki terminali i tym podobne, ale czy mogę zmusić nowy terminal, który jest otwierany, aby stał się nową zakładką na ekranie terminala (jeśli jest już jeden otwarty?) W ten sposób zawsze mam zakładki w jednym terminal.

EDYCJA OK, więc minęło trochę czasu, a moje linux mojo bardzo się poprawiło. Tak więc dla mnie jest obecne rozwiązanie tej sytuacji tmux. Jest trochę bardziej zaawansowany niż zwykłe terminale i karty, ale kiedy go zrozumiałem (około godziny próbowania), jestem bardzo zadowolony z tego, jak sobie radzić.

Przede wszystkim upewniłem się, że za każdym razem, gdy ctrl-alt-totwieram terminal przy użyciu , domyślnie otwiera on tmux. Można to osiągnąć, dodając następujący wiersz w .bashrcpliku po wszystkich aliasach:

[[ $TERM != "screen" ]] && exec 'tmux

Teraz za każdym razem, gdy odradzasz się przy użyciu terminala ctrl-alt-t, pojawi się tmux.

Aby mieć pewność, że masz tylko jeden terminal otwarty w tym samym czasie, wykonałem następujące czynności:

Przede wszystkim możesz ponownie dołączyć sesję tmux, uruchamiając tmux attach -d. Spowoduje to rozłączenie wszystkich innych klientów podłączonych do tej sesji. Działa to dobrze, jeśli jesteś jedyną osobą korzystającą z sesji.

Ale jeśli nie masz uruchomionej sesji, powiesz, że nie znalazła żadnych sesji. Ergo, potrzebujesz czegoś takiego jak if (nosession) {tmux} else {tmux attach -d}. Aby to zrobić, dodaj do ~/.tmux.confpliku następujący wiersz:

#if run as "tmux attach", create a session if one does not already exist
new-session -n $HOST

(Dzięki temu postowi )

W moim .bashrcpliku zmieniłem linię dodaną wcześniej do następujących:

[[ $TERM != "screen" ]] && exec 'tmux attach -d'

To powoduje odłączenie wszystkich innych klientów od tmuxsesji. Po wykonaniu tej czynności wszystkie pozostałe terminale zostaną zamknięte. Zamykają się, ponieważ linia ta zapewnia również, że kiedy otworzysz terminal (ctrl-alt-t), natychmiast rozpocznie sesję tmux.

Ergo, attach -dzabija pozostałe sesje. To jest najbliższa poprawka, jaką mogę uzyskać i jestem z tego zadowolony! :)

Jedyne, co nadal chciałbym, to to, że po naciśnięciu ctrl-alt-totwiera moją bieżącą sesję, a także tworzy nowe okno. Jeszcze tego nie rozgryzłem, więc nie krępuj się pomóc!

Christophe De Troyer
źródło
Naciśnij ctr + shift + t, aby otworzyć kartę w terminalu.
Ankur Khandelwal
Tak, jestem tego świadomy. Jednak, jak powiedziałem, często otwieram karty z katalogu przy użyciu wtyczki „Otwórz terminal tutaj” (na przykład w Xubuntu). Te otwierają nowe okno. Chciałbym, aby zostały one otwarte jako nowa karta w już istniejącym oknie terminala.
Christophe De Troyer

Odpowiedzi:

3

Niestety otwieranie nowych kart w istniejącej sesji terminalu gnome było pożądaną funkcją od kilku lat - patrz tutaj .

Możliwe byłoby jednak zhakowanie czegoś razem. Na przykład ta odpowiedź zapewnia włamanie do otwarcia nowej karty w bieżącym oknie gnome-terminal.

Jamie
źródło
Świetny. +1 za link do raportu o błędzie. Mogę tylko zachęcić wszystkich do kliknięcia linku „to dotyczy mnie też” u góry, aby zwrócić na to uwagę. Również +1 za włamanie. Świetna odpowiedź!
Christophe De Troyer