Comando para abrir uma nova janela do terminal a partir do terminal atual?

46

Instalei o xdotool executando sudo apt-get install xdotoole jogue o xdotool key ctrl+alt+tcomando para abrir uma nova janela de terminal da atual. Mas não estava funcionando.

Qual foi o comando para abrir uma nova janela de terminal do atual terminal gnome?

Avinash Raj
fonte
1
Ctrl + Shift + n
wim

Respostas:

67

Apenas este comando fará:

gnome-terminal

Normalmente, se você deseja que um comando seja aberto a partir do terminal e separado (para que ele retorne ao prompt sem precisar fechar o programa aberto) , é necessário usar algo como isto:

gnome-terminal & disown

No entanto, o terminal pai parece detectar que o mesmo comando está sendo usado, portanto você não precisa fazer isso e gnome-terminalserá suficiente. Isso também parece acontecer durante a execução xfce4-terminaldo Xfce do terminal, konsolea partir KDE do bem (não parece trabalho quando executado xterma partir xterm(ver também xterm xterm) - Running konsoledas obras do terminal do Gnome / Unidade e Xfce assim , mas para Xfce do terminal no Terminal do GNOME você necessidade xfce4-terminal & disown).

Para mais informações, visite gnome-terminala página do manual :

 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
fonte
1
Você provavelmente vai querer executá-lo em segundo plano, assim: gnome-terminal &. Caso contrário, o terminal atual ficará inutilizável, pois estará ocupado executando esse outro - então você acaba com apenas um terminal utilizável, o que pode estar faltando.
Rafał Cieślak
1
Interessante. Você aparentemente está certo, no entanto, também não estou errado :) Acabei de verificar isso em detalhes. Se eu executar gnome-terminal enquanto outra instância já estiver em execução (pode ser a que estou usando para iniciar este comando) - ela será concluída imediatamente, porque, em vez de executar uma nova instância gnome-terminal, ele informa que atualmente está executando uma para abrir uma nova janela. Complicado. Mas se eu corro gnome-terminalde qualquer outra coisa , e não há outras instâncias de gnome-terminalexecução, ocorre como expliquei no comentário anterior, bloqueando o terminal usado para iniciá-lo.
Rafał Cieślak
1
@ RafałCieślak - de qualquer maneira, konsolenão parece precisar ... estranho. Eu não tenho idéia por que esta pergunta / resposta é tão popular :)
Wilf
2
Muito obrigado, se você deseja abrir um terminal com o mesmo diretório que você poderia fazer isso,gnome-terminal .
kisanme
1
Se você estiver no Ubuntu MATE (por exemplo, 16.x), é #mate-terminal
Frank
8

Comando para abrir a nova janela do terminal atual,

xdotool key ctrl+shift+n

Para instalar xdotool,

sudo apt-get install xdotool
Avinash Raj
fonte
4
Ctrl + Shift + T abrirá uma nova guia do terminal.
GabrielF
2
É um novo terminal ... mas em uma nova aba em vez de nova janela.
GabrielF
1
Não vejo nenhum motivo para usar xdotool key ctrl+shift+nenquanto estiver usando, gnome-terminalvocê tem muitas outras opções; veja man gnome-terminalneste sentido.
Radu Rădeanu
1
Ctrl + Shift + N abrirá uma nova janela do terminal.
Siddhartha
Ainda acho que essa puro :) há qualquer equivalente para Mir ou Wayland (para implementações não compatíveis com o material servidor X)
Wilf
0

O script a seguir abrirá uma nova aba na janela atual do gnome-terminal e, opcionalmente, dará um título a essa aba. Isso funciona em qualquer janela, você não precisa estar em uma janela do terminal gnome para executá-la. E, se não houver um terminal gnome em execução, ele iniciará um. A única ressalva é que, se você alterou a tecla de atalho para abrir uma nova guia, pode ser necessário alterar a linha xdotool key ctrl+Tpara usar a tecla de atalho.

#!/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
fonte