Eu não sei como o cclive
funciona, mas para que zenity
exiba uma barra de progresso, ele precisa enviar porcentagens para o stdout.
Veja um exemplo:
# This works:
(for i in $(seq 0 3 100); do echo "$i"; sleep 0.1; done) | zenity --progress
# This doesn't:
(for i in $(seq 0 3 100); do echo "hi"; sleep 0.1; done) | zenity --progress
A menos que você possa organizar cclive
para fazer isso, você terá que se contentar com
zenity --progress --pulsate
Editar
Com base nos comentários, aqui estão algumas informações adicionais. Não posso dar uma resposta exata, pois aparentemente cclive
está quebrado no Maverick. De qualquer forma, eu só recebo erros quando tento usá-lo.
A primeira coisa que você precisa fazer é obter cclive
para imprimir uma porcentagem em algum lugar. Eu estou supondo que o arquivo de log irá imprimir essa porcentagem, mas não posso testá-lo. Então, você precisa analisar essa saída e enviá-la para zenity
. Veja um exemplo (script não testado ou curso):
#!/bin/bash
url=""
tmp="/tmp/cclive.log"
mkfifo "$tmp"
cclive --background --logfile="$tmp" "$url"
egrep '[0-9]+%$' < "$tmp" | zenity --progress
rm "$tmp"
Se a saída de cclive
estiver em um formato diferente, basta ajustar o script conforme apropriado. Se cclive
não despejar porcentagens no arquivo de log, tente alterar o comando cclive
para:
cclive "$url" > "$tmp" &
Uma última coisa: você provavelmente não deve enviar stdout stderout ( 2>&1
). O Zenity irá consumir stdout, mas você provavelmente não quer que ele coma todas as mensagens de erro.
Editar 2
Você pode ter que jogar awk
em algum lugar no pipeline para poder isolar a porcentagem. A sintaxe básica é:
awk '{print }' # change to the correct space-separated field
Durante o teste, não consegui fazer com que funcionasse corretamente, mas como não consigo fazer cclive
funcionar, não consigo solucioná-lo.