Boot manager: Niveus window, keys and wells, Instrument Sans, pointer, other systems, working power entries
The F8 menu is redrawn in the Niveus language: a window with three lights, bevelled keys with a lit edge, wells for panels, anti-aliased corners and a soft shadow, set in Instrument Sans rasterised into include/gfx/nvfont.h (tools/python/mknvfont.py, make nvfont). Scale doubles on screens 1400 px tall or more. Lists taller than the screen scroll. The keyboard still drives everything, and a mouse, touchpad or tablet does too: both UEFI pointer protocols are polled, hover moves the highlight, a click activates. The cursor stays hidden until the pointer has really done something, since the firmware installs a pointer protocol with or without a mouse. The 'keep this resolution?' countdown is one ten-second budget however many times the pointer moves. Loaders found at well-known paths on any volume (Windows, Ubuntu, Debian, Fedora, Arch, openSUSE, systemd-boot, rEFInd, other BOOTX64.EFI) are listed and chain-loaded with LoadImage/StartImage. 'Reboot to firmware' used to halt; it now sets OsIndications and restarts, and Restart and Shut Down call ResetSystem. Checked under QEMU+OVMF: menu, resolution list (incl. 2560x1600 at double scale), system information, shut down, firmware setup, chain-loading a copy of the loader from a second disk, and a full boot of the ISO to the login prompt. Pointer hover and click were checked only with synthetic events: in this setup a USB mouse or tablet delivered no event to the loader (one USB I/O handle appeared but no pointer protocol came from it), and why was not established. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EVRhxi9zpdW2uDUN4FVcao
This commit is contained in:
parent
020aa6113c
commit
dee3affa3b
11 changed files with 9304 additions and 208 deletions
11
Makefile
11
Makefile
|
|
@ -653,7 +653,7 @@ UEFI_CFLAGS = $(UEFI_DEBUG_FLAGS) --target=x86_64-unknown-windows -ffreestanding
|
|||
# Hence the check and the message. It is worth the four lines.
|
||||
$(BUILD)/uefi/BOOTX64.EFI: boot/uefi/main.c boot/uefi/efi.h include/arch/schboot.h \
|
||||
boot/common/ui.c boot/common/ui.h \
|
||||
include/gfx/logo.h include/gfx/theme.h include/gfx/font.h
|
||||
include/gfx/logo.h include/gfx/theme.h include/gfx/font.h include/gfx/nvfont.h
|
||||
@mkdir -p $(BUILD)/uefi
|
||||
@command -v clang >/dev/null 2>&1 || { \
|
||||
echo ""; \
|
||||
|
|
@ -1775,6 +1775,13 @@ LOGO_PX = 128
|
|||
logo:
|
||||
$(PYTHON) tools/python/mklogo.py "$(LOGO_SRC)" include/gfx/logo.h $(LOGO_PX)
|
||||
|
||||
# include/gfx/nvfont.h: the boot manager's typeface (Instrument Sans, from
|
||||
# docs/Website/niveus/fonts), rasterised once and committed, same arrangement as
|
||||
# logo.h. Needs Pillow, so it is run by hand: nix-shell -p 'python3.withPackages
|
||||
# (p: [p.pillow])' --run "make nvfont"
|
||||
nvfont:
|
||||
$(PYTHON) tools/python/mknvfont.py docs/Website/niveus/fonts/static include/gfx/nvfont.h
|
||||
|
||||
# The USB vendor/product name database, from linux-usb.org.
|
||||
#
|
||||
# Dual-licensed GPL-2.0-or-later **or** 3-clause BSD; SchOS takes the BSD
|
||||
|
|
@ -1839,7 +1846,7 @@ qrcheck: $(QRTEST)
|
|||
.PHONY: disk all kernel ramroot cmd ports projects sysroot-install qemu qemu-console qemu-kvm \
|
||||
schfs-test schfs-objtest schfs-image-test schfs-check kmem-test mkschfs \
|
||||
schfs-fsck crashshot qemu-schfs iso qemu-iso clean distclean \
|
||||
logo qrtest qrcheck crashqr usb-ids pci-ids hwdata ovmf esp uefi
|
||||
logo nvfont qrtest qrcheck crashqr usb-ids pci-ids hwdata ovmf esp uefi
|
||||
.PRECIOUS: $(BUILD)/%.o
|
||||
|
||||
# 'clean' removes generated output only. dist/ (upstream tarballs) survives,
|
||||
|
|
|
|||
Loading…
Reference in a new issue