Можно ли отключить автоматическую подстройку цветов терминала в Lion?

35

Хотя замечательно, что в Terminal теперь есть встроенная поддержка для изменения цветов ANSI, меня раздражает, что он автоматически подстраивает цвета для повышения контрастности, что означает, что цвета, которые я на самом деле выбираю, часто оказываются размытыми или отключенными каким-либо другим способом. , Вот скриншот, объясняющий проблему:

снимок экрана с настройками цвета OS X Terminal.app

Это меня беспокоит, потому что мне нравится использовать одну и ту же цветовую схему в Terminal и MacVim, и с такой обработкой цветов в Terminal они не совпадают с теми, что используются в MacVim.

Кто-нибудь знает решение этой проблемы, кроме перехода на iTerm 2 (что я бы предпочел не делать - мне нравится остальная часть Terminal, особенно некоторые касания GUI, такие как пульсирующий визуальный звонок). Благодарность!

Йохан Сахлен
источник
1
Хороший вопрос - кажется, что также сделаны корректировки для прозрачности окна, не
говоря уже о
@kopischke, настройка минимального контраста не учитывает непрозрачность цвета фона, если вы это имеете в виду.
Крис Пейдж
Было бы полезно, если бы вы опубликовали скриншот с ожидаемыми цветами на черном фоне. Не говоря уже о цифрах, я не вижу разницы между образцами цветов в окне настроек и цветами текста в терминале на скриншоте, поэтому трудно сказать, насколько значительна разница.
Крис Пейдж
Теперь я знаю, почему я презираю OS X. Я потерял 6 с лишним часов, пытаясь выяснить, почему цветовая схема, которую я разработал для Linux, была искажена на Mac моего друга - я подозревал проблемы с преобразованием цветового пространства (sRGB против Apple RGB), но Я бы никогда не догадался, что это была ошибка терминала ... Спасибо за подтверждение моего диагноза.
Ян Вархол
Не по теме, но iTerm2 позволяет вам использовать визуальный звонок. Prefs> Advanced> Visual Bell мигает весь экран, а не просто значок звонка.
user2551

Ответы:

23

Вот хитрость, которую вам нужно знать: значения, установленные через RGB, искажаются, а значения, установленные через HSB - нет.

У меня была похожая проблема с использованием (отличной) цветовой схемы Solarize : MacVim имел более темный (и правильный) цвет фона, чем Terminal, хотя я устанавливал все правильные значения RGB в соответствии со спецификацией Solarized. Глянь сюда:

По сути, вам нужно знать, какие значения цвета должны быть для каждого из цветов терминала ANSI, текста и фона (обратите внимание, что это на вкладке окна), а затем установить их с помощью средства выбора HSB вместо RGB. Смотрите этот пример:

По какой-то причине (я подозреваю, что какой-то тип профиля или, возможно, контрастная настройка), цвет RGB, который вы вводите, не тот, который вы получаете. Вы также заметите, что после того, как вы установите значения через HSB, переключение в палитру RGB покажет параметры, отличные от ожидаемых. Все преобразования в соляризованные значения согласуются в соответствии с Photoshop; Похоже, что то, что Apple Color Pick делает для вас.

Райан Длугош
источник
9
Это невероятно хороший ответ.
Джейсон Салаз
Похоже, что RGB не искажен как таковой, он просто изменен настройками непрозрачности средств выбора согласно ответу @eirnym - комбинация из 2 не только объясняет это, но и решает его двумя способами. Большой!
Stuff
2
Не дождаться парада, но я не могу подтвердить, что это решает проблему - Terminal.app продолжает изменять значения, которые я ввожу в цветовое пространство HSB, даже при установке фона на правильные значения (включая непрозрачность 100% и размытие 0%) первый. Яркие значения кажутся менее подверженными этому, нежели более. Может быть, палитра цветов в Terminal.app серьезно глючит, может быть, он пытается быть «умным» в отношении контраста и цветовой гаммы (я бы не упомянул прошлое Apple) - как бы то ни было, решение выше не работает на моем система.
копишке
… Исследуя еще немного, проблема, кажется, коренится в отображении цветов Solarized от независящего от устройства (цветовое пространство LAB / HSB) к зависящему от устройства цветовому пространству (RGB). Последовательные результаты могут быть достигнуты при выборе цветового пространства HSB, как показано выше, но только в том случае, если оно также явно отображается на RGB устройства (в выпадающем меню за крошечной стрелкой в ​​небольшом цветовом квадрате слева от раскрывающегося цветового пространства). Различия в значениях RGB для таблиц цветов Solarized объясняются тем, что Solarized сопоставляется с sRGB, в то время как средство выбора цвета всегда неявно отображается на RGB устройства.
копищке
… Что говорит о том, что палитра цветов OS X была разработана для людей, которые на самом деле знают, о чем эта штука в цветовом пространстве (например, графические дизайнеры), а не для нас, терминалов хрюкает :). [ага, ОТ, я знаю]
копишке
10

выбрав «Device RGB» из выпадающего списка Apple Color Picker

  1. Откройте палитру цветов
  2. Выберите вкладку ползунков
  3. Нажмите на образец под увеличительным стеклом, слева от раскрывающегося списка.
  4. выберите Device RGB

Теперь цвета, заданные шестнадцатеричным значением, не будут подвергаться преобразованию цветового пространства.

В Сьерре средство выбора цветового пространства изменилось на значок шестеренки: Сьерра-палитра цветов

Источник

Даниэль Хольц
источник
2
Круто - спасибо за это! Для всего мастерства дизайна Apple, совершенно не очевидно, что нажатие на это откроет меню.
Райан Длугош
Примечание: если этот обходной путь использования цветов с различными цветовыми пространствами работает, он, вероятно, полагается на ошибку в коде обработки цвета, которая должна работать с любым цветом и может перестать работать в будущем, когда эта ошибка будет исправлена.
Крис Пейдж
1
Этот трюк сработал для меня; трюк HSB не сделал.
Джей
4

Цветовые профили, безусловно, важны, но здесь есть еще одна проблема: Terminal.app автоматически осветляет любой цвет при отображении поверх фона по умолчанию. Вот, например, цвета, выводимые Terminal.app с цветовой темой Solarized , измеренные с помощью DigitalColor Meter в режиме sRGB и сопоставленные с каноническими значениями Solarized sRGB.

При отображении на черном (или любом другом цвете) фоне Terminal.app выдает приблизительно правильные цвета; однако на фоне по умолчанию все цвета, кроме текста по умолчанию и полужирного текста, по умолчанию слишком яркие.

цветовой тест в Terminal.app.  Цвета, как и ожидалось, отображаются на цветном фоне, но становятся ярче, если они отображаются на заданном по умолчанию фоне.

Апрель Аркус
источник
Голосовали против, потому что это не ответ. Кажется, это комментарий к вопросу.
Крис Пейдж
2
Как вы создали эту таблицу цветов? Выглядит очень удобно.
Люк Дэвис
2

Откройте окно настроек вашей темы, переключите цвет фона, установите размытие на 0% и непрозрачность на 100%. После этого ваши цвета будут такими же, как вы хотите. Также вы должны проверить каждый цвет, который вы выбираете для текста для этих параметров.

введите описание изображения здесь

Эйр Ним
источник
Проголосовали против, потому что это не относится к вопросу, который касается минимально-контрастного поведения Терминала и не зависит от прозрачности фона.
Крис Пейдж
2

Короче говоря: нет, нет поддерживаемых средств, чтобы отключить это.

Терминал автоматически применяет минимальный контраст при отображении цвета ANSI (или расширенной таблицы из 256 цветов) на цвет фона терминала или при отображении цвета переднего плана / текста терминала на цвет фона ANSI.

Это должно быть удобно, так что можно установить цвет фона или переднего плана и сделать так, чтобы они контрастировали с цветами ANSI без необходимости настройки всех цветов ANSI. Это было особенно важно в более ранних версиях Terminal, в которых отсутствовала поддержка Preferences для настройки цветов ANSI.

В более старых версиях Terminal применялся минимальный контраст для всех цветовых комбинаций, но это означало, что, например, текст «красный на красном» стандарта ANSI мог быть читаемым, но некоторые программы намеренно отображают текст с одинаковым цветом переднего плана и фона, чтобы скрыть его (например, для отображения игровых подсказок или шуток). Из-за этого более новые версии Terminal не применяют минимальный контраст при отображении одного цвета ANSI на другом.

Теперь вместо того, чтобы обращаться к случаю одного цвета, Терминал избегает применения минимального контраста для всех комбинаций цветов ANSI, потому что предполагается, что если пользователь настраивает какие-либо цвета ANSI, они настраивают их все так, чтобы они контрастировали по желанию , Также предполагается, что эти пользователи будут корректировать или учитывать цвета фона и переднего плана терминала, чтобы соответствовать их желаемой цветовой схеме.

Если обходной путь использования цветов с разными цветовыми пространствами - предложенный в других ответах - работает, он, вероятно, полагается на ошибку в коде обработки цвета, которая должна работать с любым цветом и может перестать работать в будущем когда эта ошибка исправлена.

Если для вас важна возможность явного отключения или настройки режима минимальной контрастности, я рекомендую сообщить об этом Apple, отправив отчет по адресу https://developer.apple.com/bug-reporting/, используя любой идентификатор Apple ID.

Крис Пейдж
источник