Bagaimana cara mengubah judul Gnome-Terminal?


166

Saya memiliki beberapa contoh terminal yang berjalan di lingkungan kerja saya, yang saya inginkan adalah menetapkan judul yang spesifik untuk masing-masingnya, agar memiliki gagasan yang jelas apa tujuan terminal spesifik itu berfungsi seperti Apache, editing_ini, postgres dll ...

Tentu saja dari baris perintah.


Lebih jauh ke komentar Ward: Jangan lupa untuk "membatalkan PROMPT_COMMAND" sebelum Anda mengirim urutan pelarian perubahan judul, jika tidak setiap perubahan yang Anda buat akan hilang segera setelah shell prompt berikutnya.
Jon Green

Untuk pertanyaan serupa untuk KDE, lihat stackoverflow.com/questions/8782159/…
naught101

Saya memiliki masalah ini ketika beralih dari OS X ke Ubuntu. Untuk mendapatkan judul khusus dalam pengaturan multi-tab, saya menggunakan gnome-terminal --load-configbersama skrip yang saya tulis ini.
halfer

3
tambahkan berikut ke file .bashrc Anda di dir home # set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitleAnda sekarang Anda dapat menggunakan termttl alias untuk mengatur judul misalnyatermttl askubuntu
urmalp

1
"Dilindungi" jadi saya tidak bisa memberikan jawaban. gnome-terminalDefault Gnome3 adalah PROMPT_COMMAND=__vte_prompt_command. Ini menggunakan nilai dari Profil di prefs. Ketika ada beberapa profil, item menu Tab Baru dan Jendela Baru memiliki item submenu untuk setiap Profil. Cara manual untuk membuka tab terminal baru, klik kanan pada judul tab, dan pilih Set Judul ... . (Ini akan membaca jauh lebih mudah dalam jawaban yang terpisah, tetapi ...)
Rich

Jawaban:


146
  • Cara yang paling ramah pengguna adalah mengambilnya dari menu Terminal -> "Set Title ...".

  • Namun ada cara lain, Anda juga bisa mengeluarkan

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

    Ini mungkin tidak memberikan efek yang diinginkan karena ada kemungkinan besar Anda .bashrcmenimpa perilaku itu.

  • Membawa kami ke metode terakhir, yang tanpa malu-malu kucabut dari metode saya .bashrc.

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

Sebagai referensi tambahan, ini adalah baris khusus di blog saya .bashrc

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

Anda juga mungkin perlu mengomentari kode ini di ~ / .bashrc Anda

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
Perlu memberi komentar atau menghapus seperti yang Anda sebutkan agar dapat berlaku!
topless

1
@Ward: PROMPT_COMMANDadalah program untuk dijalankan. PS1dan PS1yang string tekstual yang ditampilkan. Pada contoh di atas perintah yang dijalankan adalah echo, yang kemudian hanya mencetak sebuah string. Lihat man bashatau manpages.ubuntu.com/bash untuk lebih jelasnya.
Sladen

29
Terminal 3.16.2 GNOME mengatakanOption "--title" is no longer supported in this version of gnome-terminal.
Ivan Kozik

10
Pada Gnome 3.18.3, tidak ada entri "Set judul" di menu: /
shadi

2
Untuk orang lain yang bingung dengan gobbledegook dalam string di atas, mereka adalah karakter pelarian ANSI - lihat misalnya lihaoyi.com/post/…
WillC

65

Jawaban Ward sangat bagus jika Anda ingin menetapkan judul berdasarkan host apa yang Anda tuju dll setiap kali Anda membuka terminal. Jika Anda hanya ingin mengatur judul dengan cepat, Anda bisa menjalankan gema dengan sendirinya:

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

atau buat fungsi sederhana (di dalam Anda ~/.bashrc), katakanlahtermtitle

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

yang bisa Anda jalankan termtitle some title here.


3
atau sama kita dapat menambahkan sebagai bash alias dengan menambahkan baris di bawah ini di ~ / .bash_aliases function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titledan kemudian gunakan: $ title term_title
murarisumit

11
Sayangnya sepertinya tidak bekerja untuk saya di terminal GNOME 3.6.2.
austinmarton

1
Juga sepertinya tidak bekerja di xterm 322 atau konsole 16.12 ... Saya tidak tahu apakah ada metode baru, sayangnya :(
naught101

2
@ 3ocene itu sebenarnya tidak masalah dalam kasus ini, mereka adalah hal yang sama, tetapi kebiasaan yang baik untuk masuk, karena misalnya $var_logdan ${var}_loghal-hal yang sangat berbeda, dan perbedaannya dapat menyebabkan bug pada skrip.
naught101

2
jika tidak bekerja untuk Anda, itu mungkin karena PROMPT_COMMAND var atau PS1 var disetel dan over-riding. unset PROMPT_COMMANDatau mengaturnya sehingga itu juga mengubah judul misalnya export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
gaoithe

32

Jika Anda menggunakan editor Vim, Anda juga dapat mengaktifkan opsi ini di vimrc Anda:

:set title

yang dinonaktifkan secara default. Ini akan mengatur judul terminal keren yang menunjukkan nama file yang sedang Anda edit saat ini dan beberapa hal lainnya.


26

Demi kelengkapan, saya ingin menambahkan bahwa Anda juga dapat mengatur gnome-terminaljudul menggunakan perintah ini:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

Anda harus menginstal paket wmctrlInstal wmctrl terlebih dahulu.


1
MyWindowTitle tidak muncul dalam judul terminal. Itu muncul ketika saya melakukan wmctrl -m.
sureshvv

2
Perhatikan bahwa wmctrl mengubah judul jendela dan bukan judul tab, sedangkan solusi karakter yang lolos mengubah judul tab. Selain itu, judul jendela berubah kembali ke judul tab asli segera setelah Anda beralih di antara tab.
redochka

23

Argh, begitu banyak jawaban ...

Saya mencoba wmctrl, yang hampir berhasil, kecuali saya tidak dapat mengubah judul ikon, setidaknya tidak secara permanen.

Masalahnya adalah bahwa PS1 di Bash di Ubuntu menentukan judul.

PS1 default adalah

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

... yang menetapkan judul dalam urutan escape pertama: \e]0;\u@\h: \w\a

Jadi, ada dua solusi:

Solusi 1: sederhanakan PS1, lalu gunakan PROMPT_COMMAND

Ubah PS1 menjadi sesuatu yang lebih sederhana:

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

Kemudian gunakan PROMPT_COMMAND:

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

Solusi 2: langsung memodifikasi PS1

Cukup modifikasi PS1 dengan judul baru:

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

hai, saya sangat menyukai jawaban Anda. Maukah Anda menjelaskan peran ]0;dalam kode Anda? Saya pikir saya menemukan arti dari echo -e '\007 \033'dengan ascii -operintah ... walaupun saya sejujurnya tidak yakin apa yang dilakukan di sana juga ... terima kasih ...
isomorphismes

2
@ iso \eatau \033adalah karakter escape (ESC), yang memulai urutan escape. ]memulai perintah sistem operasi (OSC). Untuk xterm, 0;berarti "atur judul", dan \aatau \007karakter bel (BEL) yang mengakhiri OSC. Info lebih lanjut: en.wikipedia.org/wiki/ANSI_escape_code#Escape_ berikutnyaences
wjandrea

@wjandrea Saya sedang mencari huruf melarikan diri yang setara ( \edan \a) untuk \033dan \007tapi saya tidak bisa menemukannya karena saya tidak tahu kata kunci yang tepat untuk mengetik di google. Tautan yang Anda berikan juga bermanfaat. Bisakah Anda mengonversi komentar Anda menjadi sebuah jawaban?
SebMa

10

Jika Anda adalah pengguna Ubuntu, Anda dapat mengubah judul tab gnome-terminal menggunakan HUD .

Saat berada di terminal gnome, tekan Alt untuk memunculkan HUD, ketikkan beberapa huruf pertama, misalnya "tit", tekan enter dan ketik judul baru Anda.

Ini adalah metode yang sangat cepat dan menghindari menggunakan mouse.


1
Memang. Terus menggunakan keyboard. Judul yang ada ditampilkan, jadi cepat dan mudah juga hanya memodifikasi yang sudah ada menggunakan metode ini.
Brent Faust

tit hanya untuk Ubuntu Bahasa Inggris.
törzsmókus

dan seluruh opsi telah dihapus :(
törzsmókus

yang F2utama juga menghindari mouse.
isomorphismes

@ törzsmókus Dan Prancis - titer ;)
wjandrea

3

Cara lain untuk mengubah judul gnome-terminaladalah dengan menggunakan gconftool-2; ini mengubah judul terminal awal untuk profil yang dipilih, sehingga Anda dapat memiliki profil berbeda yang terkait dengan judul seperti 'Apache', 'Editing', dll. Anda kemudian akan meluncurkan gnome-terminaldengan profil yang sesuai untuk mendapatkan judul terminal yang telah Anda tentukan. Ini berbeda dengan gnome-terminal --title "name"yang mengubah judul per terminal, tetapi tidak mempengaruhi judul awal yang ditentukan dalam profil.

Anda dapat menggunakan perintah berikut dalam skrip untuk mengatur nama terminal untuk suatu profil, dan Anda dapat meminta nama terminal berubah pada waktu-waktu tertentu dalam sehari untuk mengingatkan Anda tentang beberapa hal:

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

Ini untuk profil default, tetapi Anda dapat mengatur judul untuk profil lain juga dengan mengubah, misalnya, Defaultke profil lain seperti Profile0:

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

Saya pikir cara mengubah judul ini berguna karena cara itu dapat digunakan dalam skrip, atau hanya sebagai cara baris perintah cepat untuk mengatur judul untuk profil. Perhatikan bahwa kadang-kadang Anda harus meluncurkan ulang terminal dengan profil yang ditentukan agar gconftool-2pengaturan dapat diterapkan. Pengaturan lengkap yang tersedia untuk gnome-terminaldapat didaftar dengan gconftool-2 -R /apps/gnome-terminal.


3

Solusi lain adalah dengan menggunakan xdotool untuk mensimulasikan penekanan tombol, mungkin berguna dalam skrip:

  1. Atur pintasan keyboard di gnome-terminal:

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

    Misalnya mengasumsikan Shift+Ctrl+Y.

  2. Instal xdotooljika Anda belum memilikinya:

    sudo apt-get install xdotool
    
  3. Urutan perintah berikut (yang dapat Anda gunakan juga dalam skrip bash) akan mengatur judul terminal / tab (lolos dari spasi dengan \):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [opsional] Anda juga dapat menggunakan xdotool untuk mis membuka tab baru dan mengatur judul dengan perintah di atas, menggunakan:

    xdotool key ctrl+shift+t
    

    Pertimbangkan untuk menambahkan waktu tidur sebelum dan sesudah membuka tab baru, mis. sleep 1(Untuk menunggu 1 detik).

Ini bukan solusi yang paling elegan, tetapi berhasil untuk saya! Jawaban sebelumnya tidak berhasil dalam kasus saya. Saya menggunakan terminal gnome di Ubuntu 14.04 dan saya ingin membuat skrip bash.


1

Untuk hanya menampilkan direktori kerja saat ini dalam judul, coba ini di '.bashrc' Anda:

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

atau

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

0

Ini bekerja di Terminal Gnome saya 3.18.3 .

Edit file .bashrc Anda dan tambahkan fungsi ini

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

Jangan lupa file .bashrcsource Anda

$ source ~/.bashrc

Dan kemudian Anda cukup memperbarui Anda dapat mengubah judul terminal seperti ini:

$ termtitle "MariaDB CLI"

0

Jawaban saya mirip dengan jawaban yang lebih baru yang tidak berhasil untuk saya. Jawaban terlama tidak berfungsi lagi. Jawaban tengah lama terlalu banyak mengetik jadi saya membuat fungsi di ~/.bashrcfile saya :

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

Setelah menambah atau mengubah fungsi atau, jika Anda ingin mengatur ulang judul untuk yang kedua kalinya gunakan:

. ~/.bashrc
termtitle Special Projects

Kalau tidak setiap hari gunakan saja termtitledengan judul baru.



-1

Jika Anda menggunakan gnome 3, Terminal > Set Titleopsi menu yang nyaman telah dihapus. Anda dapat menginstal terminal bercabang gnome 2 yang masih memiliki opsi menu "Set Title", dan jalankan itu sebagai gantinya:

sudo apt-get install mate-terminal

Alih-alih menjalankan "Terminal", jalankan "MATE Terminal". Anda mungkin juga harus memilih terminal pasangan sudo update-alternatives --config x-terminal-emulator.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.