【问题标题】:How to identify the Terminal Emulator being used?如何识别正在使用的终端仿真器?
【发布时间】:2019-02-18 12:52:17
【问题描述】:

我正在开发一个库,它需要识别正在运行的终端模拟器,以便输出特定于模拟器的转义码序列。

例如,iTerm 2 uses 以下专有序列:

ESC ] 50 ; CurrentDir=/path/to/dir BEL

ConEmu uses 以下专有序列:

ESC ]  9 ; 9 ; C:\path\to\dir BEL

现在,我需要查询终端(使用环境变量或使用转义序列)以输出正确的终端特定代码。

如何可靠地检测和识别我正在运行的终端模拟器?

【问题讨论】:

  • 顺便说一句,iTerm2 文档提到 1337 而不是 50

标签: iterm2 xterm ansi-escape conemu vt100


【解决方案1】:

答案取决于...

好吧,您可以尝试检查环境变量,例如ConEmuServerPID。但这可能不可靠,因为 a) 当您的进程实际上在 ConEmu 之外运行时,该变量可能以某种方式从父进程继承 b) 在某些情况下可能没有设置变量,例如当你在某处 ssh 时

您可以请求带有ESC [ > c 报告ESC > 0 ; 136 ; 0 c 的终端“版本”。但是当然,这个136 并不是ConEmu 的保证。

另外,您可以使用ANSI sequence 来执行IsConEmu GuiMacro。但是,您很可能无法在 ssh-ing 时检查结果。

您可以拨打ConEmuC.exe -IsConEmu,但不能在 ssh 中这样做。

【讨论】:

    猜你喜欢
    • 2020-05-01
    • 2021-10-23
    • 2011-08-29
    • 2015-11-10
    • 2010-12-28
    • 1970-01-01
    • 2011-12-02
    • 2021-02-05
    • 1970-01-01
    相关资源
    最近更新 更多