Layar Gnu, bagaimana cara memperbarui judul jendela secara dinamis?

7

Saya mencoba meningkatkan aspek Layar GNU menggunakan file screenrc, saya menyetel warna, baris status, judul dan daftar jendela yang dimuat.

Satu-satunya hal yang saya tidak dapat capai adalah mendapatkan keterangan dengan perintah yang dieksekusi saat ini seperti pada gambar di bawah ini, perhatikan keterangan vim di panel kanan:

masukkan deskripsi gambar di sini

Apa yang saya miliki saat ini adalah ini , dan apa yang ingin saya dapatkan adalah memiliki caption (dan jika mungkin juga garis hardstatus) dengan |0 less| 1 manbukannya arus |0 bash| 1 bash.

Bagaimana saya bisa melakukan ini?

Pembaruan: Sampai sekarang satu-satunya solusi yang saya temukan adalah di posting ini tetapi tidak mencetak apa yang saya butuhkan ...

Namun itu adalah satu-satunya judul dinamis yang saya temukan sampai sekarang.

PROMPT_COMMAND='echo -ne "\033k\033\134\033k${HOSTNAME}[`basename ${PWD}`]\033\134"'`

di .bashrc dan shelltitle '] |bash'di .screenrc. Judul diperbarui dengan nama host dan nama dasar dari direktori yang berfungsi, tetapi prompt tersebut benar-benar salah (ia juga memiliki ruang terdepan):

134134fabio@host10:~$
Fabio
sumber
checkout pembaruan pada jawabannya
Torian

Jawaban:

7

Di .bashrcfile Anda atur PROMPT_COMMANDseperti ini:

PEMBARUAN :

case "$TERM" in
    screen*) PROMPT_COMMAND='echo -ne "\033k\033\0134"'
esac

UPDATE : tampaknya merupakan bug dengan gema yang dibangun ke dalam bash. Solusi harus berupa penggunaan /bin/echoatau \0134. Mencoba:

$ echo -e "\134 = \0134"
\134 = \
$ /bin/echo -e "\134 = \0134"
\ = \

Ini adalah urutan pelarian yang diperlukan layar untuk mengidentifikasi perintah mana yang sedang dijalankan, dan mengganti judul jendela Anda saat ini.

Kemudian, pada .screenrcfile Anda , pastikan baris berikut ada:

shelltitle '> |something:'
hardstatus alwayslastline

Pola search|namememberi tahu layar kepada searchAnda end-of-promptuntuk beberapa string (dalam hal ini, '> '). Bagian nama, menentukan nama shell default untuk jendela. Jadi, ketika Anda tidak memiliki apa-apa selain shell yang berjalan, Anda akan melihat sesuatu seperti:

$ something:

Tetapi ketika Anda menjalankan top:

$ something:top
Torian
sumber
Hampir ... Petunjuk Anda untuk \ 0134 atau / bin / echo berfungsi dengan contoh saya di atas, jadi saya dapat memiliki caption diperbarui dengan string antara dua urutan melarikan diri tanpa harus mengacaukan prompt saya. Tapi saya masih tidak bisa membuat contoh Anda berfungsi. Prompt saya di bawah layar ${debian_chroot:+($debian_chroot)}\u@\h:\w\$jadi saya menggunakan shelltitle '$ |bash', apakah itu benar?
Fabio
terima kasih, saya membuatnya bekerja tanpa hardstatus ...garis masuk .screenrc, saya menggunakan caption always ..., bukan seorang guru layar sekalipun.
ryenus
Perhatikan bahwa shelltitlebarang - barang tersebut harus benar-benar ada di .screenrc Anda - tidak akan terjadi apa-apa jika Anda memasukkannya di command prompt layar, karena beberapa alasan.
Greg Bell
2

Sebagai alternatif, Anda bisa menggunakan tmuxbukan screen. Tmuxakan secara otomatis mengatur judul jendela saat ini.

src
sumber