Sekarang saya sudah menyelidiki ini untuk bagian yang lebih baik dari sehari dan akhirnya menemukan cara untuk menetapkan judul ini. Ini dilakukan melalui escape sequence yang dimulai dengan \ e] 0; dan akhiri dengan karakter BEL (= \ 007 = \ a). Tidak seperti yang saya nyatakan di atas, komunikasi dari shell kembali ke aplikasi terminal adalah mungkin, sangat terbatas, melalui urutan pelarian seperti itu (ada beberapa lagi).
Tentang ini dari atas:
PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'
Itu bisa bekerja, tetapi itu tidak selalu. PROMPT_COMMAND
adalah variabel yang isinya dieksekusi setiap kali Anda mengirim perintah, sehingga juga mengirimkan urutan pelarian ini. Namun, ini bisa ditimpa oleh urutan melarikan diri dalam variabel PS1, yang menetapkan prompt baris perintah. Inilah sebabnya mengapa di atas tidak berpengaruh di sini.
Dari instalasi Ubuntu yang lebih lama saya mengambil ini, yang mengatur command prompt (bagian kanan, setelah ]
) dan juga mengirimkan urutan escape yang diperlukan (bagian kiri, hingga dan termasuk yang ]
):
PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "
Ini mungkin berkinerja lebih baik, karena tidak perlu menafsirkan $PROMPT_COMMAND
setiap kali. Ini juga memiliki lebih banyak opsi, karena Bash memiliki lebih banyak urutan pelarian di sini, misalnya\u
untuk nama pengguna saat ini, \W
untuk nama direktori saat ini atau \w
untuk seluruh jalur direktori kerja saat ini, secara opsional dipangkas menjadi hanya beberapa yang terakhir dengan nomor dalam $PROMPT_DIRTRIM
. Lihat bab PROMPTING
di halaman manual Bash. Juga perhatikan bahwa urutan pelarian juga harus dikelilingi oleh \[
dan di \]
sini.
Untuk menetapkan judul tetap, ini berfungsi:
PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
Nikmati!
Selama penyelidikan saya, saya juga mencoba memahami kode sumber terminal gnome, yang mengarah ke kode sumber vte dan di sana dukungan untuk pengaturan judul dan membaca urutan pelarian dianggap sebagai risiko keamanan: Lihat di sini (kasus 20, kasus 21) dan di sini ("Pelaporan Judul Jendela").