版本:3.3
环境: GRUB4DOS
对linux的极其不熟悉,导致了这东西的诞生。。。。
一般的jpg应该都可以。不过,有些编辑软件如Photoshop等,会在jpg里加入一些额外的信息,这样gfxmenu就解析不了,可以试试用Windows的画板打开图片,然后另存一下,一般可以消除多余的信息。PS:推荐用PhotoFiltre Studio转换能最大程度保持高质量,其他的acdsee,ps,xnview都用过不行。用系统自带的图片质量变化太大
至于菜单的定制,在文件xmenu.inc里,修改一下文件开始的常量就行了。
3.3的mkblfont在Windows下生成字体,运行make font就行了,详细过程参考Makefile
3.3版本改变菜单位置和最大显示行数的方法,需要修改的文件是common.inc,在init函数的定义里。这里可以自定义的变量非常多,我把它整段都显示出来,%后的是解释。
% 移动到原点 (0,0)
0 0 moveto currentpoint clip.size image
% 判断是否使用penguin风格。在gfxboot.cfg里设penguin=100就能启用penguin风格,是一个左右走动的企鹅,挺有趣的。
ptheme { ptheme.init } if
% 设置语言
% set default language
“lang” findfile dup {
/tmp over length 1 add 2 max string def
tmp exch {
dup ‘ ‘ eq over ‘\n’ eq or { pop pop exit } if
over exch 0 exch put
1 add
} forall
tmp dup setlang pop setkeymap
} {
pop
“en_US” dup setlang pop setkeymap
} ifelse
font.large setfont
/menu.text.xofs 10 def
/menu.text.yofs 2 def
/menu.item.height fontheight dup ptheme { 3 } { 2 } ifelse div add def
/menu.bar.height fontheight menu.text.yofs dup add add def
font.normal setfont
% 设置菜单的颜色。
/menu.text.normal white def
/menu.text.select black def
/boot.text.options white def
/boot.text.normal white def
/infobox.bg lightgray def
/infobox.text.normal black def
/menu.bar.color white def
% 菜单的宽度
/menu.bar.min.width 300 def
% 菜单的开始位置,这里使用了条件判断,当屏幕是640×480时small_layout为真。
small_layout {
/menu.start.x 130 def
/menu.start.y 122 def
} {
/menu.start.x 253 def
/menu.start.y 170 def
} ifelse
% 启动企鹅风格时的菜单位置。
ptheme {
/menu.start.x 220 def
/menu.start.y 163 def
} if
/menu.bar.width menu.bar.min.width def
% 菜单显示的最大行数
/menu.max.entries 8 def
/boot.pos { 263 ptheme { 480 } { small_layout { 380 } { 490 } ifelse } ifelse } def
% 如果设为false的话,开始时将不显示”引导选项”。
% false: no boot options line initially
/boot.show true def
/update.pos {
clip.size pop txt_dud_ready strsize pop sub ptheme { 60 } { 20 } ifelse sub
clip.size exch pop ptheme { 100 } { 75 } ifelse sub
} def
} def
去掉选择语言下面的那个当前语言,在xmenu.inc里,pmenu.update定义中,把最后两句注释掉:
xmenu .xm_list get xmenu .xm_current get get
dup .undef ne { exec show.rtl } { pop } ifelse
gfxboot里就有reboot和poweroff命令,加快捷键在main.inc的main.input里。比如说,在keyPgDown定义的后面加上:
/main.input {
…
dup keyF8 eq {
reboot
} if
dup keyF9 eq {
poweroff
} if
dup 0 ne {
“opt” help.setcontext
} if
} def
热键定义在system.inc里,其实就是把扫描码放到高位,比如:
/keyF8 0×42000000 def
/keyF9 0×43000000 def
F9/F10带确认框!免得一不小心按错就重启/关机了
panel.inc中找到
/panel_1.full [
[ keyF10 0 "F10" /panel.poweroff /panel.poweroff.width /panel.poweroff.update .undef ]
[ keyF9 0 "F9" /panel.reboot /panel.reboot.width /panel.reboot.update .undef ]
] def
替换成
/panel_1.full [
[ keyF10 0 "F10" /power_off /panel.poweroff.width /panel.poweroff.update .undef ]
[ keyF9 0 "F9" /re_boot /panel.reboot.width /panel.reboot.update .undef ]
] def
然后再打开 common.inc在适当位置添加
% – - – - – - – - – - – - – - – - – - – - – - – - – - – - – - – - – - – - – -
% Show “ReBoot” popup.
%
% ( ) ==> ( )
%
/re_boot {
window.dialog
dup .title txt_system_reboot_title put
dup .text txt_system_reboot put
dup .buttons [
button.ok button.notdefault actReboot actNoClose or button.setaction
button.cancel button.default actNothing button.setaction
config.rtl { exch } if
] put
dup window.init
window.show
} def
% – - – - – - – - – - – - – - – - – - – - – - – - – - – - – - – - – - – - – -
最后 把msys指定到 po目录 然后输入
bin/add_text txt_system_reboot_title “Reboot”
和
bin/add_text txt_system_reboot “Reboot the system now?”


最新评论