Bagaimana cara membuka terminal, membagi menjadi 9 terminal dan beralih di antara mereka menggunakan satu skrip?

17

Saya ingin membuka terminal, membaginya menjadi katakanlah 9 bagian (3x3) dan menjalankan beberapa skrip bash. Tetapi untuk setiap terminal bagian skrip berbeda.

Bisakah ini dilakukan dengan menggunakan perl, python atau bahkan bash?

Bagaimana saya bisa beralih di antara terminal-terminal kecil itu tanpa menggunakan pintasan keyboard?

Oh, omong-omong, saya menggunakan terminator. Dan jika ada beberapa emulator terminal lain yang memungkinkan fungsi seperti itu, apakah itu?

jirislav
sumber
terminatorbukan shell. Ada dua emulator terminal berbeda yang disebut terminator(hanya satu yang saya percaya dapat membagi layar).
Stéphane Chazelas
Ah, terima kasih .. lalu saya ingin tahu cara membagi terminatormenggunakan skrip? :) Dan beralih di antara bagian-bagian itu?
jirislav
1
Saya tidak pernah menggunakannya dan tidak punya waktu untuk merisetnya sekarang, tetapi saya pikir (meskipun tidak yakin) bahwa byobu dapat membantu Anda jika Anda menjalankan terminal pada sistem jarak jauh - lihat help.ubuntu. com / komunitas / Byobu . Byobu berjalan pada banyak distribusi * nix
Clive van Hilten
1
Seperti yang disebutkan dan dijawab oleh @ClivevanHilten di sini dapat dilakukan dengan Byobu yang ramah (yang secara default berada di atas tmux).
Pablo A

Jawaban:

35

Untuk menjiplak diri saya sendiri , Anda dapat mengatur profil dengan pengaturan yang Anda inginkan (instruksi diadaptasi dari sini ):

  1. Jalankan terminator, dan atur tata letak yang Anda inginkan. Anda dapat menggunakan Ctrl+ Shift+ Euntuk membagi windows secara vertikal dan Ctrl+ Shift+ O(itu O seperti dalam jumlah besar, bukan nol) untuk membelah secara horizontal. Untuk contoh ini, saya telah membuat tata letak dengan 6 panel:

    masukkan deskripsi gambar di sini

  2. Klik kanan pada terminatorjendela dan pilih "Preferensi". Setelah jendela Preferensi terbuka, buka "Layouts" dan klik "Add":

    masukkan deskripsi gambar di sini

  3. Itu akan mengisi daftar Tata Letak dengan tata letak baru Anda:

    masukkan deskripsi gambar di sini

  4. Temukan masing-masing terminal yang telah Anda buat dalam tata letak, dan klik pada mereka, lalu di sebelah kanan masukkan perintah yang ingin Anda jalankan di dalamnya pada startup:

    masukkan deskripsi gambar di sini

    PENTING: Perhatikan bahwa perintah ini diikuti oleh ; bash. Jika Anda tidak melakukan itu, terminal tidak akan dapat diakses karena mereka akan menjalankan perintah yang Anda berikan dan keluar. Anda harus meluncurkan shell setelah setiap perintah untuk dapat menggunakan terminal.

    Setelah Anda mengatur semua perintah, klik "Tutup" dan kemudian keluar terminator.

  5. Buka terminatorfile konfigurasi ~/.config/terminator/configdan hapus bagian di bawah tata letak untuk konfigurasi default. Kemudian ubah nama tata letak yang Anda buat ke default. Seharusnya terlihat seperti ini:

    [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]

Hasil akhirnya adalah bahwa ketika Anda menjalankannya terminatorakan terbuka dengan 6 panel, yang masing-masing telah menjalankan atau menjalankan perintah yang telah Anda tentukan:

masukkan deskripsi gambar di sini

Selain itu, Anda dapat mengatur sebanyak mungkin profil berbeda sesuai keinginan dan meluncurkan terminator dengan -psakelar yang memberikan nama profil, atau secara manual beralih ke profil mana pun yang Anda inginkan setelah diluncurkan.

terdon
sumber
Terdon, terima kasih! Di sinilah mungkin saya belajar menulis file konfigurasi itu!
dotancohen
@dotancohen senang mendengar saya sangat membantu :)
terdon
1
Whaou! Terima kasih banyak, "; bash" menyelamatkan hidupku!
Etienne
"Anda harus meluncurkan shell setelah setiap perintah untuk dapat menggunakan terminal." Luar biasa - ini tidak intuitif sama sekali ketika saya awalnya mencobanya. Mereka harus menyertakan semacam kotak centang untuk mengaktifkan ini secara otomatis.
dtmland
5

Apakah Anda mencari terminal multiplexer tmux.

https://github.com/tmux/tmux

Sujit Maharjan
sumber
Ya, ini sepertinya kemungkinan lain bagaimana mencapai apa yang saya butuhkan. Terima kasih :)
jirislav
tmuxsangat bagus!
dotancohen
3

Kembali ketika saya menggunakan terminatorini adalah file rc yang saya gunakan untuk membuka banyak terminal dan menjalankan aplikasi. Simpan ke .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]

EDIT: Perhatikan bahwa informasi ini mungkin berasal dari pos Terdon pada utas yang jauh sebelumnya. Saya telah menggunakan pengaturan ini selama beberapa bulan, tetapi posting Terdon di sini terlihat sangat akrab!

dotancohen
sumber
Inilah yang saya cari - cara memisahkan terminal & menjalankan skrip tertentu - terima kasih! Tapi saya tidak ingin melakukannya setiap saat seperti ini. Apakah ada kemungkinan untuk memiliki lebih banyak konfigurasi & membuka masing-masing tergantung pada apa yang saya butuhkan? Katakanlah dengan menambahkan parameter --config2 atau --config1?
jirislav
Anda tidak menambahkan lebih banyak file konfigurasi, Anda menambahkan bagian ke file konfigurasi. Lihat posting Terdon, dia menjelaskannya dengan sangat baik, sebenarnya saya mengetahui ini dari postingannya di utas sebelumnya.
dotancohen
Oh, begitu ... Jadi saya menerima jawabannya sebagai yang paling membantu. Tapi Terimakasih.
jirislav
Pilihan bagus! Saya sebenarnya ingin menyarankan untuk menerima jawabannya karena informasi itu memang berasal dari kerja kerasnya!
dotancohen
2

Skrip wrapper untuk membelah terminal emulator Terminator https://github.com/AlekseyChudov/terminator-split

Aleksey Chudov
sumber
2
Anda harus memasukkan informasi yang relevan di sini, setelah github hilang, jawaban Anda kehilangan semua nilai potensinya.
Anthon
1
sepertinya bagus .. tapi bagaimana saya menjalankan skrip ini?
Sachin
1
terminator-splitmemiliki banyak potensi, tetapi tampaknya tidak ada cara untuk menjalankan perintah yang berbeda di pemisahan yang berbeda, dan -margumen yang ditunjukkan dalam contoh tidak tercantum dalam ringkasan penggunaan
bitinerant