Команда открыть новое окно терминала с текущего терминала?

46

Я установил xdotool, запустив sudo apt-get install xdotoolи бросив xdotool key ctrl+alt+tкоманду, чтобы открыть новое окно терминала из текущего. Но это не работало.

Какова была команда открыть новое окно терминала из текущего gnome-терминала?

Авинаш Радж
источник
1
ctrl + shift + n
wim

Ответы:

67

Просто эта команда сделает:

gnome-terminal

Обычно, если вы хотите, чтобы команда открывалась из терминала и отделялась (чтобы она возвращалась к приглашению без необходимости закрывать открытую программу) , вы должны использовать что-то вроде этого:

gnome-terminal & disown

Однако родительский терминал обнаруживает, что используется та же команда, поэтому вам не нужно этого делать, и этого gnome-terminalбудет достаточно. Это также , кажется, происходит при работе xfce4-terminalс Xfce терминала, konsoleот KDE, как хорошо (не похоже на работу при работе xtermс xterm(также см xterm xterm) - Запуск konsoleот терминальных работ Gnome / Unity & Xfce в качестве хорошо , но для Xfce терминала в гном терминала , который вы нужно xfce4-terminal & disown).

Для получения дополнительной информации посетите 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]
Уилф
источник
1
Вы , вероятно , хотите , чтобы запустить его в фоновом режиме, как это: gnome-terminal &. В противном случае текущий терминал будет непригодным для использования, так как он будет занят работой другого - так что в итоге у вас будет только один используемый терминал, который может упустить точку.
Rafał Cieślak
1
Интересный. Вы, очевидно, правы, однако я тоже не ошибаюсь :) Я только что проверил это в деталях. Если я запускаю, gnome-terminal когда другой экземпляр уже запущен (это может быть тот, который я использую для запуска этой команды) - он действительно сразу завершается, потому что вместо запуска нового экземпляра gnome-terminalон сообщает, что в данный момент запускается один, чтобы открыть новый окно. Tricky. Но если я бегу gnome-terminalот что - нибудь еще , и нет никаких других примеров gnome-terminalработы, он делает , как я говорил в предыдущем комментарии, блокируя терминал , используемый для его запуска.
Rafał Cieślak
1
@ RafałCieślak - в любом случае, konsoleкажется , совсем не нужно ... странно. Я понятия не имею, почему этот вопрос / ответ так популярен :)
Уилф
2
Большое спасибо, если вы хотите открыть терминал с тем же каталогом, вы можете сделать это,gnome-terminal .
kisanme
1
Если вы в Ubuntu MATE (например, 16.x), этоmate-terminal
Фрэнк Нок
8

Команда открыть новое окно терминала с текущего терминала,

xdotool key ctrl+shift+n

Установить xdotool,

sudo apt-get install xdotool
Авинаш Радж
источник
4
Ctrl + Shift + T откроет новую вкладку терминала.
ГабриэльФ
2
Это новый терминал ... но в новой вкладке, а не в новом окне.
ГабриэльФ
1
Я не вижу причин для использования xdotool key ctrl+shift+nво время использования у gnome-terminalвас есть много других вариантов; увидеть man gnome-terminalв этом смысле.
Раду Рэдяну
1
Ctrl + Shift + N откроет новое окно терминала.
Сиддхартха
Все еще думаю, что это аккуратно :) есть ли какой-нибудь эквивалент для Мира или Уэйленда (для реализаций, несовместимых с X-сервером)
Уилф
0

Следующий скрипт откроет новую вкладку в текущем окне терминала gnome и при желании присвоит этой вкладке заголовок. Это работает из любого окна, вам не нужно находиться в окне терминала gnome, чтобы запустить его. И если нет запущенного терминала gnome, он запустится. Единственное предостережение в том, что если вы изменили горячую клавишу для открытия новой вкладки, вам, возможно, придется изменить строку, xdotool key ctrl+Tчтобы вместо нее использовать вашу горячую клавишу.

#!/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
источник