Ist es möglich, die automatische Farbanpassung von Terminal in Lion zu deaktivieren?

Obwohl es großartig ist, dass Terminal jetzt eine integrierte Unterstützung zum Ändern der ANSI-Farben hat, finde ich es ärgerlich, dass es die Farben automatisch anpasst, um den Kontrast zu verbessern, was bedeutet, dass die Farben, die ich tatsächlich auswähle, oft ausgewaschen oder auf andere Weise ausgewaschen werden . Hier ist ein Screenshot, der das Problem erklärt:

Screenshot der Farbeinstellungen von OS X Terminal.app

Das nervt mich, weil ich gerne das gleiche Farbschema in Terminal und MacVim verwende, und mit dieser Behandlung von Farben durch Terminal stimmen sie nicht mit denen in MacVim überein.

Kennt jemand eine Lösung dafür, außer zu iTerm 2 zu wechseln (was ich lieber nicht möchte – ich mag den Rest von Terminal, besonders einige GUI-Touches wie die pulsierende visuelle Glocke). Danke!

Gute Frage – es scheinen auch Anpassungen für die Fenstertransparenz vorgenommen worden zu sein, ganz zu schweigen vom Subpixel-Rendering…
@kopischke, die minimale Kontrastanpassung berücksichtigt nicht die Deckkraft der Hintergrundfarbe, wenn Sie das meinen.
Es wäre hilfreich, wenn Sie einen Screenshot posten würden, der die erwarteten Farben auf schwarzem Hintergrund zeigt. Abgesehen von den Zahlen kann ich in Ihrem Screenshot keinen wirklichen Unterschied zwischen den Farbmustern im Einstellungsfenster und den Textfarben im Terminal erkennen, daher ist es schwer zu sagen, wie signifikant der Unterschied ist.
Jetzt weiß ich, warum ich OS X verachte. Ich habe mehr als 6 Stunden verloren, um herauszufinden, warum ein Farbschema, das ich unter Linux entworfen habe, auf dem Mac meines Freundes verstümmelt wurde - ich vermutete Probleme mit der Farbraumkonvertierung (sRGB vs. Apple RGB), aber Ich würde nie vermuten, dass das Terminal schuld war ... Danke für die Bestätigung meiner Diagnose.
Off-Topic, aber iTerm2 lässt Sie eine pulsierende visuelle Glocke haben. Einstellungen > Erweitert > Visuelle Glocke blinkt auf dem gesamten Bildschirm, nicht nur ein Glockensymbol.

Antworten (5)

Hier ist der Trick, den Sie kennen müssen: Werte, die über RGB gesetzt werden, werden verstümmelt, die über HSB gesetzten nicht.

Ich hatte ein ähnliches Problem mit dem (großartigen) Solarized -Farbschema: MacVim hatte eine dunklere (und korrekte) Hintergrundfarbe als Terminal, obwohl ich alle korrekten RGB-Werte gemäß der Solarized-Spezifikation eingestellt hatte. Siehe hier:

Grundsätzlich müssen Sie wissen, wie Ihre Farbwerte für jede der ANSI-, Text- und Hintergrundfarben des Terminals sein sollen (beachten Sie, dass sich diese auf der Registerkarte „Fenster“ befindet) und sie dann über die HSB-Auswahl anstelle von RGB festlegen . Siehe dieses Beispiel:

Aus irgendeinem Grund (ich vermute eine Art Profilsache oder vielleicht eine Kontrastoptimierung, wie Sie vorschlagen), ist die von Ihnen eingegebene RGB-Farbe nicht das, was Sie erhalten. Sie werden auch feststellen, dass nach dem Einstellen der Werte über HSB beim Wechseln zur RGB-Auswahl andere Optionen als erwartet angezeigt werden. Die Solarized-Wertkonvertierungen stimmen laut Photoshop alle überein; Es scheint etwas zu sein, was der Apple-Farbwähler für Sie tut.

Das ist eine unglaublich gute Antwort.
Sieht so aus, als wäre RGB nicht als solches verstümmelt, sondern nur durch die Opazitätseinstellungen der Auswahl gemäß der Antwort von @eirnym modifiziert - die Kombination der 2 erklärt es nicht nur, sondern löst es auf zwei Arten. Groß!
Nicht auf die Parade zu regnen, aber ich kann nicht bestätigen, dass dies das Problem behebt – Terminal.app ändert weiterhin Werte, die ich im HSB-Farbraum eingebe, selbst wenn der Hintergrund auf die richtigen Werte eingestellt wird (einschließlich Deckkraft 100 % und Unschärfe 0 %). Erste. Helle Werte scheinen weniger anfällig dafür zu sein, die nicht hellen Werte eher. Vielleicht ist die Farbauswahl in Terminal.app ernsthaft fehlerhaft, vielleicht versucht sie, in Bezug auf Kontrast und Farbbereich „schlau“ zu sein (ich würde beides nicht an Apple vorbeiziehen) – wie dem auch sei, die obige Lösung funktioniert bei mir nicht System.
… bei näherer Untersuchung scheint das Problem in der Zuordnung von solarisierten Farben vom geräteunabhängigen ( LAB / HSB-Farbraum) zum geräteabhängigen Farbraum (RGB) zu liegen. Bei Auswahl des HSB-Farbraums, wie oben gezeigt, können konsistente Ergebnisse erzielt werden, aber nur , wenn auch ausdrücklich auf Geräte-RGB abgebildet wird (im Dropdown-Menü hinter dem kleinen Pfeil auf dem kleinen Farbquadrat links neben dem Farbraum-Dropdown). Unterschiede in den RGB-Werten zu den Solarized-Farbtabellen erklären sich dadurch, dass Solarized auf sRGB abbildet, während der Farbwähler immer implizit auf Geräte-RGB abbildet.
… was darauf hindeutet, dass der OS X-Farbwähler für Leute entwickelt wurde, die wirklich wissen, worum es bei diesem Farbraum-Zeug geht (dh Grafikdesigner), nicht für uns Terminal-Grunzen :). [ja, OT, ich weiß]
@kopischke ja - es hängt definitiv damit zusammen, wie Apple die Farben für die Zwecke des ausgewählten Anzeigeprofils übersetzt, oder so ähnlich. Ich denke, wenn Sie Ihr Anzeigeprofil (falsch) auf sRGB einstellen würden, scheint es wie erwartet zu "funktionieren". Darauf bezog ich mich, als ich in meiner Antwort "eine Art Profilsache" sagte; danke für die weiteren infos! (Das heißt, ich musste den Geräte-RGB-Schritt, den Sie gemacht haben, nicht ausführen, aber vielleicht werden es einige Leute tun.)
Um eine letzte Anmerkung hinzuzufügen: Obwohl die Ergebnisse insofern konsistent sind, als die in der Farbauswahl ausgewählten Werte nicht von Terminal.app zurückgesetzt werden, wenn Sie das oben beschriebene Verfahren befolgen, werden die tatsächlichen Anzeigefarben immer noch subtil optimiert , helle Farben mehr als dunkle diejenigen – überprüfen Sie einfach mit der Lupe des Farbwählers. Solarized base03(dunkle Fensterfarbe) wird beispielsweise korrekt gerendert, aber base3(helle Fensterfarbe) nicht vollständig. Und obwohl der Unterschied so subtil ist, dass er fast vernachlässigbar ist, macht der HSB-zu-Geräte-RGB-Ansatz den in der Frage des OP beschriebenen Effekt nicht vollständig zunichte.
Hinweis: Wenn diese Problemumgehung zur Verwendung von Farben mit unterschiedlichen Farbräumen funktioniert, beruht sie wahrscheinlich auf einem Fehler im Farbverarbeitungscode, der mit jeder Farbe funktionieren soll, und funktioniert möglicherweise in Zukunft nicht mehr, wenn dieser Fehler behoben ist.
Das hat bei mir auf High Sierra nicht funktioniert. Es sieht so aus, als ob der Fehler, auf den sich @Chris Page bezog, behoben wurde.

Wählen Sie „Geräte-RGB“ aus dem Dropdown-Menü „Apple Color Picker“.

  1. Öffnen Sie die Farbauswahl
  2. Wählen Sie die Registerkarte Schieberegler
  3. Klicken Sie auf das Farbfeld unter der Lupe links neben dem Dropdown-Menü des Schiebereglers
  4. WählenDevice RGB

Jetzt werden Farben, die durch Hex-Werte angegeben sind, nicht der Farbraumkonvertierung unterzogen.

In Sierra hat sich die Farbraumauswahl in das Zahnradsymbol geändert:Sierra-Farbraumauswahl

Quelle

Cool - danke dafür! Bei aller Designkompetenz von Apple ist es völlig nicht offensichtlich, dass ein Klick darauf ein Menü öffnen würde.
Hinweis: Wenn diese Problemumgehung zur Verwendung von Farben mit unterschiedlichen Farbräumen funktioniert, beruht sie wahrscheinlich auf einem Fehler im Farbverarbeitungscode, der mit jeder Farbe funktionieren soll, und funktioniert möglicherweise in Zukunft nicht mehr, wenn dieser Fehler behoben ist.
Dieser Trick hat bei mir funktioniert; der HSB-Trick nicht.

Farbprofile sind definitiv wichtig, aber hier lauert ein weiteres Problem: Terminal.app hellt automatisch jede Farbe auf, wenn sie über dem Standardhintergrund angezeigt wird. Hier sind zum Beispiel die Farben, die von Terminal.app mit dem Solarized-Farbdesign ausgegeben werden , gemessen mit dem DigitalColor Meter im sRGB-Modus und verglichen mit den kanonischen Solarized-sRGB-Werten.

Wenn Terminal.app über einem schwarzen (oder einem anderen farbigen) Hintergrund dargestellt wird, erzeugt es ungefähr die richtigen Farben; Auf dem Standardhintergrund sind jedoch alle Farben mit Ausnahme des Standard- und Standardfetttexts wesentlich zu hell.

ein Farbtest in Terminal.app.  Farben sind wie erwartet, wenn sie über einem farbigen Hintergrund dargestellt werden, werden jedoch aufgehellt, wenn sie über dem Standardhintergrund dargestellt werden.

Abgestimmt, weil dies keine Antwort ist. Es scheint ein Kommentar zu der Frage zu sein.
Wie haben Sie diese Farbtabelle erstellt? Sieht super praktisch aus.

Kurz gesagt: Nein, es gibt keine unterstützten Mittel, um dies zu deaktivieren.

Terminal wendet automatisch einen minimalen Kontrast an, wenn eine ANSI-Farbe (oder erweiterte 256-Farben-Tabelle) auf der Terminal-Hintergrundfarbe angezeigt wird, oder wenn die Vordergrund-/Textfarbe des Terminals auf einer ANSI-Hintergrundfarbe angezeigt wird.

Dies ist als Bequemlichkeit gedacht, damit man eine Hintergrund- oder Vordergrundfarbe einstellen und sie mit den ANSI-Farben kontrastieren lassen kann, ohne alle ANSI-Farben anpassen zu müssen. Dies war besonders wichtig in früheren Versionen von Terminal, die keine Unterstützung für Einstellungen zum Anpassen der ANSI-Farben hatten.

Ältere Versionen von Terminal wandten den Minimalkontrast für alle Farbkombinationen an, aber das bedeutete, dass zB ANSI-Rot-auf-Rot-Text lesbar sein konnte, aber einige Programme Text mit der gleichen Vorder- und Hintergrundfarbe anzeigen, um ihn zu verbergen (z. B. zur Anzeige von Spielhinweisen oder Witzpunzen). Aus diesem Grund wenden neuere Versionen von Terminal den Mindestkontrast nicht an, wenn eine ANSI-Farbe auf einer anderen angezeigt wird.

Anstatt nur den Fall der gleichen Farbe zu behandeln, vermeidet Terminal jetzt die Anwendung des Mindestkontrasts für alle Kombinationen von ANSI-Farben, da davon ausgegangen wird, dass der Benutzer, wenn er ANSI-Farben anpasst, sie alle so anpasst, dass sie wie gewünscht miteinander kontrastieren . Es wird auch angenommen, dass diese Benutzer die Hintergrund- und Vordergrundfarben des Terminals anpassen oder berücksichtigen, damit sie zu ihrem gewünschten Farbschema passen.

Wenn die in anderen Antworten vorgeschlagene Problemumgehung zur Verwendung von Farben mit unterschiedlichen Farbräumen funktioniert, beruht sie wahrscheinlich auf einem Fehler im Farbbehandlungscode, der mit jeder Farbe funktionieren soll und in Zukunft möglicherweise nicht mehr funktioniert wenn dieser Fehler behoben ist.

Wenn es Ihnen wichtig ist, das Verhalten mit minimalem Kontrast explizit zu deaktivieren oder anzupassen, empfehle ich, Apple dies mitzuteilen, indem Sie einen Bericht unter https://developer.apple.com/bug-reporting/ mit einer beliebigen Apple-ID einreichen.

Öffnen Sie die Fenstereinstellungen für Ihr Design, schalten Sie die Hintergrundfarbe um, stellen Sie die Unschärfe auf 0 % und die Deckkraft auf 100 % ein. Danach werden Ihre Farben die gleichen sein, wie Sie wollen. Außerdem sollten Sie jede Farbe, die Sie für Text auswählen, für diese Parameter überprüfen.

Geben Sie hier die Bildbeschreibung ein

Abgestimmt, weil dies nicht auf die Frage zutrifft, bei der es um das minimale Kontrastverhalten von Terminal geht und die von der Hintergrundopazität nicht beeinflusst wird.