Você pode usar display-message -p
para enviar a saída para stdout para evitar a extração da saída de show-messages
:
tmux display-message -p '#I'
Você pode converter para números circulados como este ( bash sintaxe; testado com as versões 3.2.48 e 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
}
A primeira linha é legal porque é pura ASCII; se você não se importar de ter caracteres não-ASCII no seu arquivo de configuração, então você pode ir com a segunda linha (certamente torna a intenção mais óbvia, supondo que seu editor e shell possam manipular corretamente a codificação do arquivo).
Então você poderia usá-lo assim:
PS1="$(tmux_winidx_circled) \W➤ "