Forcer chaque nouveau terminal à s'ouvrir dans un nouvel onglet

8

J'ai l'habitude d'ouvrir un terminal en utilisant la commande "Ouvrir le terminal ici" dans les dossiers. Cela fait que quelques terminaux restent ouverts alors que je ne les utilise plus vraiment, ou je ne sais pas quel terminal servait à quelle fin.

Je sais que je peux étiqueter les onglets de terminal et autres, mais puis-je forcer un nouveau terminal en cours d'ouverture à devenir un nouvel onglet dans un écran de terminal (s'il y en a déjà un ouvert?) De cette façon, je les ai toujours tabulés en un seul Terminal.

EDIT D'accord, cela fait donc un moment et mon mojo linux s'est beaucoup amélioré. La solution actuelle à cette situation a donc été utilisée pour moi tmux. C'est un peu plus avancé que les terminaux et les onglets ordinaires, mais une fois que j'ai compris (environ une heure d'essais), je suis très satisfait de la façon de procéder.

Tout d'abord, je me suis assuré que chaque fois que ctrl-alt-tj'ouvrirais un terminal avec , il ouvrirait tmux par défaut. Ceci peut être réalisé en ajoutant la ligne suivante dans votre .bashrcfichier après tous les alias:

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

Maintenant, chaque fois que vous générez un terminal en utilisant ctrl-alt-tvous sera présenté avec un tmux.

Pour vous assurer que vous n'avez qu'un seul terminal ouvert en même temps, j'ai fait ce qui suit:

Tout d'abord, vous pouvez rattacher une session en tmuxexécutant tmux attach -d. Cela déconnectera tous les autres clients connectés à cette session. Cela fonctionne bien si vous êtes la seule personne à utiliser les sessions.

Mais, si vous n'avez pas de session en cours d'exécution, il dira qu'il n'a trouvé aucune session. Ergo, vous avez besoin de quelque chose comme if (nosession) {tmux} else {tmux attach -d}. Pour ce faire, créez de l'ajout à votre ~/.tmux.conffichier de la ligne suivante:

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

(Merci à ce post )

Dans mon .bashrcfichier, j'ai modifié la ligne ajoutée précédemment comme suit:

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

Cela détache tous les autres clients de la tmuxsession. Lorsque vous effectuez cette opération, tous les autres terminaux se ferment. Ils se ferment car cette ligne garantit également que lorsque vous ouvrez un terminal (ctrl-alt-t), il démarre immédiatement une session tmux.

Ergo, attach -dtue les autres sessions. C'est donc la solution la plus proche que j'ai pu obtenir et j'en suis plutôt satisfait! :)

La seule chose que j'aimerais encore, c'est que lorsque j'appuie, ctrl-alt-tcela ouvre ma session actuelle et crée également une nouvelle fenêtre. Je n'ai pas encore compris cela, alors n'hésitez pas à aider!

Christophe De Troyer
la source
Appuyez sur ctr + shift + t pour ouvrir l'onglet dans le terminal.
Ankur Khandelwal
Oui, j'en suis conscient. Cependant, comme je l'ai dit, j'ouvre fréquemment des onglets à partir d'un répertoire en utilisant le plugin "Open terminal here" (c'est par défaut dans Xubuntu par exemple). Celles-ci ouvrent une nouvelle fenêtre. Je voudrais qu'ils soient ouverts en tant que nouvel onglet dans la fenêtre de terminal déjà existante.
Christophe De Troyer

Réponses:

3

Malheureusement, l'ouverture de nouveaux onglets dans la session gnome-terminal existante est une fonctionnalité recherchée depuis plusieurs années maintenant - voir ici .

Il serait cependant possible de pirater quelque chose ensemble. Par exemple, cette réponse fournit un hack pour ouvrir un nouvel onglet dans la fenêtre actuelle de gnome-terminal.

Jamie
la source
Excellent. +1 pour le lien vers le rapport de bogue. Je ne peux qu'encourager tout le monde à cliquer sur le lien "cela m'affecte aussi" en haut pour attirer l'attention sur ce point. +1 également pour le hack. Très bonne réponse!
Christophe De Troyer