啟動(dòng)菜單改成自己的樣子)
3 步完成 Ventoy 主題定制把默認(rèn)啟動(dòng)菜單改成自己的樣子【免費(fèi)下載鏈接】VentoyA new bootable USB solution.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ve/VentoyVentoy 啟動(dòng)后的第一屏是 GRUB2 渲染出的圖形菜單。默認(rèn)主題能用但背景、配色、菜單位置全是別人定的。這篇文章教你用 Ventoy 主題定制把這一屏換成自己的設(shè)計(jì)做完之后U 盤插到任何機(jī)器上開機(jī)顯示的是你畫的背景、你排的菜單、你指定的字體和顏色。先搞懂 Ventoy 的主題體系ventoy.json 和 theme.txt 各管什么Ventoy 的圖形界面構(gòu)建在 GRUB2 的 gfxmenu 之上所以主題文件就是標(biāo)準(zhǔn)的 GRUB2theme.txt格式但 Ventoy 在上面多包了一層配置入口。整個(gè)鏈路上有三個(gè)角色先分清再動(dòng)手后面少走彎路ventoy.json位于 Ventoy 分區(qū)根目錄的ventoy/ventoy.json是插件總配置。theme節(jié)點(diǎn)在這里指定主題文件路徑、顯示模式等。theme.txtGRUB2 主題格式文件定義背景圖、菜單框位置、顏色、字體。同目錄的圖片資源背景圖、9 段式邊框圖等文件名要和theme.txt里引用的名稱完全一致區(qū)分大小寫。默認(rèn)主題就放在grub/themes/ventoy/theme.txt倉庫里也附了一份可直接參考的示例 theme.txt 和對應(yīng)的 ventoy.json。建議先打開讀一遍下面所有寫法都來自這兩份文件。第一步在 ventoy.json 里指定主題文件在ventoy/ventoy.json中寫入或修改theme節(jié)點(diǎn)theme: { file: /ventoy/themes/mytheme/theme.txt, display_mode: GUI }字段說明file主題文件路徑。以/開頭表示 Ventoy 分區(qū)根目錄下的絕對路徑不以/開頭時(shí)Ventoy 會自動(dòng)補(bǔ)成/ventoy/…再查找所以寫成themes/mytheme/theme.txt也行。路徑必須真實(shí)存在否則整段配置被丟棄回落到默認(rèn)主題。display_modeGUI表示圖形模式。改成別的值會走文本菜單圖形主題完全不加載——這是主題不生效最常見的隱藏原因之一。同節(jié)點(diǎn)下還有g(shù)fxmode顯式指定分辨率、ventoy_left/ventoy_top/ventoy_color底部 Ventoy 狀態(tài)行文字的位置與顏色按需要添加不寫就用默認(rèn)值1024x768、5%、95%、藍(lán)色。路徑規(guī)則來自插件的解析邏輯ventoy_plugin.c先按你寫的路徑檢查文件是否存在存在才導(dǎo)出vtoy_theme環(huán)境變量grub.cfg據(jù)此加載你的主題否則使用內(nèi)置的themes/ventoy/theme.txt。第二步最小可用的 theme.txt 與百分比布局新建目錄ventoy/themes/mytheme/放入背景圖background.png1024x768 的 4:3 圖最穩(wěn)妥再寫一份theme.txt。下面是最小可運(yùn)行版本desktop-image: background.png title-text: Ventoy title-color: #ffffff message-color: #f2f2f2 boot_menu { left 10% width 80% top 30% height 50% item_color #ffffff selected_item_color #f2f2f2 item_height 30 item_spacing 1 scrollbar true scrollbar_width 10 }幾個(gè)關(guān)鍵點(diǎn)定位用百分比。left、top、width、height都可以寫10%這種形式相對當(dāng)前顯示分辨率計(jì)算1024x768 和 1920x1080 上都不會出界。想要精調(diào)時(shí)用混合表達(dá)式官方示例里就有l(wèi)eft 30%200、top 95%-25這種百分比加減像素的寫法。顏色用十六進(jìn)制。item_color普通菜單項(xiàng)、selected_item_color高亮項(xiàng)、message-color提示信息等#RRGGBB或 GRUB 支持的顏色名都行。desktop-image相對路徑相對theme.txt所在目錄解析所以背景圖、邊框圖都放同一個(gè)目錄文件名引用時(shí)不要寫路徑前綴。scrollbar trueISO 數(shù)量多時(shí)菜單溢出靠滾動(dòng)條建議保留。改完這一層開機(jī)后你看到的就已經(jīng)是自定義背景 自定義菜單框了。第三步用 VTOY_* 占位符顯示動(dòng)態(tài)狀態(tài)Ventoy 在 GRUB2 的 label 組件里擴(kuò)展了一批占位符實(shí)現(xiàn)在 gui_label.c放進(jìn)label的text里即可顯示實(shí)時(shí)信息占位符含義什么時(shí)候用VTOY_HOTKEY_TIP當(dāng)前菜單的快捷鍵提示樹狀/列表模式文案不同放在底部常駐提示行VTOY_MEM_DISK是否處于 MemDisk 模式調(diào)試加載方式時(shí)VTOY_ISO_RAW是否以原始鏡像方式啟動(dòng)同上VTOY_GRUB2_MODE/VTOY_WIMBOOT_MODE對應(yīng)啟動(dòng)模式狀態(tài)需要區(qū)分啟動(dòng)鏈路時(shí)VTOY_ISO_UEFI_DRVISO UEFI 驅(qū)動(dòng)加載狀態(tài)UEFI 問題排查這些占位符只在條件成立時(shí)顯示對應(yīng)文字不成立時(shí)顯示空格不會留出一塊難看的殘字。用法是套一個(gè)hbox容器再放label官方示例的寫法theme.txt hbox { left 30% top 95% width 10% height 25 label {text VTOY_HOTKEY_TIP color blue align left} }多個(gè)狀態(tài)行就復(fù)制幾段hbox用top 95%-25、top 95%-50向上錯(cuò)位排布。除了VTOY_*GRUB2 自帶的KEYMAP_LONG、TIMEOUT_NOTIFICATION_SHORT進(jìn)度條倒計(jì)時(shí)文案同樣可用。進(jìn)階9 段式可伸縮圖形與滾動(dòng)條想要菜單有邊框、選中項(xiàng)有高亮條、滾動(dòng)條有滑塊不要去做一整張大圖用 9-patch九段式切圖。命名規(guī)律是同一個(gè)前綴加方位后綴菜單框menu_*.png→menu_nw.png、menu_n.png、menu_ne.png、menu_e.png、menu_c.png等九張選中條select_c.png一張橫條即可selected_item_pixmap_style滾動(dòng)條滑塊slider_n.png/slider_c.png/slider_s.png終端窗口框terminal_box_*.png。theme.txt里用通配符引用整組menu_pixmap_style menu_*.png selected_item_pixmap_style select_*.png scrollbar_thumb slider_*.png terminal-box: terminal_box_*.png為什么有效GRUB2 加載時(shí)會把九段式圖片自動(dòng)按菜單實(shí)際尺寸拉伸拼接——角塊不變形邊塊平鋪。這樣同一套圖在小屏和 4K 屏上都成立比按某個(gè)分辨率畫死的整屏圖適應(yīng)性好得多。倉庫自帶的這組小圖每個(gè)只有幾百字節(jié)自己畫時(shí)照著尺寸做就行。多主題、隨機(jī)切換與分辨率適配ventoy.json的theme節(jié)點(diǎn)還支持三種進(jìn)階配置多主題數(shù)組file寫成字符串?dāng)?shù)組列出多份 theme.txt 路徑全部加載random每次啟動(dòng)從數(shù)組里隨機(jī)取一份。取值boot_second同一秒內(nèi)不變、boot_day同一天固定、boot_month同一個(gè)月固定適合每天換個(gè)背景這類玩法resolution_fit: 1結(jié)合多主題數(shù)組使用按當(dāng)前顯示器實(shí)際分辨率自動(dòng)挑選最匹配的主題。這是官方解決不同分辨率適配的正式手段比在 theme.txt 里做響應(yīng)式計(jì)算更直接。配置多份后菜單里按 F5 打開的診斷菜單會出現(xiàn)主題切換入口debug.cfg 中的 theme select 子菜單可以現(xiàn)場預(yù)覽每一份主題的效果不用反復(fù)重啟試錯(cuò)。字體方面theme節(jié)點(diǎn)還接受fonts數(shù)組指向 U 盤內(nèi)的.pf2字體文件路徑支持/絕對路徑或相對/ventoy/菜單里通過item_font、label的font屬性引用。想顯示中文菜單文字這一步不能省GRUB2 默認(rèn)字體不含中文字形。主題不生效時(shí)的四項(xiàng)排查?? 按命中率從高到低排路徑或大小寫錯(cuò)誤。ventoy.json與theme.txt都是大小寫敏感的Theme.txt和theme.txt是兩回事file里/開頭的路徑相對 Ventoy 分區(qū)根目錄漏寫一級目錄很常見。JSON 語法錯(cuò)誤。多一個(gè)逗號、引號沒閉合會導(dǎo)致整個(gè)ventoy.json解析失敗所有插件配置都不生效而不會單獨(dú)報(bào) theme 錯(cuò)。display_mode不是 GUI。文本模式下 theme 根本不會被加載。theme.txt 里的圖片引用對不上。desktop-image或menu_*.png組中缺一張文件對應(yīng)元素渲染失敗。前兩項(xiàng)不用猜按 F5 進(jìn)入診斷菜單 → JSON 檢查 → 選 theme 檢查對應(yīng)vt_check_plugin_json命令見 debug.cfgVentoy 會逐條打印每個(gè)file是OK還是NOT EXIST、字體路徑是否存在、各配置項(xiàng)的取值結(jié)果直接讀屏幕即可。寫在最后整套流程歸納成清單? 主題文件放ventoy/themes/名字/背景圖、theme.txt、9 段式圖同目錄?ventoy/ventoy.json的theme節(jié)點(diǎn)寫清file和display_mode: GUI? 布局用百分比 混合表達(dá)式狀態(tài)行用VTOY_*占位符? 改完先用 F5 診斷菜單的 theme 檢查確認(rèn)文件可達(dá)再重啟看效果? 要跨分辨率統(tǒng)一體驗(yàn)用多主題數(shù)組 resolution_fit別硬寫像素。ventoy.json 配置、theme.txt 寫法這兩處是日后維護(hù)的全部入口把這兩份文件用文本編輯器版本化管理改動(dòng)一目了然?!久赓M(fèi)下載鏈接】VentoyA new bootable USB solution.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考