J'ai installé xdotool en exécutant Sudo apt-get install xdotool
et en lançant la commande xdotool key ctrl+alt+t
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?
Juste cette commande fera:
gnome-terminal
Normalement, si vous voulez qu'une commande soit ouverte depuis le terminal et séparée (elle retourne donc à l'invite sans avoir à fermer le programme ouvert) , vous devez utilisez 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-terminal
suffira. Cela semble également se produire lorsque xfce4-terminal
est exécuté à partir du terminal de Xfce, konsole
de KDE également (ne semble pas fonctionner lorsque xterm
est exécuté à partir de xterm
(voir aussi xterm xterm
) - Exécution de konsole
à partir de Gnome/Unity & Xfce Le terminal fonctionne également , mais pour le terminal de Xfce dans gnome terminal, vous avez besoin de xfce4-terminal & disown
).
Pour plus de visite page de manuel de gnome-terminal
:
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]
Commande pour ouvrir une nouvelle fenêtre de terminal à partir du terminal actuel,
xdotool key ctrl+shift+n
Pour installer xdotool
,
Sudo apt-get install xdotool
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, vous n'avez pas besoin 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+T
pour 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