¿Cómo puedo cambiar el color de estado duro de la pantalla en función del usuario conectado?

8

No he editado / creado un archivo .screenrc en mucho tiempo, pero esto es lo que estoy usando actualmente:

# 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

Sinceramente, no recuerdo qué significa todo en mi línea hardstatus, pero quiero descubrir cómo podría cambiar el color del nombre de host en función del usuario que inició sesión. ¿Es esto posible? En este momento, el nombre de host es amarillo cuando estoy conectado con cualquier usuario; pero quiero que sea rojo si soy root. ¿Es esto algo que se puede cambiar en mi archivo .bashrc? Tengo esto en mi .bashrc para cambiar los nuevos nombres de ventana de pantalla al nombre de host del servidor al que estoy conectado:

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

¡Gracias por cualquier ayuda!

EDITAR

Intenté agregar esto a mi archivo .bashrc, pero solo pone el código ANSI delante del nombre de host en el estado duro de mi pantalla:

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

EDITAR 2

También he agregado los códigos de color ANSI reales (ej . \[\033[31m\]:) y los códigos de escape de pantalla (ej . %kr:) a la declaración anterior en mi .bashrc, pero ninguno funcionó.

EDITAR 3

Si uso esto como línea de comando, el nombre de host aparece en rojo delante de mi PS1:

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

Si uso el siguiente mensaje, el nombre de la ventana cambia al nombre de host (¡SÍ!); pero el color sigue siendo el predeterminado (¡NO!):

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

También intenté reemplazar \033[31m(y solo [31m) con el escape de color de pantalla (% kr), pero tampoco funcionó.

EGr
fuente
¿Desea colorearlo en función del usuario con el que inició sesión si un determinado usuario ha iniciado sesión en el sistema?
slm
Si. Quiero hacerlo para que el nombre de host del servidor se vuelva rojo cuando inicie sesión en ese servidor como root. Por ejemplo, en mi archivo .bashrc, tengo una línea que cambia mi PS1 a todo el texto rojo cuando inicio sesión como root. Quiero emular este comportamiento con los nombres de host en la pantalla.
EGr

Respuestas:

1

Echa un vistazo a estas preguntas y respuestas de U&L.

Específicamente esta respuesta, https://unix.stackexchange.com/a/16433/7453 .

La idea general es que mantenga 2 screenrcarchivos diferentes con los colores y, basándose $USERen su bashrcarchivo, apunte la variable de entorno SCREENRCa la de un usuario determinado.

slm
fuente
Le daré un vistazo. La única pregunta que tengo con respecto a esto es, ¿funcionarán ambos .screenrcarchivos al mismo tiempo? Por ejemplo, si abro la pantalla como yo mismo, luego sudo -srootear en otra máquina dentro de esa sesión de pantalla, ¿mis otras ventanas de pantalla permanecerán amarillas y el nombre (nombre de host) de la ventana que acabo de convertir en raíz se volverá rojo?
EGr
No sé si eso es posible, tal vez lo sea, pero todavía está un poco fuera de lo común, quiero decir, si estás dentro de la misma sesión de pantalla, se ejecutará usando lo mismo .screenrc. Con dos instancias de pantalla separadas, sería simplemente simple hacerlo, solo dos configuraciones separadas.
njsg
Eso es lo que asumí, seguiré buscando y actualizaré el hilo si encuentro una solución (o si alguien más tiene una). ¡Gracias por la ayuda!
EGr