Menampilkan nama sesi layar GNU dan judul jendela di shell prompt


11

Apakah ada cara untuk menyajikan nama sesi Layar GNU dan judul jendela di prompt shell (katakanlah, prompt Bash ditentukan oleh PS1)?

Jawaban:


14

Layar memasok beberapa variabel lingkungan (dari screen(1) halaman manual):

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

"Saat pembuatan" berarti bahwa jika Anda memberi nomor baru jendela (menggunakan numberperintah layar ), shell tidak akan diberi tahu tentang perubahan dan $ WINDOW masih akan sama dengan nomor jendela pertama.

Anda dapat menggunakan sesuatu seperti:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '

1
Sempurna! Ini yang saya cari. BTW, ada cara untuk mendapatkan judul jendela, bukan nomor jendela?
brandizzi

Bukan yang saya tahu, tidak ada api untuk layar, dan ketika Anda mengeluarkan perintah tidak ada output - itu pergi ke jendela saat ini di layar. Sebagai contoh screen -xr 2466 -X windows.
Arcege

Meskipun mungkin berada di bawah kasus penomoran ulang, apakah ada cara untuk mengakses nama jendela jika diatur dengan Ctrl-a A?
Thalis K.

1
Jika GNU screentelah dikompilasi dengan opsi -Q(permintaan), maka Anda dapat menjalankan beberapa perintah, seperti titledan windowsdan memiliki tampilan data untuk stdout, bagaimanapun, tanpa baris baru.
Arcege

3

Saya selalu menggunakan nama sesi layar yang tepat. Kemudian saya dapat menambahkan layar STY env var, dengan id numerik dilucuti (terima kasih dimo414), ke PS1. Saya tidak menghiasnya dengan kurung kurawal atau apa pun karena saya tidak selalu dalam satu sesi. Contoh sederhana:

PS1='\u@\h ${STY#[0-9]*.} \w$ '

1

Saya menggunakan ini:

(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)

menghapus nomor proses dari ${STY}
memasukkan nomor jendela (seperti yang disebutkan "pada waktu pembuatan")
termasuk judul jendela (seperti yang dikembalikan dari screen -Q title)

catatan:

  • pertama kali itu berjalan, screen -Qmenunggu keystroke kembali
  • saya mengatur judul jendela dengan CA CA dan kemudian sumber profil saya untuk memperbarui prompt

5
Menggunakan ${STY#[0-9]*.}menghindari perlu melalui pipa sed.
dimo414
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.