staging.inyokaproject.org

function für die .bashrc "countdown"

Status: Gelöst | Ubuntu-Version: Kubuntu 21.04 (Hirsute Hippo)
Antworten |

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Bei sleep hat mich gestört dass es nicht anzeigt wie lange noch.

Darum hier nun eine function für die .bashrc, die notify-send benutzt, um die verbleibenden Sekunden anzuzeigen.

function countdown  () 
{ 
N="$@"; while [[ $((--N)) >  0 ]]; do  /usr/bin/notify-send -i /usr/share/icons/breeze/apps/48/ktimetracker.svg -t 480 "`echo  $N`"; done
}

Es wird dafür das installierte Paket libnotify-bin benötigt. Dort im Code ist für Kubuntu das ktimetracker.svg Icon ausgesucht. Bitte das gewünschte Icon selbst aussuchen und entsprechend anpassen.

.bashrc neu einlesen nach editieren:

source ~/.bashrc

Kleiner Test dann, 120 Sekunden countdown:

countdown 120 && echo "Und gut ist :-)"

Der Text in einem notify-send Pop-up lässt sich leider nicht aktualisieren. Die -t Zeitangabe kann angepasst werden. Flackern oder auch mal mehrere Pop-ups beim countdown lassen sich auch so nicht ganz vermeiden. Wenn das eigene System zu viele davon produzieren sollte, dann mal ausprobieren ob ändern der -t Zeitangabe etwas hilft.

Es gab mal eine Version die Patches erhielt, so dass sich der Text im notify-send Pop-up aktualisieren ließ für Ubuntu Precise Pangolin.

Leider haben es die Patches nicht Upstream geschafft.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

Soweit ich das gelesen habe, hängt das nur an der Implementierung von notify-send - in rgcv/dotfiles/blob/main/.local/bin/notify-send.sh gibt es z.B. eine Variante, die das beherrscht.

Das könnte dann z.B. so aussehen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
countdown() {
        local notification_id
        n=$1
        while [ "$n" -gt 0 ]
        do
                cmd=(notify-send.sh -i /usr/share/icons/breeze/apps/48/ktimetracker.svg -t 480 "Countdown: $(( n-- )) s" -p)
                [ -n "$notification_id" ] && cmd+=("-r" "$notification_id")
                id=$("${cmd[@]}")
                sleep 1
        done
        notify-send.sh -s $notification_id # close the message
}

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Mit der Script Variante notify-send.sh habe ich es noch ein bisschen abgeändert:

function countdown  () 
{ 
 local notification_id
        ICON=/usr/share/icons/breeze/apps/48/ktimetracker.svg
        n=$1
        while [ "$n" -gt 0 ]
        do
                cmd=(notify-send.sh -i $ICON -t 1000 -f "Countdown: $(( n-- ))" -p)
                [ -n "$notification_id" ] && cmd+=("-r" "$notification_id")
                id=$("${cmd[@]}")
        done
}

So kommt es dann auch fast hin, wenn man mit time nachschaut.

time (countdown 10)

Der Text innerhalb des gerade laufenden Pop-ups ändert sich übrigens auch nicht bei der notify-send.sh Variante. Es plopt für jeden einzelnen Zähler extra auf. Das ist Desktop-Dramatik pur. Nur mit Figlet wäre es wohl noch mehr Hollywood-Klischee.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

trollsportverein schrieb:

Der Text innerhalb des gerade laufenden Pop-ups ändert sich übrigens auch nicht bei der notify-send.sh Variante.

Die GNOME-Shell kann das: Gnome Shell notify-send coundtown - dann macht KDE da bei der Implementierung des Benachrichtigungsdienstes etwas anders...

Antworten |