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 Oct 27, 2020
@samueldr samueldr force-pushed the feature/stage-1-progress branch from 172b6e7 to 785fcab Oct 27, 2020
samueldr added 17 commits 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.
samueldr added 5 commits Nov 6, 2020
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 force-pushed the feature/stage-1-progress branch from 6ecb2ae to a50f838 Nov 6, 2020
@samueldr samueldr merged commit c1e581d into NixOS:master Nov 7, 2020
3 checks passed
3 checks passed
Parse_nix Parse_nix
Documentation Documentation
Instantiation Instantiation
@samueldr samueldr deleted the feature/stage-1-progress branch Nov 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

1 participant