你可以得到的颜色与一些控制台代码..我写到这里的例子https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
屏幕,tmux和虚拟控制台不支持此操作。
还有一些程序可以更改那里的颜色,例如cmatrixreloaded
这是他们如何执行此操作的示例https://github.com/oblique/configs/blob/master/.zshrc#L160
实际看到我的ncmpcpp()和wicd-curses()函数
我尝试了您的脚本,但出现以下错误:
~ % get_term_rgb_color.py 1
Traceback (most recent call last):
File "/home/kill/bin/get_term_rgb_color.py", line 30, in <module>
os.write(fd, bytes("\033]4;%d;?\033\\" % int(x), "UTF-8"))
TypeError: str() takes at most 1 argument (2 given)
该脚本可在python3中使用。
对于python2,将行更改为:
os.write(fd,“ \ 033] 4;%d;?\ 033 \”%int(x))
我有一段时间想着这样的事情。 感谢您提出来。
不幸的是,这仅在(u)rxvt和xterm下有效。 在gnome终端的屏幕上,tmux不会。 因此,它用处不大。 如果有其他(或其他)方式来获取此信息,我很乐意使用它。
或者,也许可以通过某种方式获取信息“我们是在浅色fg /深色bg终端下还是在深色fg /浅色bg下”。
我没有调查过...但是也许从这里有些? (最初形成此stackoverflow答案)
它确实可以在gnome-terminal中工作,但不能在konsole中工作。
我会尝试寻找其他方式。
我发现使用tmux可以将控制台代码转发到终端,并且我修改了脚本https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
我没办法用屏幕做到这一点。
如果您有任何疑问,请询问。
抱歉,我忘了在ncmpcpp()和wicd-curses()函数中进行更改,现在已更新。
我只是在urxvt,xterm,gnome-terminal和tmux下检查过它。 仅在gnome-terminal下不起作用。
您认为这也可以在某些OSX终端(例如Terminal.app或ITerm2)上工作吗?
目前,我正在对记录器进行一些重构(在这里:https://github.com/sickill/ascii.io-cli/tree/split)。 重构完成后,我将尝试使用您在此处提供的代码。
谢谢!
我不了解Terminal.app或ITerm2,如果他们支持颜色更改,它将起作用。
仅供参考,我也发现了这一点: https :
尽管不确定@oblique的代码是否能给我们带来更多
看起来https://github.com/dranjan/termcolors取决于select.poll
,这似乎在OSX中不起作用。
从头开始,我错了。 @ sigmavirus24发现该工具传递-1 * 2作为超时值而不是-1时存在问题。 需要进行更多调查...但这可能最终奏效。
另请注意,当我在OSX + iTerm2上尝试此操作时,实际上并没有正确选择术语颜色。 因此即使修复了该问题,它仍然不是最佳的,因为termcolors使用的底层C API( select
/ select.poll
)不如其他* nix样式灵活,后者可以接受任何负数。价值。
因此,我使用@ sigmavirus24处理了这个问题,并提出了这个问题: https : //gist.github.com/joshuarh/7904813 。 仍然需要完成/检查以下内容:
'\x1b[30m'
,所以我不确定如何将其转换为我们想要的颜色可以在网络上使用。获得终端的颜色方案似乎并不容易。 取而代之的是,我们可以允许用户在JSON文件中指定她/他的颜色方案吗? 如果实现足够通用,那么轻而易举地切换到任何新技术来捕获我们稍后将发现的终端颜色。
这似乎并不容易,但是我不相信这是不可行的。 我认为我们可以记录转义码,我们只需要将其转换回xterm颜色即可。
OTOH,如果我们允许用户指定所需的颜色,则会带来有趣的可能功能和错误。 我们可以让人们选择浏览时想要查看的方案,但是根据记录的前景色,这可能是个问题(例如,这是默认模式,在后备模式下带有日光化的前景色:https:// asciinema .org / a / 2214)。
我真正的意思是应该由上传者指定颜色方案。 至于其余的,我不知道,我也没有真正的判断力。
@losingkeys我们已经在记录转义颜色代码。 问题是它们只是一个数字,例如1、2或3。它们表示红色,绿色和黄色。 等等。 人们在终端中使用不同的配色方案,但是大多数配色方案都接近“原始” xterm颜色,因此在大多数情况下看起来“还可以”。
@losingkeys允许用户指定其配色方案(以
@mrabault理想的解决方案是使用记录器检测并上传终端方案,是的。 但是我们还没有找到(足够!)足够好的解决方案,该解决方案对于跨不同OS的大多数终端仿真器都适用。
在这方面是否已经取得了进展,例如在执行分支上?
是否可以查询xrdb
颜色? 这可以自动选择一个自定义主题(例如,日光化的)。
@blueyed到目前为止没有任何进展。
查询xrdb
仅对xterm / rxvt / other-terminal-using-x-resources有意义。 人们也使用基于libvte的术语(Gnome终端,XFCE终端,终结器等)和非Linux终端(iTerm,OS X上的Terminal.app)。
@blueyed顺便说一句,您可以在整个帐户范围内(在“帐户设置”页面上)或在每个asciicast(在“ asciicast编辑”页面上)为您的asciicast更改主题。 对于前者,这是您在日光暗化条件下的助手: https ://asciinema.org/a/13855?theme
这将是一个杀手feature!
我们正在讨论#196中的asciicast格式的第2版,我认为向元数据中添加可选的colors
对象,该对象包含文本前景色/背景色以及所有8(16)种颜色的调色板添加。 正如@mrabault所说,只要JSON中的调色板表示保持与Web播放器相同/兼容,我们就可以使用和更新获取颜色的技术。
至于实际的技术,这个问题已经很老了,链接的解决方案似乎已经消失了。 我想要在所有平台上都可以使用的东西,而我在犹豫要选择非100%正常工作的解决方案。 现在,我认为最好是支持我们现在所能提供的功能,将colors
调色板视为可选,并在不使用JSON时回退到播放器的默认主题(出于任何原因)。
有人在Python 3.3+上工作吗?
@timofonic,请再也不要漏地提及与存储库联系过的每个人。 我什至在这里都没有任何贡献,也不会为您提供任何“新闻”。
顺便说一句,如果有人对此有“新闻”(或者您提到自己和其他许多人的其他两个问题),则该问题将作为评论或请求请求发布在此处,以解决此问题。 如果您没有发现与该问题相关的任何内容,请假定没有“新闻”适合您。
@timofonic死在地狱
最有用的评论
@timofonic,请再也不要漏地提及与存储库联系过的每个人。 我什至在这里都没有任何贡献,也不会为您提供任何“新闻”。
顺便说一句,如果有人对此有“新闻”(或者您提到自己和其他许多人的其他两个问题),则该问题将作为评论或请求请求发布在此处,以解决此问题。 如果您没有发现与该问题相关的任何内容,请假定没有“新闻”适合您。