Esta não é uma resposta direta à pergunta original, é apenas um exemplo de uso.
Baseado e graças à resposta do @ stArdustͲ, encontrei uma solução adequada para um prompt de comando personalizado para mostrar o status da bateria * , no canto superior direito do terminal. As cores são definidas em um arquivo independente que é originado de dentro de .bashrc
.
PROMPT_COMMAND=$(
cat<<-'EOF'
function battery_percentage {
PERCENTAGE=$(upower -i $(echo $(upower -e |grep 'battery')) |grep 'percentage' |sed -e 's/^[ \t]*//;s/[[:space:]]\+/ /g;s/[ \t]*$//' |cut -d' ' -f2 |cut -d"%" -f1)
BColor='IGray'
if [ "${PERCENTAGE}" -lt 15 ]
then PColor='BlinkIRed'
PBackground='On_White'
else PColor='Gray'
fi
echo "\[\e[s\]\[\e[1;$((COLUMNS-26))f\]PROMPT_COMMAND=$(
cat<<-'EOF'
function battery_percentage {
PERCENTAGE=$(upower -i $(echo $(upower -e |grep 'battery')) |grep 'percentage' |sed -e 's/^[ \t]*//;s/[[:space:]]\+/ /g;s/[ \t]*$//' |cut -d' ' -f2 |cut -d"%" -f1)
BColor='IGray'
if [ "${PERCENTAGE}" -lt 15 ]
then PColor='BlinkIRed'
PBackground='On_White'
else PColor='Gray'
fi
echo "\[\e[s\]\[\e[1;$((COLUMNS-26))f\]%pre%1\e[0;38;5;8m%pre%2Battery%pre%1\e[0;38;5;7m%pre%2 82% %pre%1\e[0m%pre%2 %pre%1\e[0;38;5;8m%pre%23.6 hours%pre%1\e[0m%pre%2\[\e[u\]\[\e[0;38;5;232m\]\[\e[48;5;5m\] \u \[\e[0;38;5;5m\]\[\e[48;5;11m\] \[\e[0;38;5;232m\]\[\e[48;5;11m\]@\H \[\e[0;38;5;11m\]\[\e[48;5;0m\]\[\e[0m\] \[\e[0;38;5;6m\]\w\a \[\e[1;38;5;5m\]→\e[0m
1${!BColor}%pre%2Battery%pre%1${!PColor}%pre%2 ${PERCENTAGE}% %pre%1${Reset}%pre%2"
}
function battery_time {
TIME=$(upower -i $(echo $(upower -e |grep 'battery')) |grep 'time' |sed -e 's/^[ \t]*//;s/[[:space:]]\+/ /g;s/[ \t]*$//' |cut -d' ' -f4,5)
echo "%pre%1${IGray}%pre%2${TIME}%pre%1${Reset}%pre%2"
}
export PS1="\[\e[s\]\[\e[1;\$((COLUMNS-26))f\]$(battery_percentage) $(battery_time)\[\e[u\]${PS1}"
EOF
)
1\e[0;38;5;8m%pre%2Battery%pre%1\e[0;38;5;7m%pre%2 82% %pre%1\e[0m%pre%2 %pre%1\e[0;38;5;8m%pre%23.6 hours%pre%1\e[0m%pre%2\[\e[u\]\[\e[0;38;5;232m\]\[\e[48;5;5m\] \u \[\e[0;38;5;5m\]\[\e[48;5;11m\] \[\e[0;38;5;232m\]\[\e[48;5;11m\]@\H \[\e[0;38;5;11m\]\[\e[48;5;0m\]\[\e[0m\] \[\e[0;38;5;6m\]\w\a \[\e[1;38;5;5m\]→\e[0m
1${!BColor}%pre%2Battery%pre%1${!PColor}%pre%2 ${PERCENTAGE}% %pre%1${Reset}%pre%2"
}
function battery_time {
TIME=$(upower -i $(echo $(upower -e |grep 'battery')) |grep 'time' |sed -e 's/^[ \t]*//;s/[[:space:]]\+/ /g;s/[ \t]*$//' |cut -d' ' -f4,5)
echo "%pre%1${IGray}%pre%2${TIME}%pre%1${Reset}%pre%2"
}
export PS1="\[\e[s\]\[\e[1;\$((COLUMNS-26))f\]$(battery_percentage) $(battery_time)\[\e[u\]${PS1}"
EOF
)
Finalmente, o PS1
se parece com:
%pre%
Note, Eu tenho alguns problemas de posicionamento do cursor, porém, quando eu rolar para cima e para baixo através do histórico de comandos.
*
de um laptop ThinkPad