Czy można wyłączyć automatyczne dostosowywanie kolorów w terminalu w programie Lion?

35

Chociaż to wspaniałe, że Terminal ma teraz wbudowaną obsługę zmiany kolorów ANSI, denerwuje mnie to, że automatycznie dostosowuje kolory w celu poprawy kontrastu, co oznacza, że ​​kolory, które faktycznie wybieram, często zostają wyprane lub usunięte w inny sposób . Oto zrzut ekranu wyjaśniający problem:

zrzut ekranu ustawień kolorów OS X Terminal.app

To mnie wkurza, ponieważ lubię używać tego samego schematu kolorów w Terminalu i MacVimie, a dzięki obsłudze kolorów przez Terminal nie pasują one do kolorów w MacVimie.

Czy ktoś wie o rozwiązaniu tego problemu, oprócz przejścia na iTerm 2 (czego wolałbym nie - lubię resztę terminala, zwłaszcza niektóre elementy interfejsu GUI, takie jak pulsujący dzwonek wizualny). Dzięki!

Johan Sahlén
źródło
1
Dobre pytanie - wydaje się, że wprowadzono również poprawki dla przezroczystości okna, nie
wspominając
@kopischke, regulacja minimalnego kontrastu nie uwzględnia krycia koloru tła, jeśli o to ci chodzi.
Chris Page
Byłoby to pomocne, jeśli opublikowałeś zrzut ekranu pokazujący oczekiwane kolory na czarnym tle. Pomijając liczby, naprawdę nie widzę różnicy między próbkami kolorów w oknie preferencji a kolorami tekstu w terminalu na twoim zrzucie ekranu, więc trudno jest powiedzieć, jak znacząca jest różnica.
Chris Page
Teraz wiem, dlaczego gardzę OS X. Straciłem ponad 6 godzin, próbując dowiedzieć się, dlaczego schemat kolorów, który zaprojektowałem na Linuksie, został zniekształcony na komputerze Mac mojego przyjaciela - podejrzewałem problemy z konwersją przestrzeni kolorów (sRGB vs Apple RGB), ale Nigdy bym nie zgadł, że to wina terminala ... Dzięki za potwierdzenie mojej diagnozy.
Jan Warchoł
Nie na temat, ale iTerm2 pozwala ci mieć dzwonek wizualny. Prefs> Zaawansowane> Wizualny dzwon miga na całym ekranie, a nie tylko na ikonie dzwonka.
user2551

Odpowiedzi:

23

Oto sztuczka, którą musisz znać: wartości ustawione przez RGB ulegają zniekształceniu, wartości ustawione przez HSB nie.

Miałem podobny problem przy użyciu (świetnego) schematu kolorów Solarized : MacVim miał ciemniejszy (i poprawny) kolor tła niż Terminal, mimo że ustawiałem wszystkie prawidłowe wartości RGB zgodnie ze specyfikacją Solarized. Spójrz tutaj:

Zasadniczo musisz wiedzieć, jakie powinny być twoje wartości kolorów dla każdego z kolorów Terminal ANSI, tekstu i Tła (zauważ, że ten jest na karcie Okno), a następnie ustaw je za pomocą selektora HSB zamiast RGB. Zobacz ten przykład:

Z jakiegokolwiek powodu (podejrzewam, że coś jest profilem, a może poprawienie kontrastu, jak sugerujesz), wprowadzony kolor RGB nie jest tym, co dostajesz. Zauważysz również, że po ustawieniu wartości za pomocą HSB przełączenie na próbnik RGB pokaże opcje inne niż można się spodziewać. Wszystkie konwersje wartości Solarized zgadzają się zgodnie z programem Photoshop; wygląda na to, że robi to dla ciebie próbnik kolorów Apple.

Ryan Długosz
źródło
9
To niewiarygodnie dobra odpowiedź.
Jason Salaz
Wygląda na to, że RGB nie jest zniekształcony, po prostu zmodyfikowany przez ustawienia krycia selektorów zgodnie z odpowiedzią @eirnym - kombinacja 2 nie tylko wyjaśnia, ale rozwiązuje go na 2 sposoby. Świetny!
farsz
2
Nie padam na paradę, ale nie mogę potwierdzić, że to rozwiązuje problem - Terminal.app ciągle modyfikuje wartości, które wprowadzam w przestrzeni kolorów HSB, nawet po ustawieniu prawidłowych wartości tła (w tym krycie 100% i rozmycie 0%) pierwszy. Jasne wartości wydają się mniej podatne na to, a bardziej jasne. Być może próbnik kolorów w Terminal.app jest poważnie wadliwy, może stara się być „inteligentny” w kwestii kontrastu i zakresu kolorów (nie chciałbym pominąć Apple'a) - niezależnie od tego, powyższe rozwiązanie nie działa na moim system.
kopischke
… Badając nieco więcej, problem wydaje się być związany z odwzorowaniem kolorów Solarized z niezależnych od urządzenia (przestrzeń kolorów LAB / HSB) na zależną od urządzenia przestrzeń kolorów (RGB). Spójne wyniki można osiągnąć, wybierając przestrzeń kolorów HSB, jak pokazano powyżej, ale tylko wtedy, gdy wyraźne mapowanie do urządzenia RGB (w menu rozwijanym za małą strzałką na małym kwadracie kolorów po lewej stronie menu przestrzeni kolorów). Różnice w wartościach RGB w tabelach kolorów Solarized wyjaśniono faktem, że mapy Solarized do sRGB, podczas gdy próbnik kolorów zawsze pośrednio mapuje na urządzenie RGB.
kopischke
… Co mówi, że próbnik kolorów OS X został zaprojektowany dla ludzi, którzy faktycznie wiedzą, o co chodzi w tej przestrzeni kolorów (tj. Grafików), a nie nas chrząka Terminal :). [tak, OT, wiem]
kopischke
10

wybranie „Device RGB” z listy rozwijanej próbki Apple Color Picker

  1. Otwórz próbnik kolorów
  2. Wybierz kartę suwaków
  3. Kliknij próbkę pod lupą po lewej stronie menu rozwijanego suwaka
  4. Wybierać Device RGB

Teraz kolory określone wartością heksadecymalną nie będą poddawane konwersji przestrzeni kolorów.

W Sierra selektor przestrzeni kolorów zmienił się na ikonę koła zębatego: Próbnik przestrzeni kolorów Sierra

Źródło

Daniel Holz
źródło
2
Fajnie - dzięki za to! Mimo całej sprawności projektowej Apple, nie jest oczywiste, że kliknięcie tego przycisku spowoduje wyświetlenie menu.
Ryan Dlugosz
Uwaga: jeśli to obejście używania kolorów z różnymi przestrzeniami kolorów działa, prawdopodobnie opiera się na błędzie w kodzie obsługi kolorów, który powinien działać z dowolnym kolorem i może przestać działać w przyszłości, gdy błąd zostanie naprawiony.
Chris Page
1
Ta sztuczka działała dla mnie; sztuczka HSB nie.
Jay
4

Profile kolorów są zdecydowanie ważne, ale czai się tutaj inny problem: Terminal.app automatycznie rozjaśnia dowolny kolor, gdy jest wyświetlany na domyślnym tle. Oto, na przykład, kolory wyprowadzane przez Terminal.app z uruchomionym motywem kolorów Solarized , zmierzone za pomocą miernika DigitalColor Meter w trybie sRGB i porównane z kanonicznymi wartościami SolarR sized RGB.

Terminal.app wyświetlany na czarnym (lub dowolnym innym kolorze) tle daje w przybliżeniu prawidłowe kolory; jednak na domyślnym tle wszystkie kolory oprócz domyślnego i domyślnego pogrubionego tekstu są znacznie zbyt jasne.

test kolorów w Terminal.app.  Kolory są zgodne z oczekiwaniami, gdy są prezentowane na kolorowym tle, ale rozjaśniane, gdy są prezentowane na domyślnym tle.

April Arcus
źródło
Oddany głos, ponieważ to nie jest odpowiedź. To wydaje się być komentarzem do pytania.
Chris Page
2
Jak wygenerowałeś tę tabelę kolorów? Wygląda bardzo przydatnie.
Luke Davis,
2

Otwórz ustawienia okna dla swojego motywu, przełącz kolor tła, ustaw rozmycie na 0% i Krycie na 100%. Po tym twoje kolory będą takie same, jak chcesz. Ponadto należy sprawdzić każdy wybrany kolor tekstu dla tych parametrów.

wprowadź opis zdjęcia tutaj

Eir Nym
źródło
Obniżono głosowanie, ponieważ nie dotyczy to pytania, które dotyczy zachowania terminalu o minimalnym kontraście i nie ma na niego wpływu nieprzezroczystość tła.
Chris Page
2

W skrócie: nie, nie ma obsługiwanych środków, aby to wyłączyć.

Terminal automatycznie stosuje minimalny kontrast podczas wyświetlania koloru ANSI (lub rozszerzonej tabeli 256 kolorów) na kolorze tła terminala lub podczas wyświetlania koloru pierwszego planu / tekstu terminala na kolorze tła ANSI.

Ma to być wygoda, dzięki czemu można ustawić kolor tła lub pierwszego planu i ustawić je w kontraście z kolorami ANSI bez konieczności dostosowywania wszystkich kolorów ANSI. Było to szczególnie ważne we wcześniejszych wersjach terminalu, w których brakowało obsługi preferencji w zakresie dostosowywania kolorów ANSI.

Starsze wersje terminala stosowały minimalny kontrast dla wszystkich kombinacji kolorów, ale oznaczało to, że np. Tekst czerwono-czerwony ANSI może być czytelny, ale niektóre programy celowo wyświetlają tekst o tym samym kolorze pierwszego planu i tła, aby go ukryć (na przykład do wyświetlania wskazówek do gry lub żartów). Z tego powodu nowsze wersje terminala nie stosują minimalnego kontrastu podczas wyświetlania jednego koloru ANSI na drugim.

Teraz zamiast zajmować się przypadkiem tego samego koloru, Terminal unika stosowania minimalnego kontrastu dla wszystkich kombinacji kolorów ANSI, ponieważ zakłada się, że jeśli użytkownik dostosuje dowolne kolory ANSI, dostosuje je wszystkie, aby kontrastować ze sobą zgodnie z potrzebami . Zakłada się również, że ci użytkownicy dostosują lub uwzględnią kolory tła terminala i pierwszego planu, aby dopasować je do pożądanego schematu kolorów.

Jeśli obejście polegające na używaniu kolorów z różnymi przestrzeniami kolorów - sugerowane w innych odpowiedziach - działa, prawdopodobnie opiera się na błędzie w kodzie obsługi kolorów, który powinien działać z dowolnym kolorem i może przestać działać w przyszłości kiedy ten błąd zostanie naprawiony.

Jeśli ważna jest możliwość jednoznacznego wyłączenia lub dostosowania zachowania minimalnego kontrastu, zalecamy powiadomienie Apple, przesyłając raport na stronie https://developer.apple.com/bug-reporting/ przy użyciu dowolnego identyfikatora Apple ID.

Chris Page
źródło