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