// overview

Visor Boot Manager

A minimal, fast, graphical UEFI boot manager written in C.

Visor draws an icon-based boot menu that boots Linux (EFI-stub kernels and Unified Kernel Images), chainloads any EFI executable (including the Windows Boot Manager), and stays intentionally small.

Visor menu screenshot Visor menu screenshot

Highlights

Graphical menu

Double-buffered, flicker-free GOP rendering — animations, mouse/touch, frosted blur, themes, live clock and idle screensaver.

Zero-config boot

No boot.conf? Visor auto-detects Windows, UKIs, plain kernels and distro loaders — and derives a working kernel cmdline on its own.

Live USB hotplug

Plug a bootable stick in while the menu is open and it animates in. Unplug it and it slides back out — pinned to its volume handle.

File browser

Press B in the menu — or browse in the recovery shell — to list every readable volume and boot any kernel, initrd or .efi on the spot.

Encryption

Kernels and initrds as VISORENC containers; one password decrypts them and can also unlock a LUKS root via an in-memory keyfile.

Snapshots & OSTree

Browse snapper/Timeshift/plain btrfs snapshots and OSTree deployments — one-shot boot from the menu, no live USB needed.

Accent colors

Material You palette extracted from the wallpaper in Q16 fixed-point — no float, no libm — with 7 variants.

Measured boot

TPM2 PCR 5 for boot.conf, PCR 12 for the cmdline, plus Boot Loader Interface (Loader*) for bootctl interop.

Wallpapers

PNG/BMP plus animated GIF and MJPEG MP4/MOV — or compact VBG (tiled delta + motion, 10–20× smaller) via visor convert --vbg.

Cross-platform

x86_64 and AArch64 UEFI from one tree, arch-neutral GUI core, calibrated TSC / generic-timer clock.

Debuggable

Self-pruning boot.log per boot, plus TPM and Loader variable tracing; recovery console on failure.

Quick start

curl -fsSL https://raw.githubusercontent.com/IO-ZetZor/Visor-BootManager/main/get.sh | sh

That installs build dependencies for your distro, clones the source, builds visor_x64.efi, and installs it to your EFI System Partition. See Install & Run for manual and advanced installs.

How it works, in one paragraph

Firmware loads \EFI\visor\visor_x64.efi. Visor brings up the arch clock and marks LoaderTimeInitUSec, initializes graphics, loads EfiFs drivers deferred, parses \EFI\visor\boot.conf (or auto-detects — BLS → Windows → UKIs → raw kernels → distro loaders) and derives a cmdline (UKI .cmdline/etc/fstab → GPT). If a TPM is present it measures boot.conf (PCR 5) and publishes Loader* vars, then draws the menu — live clock, frosted blur, accent palette from the first wallpaper frame, hotplug watch and screensaver armed. When you pick an entry it measures the cmdline (PCR 12), marks LoaderEntrySelected, then loads the image — decrypting VISORENC, verifying SHA-256 / SHIM_LOCK, injecting a LUKS keyfile via LoadFile2 — and hands over via LoadImage/StartImage or the Linux handover. Every step logs to boot.log; failure lands in the recovery console. The full picture is in Architecture.

Project facts

LanguageC (freestanding, gnu-efi), fixed-point math only — no float, no libm
Targetsx86_64 UEFI (visor_x64.efi), AArch64 UEFI (visor_aa64.efi)
LicenseBSD 2-Clause
AuthorIO-ZetZor
Repositorygithub.com/IO-ZetZor/Visor-BootManager stars and counting
Latest release () — see Versions