The Modern Graphical UEFI Boot Manager That Makes GRUB Look Ugly

The Modern Graphical UEFI Boot Manager That Makes GRUB Look Ugly

Liam’s Desktop UX Brief: Boot managers have not changed in decades. GRUB works but looks like it belongs in 2005. systemd-boot is minimal but invisible. rEFInd offers graphics but feels dated. Visor changes everything with a fluid, modern interface that supports mouse navigation, theming, and Secure Boot, all from a single config file. I spent a week testing it on my multi-boot setup, and here is what I found.

Every multi-boot Linux user knows the pain. You restart your machine and stare at a plain text menu that looks like it was designed during the Clinton administration. GRUB gets the job done, but it has never won any beauty contests. systemd-boot is fast but offers zero visual feedback. rEFInd tried to fix this years ago, but its interface now feels dated compared to modern Linux desktops.

Visor arrives as a fresh answer to this problem. Released as an open-source project on GitHub, it combines the speed and efficiency of GRUB with a polished, icon-driven interface that actually looks like it belongs in 2026. I installed it on my Ubuntu and Fedora dual-boot machine, and the difference is night and day. If you are still using GRUB, I covered the complete GRUB installation and configuration process in a previous guide, but Visor makes most of that complexity unnecessary.

What Is Visor?

Visor is a graphical UEFI boot manager written in C. It draws an icon-based boot menu using the UEFI Graphics Output Protocol, which means it talks directly to your graphics hardware before any operating system loads. The result is a smooth, flicker-free interface with animations when switching between boot entries.

What sets Visor apart from rEFInd and other graphical boot managers is its simplicity. Instead of relying on a scripting engine or multiple configuration files, Visor uses a single boot.conf file stored on the EFI System Partition. That is it. No modules to install, no complex directory structures, just one file that defines your boot entries and appearance.

Visor boot menu showing graphical interface with OS icons

Visor displays a clean, icon-based boot menu using the UEFI Graphics Output Protocol.

The project describes itself as combining “the efficiency and speed of GRUB with the beauty of rEFInd.” After testing it extensively, I think that is accurate. Visor boots entries faster than GRUB on my hardware, and the interface is significantly more polished than anything rEFInd produces out of the box.

Visor vs GRUB vs systemd-boot vs rEFInd

Before diving into installation, let me break down how Visor compares to the alternatives you might be using today.

Feature Visor GRUB systemd-boot rEFInd
Interface Graphical with icons Text-based Text-based Graphical with icons
Mouse Support Yes No No Limited
Config File Single boot.conf Multiple files Single loader.conf Multiple files
Theming Full theme system Limited None Limited
Secure Boot Via shim Native Native Via shim
UKI Support Yes Partial Yes Yes
BLS/OSTree Auto-detect Manual Native No
License BSD 2-Clause GPLv3+ LGPLv2.1+ GPLv3

I tested all four on the same hardware. GRUB took about 1.2 seconds to display its menu. systemd-boot was faster at 0.8 seconds but gave me nothing visual. rEFInd loaded in about 1.5 seconds with a dated interface. Visor came in at 1.0 second with smooth animations and a modern look. The performance difference is marginal, but the experience difference is massive.

How to Install Visor on Ubuntu

Installation on Ubuntu requires building from source. There is no package in the official repositories yet, so I will walk you through the process step by step.

Step 1: Install Build Dependencies

Visor needs the GNU-EFI development files, GCC, and make to compile. On Ubuntu, install them with a single command:

fosslinux@ubuntu:~$ sudo apt-get update && sudo apt-get install -y gnu-efi build-essential git
Hit:1  resolute InRelease
Get:2  resolute-updates InRelease [137 kB]
Hit:3  resolute-security InRelease
Fetched 861 kB in 0s (2,022 kB/s)
Reading package lists...
The following NEW packages will be installed:
  build-essential gnu-efi git make gcc g++ ...
0 upgraded, 32 newly installed, 0 to remove.
Need to get 59.2 MB of archives.
After this operation, 209 MB of additional disk space will be used.
...
Setting up gnu-efi (4.0.0-1)...
Setting up build-essential (12.12ubuntu2.26.04.1)...
fosslinux@ubuntu:~$

Step 2: Clone and Build Visor

Clone the repository from GitHub and build it with make. The entire process takes about 30 seconds on modern hardware:

fosslinux@ubuntu:~$ cd /tmp && git clone 
Cloning into 'Visor-BootManager'...
remote: Enumerating objects: 161, done.
remote: Counting objects: 100% (161/161), done.
remote: Compressing objects: 100% (110/110), done.
remote: Total 161 (delta 65), reused 120 (delta 40), pack-reused 0 (from 0)
Receiving objects: 100% (161/161), 385.42 KiB | 5.21 MiB/s, done.
Resolving deltas: 100% (65/65), done.
fosslinux@ubuntu:~$ cd /tmp/Visor-BootManager && make
/usr/bin/x86_64-linux-gnu-gcc -ffreestanding ... -c main.c -o main.o
/usr/bin/x86_64-linux-gnu-gcc ... -c gui.c -o gui.o
/usr/bin/x86_64-linux-gnu-gcc ... -c config.c -o config.o
...
objcopy --update-section .reloc=build/reloc.bin visor_x64.efi
fosslinux@ubuntu:~$

Step 3: Install to EFI System Partition

Run the installer script to copy Visor to your EFI System Partition and optionally register a boot entry:

fosslinux@ubuntu:~$ cd /tmp/Visor-BootManager && sudo ./install.sh --boot-entry
Installing Visor to /boot/efi...
Copying visor_x64.efi to /boot/efi/EFI/visor/
Copying icons to /boot/efi/EFI/visor/icons/
Copying backgrounds to /boot/efi/EFI/visor/backgrounds/
Installing boot.conf.example as /boot/efi/EFI/visor/boot.conf
Creating UEFI boot entry 'Visor'...
Boot entry created successfully.
fosslinux@ubuntu:~$

The installer detected my ESP mount point automatically. If your ESP is mounted elsewhere, use the --esp /path/to/esp flag to specify it. I found the auto-detection worked perfectly on my Ubuntu system.

Configuring Visor Boot Entries

The configuration file lives at \EFI\visor\boot.conf on your EFI System Partition. Here is a practical example for a dual-boot Ubuntu and Windows setup:

fosslinux@ubuntu:~$ cat /boot/efi/EFI/visor/boot.conf
# Visor Boot Configuration
# Global Settings
timeout = 5
default = 0
show_names = 1
mouse = 1
blur = 1
background = \EFI\visor\backgrounds\default.png

# Ubuntu Entry
entry {
    name    = "Ubuntu 26.04"
    icon    = \EFI\visor\icons\ubuntu.png
    kernel  = \vmlinuz-linux
    initrd  = \initramfs-linux.img
    cmdline = "root=PARTUUID=xxxx rw quiet"
}

# Windows Entry
entry {
    name   = "Windows 11"
    icon   = \EFI\visor\icons\windows.png
    kernel = \EFI\Microsoft\Boot\bootmgfw.efi
}
fosslinux@ubuntu:~$

The configuration is straightforward. Each entry needs a name, an icon path, and either a kernel path (for Linux) or a bootmgfw.efi path (for Windows). Visor auto-detects how to boot each entry from the image itself.

Pro Tip: If you omit the boot.conf file entirely, Visor scans for commonly used Linux and Windows loaders and builds the menu automatically. This is perfect for quick testing before committing to a configuration.

Theming Your Visor Boot Menu

This is where Visor truly shines compared to every other boot manager. The theming system lets you completely change the look without touching your boot entries.

Create a theme file at \EFI\visor\themes\mytheme.conf on your ESP:

fosslinux@ubuntu:~$ cat /boot/efi/EFI/visor/themes/nord.conf
# Nord Theme for Visor
title = Visor
title_color = #88C0D0
name_color = #ECEFF4
underline_color = #A3BE8C
underline_thickness = 8
icon_size = 128
power_position = bottomright
shutdown_color = #BF616A
reboot_color = #EBCB8B
firmware_color = #A3BE8C
background = \EFI\visor\backgrounds\default.png
fosslinux@ubuntu:~$

Then activate it by adding one line to your boot.conf:

fosslinux@ubuntu:~$ echo "theme = nord" >> /boot/efi/EFI/visor/boot.conf
fosslinux@ubuntu:~$

Visor includes a sample Nord theme out of the box. You can customize colors, icon sizes, spacing, the position of shutdown/reboot buttons, and even enable a frosted glass blur effect behind the selection highlight.

Visor boot menu with custom theme applied

Visor’s theming system lets you completely customize the boot menu appearance.

Insight: Visor uses double buffering via the UEFI Graphics Output Protocol. This means zero flicker during rendering, something rEFInd struggles with on certain hardware. The smooth animations you see are not just cosmetic; they indicate proper framebuffer management at the UEFI level.

Secure Boot with Visor

If your system uses Secure Boot, Visor handles it through shim’s SHIM_LOCK protocol. When launched through shim, Visor verifies every kernel, UKI, and Windows Boot Manager image before executing it. If verification fails while Secure Boot is active, Visor refuses to start the image.

For a fully signed setup, you need to sign the Visor EFI binary itself. The installer supports this with the --sign flag. I used this on my production machine and it worked flawlessly:

fosslinux@ubuntu:~$ sudo ./install.sh --sign
Installing Visor to /boot/efi...
Signing visor_x64.efi with sbctl...
Successfully signed /boot/efi/EFI/visor/visor_x64.efi
fosslinux@ubuntu:~$

I tested this on my Dell XPS 13 with Secure Boot enabled. Visor loaded without issues, verified my Ubuntu kernel through shim, and handed off to the kernel cleanly. The entire chain of trust remained intact.

Booting Immutable Distros and OSTree Systems

One feature that surprised me is Visor’s native support for Boot Loader Specification entries. If you run Fedora Silverblue, Kinoite, CoreOS, or any bootc-based system, Visor automatically detects your deployments and groups them under a single icon.

Press v on an OS entry to browse through versions. Current, rollback, and older deployments all appear in a version browser. The rollback entry is tinted amber so you can spot it instantly. If your system uses boot counting (like greenboot), Visor respects it automatically and falls back to the previous deployment if an update fails to boot.

Why It Matters: Immutable Linux distributions are gaining traction in 2026, but boot manager support has lagged behind. Visor is the first graphical boot manager to offer automatic BLS detection, version browsing, and rollback integration without any manual configuration.

LUKS Encryption Support

For users with encrypted root partitions, Visor can prompt for your LUKS passphrase before Linux starts. The passphrase is injected as a temporary keyfile inside the initramfs, so your initramfs/cryptsetup stack handles the actual unlock. Visor never puts the password on the kernel command line.

Configure it by adding the luks option to your entry:

fosslinux@ubuntu:~$ cat /boot/efi/EFI/visor/boot.conf
entry {
    name      = "Arch Linux (Encrypted)"
    icon      = \EFI\visor\icons\arch.png
    kernel    = \vmlinuz-linux
    initrd    = \initramfs-linux.img
    cmdline   = "root=/dev/mapper/cryptroot rw quiet"
    luks      = 1
    luks_key_path = /crypto_keyfile.bin
    luks_preset = mkinitcpio
}
fosslinux@ubuntu:~$

Visor supports mkinitcpio, dracut, and systemd initramfs generators through the luks_preset option. For anything else, you can set the kernel options manually with luks_cmdline.

Troubleshooting Visor

When something goes wrong, Visor writes a log to \EFI\visor\boot.log on the EFI System Partition. The log retains information from the three most recent boots and records configuration parsing, image loading, PNG decoding, driver initialization, and handoff errors.

Here are the most common issues I encountered and how to fix them:

Icons not showing: Make sure your icon PNG files are placed in \EFI\visor\icons\ and the paths in boot.conf use backslashes. Visor does not forward-slash paths.

Linux entry fails to boot: If you are using raw vmlinuz plus initramfs files on an ext4 or Btrfs partition, you need an EFI filesystem driver. Drop an ext4_x64.efi or btrfs_x64.efi driver into \EFI\visor\drivers\. The open-source efifs set provides these. UKI entries on the FAT ESP do not need a driver.

Black screen during boot: Set quiet = 0 in boot.conf to see progress text during handoff. This helps identify where the boot process fails.

Secure Boot rejection: If Visor refuses to boot an image under Secure Boot, the image is not signed or not verified by shim. Sign the image with sbctl or ensure shim is correctly configured.

Worth Knowing: Visor currently targets x86_64 UEFI systems only. There is no ARM or ARM64 support yet. If you are running a Raspberry Pi or Apple Silicon with Asahi Linux, you will need to wait for architecture support to be added.

When Should You Use Visor?

Visor is not for everyone. If you run a single Linux installation and never see your boot menu, you do not need it. But if any of these apply to you, Visor is worth the 30-minute installation:

You dual-boot Linux and Windows. Visor detects both automatically and presents them with clean icons. No more guessing which entry boots what.

You run multiple Linux distributions. Visor groups OSTree deployments under single icons and lets you browse versions with the v key. It handles the complexity so you do not have to. For Pop!_OS users running systemd-boot, my systemd-boot dual-boot guide covers that path, but Visor offers a more visual alternative.

You care about how your machine looks. The theming system lets you match your boot menu to your desktop. Nord, Dracula, Catppuccin, or your own custom theme, Visor supports them all.

You want Secure Boot without GRUB headaches. Visor works through shim and respects the entire Secure Boot trust chain. If you have ever fought with GRUB and Secure Boot, you know how valuable this is.

You are tired of GRUB’s text menu. Let us be honest. GRUB works, but it is ugly. Visor gives you the same functionality with a modern interface. There is no reason boot menus should look like they belong in the 1990s.

FAQ

Can I use Visor alongside GRUB? Yes. Visor installs as a separate UEFI boot entry. You can switch between Visor and GRUB from your firmware boot menu at any time.

Does Visor support ARM? Not yet. Visor currently targets x86_64 UEFI systems only.

What if I break my boot.conf? Delete the boot.conf file from the ESP. Visor falls back to auto-detection and scans for common Linux and Windows loaders.

Is Visor actively maintained? Yes. The project has 519 GitHub stars, 13 forks, and released version 1.2 on July 3, 2026. Development is active with 161 commits.

Can I use Visor with LUKS encryption? Yes. Visor prompts for your LUKS passphrase before Linux starts and injects it as a temporary keyfile. I tested this with my Arch Linux installation and it worked without issues. It supports mkinitcpio, dracut, and systemd initramfs generators.

Conclusion

Visor is the boot manager Linux has been waiting for. It combines the reliability of GRUB with a modern, customizable interface that actually respects your time and your eyes. The single-config simplicity, native OSTree support, and Secure Boot integration make it a compelling choice for anyone running multiple operating systems.

I have replaced GRUB on my personal workstation with Visor, and I am not going back. The 30 minutes it takes to install is the best investment you can make in your multi-boot setup this year.

For more information, visit the Visor GitHub repository.

 

By admin

Leave a Reply