ติดตั้ง Ubuntu ใหม่ 15.04: ไม่สามารถเปลี่ยนชื่อแท็บ gnome-terminal


38

ใน Ubuntu 14.10 ถ้าฉันเปิด Terminal Tab หลายอันฉันสามารถคลิกขวาที่แท็บ Terminal แล้วเปลี่ยนชื่อได้ ใน Ubuntu 15.04 ฉันหาคุณสมบัตินี้ไม่พบ

มีวิธีง่าย ๆ ที่จะเอามันกลับมาหรือไม่?

นี่เป็นรุ่นปัจจุบัน:

$ gnome-terminal --version
GNOME Terminal 3.14.2

คำตอบ:


21

ตอบที่นี่

ฉันพูด:

user titleรหัสถูกลบออก1gnome-terminal 3.14จาก มีเพียงวิธีเดียวในการตั้งชื่อโดยใช้ลำดับการยกเว้น - เช่นbash:

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

1: คำพังเพยดูข้อผิดพลาด 724110และคำพังเพยข้อผิดพลาด 740188


10
ขอบคุณสำหรับคำตอบ. เป็นเรื่องน่าละอายที่หายไปฉันหวังว่าพวกเขาจะเพิ่มมันกลับมาในรุ่นถัดไปในระหว่างนี้ฉันจะใช้ลำดับการยกเว้นแทนวิธีการคลิกขวา
ทอม

2
@Tom เขียนรายงานข้อผิดพลาด =)
AB

13
มันไม่ใช่แค่ความอัปยศ: มันไม่สมเหตุสมผล ฉันมีความคิดที่ไม่ดีในการ "อัปเกรด" จาก Debian Wheezy เป็น Jessie เพื่อมีทุกอย่าง (ยังไม่แน่ใจ) ฉันเคยมีมา แต่แย่กว่านั้น การตัดสินใจที่ไม่ดีและข้อบกพร่องที่โง่ (เช่นใน gdm3 รายการของ wm / session ที่เป็นไปได้ที่ฉันติดตั้งไม่พอดีหรือไม่เลื่อนดังนั้นมันจึงเป็นเรื่องง่ายและดังนั้นฉันจึงไม่สามารถเลือก wm ทั้งหมดที่ฉันมี) ให้ฉัน GNOME gnome-shellเป็นวาระตั้งแต่ มันยังหายไปจากเมนูเพื่อเปิดเทอร์มินัลใหม่ในหน้าต่างหรือแท็บใหม่ (แต่คุณยังสามารถทำได้ผ่านทางลัดทำไม?! แทนที่ทุกอย่างด้วยปุ่มสมาร์ทขนาดใหญ่: คลิกและไม่ทำอะไรเลย!)
ShinTakezou

2
โดยปกติแล้วรุ่นใหม่จะเพิ่มและไม่ลบคุณสมบัติ
angelcervera

2
ฉันสร้างคำสั่ง (เชลล์สคริปต์) เรียกว่าแท็บที่มีเพียง echo -ne "\ 033] 0; $ 1 \ 007" ดังนั้นตอนนี้ในแท็บใด ๆ ฉันสามารถเรียกใช้แท็บ TABNAME เพื่อตั้งชื่อแท็บ ไม่สะดวกเท่ากับการคลิกขวาที่แท็บเพื่อเปลี่ยนชื่อ แต่จะทำทันที ขอบคุณ AB!
Brian Pipa

31

.bashrcวิธีการแก้ปัญหาที่เสนอโดยเคอร์บี้ทำงานสำหรับฉัน:

set-title(){
  ORIG=$PS1
  TITLE="\e]2;$@\a"
  PS1=${ORIG}${TITLE}
}

จากพรอมต์ของฉัน: $ set-title test-title


2
ทำงานได้ดีสำหรับฉันที่ 15.10 ข้อแม้เพียงข้อเดียวที่ทุกครั้งที่คุณเรียกใช้คุณผนวกเข้ากับ PS1 ดังนั้นอย่าทำสิ่งนี้จากสคริปต์ หลังจากที่ฉันเรียกมันสองสามครั้งด้วยset-title "longer and ":echo $PS1 \[\e]0; \u@\h: \w \a\]\u@\h:\w\[\033[m\]$(__git_ps1)$ \e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a
ahcox

1
ทำงานได้สำหรับฉันบน Ubuntu 16.04!
โปรแกรม

1
ทำงานเหมือนจับใจ !!
sharadendu sinha

ฉันจะเปลี่ยนชื่อเรื่องได้อย่างไรในขณะที่กระบวนการทำงานเบื้องหน้ากำลังทำงานอยู่ซึ่งฉันไม่ต้องการยกเลิก
Jānis Elmeris

1
ฉันคิดว่าคุณสามารถทำได้โดยหยุดกระบวนการโดยใช้Control + Zจากset-title Xนั้นfgหยุดการทำงานต่อ
ronan_mac

18

ฉันไม่อยากจะเชื่อเลยว่าพวกเขานำคุณลักษณะที่เป็นมิตรกับผู้ใช้ออกเช่นนี้

ฉันเปลี่ยนมาใช้ ROXTerm ( http://roxterm.sourceforge.net ) ซึ่งทำงานได้ดีมาก มันบรรจุใน Ubuntu:

sudo apt-get install roxterm

จากนั้นให้ไดโนเสาร์ดำเนินต่อไปในแบบของตัวเอง ;-)


1
ฉันจะเปลี่ยนชื่อแท็บใน roxterm ได้อย่างไร ฉันหามันไม่เจอ
Halil

จะทำงานกับ 16.04 ด้วย
prusswan

ว้าวไม่สามารถตั้งค่าเทอร์มินัลเป็นพื้นหลังด้วย gnome-terminal และฉันไม่เคยเข้าใจว่าทำไม ... มันเป็นปัญหาของเทอร์มินัลเอง พื้นหลังเทอร์มินัล devilspie ทำงานได้ดีกับ roxterm
erm3nda

1
RoxTerm นั้นยอดเยี่ยมและยังใช้งานได้ แต่น่าเศร้าที่จะไม่ดำเนินต่อไปนานกว่านี้: sadface:: sourceforge.net/p/roxterm/discussion/422638/thread/60da6975
วิลเลียมส์

ฉันได้เปลี่ยนมาใช้ Terminator แล้วตั้งแต่นั้นมาและไม่ต้องใช้ RoxTerm อีกต่อไป ....
Michael Opdenacker

14

ฉันได้ลอง RoxTerm ตามที่แนะนำไว้ข้างต้นด้วยผลลัพธ์ที่ดี แต่ฉันตัดสินบนเทอร์มินัล MATE ซึ่งเป็นส่วนหนึ่งของโครงการ MATE ซึ่งเป็นความต่อเนื่องของ Gnome 2 ในวันที่ 15.04:

sudo apt-get install mate-terminal

เทอร์มินัลนั้นขึ้นอยู่กับรหัสเทอร์มินัล Gnome


ความเห็น: มันยากที่จะเข้าใจความคิดของ Gnome Terminal devs มีการพูดคุยกันมากมายเกี่ยวกับ "วิธี" ในการตั้งชื่อแท็บเทอร์มินัลและวิธีที่จะทำให้ถูกต้องได้ยาก หากเป็นเช่นนั้นเหตุใดจึงทำให้ผู้ใช้ตั้งชื่อได้ยากขึ้น ไม่ฉลาดเลย


6

ตอนนี้ฉันตรวจสอบเรื่องนี้เพื่อส่วนที่ดีกว่าของวันและในที่สุดก็พบวิธีการตั้งชื่อนี้ มันทำผ่าน escape sequences ซึ่งเริ่มต้นด้วย \ e] 0; และลงท้ายด้วยอักขระ BEL (= \ 007 = \ a) ซึ่งแตกต่างจากที่ฉันได้กล่าวไว้ข้างต้นการสื่อสารจากเชลล์กลับไปยังแอปพลิเคชันเทอร์มินัลนั้นเป็นไปได้ จำกัด มากผ่านทางลำดับการหลบหนี (มีอีกไม่กี่)

เกี่ยวกับเรื่องนี้จากด้านบน:

PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'

มันสามารถทำงานได้ แต่มันก็ไม่ได้เสมอไป PROMPT_COMMANDเป็นตัวแปรที่เนื้อหาจะถูกดำเนินการในแต่ละครั้งที่คุณส่งคำสั่งดังนั้นมันจึงส่งลำดับการหลบหนีนี้ อย่างไรก็ตามสิ่งนี้สามารถถูก overriden โดยลำดับ escape ในตัวแปร PS1 ซึ่งตั้งค่าพรอมต์บรรทัดคำสั่ง นี่คือเหตุผลที่ข้างต้นไม่มีผลกระทบที่นี่

จากการติดตั้ง Ubuntu ที่เก่ากว่าฉันคว้าสิ่งนี้ซึ่งตั้งค่าพรอมต์คำสั่ง (ส่วนที่ถูกต้องหลังจากนั้น]) และยังส่งลำดับหนีที่ต้องการ (ส่วนซ้ายขึ้นไปและรวมถึง]):

PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "

สิ่งนี้น่าจะมีประสิทธิภาพดีกว่าเพราะไม่จำเป็นต้องตีความ$PROMPT_COMMANDแต่ละครั้ง นอกจากนี้ยังมีตัวเลือกอื่น ๆ อีกมากมายเพราะทุบตีมีลำดับหนีเพิ่มเติมได้ที่นี่เช่น\uชื่อผู้ใช้ในปัจจุบัน\Wสำหรับชื่อไดเรกทอรีปัจจุบันหรือสำหรับเส้นทางทั้งหมดของไดเรกทอรีการทำงานปัจจุบันทางเลือกที่ถูกตัดไปเพียงไม่กี่ครั้งสุดท้ายโดยในจำนวน\w $PROMPT_DIRTRIMดูบทPROMPTINGในหน้า Bash man ยังรับทราบว่าลำดับหนีได้นอกจากนี้ยังถูกล้อมรอบด้วย\[และ\]ที่นี่

หากต้องการตั้งชื่อแบบตายตัวสิ่งนี้จะทำงาน:

PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "

สนุก!


ในระหว่างการสอบสวนของฉันฉันพยายามทำความเข้าใจกับซอร์สโค้ด gnome-terminal ซึ่งนำไปสู่ซอร์สโค้ด vte และมีการสนับสนุนการตั้งค่าชื่อและลำดับการอ่าน escape ถือว่ามีความเสี่ยงด้านความปลอดภัย: ดูที่นี่ (กรณีที่ 20, กรณีที่ 21) และที่นี่ ("การรายงานชื่อหน้าต่าง")


ชุดนี้ชื่อ แต่ยังเช็ดออกข้อกำหนดก่อนหน้านี้PS1สำหรับการใช้งานอื่น ๆ เช่นการตั้งค่าพรอมต์คำสั่งที่กำหนดเอง ฉันเพิ่งลองเพิ่มลำดับการหลีกของคุณไปยังPS1เนื้อหาที่มีอยู่และดูเหมือนว่าจะใช้งานได้ เช่นนี้: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
ahcox

5

การตั้งค่า $ PROMPT_COMMAND ตามที่แสดงด้านบนมีผลเป็นศูนย์ที่นี่ ไม่แปลกใจเลยเพราะ Bash ทำงานภายในเทอร์มินัลและกระบวนการพาเรนต์ (ที่นี่: gnome-terminal) ไม่สามารถอ่านสภาพแวดล้อมของเด็ก ๆ บนระบบปฏิบัติการยูนิกซ์ ใช้สิ่งที่ง่ายกว่าเช่น

PROMPT_COMMAND='echo bla'

ดำเนินการecho blaไม่มีอะไรเกิดขึ้น

แก้ไข: ต้องห่อในลำดับหนีดูคำตอบอื่น ๆ ของฉัน แม้ว่าการอ่านสภาพแวดล้อมของเด็กเป็นไปไม่ได้ แต่การสื่อสารบางอย่างกลับไปที่ผู้ปกครองคือผ่านลำดับเหล่านี้

ใน Gnome bug 740188 พวกเขาพูดถึงการกำหนดฟังก์ชั่น title () ใน. bashrc เปิดแท็บที่แตกต่างกันสำหรับแต่ละแท็บหรือไม่ แฮ็คที่น่าเกลียดอย่างรุนแรงไปข้างหน้าถ้าเป็นไปได้เลย!

แม้แต่คำอธิบายอื่น ๆ เกี่ยวกับ Stackexchange พูดคุยเกี่ยวกับการตั้งค่า $ PS1 (และรับ upvoted) ขออภัยไม่ไม่ใช่ชื่อนั่นคือพรอมต์คำสั่ง

กล่าวโดยย่อ: พวกเขาทำสิ่งสกปรกเกินกว่าจะซ่อมเพื่อประหยัดพื้นที่เล็กน้อยในกล่องโต้ตอบการตั้งค่า พระเจ้าช่วย

ตอนนี้โอกาสเดียวที่จะได้รับการตัดสินใจจากผู้พัฒนากลับคืนมาคือก่อให้เกิด shitstorm ที่รุนแรงมิฉะนั้นพวกเขาก็เพียงปิดรายงานข้อผิดพลาดของคุณในไม่กี่วินาที (ลองหลายครั้งหลายครั้ง) เราจะสร้าง shitstorm นี้ได้อย่างไร

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