Polecenie otwarcia nowego okna terminala z bieżącego terminala?

45

Zainstalowałem xdotool, uruchamiając sudo apt-get install xdotooli rzucając xdotool key ctrl+alt+tpolecenie, aby otworzyć nowe okno terminala od bieżącego, ale to nie działało.

Jaka była komenda, aby otworzyć nowe okno terminala z obecnego terminalu gnome?

Avinash Raj
źródło
1
ctrl + shift + n
wim

Odpowiedzi:

66

Tylko to polecenie wykona:

gnome-terminal

Zwykle jeśli chcesz, aby polecenie otwierało się z terminala i rozdzielało (więc powraca do monitu bez konieczności zamykania otwartego programu) , musisz użyć czegoś takiego:

gnome-terminal & disown

Jednak wydaje się, że terminal nadrzędny wykrywa, że ​​używane jest to samo polecenie, więc nie musisz tego robić i gnome-terminalwystarczy. Wydaje się to również zdarzyć, gdy uruchomiony xfce4-terminalz Xfce na Terminal, konsolez KDE jak również (nie wydają się działać podczas pracy xtermz xterm(patrz również xterm xterm) - Uruchamianie konsolez prac gnome-terminal / Unity & Xfce , a także , ale dla Xfce terminal GNOME Terminal ty potrzeba xfce4-terminal & disown).

Więcej informacji na stronie gnome-terminalpodręcznika :

 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
źródło
1
Prawdopodobnie chcesz, aby uruchomić go w tle, tak: gnome-terminal &. W przeciwnym razie bieżący terminal będzie bezużyteczny, ponieważ będzie zajęty uruchamianiem tego drugiego - więc powstanie tylko jeden terminal, który może nie mieć sensu.
Rafał Cieślak
1
Ciekawy. Najwyraźniej masz rację, jednak nie mam racji :) Po prostu sprawdziłem to szczegółowo. Jeśli uruchomię, gnome-terminal gdy inna instancja jest już uruchomiona (może to być ta, której używam do uruchomienia tej komendy) - to rzeczywiście kończy się natychmiast, ponieważ zamiast uruchomienia nowej instancji gnome-terminal, informuje, że obecnie uruchomiona, aby otworzyć nową okno. Zdradliwy. Ale jeśli uruchomię gnome-terminalz czegokolwiek innego i nie ma innych przypadków gnome-terminaluruchamiania, robi to, jak wyjaśniłem w poprzednim komentarzu, blokując terminal użyty do jego uruchomienia.
Rafał Cieślak
1
@ RafałCieślak - zresztą konsolenie wydaje się wcale ... dziwny. Nie mam pojęcia, dlaczego to pytanie / odpowiedź jest tak popularne :)
Wilf
2
Dziękuję bardzo, jeśli chcesz otworzyć terminal z tym samym katalogiem, możesz to zrobić,gnome-terminal .
kisanme
1
Jeśli korzystasz z Ubuntu MATE (np. 16.x), tomate-terminal
Frank Nocke
8

Polecenie otwarcia nowego okna terminala z bieżącego terminala,

xdotool key ctrl+shift+n

Aby zainstalować xdotool,

sudo apt-get install xdotool
Avinash Raj
źródło
4
Ctrl + Shift + T otworzy nową kartę terminala.
GabrielF,
2
Jest to nowy terminal ... ale w nowej karcie zamiast w nowym oknie.
GabrielF,
1
Nie widzę żadnego powodu do korzystania xdotool key ctrl+shift+npodczas korzystania z gnome-terminalciebie, masz wiele innych opcji; patrz man gnome-terminalw tym sensie.
Radu Rădeanu
1
Ctrl + Shift + N otworzy nowe okno terminala.
Siddhartha,
Wciąż myślę, że to schludne :) czy istnieje jakikolwiek odpowiednik dla Mira lub Waylanda (dla implementacji niezgodnych z serwerami X)
Wilf
0

Poniższy skrypt otworzy nową kartę w bieżącym oknie terminalu gnome i opcjonalnie nada tej karcie tytuł. Działa to z dowolnego okna, nie musisz być w oknie terminalu gnome, aby je uruchomić. A jeśli nie ma uruchomionego terminalu gnomów, uruchomi go. Jedynym zastrzeżeniem jest to, że jeśli zmieniłeś skrót do otwierania nowej karty, być może będziesz musiał zmienić linię, xdotool key ctrl+Taby użyć skrótu.

#!/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
źródło