จะเปลี่ยนชื่อ Gnome-Terminal ได้อย่างไร?


165

ฉันมีเทอร์มินัลหลายตัวที่ทำงานในสภาพแวดล้อมการทำงานของฉันสิ่งที่ฉันต้องการคือการตั้งชื่อเฉพาะสำหรับแต่ละรายการเพื่อให้มีความคิดที่ชัดเจนว่าจุดประสงค์ของเทอร์มินัลเฉพาะนั้นคือ Apache, editing_ini, postgres เป็นต้น ...

แน่นอนจากบรรทัดคำสั่ง


เพิ่มเติมจากความคิดเห็นของ Ward: อย่าลืม "ยกเลิกการตั้งค่า PROMPT_COMMAND" ก่อนที่คุณจะส่งลำดับการหลีกเลี่ยงการเปลี่ยนชื่อมิฉะนั้นการเปลี่ยนแปลงใด ๆ ที่คุณทำจะหายไปทันทีที่พร้อมรับคำเชลล์ถัดไป
Jon Green

สำหรับคำถามที่คล้ายกันสำหรับ KDE ดูที่stackoverflow.com/questions/8782159/…
naught101

ฉันมีปัญหานี้เมื่อเปลี่ยนจาก OS X เป็น Ubuntu หากต้องการรับชื่อที่กำหนดเองภายในการตั้งค่าแบบหลายแท็บฉันใช้gnome-terminal --load-configร่วมกับสคริปต์นี้ที่ฉันเขียน
halfer

3
เพิ่มต่อไปนี้ไปยังไฟล์. bashrc ของคุณในบ้าน dir ของ# set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitleคุณตอนนี้คุณสามารถใช้นามแฝง termttl สำหรับการตั้งค่าชื่อเช่นtermttl askubuntu
urmalp

1
"ได้รับการป้องกัน" ดังนั้นฉันจึงไม่สามารถให้คำตอบได้ Gnome3 เริ่มต้นคือgnome-terminal PROMPT_COMMAND=__vte_prompt_commandสิ่งนี้ใช้ค่าจากโปรไฟล์ในการตั้งค่า เมื่อมีหลายโปรไฟล์แท็บใหม่และเมนูหน้าต่างใหม่จะมีรายการเมนูย่อยสำหรับแต่ละโปรไฟล์ คู่มือวิธีคือการเปิดขั้วใหม่แท็บคลิกขวาที่ชื่อแท็บและเลือกตั้งชื่อ ... (นี่จะอ่านง่ายขึ้นมากในคำตอบที่แยกต่างหาก แต่ ... )
Rich

คำตอบ:


145
  • วิธีที่เป็นมิตรที่สุดคือการเลือกจากเมนู Terminal -> "Set Title ... "

  • อย่างไรก็ตามยังมีวิธีอื่น ๆ ที่คุณสามารถออก

    gnome-terminal --title="SOME TITLE HERE"
    

    สิ่งนี้อาจไม่ให้ผลที่ต้องการเนื่องจากมีโอกาสสูงที่คุณ.bashrcจะเขียนทับพฤติกรรมนั้น

  • นำเราไปสู่วิธีการสุดท้ายซึ่งฉันฉีกขาดไร้ยางอายออก.bashrcไป

    PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'
    

เป็นการอ้างอิงพิเศษนี่คือบรรทัดเฉพาะในของฉัน .bashrc

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'

คุณอาจต้องแสดงความคิดเห็นรหัสนี้ใน ~ / .bashrc ของคุณ

case "$TERM" in
xterm*|rxvt*)
    # JEFFYEE REMOVED because it makes commands to title() not work
    #PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

2
จำเป็นต้องแสดงความคิดเห็นหรือลบตามที่คุณกล่าวถึงเพื่อให้มีผล!
ส่วนบน

1
@Ward: PROMPT_COMMANDเป็นโปรแกรมที่ทำงาน PS1และPS1เป็นสตริงข้อความที่จะแสดง ในตัวอย่างข้างต้นคำสั่งที่เรียกใช้คือechoซึ่งจากนั้นก็พิมพ์ออกสตริง ดูman bashหรือmanpages.ubuntu.com/bashสำหรับรายละเอียดเพิ่มเติม
sladen

29
เทอร์มินัล GNOME 3.16.2 บอกว่าOption "--title" is no longer supported in this version of gnome-terminal.
Ivan Kozik

10
ใน Gnome 3.18.3 ไม่มีรายการ "Set title" ในเมนู: /
shadi

2
สำหรับคนอื่นที่สับสนโดย gobbledegook ในสายข้างต้นพวกเขาเป็นตัวละคร ANSI หลบหนี - ดูเช่นlihaoyi.com/post/…
WillC

65

คำตอบของ Ward นั้นดีมากหากคุณต้องการตั้งชื่อของคุณตามโฮสต์ที่คุณใช้อยู่ ฯลฯ ทุกครั้งที่คุณเปิดเทอร์มินัล หากคุณต้องการตั้งชื่ออย่างรวดเร็วคุณสามารถรัน echo ได้ด้วยตัวเอง:

echo -ne "\033]0;SOME TITLE HERE\007"

หรือทำฟังก์ชั่นง่าย ๆ (ภายในของคุณ~/.bashrc) พูดtermtitle

termtitle() { printf "\033]0;$*\007"; }

termtitle some title hereซึ่งคุณสามารถทำงานกับ


3
หรือในทำนองเดียวกันเราสามารถเพิ่มเป็นนามแฝงทุบตีโดยการเพิ่มบรรทัดด้านล่างใน ~ / .bash_aliases function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titleแล้วใช้: $ title term_title
murarisumit

11
น่าเศร้าที่ดูเหมือนจะไม่ทำงานให้ฉันในเทอร์มินัล GNOME 3.6.2
austinmarton

1
ดูเหมือนจะไม่ทำงานใน xterm 322 หรือ konsole 16.12 ... ฉันไม่รู้ว่ามีวิธีการใหม่หรือไม่น่าเสียดาย :(
naught101

2
@ 3ocene มันไม่สำคัญในกรณีนี้มันเป็นสิ่งเดียวกัน แต่มันก็เป็นนิสัยที่ดีที่จะเข้ามาเพราะเช่น$var_logและ${var}_logแตกต่างกันมากและความแตกต่างอาจทำให้เกิดข้อบกพร่องในสคริปต์
naught101

2
หากไม่ได้ผลสำหรับคุณอาจเป็นเพราะ PROMPT_COMMAND var หรือ PS1 var มีการตั้งค่าไว้ unset PROMPT_COMMANDหรือตั้งค่าเพื่อเปลี่ยนชื่อเช่น export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
gaoithe

32

หากคุณใช้โปรแกรมแก้ไข Vim คุณสามารถเปิดใช้งานตัวเลือกนี้ใน vimrc ของคุณ:

:set title

ซึ่งถูกปิดใช้งานโดยค่าเริ่มต้น มันจะตั้งชื่อเทอร์มินัลสุดเจ๋งที่แสดงชื่อไฟล์ที่คุณกำลังแก้ไขในขณะนี้และสิ่งอื่น ๆ


26

เพื่อความสมบูรณ์ฉันจะเพิ่มว่าคุณสามารถตั้งgnome-terminalชื่อโดยใช้คำสั่งนี้:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

คุณจะต้องติดตั้งแพ็กเกจwmctrlติดตั้ง wmctrlก่อน


1
MyWindowTitle ไม่แสดงในชื่อของเทอร์มินัล มันจะปรากฏขึ้นเมื่อฉันทำ wmctrl -m
sureshvv

2
โปรดทราบว่า wmctrl เปลี่ยนชื่อหน้าต่างไม่ใช่ชื่อแท็บในขณะที่โซลูชันอักขระที่ใช้ Escape จะเปลี่ยนชื่อแท็บ นอกจากนี้ชื่อหน้าต่างจะเปลี่ยนกลับไปเป็นชื่อแท็บดั้งเดิมทันทีที่คุณสลับไปมาระหว่างแท็บต่างๆ
redochka

23

Argh คำตอบมากมาย ...

ฉันพยายามwmctrlซึ่งเกือบจะทำงานได้ยกเว้นฉันไม่สามารถเปลี่ยนชื่อไอคอนได้อย่างน้อยก็ไม่ถาวร

ปัญหาคือว่า PS1 ใน Bash ใน Ubuntu ตั้งชื่อ

ค่าเริ่มต้นของ PS1 คือ

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 

... ซึ่งตั้งชื่อในลำดับการหลบหนีแรก: \e]0;\u@\h: \w\a

ดังนั้นจึงมีวิธีแก้ปัญหาสองวิธี:

โซลูชันที่ 1: ทำให้ PS1 ง่ายขึ้นจากนั้นใช้ PROMPT_COMMAND

เปลี่ยน PS1 เป็นอะไรที่ง่ายกว่า:

PS1="\u@\h:\w\$ "

จากนั้นใช้ PROMPT_COMMAND:

PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'

โซลูชันที่ 2: แก้ไข PS1 โดยตรง

เพียงปรับเปลี่ยน PS1 ด้วยชื่อใหม่:

PS1='\[\e]0;newtitle\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

สวัสดีฉันชอบคำตอบของคุณค่อนข้างมาก คุณจะอธิบายบทบาทของ]0;รหัสของคุณหรือไม่? ฉันคิดว่าฉันพบความหมายของการecho -e '\007 \033'ที่มีascii -oคำสั่ง ... แม้ว่าฉันตามความเป็นจริงไม่แน่ใจว่าสิ่งที่ทำมีทั้ง ... ขอบคุณ ...
isomorphismes

2
@iso \eหรือ\033เป็นอักขระ escape (ESC) ซึ่งเริ่มต้นลำดับ escape ]เริ่มคำสั่งระบบปฏิบัติการ (OSC) สำหรับ xterm 0;หมายถึง "ตั้งชื่อ" และ\aหรือ\007เป็นตัวอักษรกระดิ่ง (BEL) ที่ยุติ OSC ข้อมูลเพิ่มเติม: en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences
wjandrea

@wjandrea ฉันกำลังมองหาตัวอักษรที่เทียบเท่า ( \eและ\a) \033และ\007แต่ฉันไม่สามารถหาพวกเขาได้อย่างแน่นอนเพราะฉันไม่รู้คำหลักที่เหมาะสมในการพิมพ์ใน google ลิงค์ที่คุณให้มีประโยชน์เช่นกัน คุณช่วยแปลงความคิดเห็นของคุณเป็นคำตอบได้ไหม?
SebMa

10

หากคุณเป็นผู้ใช้อูบุนตูคุณสามารถเปลี่ยนชื่อของแท็บ gnome-ขั้วโดยใช้ฮัด

ในขณะที่อยู่ใน gnome-terminal ให้กด Alt เพื่อเปิด HUD พิมพ์ตัวอักษรสองสามตัวแรกเช่น "tit" กดปุ่ม enter แล้วพิมพ์ชื่อใหม่ของคุณ

นี่เป็นวิธีการที่รวดเร็วมากและหลีกเลี่ยงการใช้เมาส์


1
จริง วางมือบนคีย์บอร์ด ชื่อที่มีอยู่จะปรากฏขึ้นดังนั้นจึงเป็นไปอย่างรวดเร็วและง่ายดายเพียงแก้ไขที่มีอยู่ด้วยวิธีนี้
Brent Faust

titสำหรับ Ubuntu แบบภาษาอังกฤษเท่านั้น
törzsmókus

และตัวเลือกทั้งหมดได้ถูกลบออก :(
törzsmókus

F2ที่สำคัญยังหลีกเลี่ยงเมาส์
isomorphismes

@ törzsmókus And French - titre ;)
wjandrea

3

อีกวิธีในการเปลี่ยนชื่อของgnome-terminalโดยใช้gconftool-2; สิ่งนี้จะเปลี่ยนชื่อเทอร์มินัลเริ่มต้นสำหรับโปรไฟล์ที่เลือกดังนั้นคุณสามารถมีโปรไฟล์ต่าง ๆ ที่เกี่ยวข้องกับชื่อเช่น 'Apache', 'Editing' ฯลฯ จากนั้นคุณจะเปิดgnome-terminalใช้โปรไฟล์ที่เหมาะสมเพื่อรับชื่อเทอร์มินัลที่คุณระบุ นี่ตรงกันข้ามกับgnome-terminal --title "name"การเปลี่ยนแปลงชื่อเรื่องต่อเทอร์มินัล แต่ไม่มีผลต่อชื่อเริ่มต้นที่ระบุในโปรไฟล์

คุณสามารถใช้คำสั่งต่อไปนี้ในสคริปต์เพื่อตั้งชื่อของเทอร์มินัลสำหรับโปรไฟล์และคุณสามารถเปลี่ยนชื่อเทอร์มินัลในบางช่วงเวลาของวันเพื่อเตือนคุณถึงสิ่งต่าง ๆ :

gconftool-2 --set /apps/gnome-terminal/profiles/Default/title --type=string "Apache"

นี่เป็นโปรไฟล์เริ่มต้น แต่คุณสามารถตั้งชื่อสำหรับโปรไฟล์อื่นเช่นกันโดยเปลี่ยนตัวอย่างเช่นDefaultเป็นโปรไฟล์อื่นเช่นProfile0:

gconftool-2 --set /apps/gnome-terminal/profiles/Profile0/title --type=string "Editing"

ฉันคิดว่าวิธีการเปลี่ยนชื่อนี้มีการใช้งานเพราะวิธีที่มันสามารถใช้ในการเขียนสคริปต์หรือเป็นวิธีบรรทัดคำสั่งอย่างรวดเร็วเพื่อตั้งชื่อสำหรับโปรไฟล์ โปรดทราบว่าบางครั้งคุณต้องเปิดเครื่องอีกครั้งด้วยโปรไฟล์ที่ระบุเพื่อให้การgconftool-2ตั้งค่ามีผล การตั้งค่าที่สมบูรณ์พร้อมใช้งานสำหรับสามารถแสดงด้วยgnome-terminalgconftool-2 -R /apps/gnome-terminal


3

โซลูชันอื่นคือใช้ xdotool เพื่อจำลองการกดแป้นอาจมีประโยชน์ในสคริปต์:

  1. ตั้งค่าแป้นพิมพ์ลัดใน gnome-terminal:

    Edit > Keyboard Shortcuts... > Terminal > Set Title
    

    ยกตัวอย่างเช่น assingShift+Ctrl+Y

  2. ติดตั้งxdotoolหากคุณยังไม่มี:

    sudo apt-get install xdotool
    
  3. ลำดับของคำสั่งต่อไปนี้ (ที่คุณสามารถใช้ในสคริปต์ bash) จะตั้งชื่อเทอร์มินัล / แท็บ (ยกเว้นช่องว่างด้วย\):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [ไม่บังคับ] คุณสามารถใช้ xdotool เพื่อเปิดแท็บใหม่และตั้งชื่อด้วยคำสั่งด้านบนโดยใช้:

    xdotool key ctrl+shift+t
    

    พิจารณาเพิ่มเวลาพักเครื่องก่อนและหลังการเปิดแท็บใหม่เช่นsleep 1(เพื่อรอ 1 วินาที)

นี่ไม่ใช่ทางออกที่หรูหราที่สุด แต่ใช้งานได้สำหรับฉัน! คำตอบก่อนหน้านี้ไม่ทำงานในกรณีของฉัน ฉันใช้ gnome-terminal ใน Ubuntu 14.04 และฉันต้องการสร้างสคริปต์ทุบตี


1

หากต้องการแสดงเฉพาะไดเรกทอรีการทำงานปัจจุบันในชื่อให้ลองทำใน '.bashrc' ของคุณ:

PROMPT_COMMAND='echo -ne "\033]0; ${PWD##*/}\007"'

หรือ

PROMPT_COMMAND='echo -ne "\033]0;$(basename ${PWD})\007"' 

0

นี้ทำงานในของฉัน3.18.3 Gnome ร์มินัล

แก้ไขไฟล์. bashrcของคุณและเพิ่มฟังก์ชั่นนี้

# Update gnome terminal title
function termtitle() {
    # take argument
    TITLE=$1
    shift
    # update title
    PROMPT_COMMAND='echo -ne "\033]0; $TITLE \007"'
}

อย่าลืมให้sourceคุณ.bashrcไฟล์

$ source ~/.bashrc

จากนั้นคุณสามารถอัปเดตคุณจะสามารถเปลี่ยนชื่อเทอร์มินัลดังนี้:

$ termtitle "MariaDB CLI"

0

คำตอบของฉันคล้ายกับคำตอบที่ใหม่กว่าซึ่งไม่ได้ผลสำหรับฉัน คำตอบที่เก่าที่สุดไม่ทำงานอีกต่อไป คำตอบเก่าตรงกลางพิมพ์มากเกินไปดังนั้นฉันจึงสร้างฟังก์ชั่นใน~/.bashrcไฟล์ของฉัน:

function termtitle() { PS1="${PS1/\\u@\\h: \\w/$@}"; }

หลังจากเพิ่มหรือเปลี่ยนฟังก์ชั่นหรือถ้าคุณต้องการที่จะตั้งชื่อเรื่องการใช้งานครั้งที่สอง:

. ~/.bashrc
termtitle Special Projects

มิฉะนั้นเป็นประจำทุกวันเพียงใช้termtitleกับชื่อใหม่


-1

ในกรณีที่วิญญาณที่ยากจนอย่างฉันถูกบังคับให้ใช้ tcsh ลองอะไรแบบนี้ใน. csrc ของคุณ:

set prompt='%{\033]0;%n@%m\007%}%~%# '

แหล่งที่มาและรายละเอียดเพิ่มเติม: http://tldp.org/HOWTO/Xterm-Title-4.html


สิ่งบ่งชี้ว่าทำไมคำตอบของฉันถูกโหวตให้ดี :-(
spookypeanut

-1

หากคุณใช้ gnome 3 Terminal > Set Titleตัวเลือกเมนูที่สะดวกจะถูกลบออก คุณสามารถติดตั้งเทอร์มินัลแบบแยกส่วนของ gnome 2 ซึ่งยังมีตัวเลือกเมนู "ตั้งชื่อ" และเรียกใช้แทน:

sudo apt-get install mate-terminal

แทนที่จะเรียกใช้ "Terminal" ให้เรียกใช้ "MATE Terminal" คุณควรเลือกคู่ครองด้วยsudo update-alternatives --config x-terminal-emulatorเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.