2

я запускаю 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 ответ1

0

Хорошо, я нашел обходной путь наконец. вместо того, чтобы бежать к альтернативному набору символов. я обнаружил, что эти символы также просто имеют шестнадцатеричное значение, связанное с ними. если я printf или echo -e это шестнадцатеричное значение, то tmux отобразит правильный символ.

проблема остается, однако, в том, что tmux покажет правильный символ, только если я оберну эти вызовы в сценарии оболочки, так как он все еще не следует ни за одним из выходов (как \x для hex). Если бы кто-нибудь мог пролить свет или добавить к этому понимание, я все равно был бы очень признателен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .