是否可以在Lion中禁用终端对颜色的自动调整?


35

终端现在内置了更改ANSI颜色的支持,这真是太好了,但我发现它会自动调整颜色以提高对比度,这很令人讨厌,这意味着我实际选择的颜色经常以其他方式被洗掉或淡化。 。这是说明问题的屏幕截图:

OS X Terminal.app颜色设置的屏幕截图

这让我感到困扰,因为我喜欢在Terminal和MacVim中使用相同的配色方案,并且通过Terminal对颜色进行这种处理,它们与MacVim中的颜色不匹配。

除了切换到iTerm 2(我不希望–我喜欢Terminal的其余部分,尤其是一些GUI触动,如脉动的可视铃声)外,还有谁知道解决方案吗?谢谢!


1
很好的问题–似乎还需要调整窗口的透明度,
不必担心

@kopischke,最小对比度调整未考虑背景色的不透明度,如果这是您的意思。
克里斯·佩奇

如果您在黑色背景上发布了显示预期颜色的屏幕截图,将会很有帮助。除了数字,我真的看不到首选项窗口中的色样与屏幕快照中终端中的文本颜色之间的区别,因此很难说出这些区别有多重要。
克里斯·佩奇

现在我知道为什么鄙视OS X了。我已经花了6个多小时的时间来找出为什么我在Linux上设计的配色方案在我朋友的Mac上被弄乱了-我怀疑颜色空间转换(sRGB与Apple RGB)有问题,但是我永远不会猜到这是终端机的错...感谢您确认我的诊断。
JanWarchoł16年

题外话,但是iTerm2让您有一个令人神往的视觉铃声。“偏好设置”>“高级”>“可视铃声”会在整个屏幕上闪烁,而不仅仅是铃声图标。
user2551

Answers:


23

这是您需要知道的窍门:通过RGB设置的值会被弄乱,而通过HSB设置的值则不会。

我不得不使用(大)了类似的问题Solarized配色方案:必须的MacVim较暗(正确)的背景颜色比终端,即使我将所有按照Solarized规范正确的RGB值。看这里:

基本上你需要知道你的颜色值都应该是每个终端ANSI,文本和背景的(注意,这是一个窗口选项卡上)的颜色,然后通过HSB选择器,而不是RGB设置。请参阅以下示例:

不管出于什么原因(我怀疑是某种类型的配置文件,或者是您建议的对比度调整),输入的RGB颜色都不是您得到的。您还将注意到,一旦通过HSB设置了值,切换到RGB选择器将显示与您期望的选项不同的选项。Solarized值转换均根据Photoshop同意;这似乎是Apple颜色选择器正在为您做的事情。


9
这是一个令人难以置信的好答案。
杰森·萨拉兹

看起来RGB并没有受到干扰,只是根据@eirnym的答案由选择器的不透明度设置进行了修改-2的组合不仅可以解释它,而且可以通过2种方法解决。大!
塞斯特2012年

2
不要下雨游行,但我无法确认这能解决问题–即使将背景设置为正确的值(包括不透明度100%和模糊0%),Terminal.app仍会修改我在HSB颜色空间中输入的值。第一。明亮的值似乎不太容易出现这种情况,非明亮的值更容易出现这种情况。也许Terminal.app中的颜色选择器是个严重的错误,也许它试图对对比度和颜色范围“很聪明”(我不会任凭苹果公司过)–可能的是,上述解决方案对我来说不起作用系统。
kopischke 2012年

…进行更多调查,问题似乎出在从设备无关的颜色(LAB / HSB颜色空间)到设备相关的颜色空间(RGB)的映射上。如上所示,选择HSB色彩空间时可以达到一致的结果,但是只有同时明确映射到设备RGB时(在色彩空间下拉菜单左侧小颜色正方形上的小箭头后面的下拉菜单中),才能获得一致的结果。Solarized映射到sRGB的事实解释了RGB值与Solarized颜色表的差异,而颜色选择器始终隐式映射到设备RGB。
kopischke 2012年

……这告诉OS X拾色器是为实际上知道该色彩空间内容是什么的人(即图形设计师)设计的,而不是针对终端用户的:)。[是的,旧约,我知道]
kopischke 2012年

10

从Apple Color Picker色板下拉菜单中选择“设备RGB”

  1. 打开拾色器
  2. 选择滑块选项卡
  3. 单击滑块下方左侧的放大镜下的色板
  4. 选择 Device RGB

现在,十六进制值指定的颜色将不进行颜色空间转换。

在Sierra中,颜色空间选择器已更改为齿轮图标: Sierra色彩空间选择器

资源


2
酷-感谢您!对于Apple的所有设计能力而言,完全不明显的是单击此按钮将显示一个菜单。
Ryan Dlugosz'4

注意:如果使用不同颜色空间的颜色的这种解决方法行得通,则可能是依赖于颜色处理代码中的一个错误,该错误应该适用于任何颜色,并且在该错误修复后可能会停止工作。
克里斯·佩奇

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的早期版本中尤其重要,后者缺少用于自定义ANSI颜色的首选项支持。

较旧的Terminal版本对所有颜色组合都应用了最小对比度,但这意味着例如ANSI的红色对红色文本可能可读,但是某些程序故意将文本显示为具有相同的前景色和背景色以便将其隐藏(例如,用于显示游戏提示或笑话趣味)。因此,当在一种ANSI颜色上显示另一种ANSI颜色时,较新版本的Terminal不会应用最小对比度。

现在,终端机不仅仅解决同色情况,还避免了对所有ANSI颜色组合应用最小对比度,因为假定如果用户自定义任何ANSI颜色,他们将自定义所有ANSI颜色以相互对比。还假定这些用户将调整或考虑终端背景和前景色以适合其所需的配色方案。

如果使用其他答案中所建议的使用具有不同颜色空间的颜色的解决方法行得通,则可能是依赖于颜色处理代码中的一个错误,该错误应该适用于任何颜色,并且将来可能会停止工作当该错误修复时。

如果能够显式禁用或调整最小对比度行为对您很重要,我建议通过使用任何Apple ID 在https://developer.apple.com/bug-reporting/上提交报告来告知Apple 。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.