Como eu posso mudar a cor do hardstatus da tela com base no usuário logado?

8

Eu não editei / criei um arquivo .screenrc há algum tempo, mas é o que estou usando atualmente:

# 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

Eu honestamente não lembro o que tudo na minha linha de hardstatus representa, mas eu quero descobrir como eu poderia mudar a cor do nome do host com base no usuário que está logado. Isso é possível? Neste momento, o nome do host é amarelo quando estou logado sob qualquer usuário; mas eu quero que seja vermelho se eu for root. Isso é algo que pode ser alterado no meu arquivo .bashrc? Eu tenho isso no meu .bashrc para alterar novos nomes de janela de tela para o nome do host do servidor que eu estou conectado:

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

Obrigado por qualquer ajuda!

EDITAR

Eu tentei adicionar isso ao meu arquivo .bashrc, mas ele coloca o código ANSI na frente do nome do host no hardstatus da minha tela:

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

EDIT 2

Eu também adicionei os códigos de cores ANSI atuais (ex: \[3[31m\] ) e os códigos de escape da tela (ex: %kr ) para a declaração acima no meu .bashrc , mas nenhum funcionou.

EDIT 3

Se eu usar isso como a linha de comando do prompt, o nome do host aparece em vermelho na frente do meu PS1:

PROMPT_COMMAND='echo -ne "3[31m$HOSTNAME3\"'

Se eu usar o seguinte prompt, o nome da janela mudará para o nome do host (YES!); mas a cor continua sendo o padrão (NÃO!):

PROMPT_COMMAND='echo -ne "3[31m3k$HOSTNAME3\"'

Eu também tentei substituir 3[31m (e apenas [31m ) pelo escape de cor da tela (% kr), mas isso também não funcionou.

    
por EGr 28.01.2013 / 14:56

1 resposta

1

Veja este U & Q & A.

Especificamente, esta resposta, link .

A idéia geral é que você mantenha dois arquivos screenrc diferentes com as cores e, com base no $USER do arquivo bashrc , aponte a variável de ambiente SCREENRC para o usuário especificado.

    
por 28.01.2013 / 15:39