Você precisará verificar o status de saída e tomar uma decisão com base nisso. O manual para o tempo limite do GNU diz que
If the command times out, and --preserve-status is not set, then exit with status 124.
Então, em um script de shell, você faria algo assim:
timeout 60 zenity ...
if [ $? = 124 ] ; then
echo it timed out, do something...
else
echo didn't time out
fi
No entanto, parece que o zenity oferece suporte a um tempo limite em si , para que você não use é necessário um tempo limite externo:
zenity --timeout 60 --warning --text="Shutdown in 60"
if [ $? = 5 ] ; then
sudo shutdown -h now
fi
Mesmo se estiver usando o tempo limite do Zenity, não parece mostrar o tempo restante. No entanto, ele possui um modo de barra de progresso que pode ser usado para transmitir uma sensação de destruição iminente. Algo assim exibiria um cronômetro de contagem regressiva de 60 com uma barra de progresso preenchendo ao mesmo tempo:
#!/bin/bash
timeout=60
for (( i=0 ; i <= $timeout ; i++ )) do
echo "# Shutdown in $[ $timeout - $i ]..."
echo $[ 100 * $i / $timeout ]
sleep 1
done | zenity --progress --title="Shutting down automatically..." \
--window-icon=warning --width=400 --auto-close
if [ $? = 0 ] ; then
echo timeout passed
else
echo cancel was pressed or zenity failed somehow
fi