Não é realmente uma resposta à pergunta sobre o tamanho da string de modo, mas uma solução alternativa:
Acabei usando códigos ANSI CSI para salvar e restaurar a posição do cursor. (Obrigado @tripleee pelo ponteiro).
Eu ainda não consegui encontrar o tamanho da string de modo, mesmo quando eu estava tentando obter a posição do cursor usando PS1=$(getColumn)
onde getColumn
era várias coisas que eu tentei com base em:
Minha solução alternativa para o uso de códigos ANSI CSI pode ser encontrada como em resposta a "Parte direita do prompt" .
Estou muito satisfeito com a solução, pois consegui fazê-lo sem um único subprocesso e torná-lo shellcheck
-clean.