Bagaimana saya bisa mengubah warna status layar berdasarkan pengguna yang login?

8

Saya belum mengedit / membuat file .screenrc untuk sementara waktu, tetapi inilah yang saat ini saya gunakan:

# Turn off the screen startup message
startup_message off

# Define format of bottom navigation/status/date/etc. line
hardstatus alwayslastline "%{yk}[ %H ] %-Lw%50>%{gk}(%{-}%n-%t%{gk})%{-}%+Lw%< %=%{yk}[ %c %d.%m.%Y ]"

# Increase scrollback buffer to 30000 lines
defscrollback 30000

Jujur saya tidak ingat apa artinya semua dalam garis hardstatus saya, tapi saya ingin mencari tahu bagaimana saya bisa mengubah warna nama host berdasarkan pengguna yang login. Apakah ini mungkin? Saat ini, nama host berwarna kuning ketika saya masuk di bawah pengguna mana pun; tapi saya ingin menjadi merah jika saya root. Apakah ini sesuatu yang dapat diubah di file .bashrc saya? Saya memiliki ini di .bashrc saya untuk mengubah nama jendela layar baru ke nama host dari server saya terhubung:

# Set screen window title
case "$TERM" in
screen)
  PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
  ;;
esac

Terima kasih atas bantuannya!

EDIT

Saya sudah mencoba menambahkan ini ke file .bashrc saya, tetapi hanya menempatkan kode ANSI di depan nama host di layar hardstatus saya:

case "$TERM" in
screen)
  if (( $UID == 0 )); then
    PROMPT_COMMAND='echo -ne "\033k$FRED$HOSTNAME$RS\033\\"'
  else
    PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
  fi
  ;;
esac

EDIT 2

Saya juga telah menambahkan kode warna ANSI yang sebenarnya (ex:) \[\033[31m\]dan kode pelarian layar (ex:) %krpada pernyataan di atas dalam bahasa saya .bashrc, tetapi tidak ada yang berhasil.

EDIT 3

Jika saya menggunakan ini sebagai baris perintah prompt, nama host muncul dengan warna merah di depan PS1 saya:

PROMPT_COMMAND='echo -ne "\033[31m$HOSTNAME\033\\"'

Jika saya menggunakan prompt berikut, nama jendela berubah menjadi nama host (YA!); tetapi warnanya tetap default (TIDAK!):

PROMPT_COMMAND='echo -ne "\033[31m\033k$HOSTNAME\033\\"'

Saya juga mencoba mengganti \033[31m(dan hanya [31m) dengan warna layar yang keluar (% kr), tetapi itu tidak berhasil.

EGr
sumber
Anda ingin mewarnainya berdasarkan pada pengguna yang Anda masuki jika ada pengguna tertentu yang masuk ke sistem?
slm
Iya. Saya ingin membuatnya sehingga nama host server berubah merah ketika saya masuk ke server itu sebagai root. Misalnya, dalam file .bashrc saya, saya memiliki baris yang mengubah PS1 saya menjadi semua teks merah ketika saya login sebagai root. Saya ingin meniru perilaku ini dengan nama host di layar.
EGr

Jawaban:

1

Lihatlah Q&A U&L ini.

Khususnya jawaban ini, https://unix.stackexchange.com/a/16433/7453 .

Ide umum adalah bahwa Anda mempertahankan 2 yang berbeda screenrcfile dengan warna dan berdasarkan Anda $USERdi Anda bashrcfile yang menunjukkan variabel lingkungan SCREENRCuntuk satu untuk pengguna tertentu.

slm
sumber
Aku akan melihatnya. Satu-satunya pertanyaan yang saya miliki mengenai hal ini adalah, apakah kedua .screenrcfile akan bekerja secara bersamaan? Sebagai contoh, jika saya membuka layar seperti saya sendiri maka sudo -suntuk melakukan rooting pada komputer lain dalam sesi layar itu, akankah jendela layar saya yang lain tetap berwarna kuning dan nama (nama host) dari jendela yang baru saja menjadi root pada gilirannya merah?
EGr
Saya tidak tahu apakah itu mungkin, mungkin memang demikian, tetapi masih agak luar biasa, maksud saya, jika Anda berada di dalam sesi layar yang sama , itu akan berjalan menggunakan yang sama .screenrc. Dengan dua contoh layar yang terpisah, akan sangat mudah untuk melakukannya, hanya dua konfigurasi yang terpisah.
njsg
Itulah yang saya asumsikan, saya akan terus mencari dan memperbarui utas jika saya menemukan solusi (atau jika orang lain memilikinya). Terima kasih untuk bantuannya!
EGr