Move the bar while packages are downloading

The progress entry sat at "0 von 123" for the whole download and only
started counting once pacman began unpacking - which on a domestic line is
most of the run spent looking like nothing was happening. What was being
watched for was the transaction, and the transaction had not started yet.

Downloading is now a step of its own, worth 30 of the bar against the
transaction's 40, counted the same way: one line per package out of
pacman's "foo-1.2-1-x86_64 downloading...". The database sync just before
it prints the identical shape with the suffix that would give it away
already stripped, so the tally starts only after the ":: Retrieving
packages..." header. Packages already in the cache never announce
themselves, so the step regularly ends short of its total and hands the
rest of its share over when unpacking begins.

The headline follows: "Updates werden heruntergeladen", then
"Systempakete werden aktualisiert".
This commit is contained in:
Felitendo committed 2026-08-14 14:22:05 +02:00
1 parent 6538c1510d
commit b796b2711a
7 files changed
+90 -18

No files matched your search

+13 -5
View File
@@ -214,11 +214,19 @@ Two things about how it is put together:
the length of the update, holding the connection open and taking instructions
on stdin. It needs **python-gobject**; without it there is simply no bar and
nothing else changes.
- The position inside the repository step comes from pacman's own
`(120/260) upgrading foo` lines. pacman's other `(n/m)` sequences — checking
keys, package integrity, loading files — each count to the same total, so
only the transaction verbs are followed; otherwise the bar would reach the
end three times before the first package was unpacked.
- Downloading and unpacking are two separate steps on the bar. On a domestic
line the download is the longer of the two, and calling the whole thing
"installing" leaves the bar sitting at 4% for six minutes, which reads as a
hang rather than as progress.
- Neither phase carries a counter on an unattended run, so both are counted a
line at a time — `foo-1.2-1-x86_64 downloading...` and `upgrading foo...`.
The database sync just before prints the same shape (` core downloading...`)
with the suffix that would give it away already stripped, so counting starts
only after pacman's `:: Retrieving packages...` header. pacman's other
`(n/m)` sequences — checking keys, package integrity, loading files — each
count to the same total, so only the transaction verbs are followed;
otherwise the bar would reach the end three times before the first package
was unpacked.
This is Plasma's job interface. On a desktop that does not implement it the
helper exits quietly and the ordinary notifications carry on as before.