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?


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 cchapple@139.124.66.43'
          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, 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


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!


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.