Wie kann ich die Hardstatusfarbe des Bildschirms basierend auf dem angemeldeten Benutzer ändern?

8

Ich habe seit einiger Zeit keine .screenrc-Datei mehr bearbeitet / erstellt, aber Folgendes verwende ich derzeit:

# 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

Ich kann mich ehrlich gesagt nicht daran erinnern, wofür alles in meiner Hardstatus-Zeile steht, aber ich möchte herausfinden, wie ich die Farbe des Hostnamens basierend auf dem angemeldeten Benutzer ändern kann. Ist dies überhaupt möglich? Im Moment ist der Hostname gelb, wenn ich unter einem beliebigen Benutzer angemeldet bin. aber ich möchte, dass es rot ist, wenn ich root bin. Kann dies in meiner .bashrc-Datei geändert werden? Ich habe dies in meiner .bashrc, um neue Bildschirmfensternamen in den Hostnamen des Servers zu ändern, mit dem ich verbunden bin:

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

Vielen Dank für jede Hilfe!

BEARBEITEN

Ich habe versucht, dies zu meiner .bashrc-Datei hinzuzufügen, aber es setzt nur den ANSI-Code vor den Hostnamen in meinem Bildschirm hardstatus:

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

BEARBEITEN 2

Ich habe auch die tatsächlichen ANSI-Farbcodes (z. B. :) \[\033[31m\]und die Bildschirm-Escape-Codes (z. B. :) %krzu der obigen Anweisung in meinem hinzugefügt .bashrc, aber keiner hat funktioniert.

BEARBEITEN 3

Wenn ich dies als Eingabeaufforderungsbefehlszeile verwende, wird der Hostname vor meiner PS1 rot angezeigt:

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

Wenn ich die folgende Eingabeaufforderung verwende, ändert sich der Fenstername in den Hostnamen (JA!). Die Farbe bleibt jedoch die Standardeinstellung (NEIN!):

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

Ich habe auch versucht, \033[31m(und nur [31m) durch die Bildschirmfarbe (% kr) zu ersetzen , aber das hat auch nicht funktioniert.

EGr
quelle
Sie möchten es basierend auf dem Benutzer einfärben, bei dem Sie angemeldet sind, wenn ein bestimmter Benutzer am System angemeldet ist?
slm
Ja. Ich möchte es so gestalten, dass der Server-Hostname rot wird, wenn ich mich als Root bei diesem Server anmelde. Zum Beispiel habe ich in meiner .bashrc-Datei eine Zeile, die meine PS1 in allen roten Text ändert, wenn ich mich als root anmelde. Ich möchte dieses Verhalten mit den Hostnamen im Bildschirm emulieren.
EGr

Antworten:

1

Schauen Sie sich diese U & L-Fragen und Antworten an.

Speziell diese Antwort: https://unix.stackexchange.com/a/16433/7453 .

Die allgemeine Idee ist, dass Sie 2 verschiedene screenrcDateien mit den Farben verwalten und basierend auf Ihrer $USERin Ihrer bashrcDatei die Umgebungsvariable SCREENRCauf die für einen bestimmten Benutzer verweisen .

slm
quelle
Ich werde einen Blick darauf werfen. Die einzige Frage, die ich dazu habe, ist, ob beide .screenrcDateien gleichzeitig funktionieren. Wenn ich beispielsweise den Bildschirm als ich selbst öffne, um sudo -sauf einem anderen Computer innerhalb dieser Bildschirmsitzung zu rooten, bleiben meine anderen Bildschirmfenster gelb und der Name (Hostname) des Fensters, für das ich gerade root geworden bin, rot?
EGr
Ich weiß nicht, ob das möglich ist, vielleicht ist es das, aber es ist immer noch etwas zu ungewöhnlich. Ich meine, wenn Sie sich in derselben Bildschirmsitzung befinden, wird es mit derselben ausgeführt .screenrc. Mit zwei separaten Bildschirminstanzen wäre es ganz einfach, nur zwei separate Konfigurationen.
NJSG
Das ist, was ich angenommen habe, ich werde weiter suchen und den Thread aktualisieren, wenn ich eine Lösung finde (oder wenn jemand anderes eine hat). Danke für die Hilfe!
EGr