Tampilkan keterangan layar pada baris pertama terminal

8

Ketika saya memulai terminal baru, prompt ada di baris pertama. Setelah bekerja sebentar (atau menjalankan perintah yang menghasilkan beberapa output), prompt ada di baris terakhir. Di sana itu akan tetap selama sisa sesi kecuali saya menekan Ctrl- l, menjalankan clearatau resetatau sesuatu yang serupa.

Untuk mendapatkan ukuran kontinuitas dalam pekerjaan, saya menggunakan screendengan trik untuk menampilkan nama sesi dalam keterangan (saya menggunakan yang terakhir dengan dua screenperintah di .screenrc).

Untuk menghindari overhead kognitif dengan mengacaukan area kerja, saya ingin teks ini ditampilkan di bagian atas terminal.

l0b0
sumber

Jawaban:

3

Anda beruntung, layar memang kehormatan menyimpan dan mengembalikan perintah. Jadi dengan bash itu bisa dilakukan.

Ini memberikan instruksi bagaimana menggerakkan kursor dengan urutan pelarian khusus. Anda dapat menulis "Hello World!" ke sudut kiri atas dengan ini:

echo -e "\033[s\033[2;0HHello World!            \n                        \033[u"

Dijelaskan: Karakter \033[smenyimpan posisi kursor saat ini, yang kita inginkan b / c ukuran terminal layar dapat bervariasi, banyak. Kemudian \033[2;0pindahkan kursor ke baris ketiga ke karakter pertama (kita mulai menghitung di sudut kiri atas dan dengan 0). Kemudian muncul teks dan sedikit ilustrasi tentang apa yang mungkin. Akhirnya kode \033[umengembalikan kursor ke tempat ia \033[sdipancarkan.

Contoh ini memindahkan kursor ke baris kedua karena ketika mengeluarkan perintah 2 baris baru dicetak jadi apa baris ketiga saat ini akan menjadi baris pertama.

Anda dapat menggunakan ini bersama dengan keterangan sesi yang sudah bisa Anda dapatkan dengan penjelasan yang sudah Anda tautkan.

Bananguin
sumber
2
Anda dapat menggunakannya tputuntuk melakukan hal ini dalam cara yang bebas terminal, tanpa perlu membuat kode sandi melarikan diri tersebut. Misalnya:echo -n "$(tput sc)$(tput cup 0 0)----Hello, world----$(tput rc)"
Jim Paris
Saya yakin setiap shell memiliki cara untuk memancarkan karakter ini, tapi saya hanya tahu bash :-) Terima kasih atas input tput, saya tidak tahu tentang itu.
Bananguin
@ user1129682: Saya mencoba screen $SHELL -c 'echo -n "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'dan screen $SHELL -c 'screen -X caption always "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'tetapi tidak berhasil. Ada ide?
l0b0
Tergantung pada apa yang Anda inginkan. Jika Anda hanya ingin judul dari sesi saat ini di keterangan layar Anda maka Anda akan melakukannya screen -X caption always; screen -X caption string "%t". Jika Anda ingin judul saat ini di sudut kiri atas Anda harus memodifikasi PS1variabel lingkungan Anda untuk memasukkan tputkeajaiban.
Bananguin
@ l0b0: dan saat membaca ini lagi, tput cup 0 0 mungkin memiliki masalah baris ganda baru, itulah sebabnya saya meletakkan teks saya di baris ketiga, bukan yang pertama. apakah Anda sudah mencoba tput cup 2 0 atau 0 2 ... masih belum membaca di
tput