bootpick beta

A boot menu you can click,
for every system on your PC.

bootpick replaces the text menu of GRUB and systemd-boot with big icons, a wallpaper and the mouse. It finds Windows and every Linux on all your disks by itself, starts the one you pick, and lets you rename, hide and reorder them from the menu or from a desktop app. Your existing boot loaders stay where they are.

UEFI x86_64 Windows · Linux · systemd-boot · GRUB Mouse, touchpad & keyboard 34 languages Rust · MIT
bootpick main screen: Ubuntu, Windows, Pop!_OS and a second Ubuntu as big icons over a nebula wallpaper
The main screen: one icon per system, the second Ubuntu labelled by its disk. Double-click or Enter starts it.

What it does

Everything happens before any operating system loads, in the computer's own UEFI firmware.

Finds everything
No config to write
Windows, systemd-boot entries, shim/GRUB of each distribution and the firmware's own boot options, on every disk.
Shows the real name
Logos per system
Two Linux installs that both say "ubuntu"? It reads each one's os-release and shows elementary OS as elementary OS.
Mouse first
Click, double-click, done
Mouse and touchpad through the firmware's pointer drivers, plus the keyboard: arrows, Enter, Esc, F2.
Yours
Themes and wallpapers
Five themes, a theme editor, your own pictures as wallpaper and as logos. Rename, hide and reorder entries.
One menu, not three
Hides the menus after it
Optionally hides the GRUB and systemd-boot menus that would appear after bootpick. Shift, Esc or Space still opens them.
Your language
34 locales, right to left too
Real text shaping for Arabic, Hindi, Thai, Chinese, Japanese and Korean, chosen from a picker with flags.

Settings without editing files

Press the gear (or F2) in the menu, or open the desktop app. Both edit the same settings.

Install

bootpick is installed from Linux. It copies itself to the EFI partition, adds a firmware boot entry and puts it first. GRUB, systemd-boot and the Windows boot manager are not touched, so the firmware boot menu (often F12) can still start them directly.

Beta. Tested on one real computer so far (see Tested on) and in QEMU. Try it from a USB stick first and know how to open your firmware's boot menu.

1 · Build

Needs a Rust toolchain (rustup) and uv, plus cairo and the Noto fonts for the icons and the non-Latin scripts. On Debian, Ubuntu or Pop!_OS:

sudo apt install git build-essential libcairo2 fonts-noto-core fonts-noto-cjk
git clone https://github.com/Devace-93/bootpick
cd bootpick
tools/build.sh

2 · Try it from a USB stick (optional)

Copies the menu to a FAT32 stick. Boot the stick from the firmware boot menu: nothing on the disk changes.

tools/make-usb.sh /media/$USER/MYUSB

3 · Install

sudo ./install.sh

It also installs the bootpick settings app and opens it. Run it again to update: if bootpick is already on the computer (even installed from another Linux), it updates that copy and asks whether to keep your settings or reset them.

Requirements

  • A 64-bit UEFI computer (most PCs since 2012). Legacy BIOS mode is not supported.
  • Secure Boot off, or the binary signed with your own key.
  • Linux to install from. Windows-only computers are not supported yet.
  • A mouse in the menu needs firmware with a pointer driver (most laptops have one). Without it, the keyboard does everything.

Turn it off or remove it

  1. Disable in the app: the next loader in the boot order starts, nothing is deleted.
  2. Uninstall in the app: removes the menu, its boot entry and the app, and shows the menus it hid again. From a terminal: sudo ./install.sh --uninstall.
  3. Stuck? Pick your old loader from the firmware boot menu (F12, F9 or Esc on most machines).

The settings app

Open bootpick settings from the app menu. It asks for your password once and shows a live preview drawn by the same code as the boot menu.

bootpick settings desktop app with general settings, theme, backgrounds and boot entries on the left and a live preview of the menu on the right

What you can change

  • Language, auto-start timer and default entry.
  • Names and logos: import any image as a system's logo.
  • Wallpapers: add your own pictures or remove the bundled ones.
  • Themes: duplicate a built-in one and change every colour.
  • Undo and redo for every change, a confirmation before losing unsaved work.

The menus after bootpick

Ubuntu and its family start through GRUB, Pop!_OS through systemd-boot, and both can show their own menu after bootpick. The app lists them and hides each one with a click (a marked block in GRUB's custom.cfg, timeout 0 in loader.conf), and puts them back just as easily.

Per GRUB, Also hide it after a forced shutdown decides whether the menu still appears when the previous start did not finish, so recovery stays one key away.

How it works

bootpick is a small UEFI application written in Rust without the standard library. The firmware starts it like any other boot loader.

1
Scan
Reads every EFI partition and the firmware's boot options, then sorts what it finds into systems and extras.
2
Draw
Renders icons, text and wallpaper itself through the firmware's graphics output, at the screen's native resolution.
3
Start
Loads the chosen loader directly. systemd-boot gets the entry through LoaderEntryOneShot; firmware options through BootNext.
4
Remember
Settings live in \EFI\bootpick\bootpick.conf, a plain text file every installed Linux can edit.

Troubleshooting

SymptomCheck
The computer still starts GRUB or WindowsThe firmware may reorder boot entries after an update. Run sudo ./install.sh again, or move bootpick first in the firmware setup.
"Security violation" or nothing happensSecure Boot is on. Turn it off in the firmware setup.
No mouse pointerThe firmware exposes no pointer device. Use the keyboard, or drop a UEFI mouse driver in \EFI\bootpick\drivers\.
A system is missingPress Esc to show hidden entries, then tick it in the settings. Encrypted or LVM disks are fine: bootpick only needs their loader on an EFI partition.
GRUB still shows its menuHide it in the app. If it appears only after a start that did not finish, that is GRUB's recovery behaviour; tick "Also hide it after a forced shutdown" to hide it then too.
It hangs after picking a systemLook at \EFI\bootpick\bootpick.log: it shows whether bootpick handed over to the loader. Some firmware hangs with certain USB sticks plugged in, with or without bootpick.

Computers and systems this has been tested on

More in the README, or open an issue.