Comment puis-je changer la couleur du statut de l'écran en fonction de l'utilisateur connecté?

8

Je n'ai pas édité / créé de fichier .screenrc depuis un moment, mais voici ce que j'utilise actuellement:

# 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

Honnêtement, je ne me souviens pas de ce que tout dans ma ligne hardstatus représente, mais je veux comprendre comment je pourrais changer la couleur du nom d'hôte en fonction de l'utilisateur connecté. Est-ce même possible? À l'heure actuelle, le nom d'hôte est jaune lorsque je suis connecté sous n'importe quel utilisateur; mais je veux qu'il soit rouge si je suis root. Est-ce quelque chose qui peut être changé dans mon fichier .bashrc? J'ai ceci dans mon .bashrc pour changer les nouveaux noms de fenêtre d'écran en nom d'hôte du serveur auquel je suis connecté:

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

Merci pour toute aide!

ÉDITER

J'ai essayé d'ajouter cela à mon fichier .bashrc, mais cela met simplement le code ANSI devant le nom d'hôte dans mon statut d'écran:

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

J'ai également ajouté les codes de couleur ANSI réels (ex:) \[\033[31m\]et les codes d'échappement d'écran (ex:) %krà la déclaration ci-dessus dans mon .bashrc, mais aucun n'a fonctionné.

EDIT 3

Si j'utilise ceci comme ligne de commande d'invite, le nom d'hôte apparaît en rouge devant ma PS1:

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

Si j'utilise l'invite suivante, le nom de la fenêtre devient le nom d'hôte (OUI!); mais la couleur reste la valeur par défaut (NON!):

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

J'ai également essayé de remplacer \033[31m(et juste [31m) par l'échappement de couleur d'écran (% kr), mais cela n'a pas fonctionné non plus.

EGr
la source
Vous souhaitez le colorer en fonction de l'utilisateur auquel vous êtes connecté à partir du moment où un certain utilisateur est connecté au système?
slm
Oui. Je veux que le nom d'hôte du serveur devienne rouge lorsque je me connecte à ce serveur en tant que root. Par exemple, dans mon fichier .bashrc, j'ai une ligne qui change ma PS1 en texte rouge lorsque je me connecte en tant que root. Je veux émuler ce comportement avec les noms d'hôtes à l'écran.
EGr

Réponses:

1

Jetez un oeil à cette Q&R U&L.

Plus précisément cette réponse, https://unix.stackexchange.com/a/16433/7453 .

L'idée générale est que vous conservez 2 screenrcfichiers différents avec les couleurs et en fonction $USERde votre bashrcfichier, vous pointez la variable d'environnement SCREENRCvers celle d'un utilisateur donné.

slm
la source
Je regarderai. La seule question que j'ai à ce sujet est la suivante: les deux .screenrcfichiers fonctionneront-ils en même temps? Par exemple, si j'ouvre l'écran comme moi-même, puis sudo -spour rooter sur une autre machine au cours de cette session d'écran, mes autres fenêtres d'écran resteront-elles jaunes et le nom (nom d'hôte) de la fenêtre que je viens de devenir root deviendra-t-il rouge?
EGr
Je ne sais pas si c'est possible, c'est peut-être le cas, mais c'est toujours un peu trop inhabituel, je veux dire, si vous êtes dans la même session d'écran, il fonctionnera en utilisant le même .screenrc. Avec deux instances d'écran séparées, il serait tout simplement simple de le faire, juste deux configurations distinctes.
njsg
C'est ce que j'ai supposé, je continuerai à chercher et à mettre à jour le fil si je trouve une solution (ou si quelqu'un d'autre en a une). Merci pour l'aide!
EGr