countdown timer

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
linuxCowboy
Beiträge: 278
Registriert: 05.02.2013 19:47:41

countdown timer

Beitrag von linuxCowboy » 21.03.2021 19:55:20

Die bash sollte einen Countdown-Timer haben!

Code: Alles auswählen

Ftimer ()
{
        [[ ! $1 =~ ^[0-9]+$ ]] &&

        echo "
        $FUNCNAME seconds  # countdown timer
" && return

        for i in `seq $1 -1 1`; do
                echo "$((100 - ${i}00 / $1))\n#Countdown: $i"
                sleep 1

        done | DISPLAY=:0.0 WINDOWID=  zenity --progress --auto-close --title=Timer
}
-der_linux_cowboy --- Besser werden! ... f*** w$$

linuxCowboy
Beiträge: 278
Registriert: 05.02.2013 19:47:41

Re: countdown timer

Beitrag von linuxCowboy » 23.03.2021 13:06:28

Update:

Code: Alles auswählen

Ftimer ()
{
        [[ ! $1 =~ ^[0-9]+$ ]] &&

        echo "
        $FUNCNAME seconds [title] # countdown timer
" && return

        for i in `seq $1 -1 1`; do
                echo "$((100 - ${i}00 / $1))\n#Countdown: $i"
                sleep 1

        done | DISPLAY=:0.0 WINDOWID=  zenity --progress --auto-close --title="${2-Timer}"
}
-der_linux_cowboy --- Besser werden! ... f*** w$$

linuxCowboy
Beiträge: 278
Registriert: 05.02.2013 19:47:41

Re: countdown timer

Beitrag von linuxCowboy » 23.03.2021 14:17:09

Der Okay Button sollte sofort aktiviert sein und den Focus haben!

Dann wäre Enter = Okay = Return 0 = weiter und Escape = Cancel = Return 1 = Abbruch.
-der_linux_cowboy --- Besser werden! ... f*** w$$

Benutzeravatar
heinz
Beiträge: 516
Registriert: 20.12.2007 01:43:49

Re: countdown timer

Beitrag von heinz » 23.03.2021 15:34:09

Hallo linuxCowboy,

das soll nur ein Hinweis, keine Kritik sein.
Deine Variante hat ein Problem, wenn der Timer laengere Zeitraeume laufen soll.

Der sleep 1 Befehl wartet zwar immer relativ genau 1 sekunde aber bis zum Naechsten sleep vergeht auch immer etwas Zeit.
Mal etwas mehr, mal etwas weniger. Und das Summiert sich bei laengeren Laufzeiten ganz schoen. (Eigene Erfahrung mit aehnlichen Konstrukten...)

Um die Genauigkeit bei laengeren Laufzeiten zu erhoehen wuerde ich Empfehlen vlt. mit date zu arbeiten.
(Die Uhrzeit ermitteln wann der Timer abgelaufen ist und diese Zeit dann sekuendlich mit der aktuellen Zeit vergleichen...)
Nur so als Anregung...

Gruss,
heinz

linuxCowboy
Beiträge: 278
Registriert: 05.02.2013 19:47:41

Re: countdown timer

Beitrag von linuxCowboy » 23.03.2021 17:06:25

heinz hat geschrieben: ↑ zum Beitrag ↑
23.03.2021 15:34:09
Deine Variante hat ein Problem, wenn der Timer laengere Zeitraeume laufen soll.
Soll er nicht. Maximal einige 100 Sekunden. Bei 5 Minuten ca. +2s. Kann man mit leben.

Es geht darum in Sekundenintervallen sichtbar runterzuzählen.

Ich nutze ihn als Rückmeldung bei xmacro.
-der_linux_cowboy --- Besser werden! ... f*** w$$

linuxCowboy
Beiträge: 278
Registriert: 05.02.2013 19:47:41

Re: countdown timer

Beitrag von linuxCowboy » 24.03.2021 12:19:12

linuxCowboy hat geschrieben: ↑ zum Beitrag ↑
23.03.2021 14:17:09
Der Okay Button sollte sofort aktiviert sein und den Focus haben!

Dann wäre Enter = Okay = Return 0 = weiter und Escape = Cancel = Return 1 = Abbruch.
Okay wurde in /usr/share/zenity/zenity.ui deaktiviert.

Code: Alles auswählen

<object class="GtkButton" id="zenity_progress_ok_button">

800c800
<                 <property name="sensitive">False</property>
---
> <!--            <property name="sensitive">False</property> -->
Auskommentieren, Okay wird aktiv und kriegt den Focus. :THX:
-der_linux_cowboy --- Besser werden! ... f*** w$$

Antworten