Команда відкрити нове вікно терміналу з поточного терміналу?


45

Я встановив xdotool, запустивши sudo apt-get install xdotoolта кинувши xdotool key ctrl+alt+tкоманду, щоб відкрити нове вікно терміналу з поточного. Але це не працювало.

Якою була команда відкрити нове вікно терміналу з поточного gnome-терміналу?


1
ctrl + shift + n
wim

Відповіді:


66

Просто ця команда виконає:

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він говорить про те, що в даний час працює один, щоб відкрити новий вікно. Хитрий. Але якщо я запускаюсь gnome-terminalвід будь-чого іншого , а інших випадків gnome-terminalзапуску немає, це робиться так, як я пояснював у попередньому коментарі, блокуючи термінал, який використовувався для його запуску.
Rafał Cieślak

1
@ RafałCieślak - все одно, konsoleздається , зовсім не потрібен ... дивний. Я поняття не маю, чому це питання / відповідь настільки популярний :)
Вільф

2
Дуже дякую, якщо ви хочете відкрити термінал з тим самим каталогом, ви могли б це зробити,gnome-terminal .
kisanme

1
Якщо ви перебуваєте на Ubuntu MATE (наприклад, 16.x), цеmate-terminal
Frank Nocke,

8

Команда відкрити нове вікно терміналу з поточного терміналу,

xdotool key ctrl+shift+n

Щоб встановити xdotool,

sudo apt-get install xdotool

4
Ctrl + Shift + T відкриє нову вкладку терміналу.
ГабріельF

2
Це новий термінал ... але в новій вкладці, а не в новому вікні.
ГабріельF

1
Я не бачу причин використовувати xdotool key ctrl+shift+nпід час використання у gnome-terminalвас є багато інших варіантів; бачити man gnome-terminalв цьому сенсі.
Radu Rădeanu

1
Ctrl + Shift + N відкриє нове вікно терміналу.
Сіддхартха

Все-таки подумайте, що це охайно :) чи є еквівалент для Mir чи Wayland (для реалізацій, не сумісних із X серверними матеріалами)
Wilf

0

Наступний скрипт відкриє нову вкладку в поточному вікні терміналу 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.