it-swarm.com.de

Setzen Sie die Farbpalette von Terminal 256 auf die Standardwerte zurück

Nehmen wir an, dass etwas die standardmäßige 256-Farben-Palette verletzt. Wählen Sie als Beispiel Farbe 108 aus:

printf "\033]4;108;rgb:ff/00/00\033\\"

Wie mache ich das rückgängig? Ich habe alle aktuellen Fragen zum Zurücksetzen des Terminals durchsucht und Folgendes versucht:

reset # You can't see this in the screenshot as it clears the screen
tput init
tput sgr0
printf '\e[0m'

Anhand eines Testmuster können wir deutlich erkennen, dass die Farbe 108 immer noch blau ist:

Colour 108 is still broken

Ich verwende das GNOME-Terminal.

Ich möchte nicht so etwas wie gconftool --recursive-unset /apps/gnome-terminal da dies mit der allgemeinen Terminalkonfiguration (zB Schriften) für alle offenen/neuen gnome-terminals. Es ist zu viel von einem breiten Pinselstrich.

Wie mache ich von der Kommandozeile innerhalb des Terminals :

  1. Eine bestimmte Palettenfarbe auf die Standardfarbe zurücksetzen?
  2. ALLE Palettenfarben auf Standard zurücksetzen?

Da das Problem durch das Aussenden eines Kontrollcodes verursacht werden kann, hoffe ich, dass es auch mit einem behoben werden kann.

2
Tom Hale

Verwenden Sie 104 anstelle von 4, um eine bestimmte Farbe zurückzusetzen, z. Farbnummer 108 wie in Ihrem Beispiel:

printf "\033]104;108\033\\"

Lassen Sie die Farbnummer weg, um die gesamte Palette (alle 256 Farben) zurückzusetzen:

printf "\033]104\033\\"

Hinweis: GNOME-Terminal (tatsächlich VTE) verwendet zwei "Ebenen" für Farben. Die über die API von VTE eingestellten Farben (oder im Falle von GNOME Terminal die ersten 16 Farben, die im Dialogfeld Einstellungen ausgewählt und in gsettings/dconf gespeichert wurden, der Rest sind die fest codierten Standardfarben von VTE) haben eine niedrigere Priorität. Für jeden Slot hat eine mögliche Escape-Sequenz eine höhere Priorität und überschreibt diesen Wert vorübergehend. Die obige Escape-Sequenz mit dem Parameter "resets" (104) löscht den Wert, der über die Escape-Sequenz "4" angegeben wurde, und kehrt somit zu dem Wert zurück, der im Einstellungsdialog von GNOME Terminal angegeben wurde (oder dem Standardwert von VTE für die erweiterte 256-Farben-Palette). . Aufgrund dieses Entwurfs kann ein Befehl gsettings oder dconf den Effekt einer farbändernden Escape-Sequenz auf keinen Fall rückgängig machen. Andere, nicht auf VTE basierende Terminalemulatoren verfolgen möglicherweise einen anderen Ansatz oder unterstützen diese Escape-Sequenzen überhaupt nicht.

3
egmont