如何识别正在使用的终端仿真器?

问题描述 投票:2回答:1

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

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

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

虽然ConEmu uses有以下专有序列:

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

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

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

iterm2 xterm ansi-escape conemu vt100
1个回答
0
投票

答案取决于......

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

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

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

你可以打电话给ConEmuC.exe -IsConEmu,但你不能在ssh中这样做。

© www.soinside.com 2019 - 2024. All rights reserved.