Skip to content

feat(menu): add a graphical boot menu - #106

Merged
azenla merged 2 commits into
mainfrom
azenla/feat/graphical-boot
Oct 4, 2026
Merged

azenla merged 2 commits into
mainfrom
azenla/feat/graphical-boot

Conversation

@azenla

@azenla azenla commented Oct 3, 2026

Copy link
Copy Markdown
Member

Adds a graphical menu style that draws to the graphics output and is used with the keyboard or a pointer, with the Sprout logo in the bottom right corner. It falls back to the simple menu when there is no graphics output, and the default style is still simple.

The logo is converted to raw pixels at build time, which adds the png crate to the build crate only.

I could not test pointer input, since OVMF has no mouse driver. Keyboard input and rendering were tested in QEMU.

azenla added 2 commits October 3, 2026 16:48
Adds the graphical menu style, selected with menu-style = "graphical" or
--menu-style=graphical. It draws to the graphics output with the existing
framebuffer, using a built-in 8x8 font, and takes input from the keyboard
and from relative or absolute pointers. The Sprout logo is drawn in the
bottom right corner. If there is no graphics output, the simple menu is
used, which still falls back to the basic menu.

The logo is converted from assets/logo-small.png to raw pixels by the build
crate, which adds the png crate as a build-time dependency only.

The default menu style is still simple. Pointer input is untested, as
OVMF has no mouse driver.
CI builds the whole workspace for the UEFI target, which also builds the
build crate for UEFI. The png dependency pulls in simd-adler32, which
crashes LLVM on that target. The logo conversion only runs in build
scripts on the host, so png and the conversion are now left out when
targeting UEFI.
@azenla
azenla merged commit 5e8fe7c into main Oct 4, 2026
12 checks passed
@azenla
azenla deleted the azenla/feat/graphical-boot branch October 4, 2026 00:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant