【问题标题】:Determine whether the current Linux console supports 256 colours? [closed]判断当前Linux控制台是否支持256色? [关闭]
【发布时间】:2012-01-19 16:53:13
【问题描述】:

有没有办法在Linux下检查'当前'控制台是否支持Python中的256色?

我特别想使用诅咒。

【问题讨论】:

  • 你为什么不想使用curses
  • 好吧,curses 是标准的,通常是 curses 带来了 terminfo 数据库关于终端功能。为什么要使用其他可能仍然在幕后使用 curses 或依赖于数据文件的 curses 的东西?
  • @Anonymous 是对的。由于大多数 linux 系统上的 terminfo / termcap 数据库都随 ncurses 一起提供,因此要使用其他东西,需要在您想要支持的每个终端上编译您自己的数据。由于您只需要一条信息,您可以只维护一个字典:terminal_colors = { 'vt52': 2, 'vt100': 2, 'vt320': 2 }
  • -1 这就像问I have a nail which I need to put into a block of wood. But I don't want to use a hammer because I only own the tools that I absolutely need. NO HAMMERS!
  • (如果您有充分的理由不使用curses,那将是另一回事,我们可以帮助您解决这个问题。但“我不想”不是一个充分的理由。 )

标签: python linux colors console


【解决方案1】:

没有可移植的方法检测控制台或终端是否支持 256 色,因为没有通用的受支持接口可以用来提出这个问题。这与当用户按下功能键或箭头键时无法查询终端将发送什么字符的方式完全相同。有标准和约定,但基本上双方都需要使用相同的接口依赖另一方。

curses 的工作方式是它有一个大型且可配置的终端数据库,它会在该数据库中查找特定终端的功能以了解其功能。 curses 不检测连接的终端类型,它通常从TERM 环境变量中获取,该环境变量通常由知道(或被告知)实际连接的终端是什么的东西设置,例如getty,或者 ssh 或 telnet 服务器从客户端协商它。

【讨论】:

  • 非便携式怎么样 ;) - 感谢您的帮助 charles。谢谢。我仍然觉得有办法以某种方式做到这一点......我会在/如果我放弃时回帖......
  • @TedSchmuck:我真的不明白你想去哪里。据推测,理论上可以将自己限制为支持具有可以查询颜色支持的界面的控制台,但我从未听说过这样的界面,因此假设您有 256 色支持可能限制较少。当然,您的下一个问题将是立即确定操作颜色所需的转义序列。
  • 哦,我已经做到了。颜色运动和动画都完成了,只是想弄清楚如何实现它......我'边做边编码' - 这意味着用外行人的话我不知道。
  • 仅仅因为两个控制台支持 256 色并不意味着它们将使用相同的转义码。如果您不打算假设 256 色支持,那么假设一组特定的转义码适用于所有 256 色控制台是没有意义的。
【解决方案2】:

正如 cmets 中所讨论的,正确的解决方案是使用 curses

>>> import curses
>>> curses.setupterm()
>>> curses.tigetnum("colors")
... 8

【讨论】:

  • 太好了,非常感谢。完美回答了我的问题。
  • @funk: 然后接受答案
猜你喜欢
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 2016-03-20
  • 2016-09-25
  • 2014-03-07
  • 1970-01-01
相关资源
最近更新 更多