staging.inyokaproject.org

YAD Progress Bar

Status: Gelöst | Ubuntu-Version: Ubuntu 20.10 (Groovy Gorilla)
Antworten |

maxzewe

Anmeldungsdatum:
10. Mai 2021

Beiträge: 13

Hallo Forum,

ich führe in einem meiner Bash Script viele verschiedene Schritte aus (ISO Image einbinden, Dateien kopieren, Firefox Zertifikate importieren, etc.). Ich würde gerne für denjenigen der das Script einsetzt den Fortschritt dieser ganzen Schritte mit Hilfe einer YAD Progress Bar anzeigen lassen. Ist so was möglich ? Oder geht das nur für eine Aktion (zum Beispiel eine große Kopieraktion...) ?

Gruß und Danke

Markus

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Beim Dateien kopieren mag das vielleicht gehen, aber alles zusammen eher nicht.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Kommt drauf an, wie gut Du die Dauer der Aktionen abschätzen kannst, denn Du musst die Werte für die Prozentangaben übergeben:

1
for i in {0..100..5}; do echo "$i"; sleep 0.3; done | yad --progress --progress-text "You have to admit it's getting better" --percentage=0 --auto-close 

Wenn Dein Script also so aussieht:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/bin/bash

main () {
mountIsoImage 
echo "20"
copyFiles 
echo "50"
zertifikate 
echo "70"
usw
echo "100"
}

main | yad ... 

Die Funktionen, etwa "Zertifikate" könnten dann "55", "60", "65" melden, wenn sie aus, wie hier im Beispiel, 4 ähnlich gewichteten Unterkommandos bestünden.

Oder Du versuchst Dich gleich an multi-progress (hab ich mir nicht angesehen).

maxzewe

(Themenstarter)

Anmeldungsdatum:
10. Mai 2021

Beiträge: 13

@user_unknown

Das sieht doch schonmal sehr gut aus. Ich brauche gar nicht genau die einzelnen Zeiten für die Aktionen. Mir geht es mehr darum dass der Anwender was in der Fortschritts- anzeige zu sehen bekommt. Werde ich morgen gleich mal ausprobieren. Vielen Danke...ich werde berichten...

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

maxzewe schrieb:

@user_unknown

Das sieht doch schonmal sehr gut aus. Ich brauche gar nicht genau die einzelnen Zeiten für die Aktionen. Mir geht es mehr darum dass der Anwender was in der Fortschritts- anzeige zu sehen bekommt. Werde ich morgen gleich mal ausprobieren. Vielen Danke...ich werde berichten...

Ja, ich meine einfach, das wäre so die simpelste Lösung, man hat 4 Teilaufgaben und sagt einfach 25, 50, 75, 100% - fertig.

Wenn man abschätzen kann, dass Teilaufgabe 2 50% der Zeit konsumiert kann man auch melden 20, 65, 80, 100% und läge schon in der Nähe dessen, was ein User ohne Stoppuhr wahrnimmt.

Bei gröberen Abweichungen wird der User misstrauisch, ob der Rechner vielleicht eingefroren ist. Wenn er dann aber erlebt, Schritt 1 dauert 10 Sekunden und zeigt 20%, Schritt 2 dauert 45s aber springt dann auch auf 65% ist er halbwegs versöhnt.

Ich vermute dafür sind die multi-progressbars da. Da kann man zeigen: Hier, 4 Teilaufgaben, Hauptbar zeigt für Aufgabe 1 25% aber in Aufgabe 1 laufen die Teilfaufgaben 1-10 tak,tak,tak - ratzfatz ab. Dann kommt Teilaufgabe 2 die aus 2 Unteraufgaben besteht, und da läuft es auch insgesamt langsamer, aber in sich halbwegs schlüssig.

Wenn er dann das Programm mehrfach nutzt, wird er vielleicht selbst halbwegs abschätzen können, wie lange es insgesamt dauert.

Nach Dateianzahl und -größe kannst Du natürlich eine Abschätzung versuchen, sogar Dateigrößen vorab ermitteln und einen Testlauf zur Geschwindigkeitsmessung vornehmen oder die Fortschrittsanzeige dynamisch anpassen.

maxzewe

(Themenstarter)

Anmeldungsdatum:
10. Mai 2021

Beiträge: 13

So, ich habe das mal ausprobiert, funktioniert ! Vielen Dank.

Antworten |