Как сценарий удара может обнаружить поддержку символов ESC создания заголовков окна?

Это - команда, которую я использую для резервного копирования к другой машине:

rsync -av -e "ssh -i /root/ssh-rsync-valhalla-key" \
  --exclude lost+found \
  --delete-before \
  /mnt/backup/ \
  user@192.168.1.99:/cygdrive/r/\!Backups/Niflheim &

Таким образом, можно использовать -i передать файл ключей ssh. Конечно, в Вашем примере, который означает, сам файл ключей будет с обеспечением совместного доступа через HTTP, если кто-либо когда-нибудь выяснит имя файла.

1
27.02.2013, 01:42
2 ответа

Я не думаю, что существует terminfo возможность этого. На практике, тестируя значение TERM должно быть достаточно хорошим. Это - то, что я выполняю в моем .bashrc и .zshrc, и я не вспоминаю это являющийся проблемой.

case $TERM in
  (|color(|?))(([Ekx]|dt|(ai|n)x)term|rxvt|screen*)*)
    PS1=$'\e\]0;$GENERATED_WINDOW_TITLE\a'"$PS1"
esac
2
27.01.2020, 23:21
  • 1
    Heh heh. Я просто включил "если [$TERM == "xterm"]"; но святая корова! Как Вы сплачивали тот список возможностей? –  Sniggerfardimungus 27.02.2013, 01:44
  • 2
    @Sniggerfardimungus изображения программы Прямо сейчас, grep -C5 title ~/.zshrc. Когда я записал это (последнее обновление 2007) …, я не оставил комментарий, таким образом, наблюдением я предполагаю. –  Gilles 'SO- stop being evil' 27.02.2013, 01:50
  • 3
    Спасибо за взлом. Я испытал затруднения, заставив это проанализировать, тем не менее, и пошел с более простой версией, которую я буду создавать со временем, поскольку я нахожу потребность в большем количестве терминалов. –  Sniggerfardimungus 27.02.2013, 22:29

Существует запись terminfo, которая (ab)используется для этой цели, и была предметом более чем одного сообщения об ошибке, предлагающего применить ее к различным описаниям терминалов. Ссылаясь на terminfo(5):

   has_status_line           hs     hs   has extra status
                                         line
   from_status_line          fsl    fs   return from status
                                         line
   to_status_line            tsl    ts   move to status line,
                                         column #1

они объясняются в разделе Строки состояния:

Некоторые терминалы со строками состояния нуждаются в специальных последовательностях, чтобы доступа к строке состояния. Они могут быть выражены в виде строка с одним параметром tsl который переводит курсор в заданный нулевой столбец строки состояния.

Навскидку, единственным эмулятором терминала, который вы, скорее всего, сможете использовать и который поддерживает эту функцию в том виде, как она документирована, является kterm.

Подойдет расширение. Программа screen документирует возможный выбор (но после изучения того, что она делает с функцией, эта идея была отброшена). ncurses предоставляет расширение, которое находится в базе данных терминала уже несколько лет, документированное в разделе Расширения XTerm:

# TS is a string capability which acts like "tsl", but uses no parameter and
#    goes to the first column of the "status line".

В конечном счете, все, что использует эту возможность, наследует от xterm+sl:

# These building-blocks allow access to the X titlebar and icon name as a
# status line.  There are a few problems in using them in entries:
#
# a) tsl should have a parameter to denote the column on which to transfer to
#    the status line.
# b) the "0" code for xterm updates both icon-title and window title.  Some
#    window managers such as twm (and possibly window managers descended from
#    it such as tvtwm, ctwm, and vtwm) track windows by icon-name. Thus, you
#    don't want to mess with icon-name when using those window managers.
#
# The extension "TS" is preferable, because it does not accept a parameter.
# However, if you are using a non-extended terminfo, "TS" is not visible.

Программа (ncurses) tput может протестировать эту возможность.

2
27.01.2020, 23:21

Теги

Похожие вопросы