Как отобразить экранированные символы в строке состояния tmux
Я запускаю tmux из tty на встроенном устройстве linux. (НЕ эмулятор терминала), поскольку экран довольно маленький, я хочу добавить несколько "значков" в строку состояния tmux. Чтобы добиться этого, я просто создал шрифт с соответствующими символами для таких вещей, как батарея или Wi-Fi. я могу загрузить шрифт и отображать символы с вызовами, которые используют escape для символов рисования линий, например так:
echo -e "\ xe \ 234 \xf"
\ xe выводит меня в режим рисования линий, \234 - мой созданный символ, а \xf возвращает меня в нормальный режим ввода символов, поэтому мой терминал не начинает тупить.
это прекрасно работает, если я ввожу команду на терминале, запущен ли tmux или нет. проблема возникает, если я затем пытаюсь использовать его в моем файле ~/.tmux.conf для строки состояния. В настоящее время у меня есть такая строка:
set -g status-right "# (echo -e" \ xe \ 234 \xf ") # (/ script / to / output / powerlevel)
это просто выводит
xe234xf powerlevel
это происходит так же, если я пытаюсь printf через эхо. это вывод, который я ожидал бы получить на терминале, если бы я сделал вызов, не передавая -e в эхо, или не заключив оператор в кавычки.
Затем я решил обернуть вызовы echo или printf в сценарий оболочки. опять же, скрипт работает при вызове из терминала, но не в строке состояния tmux. теперь я получаю непечатный символ " " вместо моего значка, например:
уровень мощности
это то, что я ожидал бы, если бы я не использовал экранирование, упомянутое выше, или если я попытался скопировать и вставить символ как текст, используя tmux. Кроме того, вызов этих символьных скриптов портит остальную часть моего статуса-права, поскольку часы имеют около 6 цифр для минут, когда они вызываются (хотя они корректно обновляют только две из них).
как я могу заставить tmux уважать escape-символы?
любая помощь или понимание очень ценится.
1 ответ
Хорошо, я нашел обходной путь наконец. вместо того, чтобы бежать к альтернативному набору символов. я обнаружил, что эти символы также просто имеют шестнадцатеричное значение, связанное с ними. если я printf или echo -e это шестнадцатеричное значение, то tmux отобразит правильный символ.
остается проблема, однако, что tmux покажет правильный символ, только если я оберну эти вызовы в сценарии оболочки, так как он по-прежнему не следует ни за одним из экранированных символов (например, \x для hex). Если бы кто-нибудь мог пролить свет или добавить к этому понимание, я все равно был бы очень признателен.