Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

stage-1: Add progress tracking in splash #233

merged 23 commits into from Nov 7, 2020


Copy link

@samueldr samueldr commented Oct 27, 2020

This adds a progress bar to stage-1 loading:


It is a "proper" GUI to show the status of the boot. Right now tasks that have opted-in will show a label while they are working. This may be useful for e.g. resizing a filesystem.

In a future update, already planned, dependencies that are "hung", or "seemingly not resolving" are going to end up showing up on that, too. When that future update lands, not having a filesystem to mount will be quite obvious.

There is one big caveat: display initialization happens so late that we often are at 80+% of the tasks done. That means that for many devices the splash looks a bit dumb.

Ideally, we would figure out why it takes so long to get the display init going.

Though maybe we want to instead not show a progress bar, but something more indefinite? Then add messages when relevant? Or maybe always print the task that just finished, so you get a flurry of text changing!


  • Figure out "borders" bug more easily seen on-device

@samueldr samueldr force-pushed the feature/stage-1-progress branch 2 times, most recently from 3ed6343 to 172b6e7 Compare October 27, 2020 06:16
@samueldr samueldr added 3. topic: stage-1 stage-1, boot, init 4. type: enhancement New feature or request labels Oct 27, 2020
This gives us a better idea, relatively, when things happen to be
This is to ensure "UX-friendly" tasks gets run ASAP.

Quickly explained, this makes sure that the top tasks (e.g. Splash) gets
ran as soon as possible.

Given the list:

 - Splash
 - Graphics
 - AAA
 - BBB
 - CCC

If `Graphics` ends up running, and AAA, BBB and CCC can too, Splash will
have to wait until all those tasks got ran once!

Not ideal for UX, if e.g. BBB takes time to *run* and we can't show the
progress to users!

The added cost of restarting the queue is minimal with tests I ran. It
was not more than a tenth of a second, and could even be rounding
This will be used by the upcoming progress-tracking feature.
The applet is specifically written to show what we call the "recovery
menu". Yes, it's also the boot selection, but it will get confusing with
the upcoming boot tracking splash UI that's upcoming.
The splash is now an application that should be started and forked from.
Once started, it will listen for messages on a ZeroMQ socket reporting

The current protocol is extremely simple, reporting (optional) label,
and reporting a progress amount.

Additionally, it responds to a string commant ("quit") to quit as
@samueldr samueldr merged commit c1e581d into NixOS:master Nov 7, 2020
@samueldr samueldr deleted the feature/stage-1-progress branch November 7, 2020 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
3. topic: stage-1 stage-1, boot, init 4. type: enhancement New feature or request
None yet

Successfully merging this pull request may close these issues.

None yet

1 participant