Как определить используемый эмулятор терминала? - PullRequest
0 голосов
/ 18 февраля 2019

Я разрабатываю библиотеку, которая должна идентифицировать работающий эмулятор терминала для вывода специфических для эмулятора последовательностей escape-кодов.

Например, iTerm 2 использует следующая проприетарная последовательность:

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

В то время как ConEmu использует следующую проприетарную последовательность:

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

Теперь мне нужнозапросить терминал (либо используя переменные среды, либо используя escape-последовательность), чтобы вывести правильные коды, специфичные для терминала.

Как я могу надежно определить и определить, на каком эмуляторе терминала я работаю?

1 Ответ

0 голосов
/ 18 февраля 2019

Ответ зависит ...

Ну, вы можете попробовать проверить переменную окружения, например, ConEmuServerPID .Но это может быть ненадежно, потому что а) переменная может быть каким-то образом унаследована от родительского процесса, когда ваш процесс фактически выполняется вне ConEmu; б) переменная может быть не установлена ​​в некоторых случаях, например, когда вы где-то используете ssh

Вы можете запросить «версию» терминала с ESC [ > c отчетами ESC > 0 ; 136 ; 0 c.Но, конечно, это 136 не является гарантией ConEmu.

Также вы можете использовать последовательность ANSI для выполнения IsConEmu GuiMacro .Однако, скорее всего, вы не сможете проверить результат при ssh-ing.

Вы можете позвонить ConEmuC.exe -IsConEmu , но вы не можете сделать это в ssh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...