Обнаруживаете удаленный терминал для кодов спасения терминала? (DECDHL в этом случае)

Я пытаюсь определить, ЧТО консоль, на которой я работаю. (Исключительно сложно, основываясь на исследованиях, которые я провел до сих пор.) Последняя функция, которую я обнаружил, которая была бы полезна, это Double High, Double Wide для пары сценариев.

Установка представляет собой компьютер Kubuntu 15.04 с собственным (нижним) и удаленным доступом через Terminal.app в OS X 10.10.4.

На основании vt100.net Apple делает правильные вещи.

введите описание изображения здесь

#!/bin/bash

# Cool effect with OS X Terminal.app
# Not as much on others (Like Konsole)
function embiggen()
{
    # Yellow (Darker) foreground
    #                 |       Black backround
    #                 |             |
    printf "\x1b[38;5;226m\x1b[48;5;0m"

    #  Double high 'top anchor'
    #            |       line down
    #            |       |     Start of line
    #            |       |     |
    printf "\x1b#3$1\x1b[B\x1b[G"

    # Yellow (Bright) foreground
    #                 |         Red background
    #                 |    (Bright) |
    printf "\x1b[38;5;229m\x1b[48;5;196m"

    #  Double high 'bottom anchor'
    #            |       line down
    #            |       |     Start of line
    #            |       |     |
    printf "\x1b#4$1\x1b[B\x1b[G\n\n"
}

clear
embiggen "Hello, World"

С Konsole

введите описание изображения здесь

С Konsole рендеринг, кажется, контролируется снизу вверх. т.е. каждая линия рисуется снизу вверх, в основном выигрывает самая верхняя линия. Тем не менее, перекраска менее чем предсказуемо.

Возможно ли удаленно использовать некоторые из расширенных функций разумно изящно, когда терминал не поддерживает расширенное форматирование?

Лучшее "решение", о котором я подумал, - это использование пользовательской точки входа с ssh -i ... usr@svr.dom bash --init-file osx_remote -i

1 ответ

Краткий ответ - "нет" - это невозможно, используя только escape-последовательности.

  • Вы не можете сказать, действительно ли терминал отображает символы двойного размера. Используя отчет о положении курсора, вы можете сказать (за исключением ошибочных реализаций), использовал ли терминал две ячейки на экране для представления символа двойной ширины. xterm сделал это давно; другие терминалы делают это.
  • Символы двойного размера - это функция VT100, поэтому они также не перечислены в ответе атрибутов устройства. Это будет иметь ограниченное применение, поскольку некоторые разработчики эмуляторов терминала просто обрезают / вставляют ответы, чтобы они удовлетворяли приложениям, которые проверяют определенные функции.

Если вы работали локально (а не через ssh), возможно, вы могли бы написать программу, которая делала дамп X Window и анализировала эту картинку.

Другие вопросы по тегам