Ventoy 启动菜单主题定制:6 步从默认界面走到个性化主题

发布时间:2026/10/20 1:39:51
Ventoy 启动菜单主题定制:6 步从默认界面走到个性化主题
Ventoy 启动菜单主题定制6 步从默认界面走到个性化主题【免费下载链接】VentoyA new bootable USB solution.项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy这篇文章解决一个问题Ventoy 的 GRUB 图形菜单默认长什么样就什么样如果你想换背景、调菜单位置、显示自己的品牌信息改哪里、怎么改、改坏了怎么查。按本文走完你能独立完成一套自定义 theme.txt并把它通过 ventoy.json 接到 U 盘上生效。主题到底是怎么加载的先看加载链路动手之前先搞清楚两件事Ventoy 的图形菜单本质是 GRUB2 的 gfxmenu而 Ventoy 在上面加了一层插件逻辑负责从 ventoy.json 里读主题参数。加载顺序是这样的启动时 GRUB 读取ventoy.json必须放在镜像分区根目录的 ventoy 目录下目录要手动创建插件解析theme字段把主题文件路径、显示模式、字体等写进 GRUB 环境变量主菜单脚本里判断如果设了vtoy_theme就走vt_set_theme否则回落到内置主题$prefix/themes/ventoy/theme.txt也就是你看到的默认界面这里有个容易踩的点theme.file里如果文件不存在插件不会报错只会默默用默认主题。所以主题没生效往往不是主题坏了而是路径根本没被找到。ventoy.json 里 theme 字段能写什么仓库自带的示例 ventoy.json 覆盖了全部可用字段字段作用file主题文件路径以/开头表示镜像分区根目录否则相对/ventoy/display_mode菜单显示模式GUI、CLI、serial、serial_consoleventoy_left/ventoy_topVentoy 底部状态行文字的水平和垂直位置可写百分比ventoy_color底部状态行文字颜色十六进制gfxmode强制指定图形分辨率fonts字符串数组启动时逐个加载的字体文件路径theme: { file: /ventoy/theme/theme.txt, display_mode: GUI, ventoy_left: 5%, ventoy_top: 95%, ventoy_color: #0000ff }display_mode不只是美观问题。老机器或串口控制台环境下 GUI 菜单可能根本画不出来把这里改成CLI或serial是正经的功能性用途不是降级手段。准备主题文件一个目录加一批九宫格图片Ventoy 自带两套完整主题可以当模板抄都在仓库里主题模板一 和 主题模板二。后者就是示例 ventoy.json 指向的那套结构是最标准的。一套可用的主题长这样/ventoy/theme/ ├── theme.txt # 主题配置本体 ├── background.png # 背景图 ├── menu_*.png # 菜单九宫格8 个方向 中心 ├── select_*.png # 选中项九宫格 ├── slider_*.png # 滚动条滑块九宫格 ├── terminal_box_*.png # 终端框九宫格 └── icons/ # 按菜单类别区分的图标为什么是menu_n.png、menu_nw.png这种一堆小图而不是一张整图因为 GRUB 主题用的是九宫格9-patch机制图片在任意方向拉伸时只变形中心区域四条边和四个角保持原样。这样菜单框不管拉到多高多宽边框粗细都不会被拉扁。你换背景图随便换但这几组九宫格文件名必须和 theme.txt 里的通配符menu_*.png对得上。背景图建议直接用 1024x768 的 PNG这是 Ventoy 默认 gfxmode也是覆盖面最广的分辨率。想要自适应屏幕的话用后面讲的resolution_fit而不是做一堆不同尺寸的背景。theme.txt 关键配置项说明拿 theme.txt 拆解一下它分四块桌面、菜单、超时条、动态信息标签。桌面与颜色文件头几行是全局设置desktop-image指背景图title-text是菜单标题Ventoy 默认留了一个空格因为菜单本身够醒目title-color和message-color控制标题和提示文字颜色。这些是普通键值对改成你的色值就行。boot_menu 菜单主体菜单的位置、尺寸、字体、选中效果全在boot_menu块里 boot_menu { left 10% width 80% top 30% height 50% item_color #ffffff item_height 30 selected_item_color #f2f2f2 scrollbar true }坐标支持百分比和像素混写比如top 95%-25表示95% 位置再往上 25 像素。item_height是单行高度ISO 多的时候菜单超出height就会出滚动条滑块样式由scrollbar_thumb指定。内置变量把运行状态画进界面theme.txt 的 label 里可以嵌VTOY_...占位符渲染时会被替换成实时状态这套机制在 GRUB 的 gfxmenu 源码gui_label.c里实现。可用的变量变量显示内容VTOY_HOTKEY_TIP快捷键提示VTOY_MEM_DISK内存盘模式状态VTOY_ISO_RAWISO 原始模式状态VTOY_GRUB2_MODE内置 GRUB2 模式VTOY_WIMBOOT_MODEwimboot 模式VTOY_ISO_UEFI_DRVUEFI 驱动信息 hbox { left 30% top 95% width 10% height 25 label {text VTOY_HOTKEY_TIP color blue align left} }另外progress_bar块的id __timeout__绑的是菜单倒计时text TIMEOUT_NOTIFICATION_SHORT让倒计时文字跟着进度走。给菜单设了默认超时项的这块值得留着。让分类图标跟着菜单走ISO 多的时候光靠文字排列分不清哪个是哪个。Ventoy 的 ventoy.json 里有menu_class字段可以给菜单项打类别标签然后主题在icons/目录按类别放图标匹配上的条目自动带图。示例 ventoy.json 里已经配了 ubuntu、deepin、red-hat 三个类别对应的 icons 目录 里正好放着ubuntu.png、deepin.png、red-hat.png。规则是key按 ISO 文件名里的关键字匹配dir按镜像目录匹配class是图标文件名不含扩展名。给团队 U 盘配几套发行版图标比改背景图更能解决实际问题。改完怎么验证效果重启进菜单是第一道验证但还有几个针对性的检查点分辨率theme.json 里resolution_fit设为 1 时主题会按屏幕实际分辨率适配而不是锁死在 1024x768配合gfxmode还能强制指定分辨率。混插显示器和老电视时先用这个把基准对齐再调布局CLI 模式display_mode改成CLI重启一次确认纯文本菜单正常。GUI 坏了文本菜单还能用的情况下你至少能启动系统动态标签看底部VTOY_HOTKEY_TIP那一行有没有内容空的话说明变量渲染链断了通常就是 theme.txt 语法写错主题不生效的三种排查思路按出现频率排三种情况基本覆盖绝大多数改了没用1. 大小写不对ventoy目录和ventoy.json文件名必须全小写。写错了的话启动时会直接弹提示Path case does not match! ventoy directory and ventoy.json MUST be all lowercase!。Windows 用户最容易中招因为 Windows 下建文件夹不区分大小写拷到 U 盘上大小写就原样带过来了。2. 文件编码或语法错误ventoy.json 必须是 UTF-8 编码带 BOM 的 UTF-8 不行ANSI 更不行启动时会提示Encoding type for ventoy.json is not supported, please convert to UTF-8。更麻烦的是语法错误比如多个逗号、引号没闭合它同样会弹提示而且整个 ventoy.json 的所有配置都不生效不只 theme。所以改完 json 先过一遍格式再上机。3. 主题路径静默失败前面说过theme.file指向的文件不存在时没有任何屏幕提示。排查方法把路径临时改成故意错的再改回你认为对的路径如果两次画面完全一样问题基本就在路径上。另外注意 ventoy.json 放错分区——它必须和 ISO 文件在同一个分区里放在 Ventoy 安装分区上的话启动时会明确提示You need to put ventoy.json in the 1st partition which hold the ISO files。进阶多主题随机与自定义字体两个小功能部署量大时很省心。随机切换多套主题theme.file除了单文件还可以写成数组插件会在每次启动时随机挑一个theme: { file: [/ventoy/theme/a/theme.txt, /ventoy/theme/b/theme.txt], random: boot_day }random控制切换频率boot_second每次启动、boot_day每天换一次、boot_month每月换一次。数组里还可以配default_file指定兜底主题。机房里几十台机器不想每台都不同用boot_month就是合适的档位。自带字体菜单字体默认用的是 Ventoy 内置的 unicode.pf2字体文件。中文显示如果显得局促把.pf2格式字体文件放进 U 盘在 theme 里加fonts: [/fonts/MyFont.pf2]插件会在启动时逐个加载。注意 GRUB 只认 pf2 格式ttf/otf 直接拷过去是不行的需要用 grub-mkfont 转一下。改到这一步主题这套东西其实就摸清了ventoy.json 管用什么、怎么显示theme.txt 管长什么样出问题就顺着这条链查。默认主题、示例配置和两套九宫格素材仓库里全都有照着改比从零画快得多。【免费下载链接】VentoyA new bootable USB solution.项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考