Ich arbeite regelmäßig mit SSH auf verschiedenen Hosts und bin manchmal verwirrt, auf welchem Computer ich Befehle ausführe. Gelegentlich war ich kurz davor, halt(8)-Befehle an den falschen Host zu senden.
Idealerweise würde ich das obere Menüband des Terminalfensters farblich kennzeichnen, je nachdem, bei welchem Host ich gerade angemeldet bin. Ich verwende Openbox und Gnome-Terminal, würde aber in Erwägung ziehen, auf einen Terminalemulator umzusteigen, der so etwas einfach oder zumindest möglich macht.
Kennt jemand eine Möglichkeit, dies zu tun? Ich habe keine Angst, selbst etwas Arbeit zu erledigen, wenn Sie mir zeigen können, wie ich Fensterfarben programmgesteuert ändern kann.
Antwort1
Meinen Sie mit „Fensterfarben“ die Farbe des Fensterrands? Wenn ja, sagen Sie Ihrem Fenstermanager, dass er die Farbe des Fensterrands basierend auf dem Titel des Fensters festlegen soll, da die meisten ein Muster von haben user@host: /path
. Es wäre für ihn einfach, anhand der Fensterklasse zu prüfen, ob es sich um ein Terminal handelt, und dann den Titel zu analysieren, wenn er sich ändert, und die verwendete Farbe zu aktualisieren. Aber ich kenne die beteiligten Abläufe nicht, also weiß ich nicht, wie viel Arbeit das ist.
aber das ist möglich.
(ich weiß nicht, ob Openbox das könnte, aber nachdem ich darüber nachgedacht habe, ist dies der einfachere Weg, es zu tun)
Aktualisieren:
nachdem ich mir den Quellcode von Openbox angesehen habe, denke ich, dass die framerender_frame
Funktion openbox/framerender.c
so gepatcht werden sollte, dass, wenn es sich bei dem Fenster um ein Terminal handelt, das vom Host im Titel abhängt, ein anderes Design anstelle des globalen Designs verwendet wird ob_rr_theme
, eines, das die gewünschten Farben für dieses Fenster enthält.
[im Kontext von framerender_frame
könnte der Fenstertitel lauten self->client->title
]
Dazu müsste man es so ändern , dass es über ein lokales framerender_frame
auf das globale verweist , und man müsste Code schreiben, um die Host:Theme-Map und die zusätzlichen Themes zu laden.ob_rr_theme
theme
in Pseudocode (d. h. dies wird nicht ausgeführt):
RrTheme* theme = ob_rr_theme;
if "gnome-terminal" equals self->client->class: # for example only
host = parse_title(self->client->title)
theme = lookup host in by_host if not found use theme
# and then in the rest of framerender_frame use theme instead of ob_rr_theme
wo by_host
Karten Zeichenfolgen zu RrTheme
Themen hosten