Ventoy theming

Back to Tech Blog

November 18, 2025

After distro-hoping for some months and deciding to use arch for some time, I tried to personalize Ventoy's boot menu

Ventoy is an open source tool that let's you have a USB drive with multiple ISO files, you can also put WIM/IMG/VHD(x)/EFI according to their page, but i've only used it with ISO.

I've used it in replacement for rufus and it's very useful, I recommend checking out, the interface is not very pretty... so I sticked with it for some time, then scratching around the files i found there's a THEME folder that has the UI elements for Ventoy which lets you customize background, elements and colors. Here's some of what I learnt of this.

First of all I want to meniton there's a plugin section in ventoy's official page, but here i'll write about how I made it.

In the 'grub/theme/ventoy' folder, you can find everything on the screen the menu, the labels, the colors, the scrollbar, even the highlight bar lives there as a mix of config files and PNG elements. And since it all follows GRUB’s theme language, tweaking things becomes surprisingly manageable, even if you’ve never touched GRUB themes before.

Here's a little guide on how the parts of the configuration file works:

• boot_menu block: → Defines where the entire menu appears using percentages for left, top, width, and height. You also control spacing, padding, item height, and the little icons that appear beside ISO entries. Ventoy reads those values live when it draws the interface.

• left = 6% + top = 28% + width = 60% + height = 55% → Calculates everything relative to the screen resolution, so the result scales perfectly across monitors. This is how you push the menu anywhere while keeping everything proportional

• menu_pixmap_style → This are the images that are used for frames, highlights, terminals, and sliders. Files like menu_.png, select_.png, or terminal_box_*.png act like modular skin pieces. Swap or recolor them and the whole boot UI shifts its personality. Since it doesn't apply smoothing, crisp 1px borders or soft pastel blocks look very clean when you load them .

• item_color, selected_item_color, item_height, item_padding, item_spacing → These define text styling and spacing logic. It treats each entry as a block, so padding affects internal spacing, while item_height directly affects how tall each selectable row becomes. Colors accept RGB in hex, so you can literally type soft #cba6f7 lilac or #f2e9e1 cream to match your theme.

• selected_item_pixmap_style → Lets you assign a custom highlight PNG. This is what gives you glowing bars, pastel underlines, or subtle rounded rectangles behind the selected item. If you design your PNG at the exact pixel density you want.

• scrollbar + scrollbar_width + scrollbar_thumb → Same structure as the menu blocks. scrollbar defines the base, scrollbar_thumb defines the draggable element, and scrollbar_width determines thickness. Since Ventoy inherits GRUB’s logic, you can make the scrollbar a thin pastel line or a chunkier panel.

There’s also some other layers I didn't go in depth in this article, but i hope this gives a nice foundation to create a basic theme for their menu.