Pular para o conteúdo

Pop-up com barra progress dinamica.

Responder tópico
  • Denunciar
  • Indicar

1. Pop-up com barra progress dinamica.

Enviado em 17/04/2017 - 09:06h

Olá amigos

Criei um script onde eu coloco um horário para desligar o sistema. Junto coloquei um parâmetro que faz a contagem regressiva em segundos que restam. Até aí tudo bem, tudo está ok e funcionando.
Quis deixar ele mais "bonitinho", montei o script com yad.

Mas quando ele vai fazer a contagem tudo fica estático.
Abaixo está o script

hora=$(zenity --title="Desligamento do sistema" --text "Em que horário deseja desligar?" --entry)

sudo shutdown --no-wall -h $hora | ENTRY=`zenity --title "Digite sua senha" --password`

zenity --info --title="Desligamento do sistema" --text="O sistema será desligado às: $hora"

# Converte a hora digitada em segundos
entradasegundos=$(date -d "1970-01-01 $hora UTC" +%s)
atualsegundos=$(date -d "1970-01-01 $(date +%T) UTC" +%s)
segundos=$(echo "$entradasegundos - $atualsegundos" | bc)

for ((i=$segundos; i>0; i--))
{
echo $((i*0/$segundos-1))
echo "# Faltam $segundos segundos"
sleep 1
} | yad --title "Desligando..." \
--progress \
--center \
--auto-close --auto-kill


Procurei uma solução mas sem sucesso.

Responder tópico

2. Re: Pop-up com barra progress dinamica.

Enviado em 17/04/2017 - 11:03h

Não sei no yad, mas no zenity pode fazer algo assim:

(
echo "10" ; sleep 1
echo "# Primeira tarefa" ; sleep 1
echo "20" ; sleep 1
echo "# Segunda tarefa" ; sleep 1
echo "50" ; sleep 1
echo "Terceira tarefa" ; sleep 1
echo "75" ; sleep 1
echo "# Finalizando" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Teste zenity" \
--text="Testando progresso do zenity..." \
--percentage=0

3. Re: Pop-up com barra progress dinamica.

Enviado em 17/04/2017 - 12:37h

Obrigado amigo

Desta forma já havia tentado. Mas não certo. O que acontece é que o pop-up fica na tela e os segundos vão diminuindo até o desligamento.

4. Re: Pop-up com barra progress dinamica.

Enviado em 17/04/2017 - 15:21h

Vê se esse exemplo pode ajudar.

#!/bin/bash
# Dispara o comando a ser monitorado pela barra de progresso em background
sleep 10s &
# Armazena o PID do programa disparado em background
pid=$!

# Via subshell verifica se o processo disparado ainda esta em execucao e vai populando a barra de progresso do Zenity
(ctd=1; while [ -d "/proc/$pid" ]; do
echo "# Faltam $ctd segundos para fechar esta janela!"
echo $ctd
sleep 1
((ctd++))
done; echo 100) | zenity --progress --percentage=0 --title='Barra de progresso' --auto-close --no-cancel

5. Re: Pop-up com barra progress dinamica.

Enviado em 17/04/2017 - 16:05h

Deu certo!!!!
0/

Muito obrigado!!!

6. Re: Pop-up com barra progress dinamica.

Enviado em 18/04/2017 - 17:33h

Legal! Tomei a liberdade de modificar um detalhe pra ficar com a contagem regressiva e encher toda a barra de progresso:

#!/bin/bash
# Dispara o comando a ser monitorado pela barra de progresso em background
sleep 10s &
# Armazena o PID do programa disparado em background
pid=$!

# Via subshell verifica se o processo disparado ainda esta em execucao e vai populando a barra de progresso do Zenity
(ctd=0; seg=10 ; while [ -d "/proc/$pid" ]; do
echo "# Faltam $seg segundos para fechar esta janela!"
echo $ctd
sleep 1
ctd=$(echo $((ctd+10))) ; ((seg--))
done; echo 100) | zenity --progress --percentage=0 --title='Barra de progresso' --auto-close --no-cancel

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder