Commande pour ouvrir une nouvelle fenêtre de terminal à partir du terminal actuel?

43

J'ai installé xdotool en exécutant sudo apt-get install xdotoolet en lançant la xdotool key ctrl+alt+tcommande pour ouvrir une nouvelle fenêtre de terminal à partir de la fenêtre actuelle. Mais cela ne fonctionnait pas.

Quelle était la commande pour ouvrir une nouvelle fenêtre de terminal à partir du gnome-terminal actuel?

Avinash Raj
la source
1
Ctrl + Maj + N
wim

Réponses:

64

Juste cette commande fera:

gnome-terminal

Normalement, si vous voulez qu'une commande s'ouvre à partir du terminal et soit séparée (pour qu'elle retourne à l'invite sans avoir à fermer le programme ouvert) , vous devez utiliser quelque chose comme ceci:

gnome-terminal & disown

Cependant, le terminal parent semble détecter que la même commande est utilisée, vous n'avez donc pas besoin de le faire et gnome-terminalcela suffira. Cela semble également se produire lors de l' exécution xfce4-terminaldu terminal de Xfce, konsolesemblent de KDE est aussi bien (ne pas travailler lors de l' exécution xtermde xterm(voir aussi xterm xterm) - Exécution konsoledu terminal de Gnome / Unity & Xfce fonctionne aussi bien , mais pour le terminal de Xfce dans le terminal gnome vous besoin xfce4-terminal & disown).

Pour plus de visite gnome-terminal, page de manuel :

 gnome-terminal  [-e,  --command=STRING]   [-x, --execute ]  [--window-with-profile=PROFILENAME]  [--tab-with-profile=PRO‐
       FILENAME]    [--window-with-profile-internal-id=PROFILEID]    [--tab-with-profile-internal-id=PROFILEID]    [--role=ROLE]
       [--show-menubar]   [--hide-menubar]   [--geometry=GEOMETRY]   [--disable-factory]  [-t, --title=TITLE]  [--working-direc‐
       tory=DIRNAME]  [--usage]  [-?, --help]
Wilf
la source
1
Vous voulez probablement fonctionner en arrière - plan, comme ça: gnome-terminal &. Sinon, le terminal actuel sera inutilisable, car il sera occupé à exécuter l'autre - de sorte que vous vous retrouverez avec un seul terminal utilisable, qui risque de manquer le point.
Rafał Cieślak
1
Intéressant. Vous avez apparemment raison, cependant, je ne me trompe pas non plus :) Je viens de vérifier cela dans les détails. Si j'exécute gnome-terminal alors qu'une autre instance est déjà en cours d'exécution (c'est peut-être celle que j'utilise pour lancer cette commande), elle se termine en effet immédiatement, car au lieu d'exécuter une nouvelle instance gnome-terminal, il est indiqué que cette instance est en cours d'exécution pour ouvrir une nouvelle fenêtre. Rusé. Mais si je cours à gnome-terminalpartir de rien d'autre et qu'il n'y a pas d'autres instances en gnome-terminalcours d' exécution, cela fonctionne comme je l'ai expliqué dans le commentaire précédent, en bloquant le terminal utilisé pour le lancer.
Rafał Cieślak
1
@ RafałCieślak - de toute façon, konsolene semble pas avoir besoin du tout… bizarre. Je n'ai aucune idée pourquoi cette question / réponse est si populaire :)
Wilf
2
Merci beaucoup, si vous voulez ouvrir un terminal avec le même répertoire, vous pouvez le faire,gnome-terminal .
kisanme
1
Si vous êtes sur Ubuntu MATE (par exemple 16.x), c'estmate-terminal
Frank Nocke
8

Commande pour ouvrir une nouvelle fenêtre de terminal à partir du terminal actuel,

xdotool key ctrl+shift+n

À installer xdotool,

sudo apt-get install xdotool
Avinash Raj
la source
4
Ctrl + Maj + T ouvrira un nouvel onglet de terminal.
GabrielF
2
C'est un nouveau terminal ... mais dans un nouvel onglet plutôt que dans une nouvelle fenêtre.
GabrielF
1
Je ne vois aucune raison d'utiliser xdotool key ctrl+shift+ntout en utilisant, gnome-terminalvous avez beaucoup d'autres options; voir man gnome-terminaldans ce sens.
Radu Rădeanu
1
Ctrl + Maj + N ouvrira une nouvelle fenêtre de terminal.
Siddhartha
Pensez-y encore :): y a-t-il un équivalent pour Mir ou Wayland (pour les implémentations non compatibles avec les serveurs X)
Wilf
0

Le script suivant ouvrira un nouvel onglet dans la fenêtre actuelle de gnome-terminal et donnera éventuellement un titre à cet onglet. Cela fonctionne depuis n'importe quelle fenêtre, il n'est pas nécessaire d'être dans une fenêtre gnome-terminal pour l'exécuter. Et, s'il n'y a pas de terminal gnome en cours d'exécution, il en démarrera un. Le seul inconvénient est que si vous modifiez le raccourci clavier pour ouvrir un nouvel onglet, vous devrez peut-être modifier la ligne xdotool key ctrl+Tpour utiliser votre raccourci clavier à la place.

#!/bin/bash

DELAY=1
# get title we are going to set tab too, default to Terminal
title="Terminal"
if [ $# -eq 1 ]; then
    title="$1"
fi    

# get pid of running terminal server
TPID=$(ps -C gnome-terminal-server -o pid | tail -1 | sed -e's/\s//g')
if [ ${TPID} == "PID" ]; then
    # no terminal process running yet, so just start one
    gnome-terminal -t "$title" --tab
    exit 0
fi

# there is a terminal, get window id of the running terminal server
WID=$(wmctrl -lp | awk -v pid=$TPID '$3==pid{print $1;exit;}')
# get title of currently active tab
TTITLE=`xwininfo -id 0x5000006 | grep xwininfo | awk '{print $5;exit}'`
if [ "$TTITLE" == "\"Terminal\"" ]; then
    # so we don't go into an infinite loop later
    TTITLE="we had a terminal named terminal $$"
fi
# get focus on active terminal tab
xdotool windowfocus $WID
# use keyboard shortcut to open new tab
xdotool key ctrl+T

# see if we have created tab and are in terminal
NTITLE=`xwininfo -id 0x5000006 | grep xwininfo | awk '{print $5;exit}'`
waited=0
while [ "$TTITLE" == "$NTITLE" ]; do
    # sleep for 1 second before we try again
    xdotool sleep 1
    NTITLE=`xwininfo -id 0x5000006 | grep xwininfo | awk '{print $5;exit}'`
    if [ $waited == 0 ]; then
    echo "Waiting "
    waited=1
    fi
    echo -n "."
done    
if [ $waited == 1 ]; then
    echo ""
fi    

# active tab is the new one we created, wait DELAY seconds just to be sure we can type into it to set tab name
xdotool sleep $DELAY
xdotool type --clearmodifiers "termtitle $title"
xdotool key Return
# make tab the active window and raise it to top
wmctrl -i -a $WID
exit 0
seth
la source