Anda dapat menggunakan display-message -p
untuk mengirim output ke stdout untuk menghindari keharusan mengekstraknya dari output show-messages
:
tmux display-message -p '#I'
Anda dapat mengonversi ke nomor yang dilingkari seperti ini ( sintaks bash ; diuji dengan versi 3.2.48 dan 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
}
Baris pertama bagus karena murni ASCII; jika Anda tidak keberatan memiliki karakter non-ASCII dalam file konfigurasi Anda, maka Anda dapat menggunakan baris kedua sebagai gantinya (itu tentu membuat maksudnya lebih jelas, dengan asumsi editor dan shell Anda dapat menangani pengkodean file dengan benar).
Maka Anda bisa menggunakannya seperti ini:
PS1="$(tmux_winidx_circled) \W➤ "