คำสั่งให้เปิดหน้าต่างเทอร์มินัลใหม่จากเทอร์มินัลปัจจุบันหรือไม่


44

ฉันติดตั้ง xdotool โดยเรียกใช้sudo apt-get install xdotoolและโยน xdotool key ctrl+alt+tคำสั่งเพื่อเปิดหน้าต่างเทอร์มินัลใหม่จากปัจจุบัน แต่มันไม่ทำงาน

คำสั่งให้เปิดหน้าต่างเทอร์มินัลใหม่จาก gnome-terminal ปัจจุบันคืออะไร


1
CTRL + SHIFT + n
Wim

คำตอบ:


65

เพียงแค่คำสั่งนี้จะทำ:

gnome-terminal

โดยปกติถ้าคุณต้องการให้คำสั่งเปิดจากเทอร์มินัลและแยกจากกัน(ดังนั้นมันกลับไปที่พรอมต์โดยไม่ต้องปิดโปรแกรมที่เปิด)คุณต้องใช้สิ่งนี้:

gnome-terminal & disown

อย่างไรก็ตามเทอร์มินัลหลักจะตรวจพบว่ามีการใช้คำสั่งเดียวกันดังนั้นคุณไม่จำเป็นต้องทำเช่นนั้นและgnome-terminalจะพอเพียง นอกจากนี้ยังดูเหมือนว่าจะเกิดขึ้นเมื่อทำงานxfce4-terminalจาก Xfce ของขั้วkonsoleจาก KDE เช่นกัน (ดูเหมือนจะไม่ทำงานเมื่อทำงานxtermจากxterm(เห็นxterm xterm) - การทำงานkonsoleจากคำพังเพย / ความสามัคคีและ Xfce ทำงานของขั้วเช่นกันแต่สำหรับ Xfce ของขั้วใน terminal คำพังเพยคุณ ต้องการ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 จะเปิดแท็บเทอร์มินัลใหม่
GabrielF

2
มันเป็นเทอร์มินัลใหม่ ... แต่อยู่ในแท็บใหม่แทนที่จะเป็นหน้าต่างใหม่
GabrielF

1
ฉันไม่เห็นเหตุผลที่จะใช้xdotool key ctrl+shift+nในขณะที่ใช้งานgnome-terminalคุณมีตัวเลือกอื่น ๆ มากมาย; เห็นman gnome-terminalในแง่นี้
Radu Rădeanu

1
Ctrl + Shift + N จะเปิดหน้าต่างเทอร์มินัลใหม่
Siddhartha

ยังคงคิดว่านี่เรียบร้อย :) มีเทียบเท่าใด ๆ สำหรับเมียร์หรือ Wayland (สำหรับการใช้งานที่เข้ากันไม่ได้กับสิ่งที่เซิร์ฟเวอร์ X)
วิลฟ์

0

สคริปต์ต่อไปนี้จะเปิดแท็บใหม่ในหน้าต่าง gnome-terminal ปัจจุบันและเลือกที่จะตั้งชื่อแท็บนั้น สิ่งนี้ใช้ได้จากหน้าต่างใด ๆ คุณไม่จำเป็นต้องอยู่ในหน้าต่าง gnome-terminal เพื่อเรียกใช้ และถ้าไม่มีการเรียกใช้งาน gnome-terminal มันก็จะเริ่มทำงาน ข้อแม้เดียวคือถ้าคุณเปลี่ยนปุ่มลัดสำหรับการเปิดแท็บใหม่คุณอาจต้องเปลี่ยนสาย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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.