Ви можете використовувати display-message -p
для надсилання виводу в stdout, щоб уникнути необхідності витягувати його з виводу show-messages
:
tmux display-message -p '#I'
Ви можете перетворити на такі кругові числа ( синтаксис bash ; протестований у версіях 3.2.48 та 4.2.20):
circled_digits=$(printf %s \${$'\xEA',\`,{a..s}} | iconv -f UTF-16BE)
# circled_digits='⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'
tmux_winidx_circled() {
local winidx=$(tmux display-message -p '#I')
if (( winidx > 20 )); then
echo "($winidx)"
else
echo "${circled_digits:$winidx:1}"
fi
}
Перший рядок приємний тим, що це чистий ASCII; якщо ви не заперечуєте, щоб у вашому файлі конфігурації не були символи ASCII, ви можете замість цього перейти з другим рядком (це, безумовно, робить наміри більш очевидними, якщо припустити, що ваш редактор і оболонка можуть правильно обробляти кодування файлу).
Тоді ви можете використовувати його так:
PS1="$(tmux_winidx_circled) \W➤ "