Comment ouvrir un terminal, diviser en 9 terminaux et basculer entre eux à l'aide d'un script?

17

Je voudrais ouvrir un terminal, le diviser pour dire 9 parties (3x3) et exécuter un script bash. Mais pour chaque terminal, un script différent.

Cela peut-il être fait en utilisant perl, python ou même bash?

Comment puis-je basculer entre ces petits terminaux sans utiliser de raccourcis clavier?

Oh, au fait, j'utilise terminator. Et s'il existe un autre émulateur de terminal qui permet une telle fonctionnalité, quel est-il?

jirislav
la source
terminatorn'est pas un shell. Il y a deux émulateurs de terminaux différents appelés terminator(dont un seul, je crois, peut diviser l'écran).
Stéphane Chazelas
Ah, merci .. alors je voudrais savoir comment diviser en terminatorutilisant un script? :) Et basculer entre ces parties?
jirislav
1
Je ne l'ai jamais utilisé et je n'ai pas le temps de le rechercher en ce moment, mais je pense (pas sûr cependant) que byobu pourrait vous aider si vous utilisez les terminaux sur un système distant - voir help.ubuntu. com / communauté / Byobu . Byobu fonctionne sur de nombreuses distributions * nix
Clive van Hilten
1
Comme @ClivevanHilten l'a mentionné et a répondu ici, cela peut être fait avec un Byobu amical (qui par défaut se trouve au-dessus de tmux).
Pablo A

Réponses:

35

Pour me plagier , vous pouvez configurer un profil avec les paramètres souhaités (instructions adaptées à partir d' ici ):

  1. Exécutez terminatoret configurez la mise en page souhaitée. Vous pouvez utiliser Ctrl+ Shift+ Epour diviser les fenêtres verticalement et Ctrl+ Shift+ O(c'est O comme dans les oodles, pas zéro) pour diviser horizontalement. Pour cet exemple, j'ai créé une mise en page à 6 volets:

    entrez la description de l'image ici

  2. Faites un clic droit sur la terminatorfenêtre et choisissez "Préférences". Une fois la fenêtre Préférences ouverte, allez dans "Mises en page" et cliquez sur "Ajouter":

    entrez la description de l'image ici

  3. Cela remplira la liste de disposition avec votre nouvelle disposition:

    entrez la description de l'image ici

  4. Trouvez chacun des terminaux que vous avez créés dans la mise en page et cliquez dessus, puis à droite entrez la commande que vous souhaitez exécuter en eux au démarrage:

    entrez la description de l'image ici

    IMPORTANT: notez que la commande est suivie de ; bash. Si vous ne le faites pas, les terminaux ne seront pas accessibles car ils exécuteront la commande que vous donnez et quitteront. Vous devez lancer un shell après chaque commande pour pouvoir utiliser les terminaux.

    Une fois que vous avez défini toutes les commandes, cliquez sur "Fermer" puis quittez terminator.

  5. Ouvrez le terminatorfichier de configuration ~/.config/terminator/configet supprimez la section sous les dispositions pour la configuration par défaut. Modifiez ensuite le nom de la mise en page que vous avez créée par défaut. Ça devrait ressembler a quelque chose comme ca:

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

Le résultat final est que lorsque vous l'exécutez, terminatoril s'ouvrira avec 6 volets, dont chacun a exécuté ou exécute les commandes que vous avez spécifiées:

entrez la description de l'image ici

En outre, vous pouvez configurer autant de profils différents que vous le souhaitez et lancer terminator avec le -pcommutateur donnant un nom de profil, ou basculer manuellement sur le profil souhaité après le lancement.

terdon
la source
Terdon, merci! C'est probablement là que j'ai appris à écrire ce fichier de configuration!
dotancohen
@dotancohen heureux d'apprendre que j'ai été utile :)
terdon
1
Whaou! Merci beaucoup, le "; bash" m'a sauvé la vie!
Etienne
"Vous devez lancer un shell après chaque commande pour pouvoir utiliser les terminaux." Incroyable - ce n'était pas du tout intuitif quand je l'ai essayé au départ. Ils devraient inclure une sorte de case à cocher pour l'activer automatiquement.
dtmland
5

Cherchez-vous un multiplexeur de terminaux tmux.

https://github.com/tmux/tmux

Sujit Maharjan
la source
Oui, cela semble être une autre possibilité pour accomplir ce dont j'ai besoin. Merci :)
jirislav
tmuxest excellente!
dotancohen
3

À l'époque où j'utilisais, terminatorc'est le fichier rc que j'ai utilisé pour ouvrir un tas de terminaux et exécuter des applications. Enregistrez-le dans .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: Notez que ces informations proviennent probablement de la publication de Terdon sur un fil beaucoup plus ancien. J'utilise cette configuration depuis quelques mois, mais le message de Terdon ici semble très familier!

dotancohen
la source
C'est ce que je cherchais - comment diviser un terminal et exécuter des scripts particuliers - merci! Mais je ne voudrais pas l'exécuter à chaque fois comme ça. Existe-t-il une possibilité d'avoir plus de ces configurations et de les ouvrir chacune en fonction de mes besoins? Disons qu'en ajoutant le paramètre --config2 ou --config1?
jirislav
Vous n'ajoutez pas de fichiers de configuration supplémentaires, vous ajoutez des sections au fichier de configuration. Voir le post de Terdon, il l'explique très bien, en fait j'ai appris cela de son post sur un fil précédent.
dotancohen
Oh, je vois ... J'ai donc accepté sa réponse comme la plus utile. Mais merci quand même.
jirislav
Bon choix! En fait, je voulais suggérer d'accepter sa réponse car les informations provenaient de son travail acharné!
dotancohen
2

Script d'encapsuleur pour fractionner l'émulateur de terminal Terminator https://github.com/AlekseyChudov/terminator-split

Aleksey Chudov
la source
2
Vous devez inclure les informations pertinentes ici, une fois que github est parti, votre réponse perd toute sa valeur potentielle.
Anthon
1
semble bon .. mais comment exécuter ce script?
Sachin
1
terminator-splita beaucoup de potentiel, mais il semble qu'il n'y ait aucun moyen d'exécuter différentes commandes dans les différentes divisions, et l' -margument montré dans les exemples n'est pas répertorié dans le résumé d'utilisation
bitinerant