PS1-Farbe basierend auf der Hintergrundfarbe ändern?

12

Ich habe gelernt, dass ich das Format von PS1 ändern kann, insbesondere die Farbe der Saite. Ist es dann möglich, die Farbe basierend auf der Hintergrundfarbe der Shell zu ändern? Oder wie kann ich die Hintergrundfarbe der Shell erkennen?

Prosseek
quelle

Antworten:

4

Soweit ich weiß, gibt es keine Möglichkeit, die Farben des Terminalemulators abzufragen. Sie können sie mit \e]4;NUMBER;#RRGGBB\a(wobei NUMBERdie Terminalfarbnummer (0–7 für helle Farben, 8–15 für helle Farben) und #RRGGBBein hexadezimaler RGB-Farbwert ist) ändern, wenn Ihr Terminal diese Sequenz unterstützt (Referenz: ctlseqs ).

Leistungsstarke Farbschema-Mechanismen weisen häufig eine dunkle oder helle Hintergrundeinstellung auf, die Sie angeben müssen, um anzugeben, ob Sie einen schwarzen oder dunkelgrauen Hintergrund oder einen weißen oder hellgrauen Hintergrund haben.

Wenn Sie für sich selbst konfigurieren, ist es normalerweise genug, um zu entscheiden, dass Sie immer die gleiche Hintergrundfarbe verwenden.

Gilles 'SO - hör auf böse zu sein'
quelle
Sie können die unterstützte Anzahl von Farben im Eintrag termcap abrufen, indem Sie sich "tput colors" ansehen. In vielen Fällen bedeutet dies jedoch eine niedrige Zahl, z. B. 8, da die termcap-Unterstützung für Terminals mit 256 Farben sehr schwach ist.
Slacy
1
@slacy Für> 99% der heutigen Terminals sind Termcap- / Terminfo-Daten irrelevant: Sie sind alle geringfügige Abweichungen von xterm, und die Details, die sich unterscheiden, wie z. B. die Anzahl der Farben, spiegeln sich nicht im Wert von wider TERMund können es nicht sein aus der Umwelt gewonnen.
Gilles 'SO- hör auf böse zu sein'
4

Wenn Sie gnome-terminal verwenden, können Sie die Hintergrundfarbe für jedes Profil erhalten, in diesem Fall für das Standardprofil als

   $ gconftool-2 --get /apps/gnome-terminal/profiles/Default/background_color
   #E12FE12FC74D

dann können Sie entscheiden, wie Sie Ihre Eingabeaufforderung entsprechend einstellen möchten.

Diego Torres Milano
quelle
2

Mit xterm können Sie die Hintergrundfarbe mit der \e]11;?\aEscape-Sequenz abfragen . Sie müssen die Antwort vom Terminal lesen. Es gibt einen xtermcontrolBefehl, der das für Sie erledigt:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0
Stéphane Chazelas
quelle
Das gleiche funktioniert im Gnome-Terminal und wahrscheinlich auch in einigen anderen Terminal-Emulatoren (aber definitiv nicht in allen).
egmont