Làm cách nào để thay đổi tiêu đề Gnome-Terminal?


165

Tôi có một số trường hợp thiết bị đầu cuối chạy trong môi trường làm việc của tôi, điều tôi muốn là đặt tiêu đề cụ thể cho từng thiết bị, để có ý tưởng rõ ràng mục đích cụ thể phục vụ mục đích gì, ví dụ như Apache, edit_ini, postgres, v.v.

Tất nhiên từ dòng lệnh.


Thêm vào nhận xét của Ward: Đừng quên "hủy đặt PROMPT_COMMAND" trước khi bạn gửi chuỗi thoát thay đổi tiêu đề, nếu không, mọi thay đổi bạn thực hiện sẽ bị mất ngay sau dấu nhắc shell tiếp theo.
Jon Green

Đối với một câu hỏi tương tự cho KDE, hãy xem stackoverflow.com/questions/8782159/ từ
naught101

Tôi gặp vấn đề này khi chuyển từ OS X sang Ubuntu. Để có được các tiêu đề tùy chỉnh trong thiết lập nhiều tab, tôi đã sử dụng gnome-terminal --load-configcùng với tập lệnh này tôi đã viết.
halfer

3
add sau vào file .bashrc của bạn trong thư mục nhà của bạn # set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitlebây giờ bạn có thể sử dụng termttl bí danh cho thiết tiêu đề ví dụtermttl askubuntu
urmalp

1
"Được bảo vệ" vì vậy tôi không thể cung cấp câu trả lời. Gnome3 gnome-terminalmặc định là PROMPT_COMMAND=__vte_prompt_command. Điều này sử dụng các giá trị từ Hồ sơ trong prefs. Khi tồn tại nhiều cấu hình, các mục menu Tab mớiCửa sổ mới có một mục menu con cho mỗi Cấu hình. Cách thủ công là để mở một tab mới thiết bị đầu cuối, nhấn chuột phải vào tiêu đề tab và chọn Set Tiêu đề ... . (Điều này sẽ đọc dễ dàng hơn nhiều trong một câu trả lời riêng biệt, nhưng ...)
Rich

Câu trả lời:


145
  • Cách thân thiện nhất là chọn nó từ menu Terminal -> "Đặt tiêu đề ...".

  • Có nhiều cách khác, tuy nhiên, bạn cũng có thể phát hành

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

    Điều này có thể không mang lại hiệu quả mong muốn vì có khả năng lớn là bạn .bashrcghi đè lên hành vi đó.

  • Đưa chúng tôi đến phương pháp cuối cùng, mà tôi xấu hổ xé toạc ra .bashrc.

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

Là một tài liệu tham khảo thêm, đây là dòng đặc biệt trong tôi .bashrc

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

Bạn cũng có thể cần nhận xét mã này trong ~ / .bashrc của bạn

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
Cần bình luận hoặc loại bỏ như bạn đã đề cập để có hiệu lực!
cởi trần

1
@Ward: PROMPT_COMMANDlà một chương trình để chạy. PS1PS1là các chuỗi văn bản được hiển thị. Trong ví dụ trên, lệnh đang chạy là echo, sau đó chỉ cần in ra một chuỗi. Xem man bashhoặc manpages.ubfox.com/bash để biết thêm chi tiết.
sladen

29
Thiết bị đầu cuối Gnome 3.16.2 cho biếtOption "--title" is no longer supported in this version of gnome-terminal.
Ivan Kozik

10
Trên Gnome 3.18.3, không có mục "Đặt tiêu đề" trong các menu: /
shadi

2
Đối với bất kỳ ai khác bị nhầm lẫn bởi gobbledegook trong các chuỗi ở trên, chúng là các ký tự thoát ANSI - xem ví dụ: lihaoyi.com/post/ chủ
WillC

65

Câu trả lời của Ward rất tuyệt nếu bạn muốn đặt tiêu đề của mình dựa trên máy chủ nào bạn đang sử dụng, v.v. mỗi khi bạn mở một thiết bị đầu cuối. Nếu bạn chỉ muốn nhanh chóng đặt tiêu đề, bạn có thể tự chạy echo:

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

hoặc thực hiện một chức năng đơn giản (bên trong của bạn ~/.bashrc), nóitermtitle

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

mà bạn có thể chạy với termtitle some title here.


3
hoặc tương tự, chúng ta có thể thêm dưới dạng bí danh bash bằng cách thêm các dòng bên dưới vào ~ / .bash_aliases function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titlevà sau đó sử dụng: $ title term_title
murarisumit

11
Đáng buồn thay, dường như không hoạt động với tôi trong thiết bị đầu cuối Gnome 3.6.2.
austinmarton

1
Cũng không có vẻ hoạt động trong xterm 322 hoặc konsole 16.12 ... Tôi không biết nếu có một phương pháp mới, thật không may :(
naught101

2
@ 3ocene thực sự không quan trọng trong trường hợp này, chúng là cùng một thứ, nhưng đó là một thói quen tốt để vào, vì ví dụ $var_log${var}_loglà những thứ rất khác nhau, và sự khác biệt có thể gây ra lỗi trong các tập lệnh.
ness101

2
nếu nó không hoạt động với bạn thì có lẽ là do PROMPT_COMMAND var hoặc PS1 var được đặt và đang hoạt động quá mức. unset PROMPT_COMMANDhoặc đặt nó để nó cũng thay đổi tiêu đề, vd export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
gaoithe

32

Nếu bạn sử dụng trình soạn thảo Vim, bạn cũng có thể bật tùy chọn này trong vimrc của mình:

:set title

được tắt theo mặc định. Nó sẽ đặt tiêu đề thiết bị đầu cuối tuyệt vời hiển thị tên tệp mà bạn đang chỉnh sửa tại thời điểm này và một số thứ khác.


26

Để hoàn thiện, tôi sẽ thêm rằng bạn cũng có thể đặt gnome-terminaltiêu đề bằng lệnh này:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

Bạn sẽ cần cài đặt gói wmctrlCài đặt wmctrl trước.


1
MyWindowTitle không hiển thị trong tiêu đề của thiết bị đầu cuối. Nó hiện lên khi tôi làm wmctrl -m.
sureshvv

2
Lưu ý rằng wmctrl thay đổi tiêu đề cửa sổ chứ không phải tiêu đề tab, trong khi giải pháp ký tự thoát thay đổi tiêu đề tab. Ngoài ra, tiêu đề cửa sổ thay đổi trở lại tiêu đề tab ban đầu ngay khi bạn chuyển đổi giữa các tab.
redochka

23

Argh, rất nhiều câu trả lời ...

Tôi đã thử wmctrl, gần như đã hoạt động, ngoại trừ tôi không thể làm cho nó thay đổi tiêu đề biểu tượng, ít nhất là không vĩnh viễn.

Vấn đề là PS1 trong Bash trong Ubuntu đặt tiêu đề.

PS1 mặc định là

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

... trong đó đặt tiêu đề trong chuỗi thoát đầu tiên: \e]0;\u@\h: \w\a

Như vậy, có hai giải pháp:

Giải pháp 1: đơn giản hóa PS1, sau đó sử dụng PROMPT_COMMAND

Thay đổi PS1 thành một cái gì đó đơn giản hơn:

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

Sau đó, sử dụng PROMPT_COMMAND:

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

Giải pháp 2: trực tiếp sửa đổi PS1

Chỉ cần sửa đổi PS1 với tiêu đề mới:

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

xin chào, tôi thích câu trả lời của bạn khá nhiều Bạn có phiền giải thích vai trò của ]0;mã của bạn không? Tôi nghĩ rằng tôi đã tìm thấy ý nghĩa của echo -e '\007 \033'các ascii -olệnh ... mặc dù tôi là trung thực không chắc chắn những gì đó là làm gì ở đó cả ... nhờ ...
isomorphismes

2
@iso \ehoặc \033là ký tự thoát (ESC), bắt đầu một chuỗi thoát. ]bắt đầu một lệnh hệ điều hành (OSC). Đối với xterm, 0;có nghĩa là "đặt tiêu đề" và \ahoặc \007là ký tự chuông (BEL) chấm dứt OSC. Thông tin thêm: vi.wikipedia.org/wiki/ANSI_escape_code#Escape_
resultences

@wjandrea tôi đang tìm kiếm các chữ cái thoát tương đương ( \e\a) cho \033\007nhưng tôi không thể tìm thấy chúng chắc chắn vì tôi không biết các từ khóa đúng để gõ vào google. Liên kết bạn đưa ra cũng hữu ích. Bạn có thể vui lòng chuyển đổi nhận xét của bạn để trả lời?
SebMa

10

Nếu bạn là người dùng Ubuntu, bạn có thể thay đổi tiêu đề của tab gnome-terminal bằng HUD .

Khi ở trong gnome-terminal, nhấn Alt để hiển thị HUD, nhập một vài chữ cái đầu tiên, ví dụ: "tít", nhấn enter và nhập tiêu đề mới của bạn.

Đây là một phương pháp rất nhanh và tránh sử dụng chuột.


1
Thật. Giữ tay trên bàn phím. Tiêu đề hiện tại được hiển thị, do đó, thật nhanh chóng và dễ dàng để sửa đổi tiêu đề hiện có bằng phương pháp này.
Brent Faust

Tit chỉ dành cho Ubuntu tiếng Anh.
törzsmókus

và toàn bộ tùy chọn đã bị xóa :(
törzsmókus

các F2chính cũng tránh chuột.
đẳng cấu

@ törzsmókus Và tiếng Pháp - Titre ;)
wjandrea

3

Một cách khác để thay đổi tiêu đề gnome-terminallà bằng cách sử dụng gconftool-2; điều này thay đổi tiêu đề thiết bị đầu cuối ban đầu cho cấu hình được chọn, do đó bạn có thể có các cấu hình khác nhau được liên kết với các tiêu đề như 'Apache', 'Chỉnh sửa', v.v. Sau đó, bạn sẽ khởi chạy gnome-terminalvới cấu hình phù hợp để lấy tiêu đề thiết bị đầu cuối mà bạn đã chỉ định. Điều này trái ngược với việc gnome-terminal --title "name"thay đổi tiêu đề trên mỗi thiết bị đầu cuối, nhưng không ảnh hưởng đến tiêu đề ban đầu được chỉ định trong hồ sơ.

Bạn có thể sử dụng lệnh sau trong tập lệnh để đặt tên của thiết bị đầu cuối cho cấu hình và bạn có thể có tên của thiết bị đầu cuối thay đổi vào những thời điểm nhất định trong ngày để nhắc nhở bạn về những điều:

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

Đây là cho cấu hình mặc định, nhưng bạn cũng có thể đặt tiêu đề cho các cấu hình khác bằng cách thay đổi, ví dụ, Defaultsang cấu hình khác như Profile0:

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

Tôi nghĩ rằng cách thay đổi tiêu đề này được sử dụng vì cách nó có thể được sử dụng trong kịch bản, hoặc chỉ là một cách dòng lệnh nhanh để đặt tiêu đề cho hồ sơ. Lưu ý rằng đôi khi bạn phải khởi chạy lại thiết bị đầu cuối với cấu hình đã chỉ định để gconftool-2cài đặt có ảnh hưởng. Các cài đặt hoàn chỉnh có sẵn gnome-terminalcó thể được liệt kê với gconftool-2 -R /apps/gnome-terminal.


3

Một giải pháp khác là sử dụng xdotool để mô phỏng tổ hợp phím, có thể hữu ích trong các tập lệnh:

  1. Đặt phím tắt trong gnome-terminal:

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

    Ví dụ khẳng định Shift+Ctrl+Y.

  2. Cài đặt xdotoolnếu bạn chưa có nó:

    sudo apt-get install xdotool
    
  3. Chuỗi lệnh sau (mà bạn cũng có thể sử dụng trong tập lệnh bash) sẽ đặt tiêu đề đầu cuối / tab (thoát khoảng trắng bằng \):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [tùy chọn] Bạn cũng có thể sử dụng xdotool để mở một tab mới và đặt tiêu đề bằng các lệnh trên, sử dụng:

    xdotool key ctrl+shift+t
    

    Cân nhắc thêm thời gian ngủ trước và sau khi mở tab mới, ví dụ sleep 1(để chờ 1 giây).

Đây không phải là giải pháp tao nhã nhất, nhưng nó hiệu quả với tôi! Các câu trả lời trước không hoạt động trong trường hợp của tôi. Tôi sử dụng gnome-terminal trong Ubuntu 14.04 và tôi muốn tạo một tập lệnh bash.


1

Để chỉ hiển thị thư mục làm việc hiện tại trong tiêu đề, hãy thử điều này trong '.bashrc':

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

hoặc là

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

0

Điều này đã làm việc trong Gnome Terminal 3.18.3 của tôi .

Chỉnh sửa tệp .bashrc của bạn và thêm chức năng này

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

Đừng quên tập tin .bashrcsource của bạn

$ source ~/.bashrc

Và sau đó, bạn có thể chỉ cần cập nhật bạn sẽ có thể thay đổi tiêu đề thiết bị đầu cuối như thế này:

$ termtitle "MariaDB CLI"

0

Câu trả lời của tôi tương tự như câu trả lời mới hơn không phù hợp với tôi. Các câu trả lời cũ nhất không hoạt động nữa. Câu trả lời cũ là quá nhiều gõ nên tôi đã tạo một hàm trong ~/.bashrctệp của mình :

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

Sau khi thêm hoặc thay đổi chức năng hoặc, nếu bạn muốn đặt lại tiêu đề lần thứ hai, hãy sử dụng:

. ~/.bashrc
termtitle Special Projects

Mặt khác, trên cơ sở hàng ngày chỉ cần sử dụng termtitlevới một tiêu đề mới.


-1

Trong trường hợp bất kỳ linh hồn đáng thương nào như tôi bị buộc phải sử dụng tcsh, hãy thử một cái gì đó như thế này trong .cshrc của bạn:

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

Nguồn và biết thêm chi tiết: http://tldp.org/HOWTO/Xterm-Title-4.html


Một số dấu hiệu cho thấy lý do tại sao câu trả lời của tôi được bình chọn sẽ rất hay :-(
spookypeanut

-1

Nếu bạn đang sử dụng gnome 3, Terminal > Set Titletùy chọn menu tiện lợi đã bị xóa. Bạn có thể cài đặt thiết bị đầu cuối phân nhánh 2 gnome vẫn có tùy chọn menu "Đặt tiêu đề" và chạy thay thế:

sudo apt-get install mate-terminal

Thay vì chạy "Terminal", hãy chạy "MATE Terminal". Bạn có lẽ cũng nên chọn mate-terminal trong sudo update-alternatives --config x-terminal-emulator.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.