Jak otworzyć terminal, podzielić na 9 terminali i przełączać się między nimi za pomocą jednego skryptu?

17

Chciałbym otworzyć terminal, podzielić go na powiedzmy 9 części (3x3) i wykonać skrypt bash. Ale dla każdej części terminalu inny skrypt.

Czy można to zrobić za pomocą Perla, Pythona, a nawet Bash?

Jak mogę przełączać się między tymi małymi terminalami bez korzystania ze skrótów klawiaturowych?

A tak przy okazji, używam terminator. A jeśli jest jakiś inny emulator terminala, który umożliwia taką funkcjonalność, to co to jest?

Jirislav
źródło
terminatornie jest skorupą. Nazywa się dwa różne emulatory terminaliterminator (tylko jeden z nich może podzielić ekran).
Stéphane Chazelas
Ach, dzięki .. to chciałbym wiedzieć, jak podzielić terminatorza pomocą skryptu? :) I przełączasz się między tymi częściami?
Jirislav
1
Nigdy go nie użyłem i nie mam teraz czasu na jego zbadanie, ale myślę (choć nie jestem pewien), że byobu może ci pomóc, jeśli używasz terminali w systemie zdalnym - patrz help.ubuntu. com / community / Byobu . Byobu działa w wielu dystrybucjach * nix
Clive van Hilten,
1
Jak wspomniano i odpowiedziano na @ClivevanHilten , można to zrobić za pomocą przyjaznego Byobu (który domyślnie siedzi na tmuxie).
Pablo A

Odpowiedzi:

35

Aby się oswoić , możesz skonfigurować profil z żądanymi ustawieniami (instrukcje dostosowane tutaj ):

  1. Uruchom terminatori skonfiguruj odpowiedni układ. Możesz użyć Ctrl+ Shift+, Eaby podzielić okna w pionie, a Ctrl+ Shift+ O(to O jak w bryłach, a nie zero), aby podzielić w poziomie. W tym przykładzie utworzyłem układ z 6 oknami:

    wprowadź opis zdjęcia tutaj

  2. Kliknij terminatorokno prawym przyciskiem myszy i wybierz „Preferencje”. Po otwarciu okna Preferencji przejdź do „Układów” i kliknij „Dodaj”:

    wprowadź opis zdjęcia tutaj

  3. Spowoduje to zapełnienie listy Układ nowym układem:

    wprowadź opis zdjęcia tutaj

  4. Znajdź każdy z terminali, który utworzyłeś w układzie, i kliknij na nich, a następnie po prawej stronie wprowadź polecenie, które chcesz uruchomić na nich podczas uruchamiania:

    wprowadź opis zdjęcia tutaj

    WAŻNE: Zauważ, że po poleceniu następuje ; bash. Jeśli tego nie zrobisz, terminale nie będą dostępne, ponieważ uruchomią polecenie, które wydasz i zakończ. Musisz uruchomić powłokę po każdym poleceniu, aby móc korzystać z terminali.

    Po ustawieniu wszystkich poleceń kliknij „Zamknij”, a następnie zakończ terminator.

  5. Otwórz terminatorplik konfiguracyjny ~/.config/terminator/configi usuń sekcję pod układami dla domyślnej konfiguracji. Następnie zmień nazwę utworzonego układu na domyślny. Powinno to wyglądać mniej więcej tak:

    [global_config]
    [keybindings]
    [profiles]
      [[default]]
    [layouts]
      [[default]]
        [[[child0]]]
          position = 446:100
          type = Window
          order = 0
          parent = ""
          size = 885, 550
        [[[child1]]]
          position = 444
          type = HPaned
          order = 0
          parent = child0
        [[[child2]]]
          position = 275
          type = VPaned
          order = 0
          parent = child1
        [[[child5]]]
          position = 219
          type = HPaned
          order = 1
          parent = child1
        [[[child6]]]
          position = 275
          type = VPaned
          order = 0
          parent = child5
        [[[child9]]]
          position = 275
          type = VPaned
          order = 1
          parent = child5
        [[[terminal11]]]
          profile = default
          command = 'df -h; bash'
          type = Terminal
          order = 1
          parent = child9
        [[[terminal10]]]
          profile = default
          command = 'export foo="bar" && cd /var/www/; bash'
          type = Terminal
          order = 0
          parent = child9
        [[[terminal3]]]
          profile = default
          command = 'ssh -Yp 24222 [email protected]'
          type = Terminal
          order = 0
          parent = child2
        [[[terminal4]]]
          profile = default
          command = 'top; bash'
          type = Terminal
          order = 1
          parent = child2
        [[[terminal7]]]
          profile = default
          command = 'cd /etc; bash'
          type = Terminal
          order = 0
          parent = child6
        [[[terminal8]]]
          profile = default
          command = 'cd ~/dev; bash'
          type = Terminal
          order = 1
          parent = child6
    [plugins]

Ostateczny wynik jest taki, że po uruchomieniu terminatorotworzy się z 6 oknami, z których każde uruchomiło lub uruchomiło podane polecenia:

wprowadź opis zdjęcia tutaj

Możesz także skonfigurować dowolną liczbę różnych profili i uruchomić terminator za pomocą -pprzełącznika podającego nazwę profilu lub ręcznie przełączyć na dowolny profil po uruchomieniu.

terdon
źródło
Terdon, dziękuję! Prawdopodobnie w tym miejscu nauczyłem się pisać ten plik konfiguracyjny!
dotancohen
@dotancohen cieszę się, że mogłem pomóc :)
terdon
1
!ه! Wielkie dzięki, „; bash” uratował mi życie!
Etienne
„Musisz uruchomić powłokę po każdym poleceniu, aby móc korzystać z terminali.” Niesamowite - nie było to wcale intuicyjne, kiedy próbowałem. Powinny zawierać jakieś pole wyboru, aby automatycznie to włączyć.
dtmland
5

Szukasz terminalu multipleksera tmux.

https://github.com/tmux/tmux

Sujit Maharjan
źródło
Tak, wydaje się to kolejną możliwością, jak osiągnąć to, czego potrzebuję. Dzięki :)
Jirislav
tmuxjest świetny!
dotancohen
3

Kiedy terminatorużywałem tego, jest to plik rc, którego używałem do otwierania wielu terminali i uruchamiania aplikacji. Zapisz to .config/terminator/config.

[global_config]
  title_hide_sizetext = True
  enabled_plugins = LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler
[keybindings]
[profiles]
  [[default]]
    font = DejaVu Sans Mono 9
    cursor_blink = False
    scrollback_infinite = True
[layouts]
  [[default]]

    [[[root]]]
      position = -4:0
      type = Window
      order = 0 
      parent = ""
      size = 1072, 1884

    [[[grand]]]
      position = 536 
      type = HPaned
      order = 0 
      parent = root
    [[[left]]]
      position = 942 
      type = VPaned
      order = 0 
      parent = grand
    [[[right]]]
      position = 942 
      type = VPaned
      order = 1 
      parent = grand



    [[[terminal1]]]
      profile = default
      type = Terminal
      order = 0 
      parent = left
      command = "cd ~/code/foo; bash"
    [[[terminal2]]]
      profile = default
      type = Terminal
      order = 1 
      parent = left
      command = "cd ~/bar/baz; bash"



    [[[terminal3]]]
      profile = default
      type = Terminal
      order = 1 
      parent = right
      command = ""
    [[[terminal4]]]
      profile = default
      type = Terminal
      order = 0 
      parent = right
      command = "cmus; bash"



[plugins]

EDYCJA: Zauważ, że ta informacja prawdopodobnie pochodzi z postu Terdona w znacznie wcześniejszym wątku. Używam tego zestawu od kilku miesięcy, ale post Terdona wygląda tutaj znajomo!

dotancohen
źródło
Właśnie tego szukałem - jak podzielić terminal i wykonywać określone skrypty - dzięki! Ale nie chciałbym wykonywać tego za każdym razem w ten sposób. Czy istnieje możliwość posiadania większej liczby tych konfiguracji i otwierania każdej z nich w zależności od potrzeb? Powiedzmy, dodając parametr --config2 lub --config1?
Jirislav
Nie dodajesz więcej plików konfiguracyjnych, dodajesz sekcje do pliku konfiguracyjnego. Zobacz post Terdona, on wyjaśnia to bardzo dobrze, w rzeczywistości nauczyłem się tego z jego postu na wcześniejszym wątku.
dotancohen
Och, rozumiem ... Tak więc zaakceptowałem jego odpowiedź jako najbardziej pomocną. Mimo wszystko dziękuję.
Jirislav
Dobry wybór! Naprawdę chciałem zasugerować, aby zaakceptować jego odpowiedź, ponieważ informacje pochodzą z jego ciężkiej pracy!
dotancohen
2

Skrypt opakowania dla dzielenia emulatora terminatora https://github.com/AlekseyChudov/terminator-split

Aleksey Chudov
źródło
2
Powinieneś dołączyć odpowiednie informacje tutaj, kiedy github zniknie, twoja odpowiedź traci całą swoją potencjalną wartość.
Anthon
1
wydaje się dobre .. ale jak uruchomić ten skrypt?
Sachin
1
terminator-splitma duży potencjał, ale wydaje się, że nie ma sposobu na uruchamianie różnych poleceń w różnych podziałach, a -margument pokazany w przykładach nie jest wymieniony w podsumowaniu użycia
bitinerant