Bagaimana seseorang bisa mengatur judul terminal dengan perintah 'tput'?

9

Saya menemukan melalui jawaban ini bahwa saya telah menetapkan warna terminal pada prompt saya dengan cara yang naif selama bertahun-tahun.

Saya sekarang telah memodifikasi .bashrc saya untuk menggunakan perintah 'tput' untuk mewarnai berbagai elemen dari prompt saya. Satu kode pelarian yang tersisa yang saya miliki adalah ini:

TITLEBAR="\[\033]2; PROD - \u@\h:\w \007\]"

Adakah yang tahu kalau ada atribut tput / terminfo yang bisa saya gunakan untuk mengatur bar judul jendela terminal saya, sehingga saya bisa menghilangkan jalan keluar itu?

Murali Suriar
sumber

Jawaban:

9

Kemampuan aktualnya adalah tsl (To Status Line) dan fsl (From Status Line), tetapi tentu saja tidak semua terminal memilikinya. Di Linux pada khususnya Anda perlu mengatur terminal Anda ke xterm + sl atau yang serupa.

Anda dapat menguji ini dengan

export TERM=xterm+sl
echo `tput tsl` Hello world `tput fsl`; sleep 10

Saya tidak akan repot-repot dan menjaga mereka melarikan diri di. Bashrc

kepala kode
sumber
1
Sepertinya salinan Ubuntu saya kurang info terminal itu. :( Saya menyalahkan lengkap terminfo file :)
David Pashley
1
layar, bagaimanapun, tampaknya mendukung mereka dengan baik. Terima kasih!
Murali Suriar
3
\033];adalah urutan pelarian xtermuntuk "Perintah Sistem Operasi" . Saya tidak tahu bagaimana melakukan itu dalam tput, tetapi jika mungkin dilakukan melalui tput itu akan menjadi metode yang lebih baik untuk pengaturan judul terminal lintas platform. Misalnya pada xterm, itu akan menghasilkan urutan \033]0;Title\007. Lihat juga di sini
Wyatt8740
@ kode solusi Anda memalukan karena jika saya mengetik export TERM=xterm+sl, maka saya tidak lagi memiliki sintaks highting di vim.
SebMa
2

Setelah melihat file terminfo xterm, saya tidak dapat menemukan kode yang identik dengan perintah ini, jadi saya kira tidak ada.

Jika Anda tertarik, halaman manual terminfo mencantumkan semua perintah yang termcap dan terminfo mengerti. Saya mendekompilasi file database terminfo menggunakan:

# infocmp -L xterm 
David Pashley
sumber
2

Saya tidak bisa berkomentar, jadi jawaban ekstra:

Jika Anda menggunakan tsl / fsl, pastikan untuk menanyakan terminal terlebih dahulu. hs seharusnya benar jika tsl / fsl (dan * sl lainnya) didukung.

tput hs && { echo ....; }

sumber
1
+1 jika Anda memiliki referensi untuk ini.
l0b0
1

Untuk info lebih lanjut tentang fitur khusus "mode vt100" xterm, lihat dokumen Urutan Kontrol Xterm di bagian Kontrol Sistem Operasi untuk semua detail berdarah.

Randall
sumber