Eu sugiro que o bash monitore sua última string inferior e atualize-a apenas uma vez por minuto (quando o segundo módulo atual 60 for igual a 0 neste código).
while true; do
(( 10#$(date +%s) % 60 )) || bottomdisp=$(date)
xsetroot -name "$(topbar);$bottomdisp";
sleep 1;
done &
Esta sintaxe facilita a modificação da frequência dos intervalos secundários (ou múltiplos), por ex. apenas mude de 60 a 15 para atualizações 4 vezes por minuto.