|

楼主 |
发表于 2020-5-14 15:54:35
|
显示全部楼层
本帖最后由 hilsonma 于 2020-6-12 14:05 编辑
倒计时
当我们在配置文件grub.cfg中将timout变量设定为正数时,默认菜单会在屏幕最下方出现一行倒计时文字:
高亮项将在xx秒后自动执行。
grub2主题有3个组件可以定义类似的倒计时提示,各有特色。
这三个组件分别是标签、进度条、进度环。
标签
----------
我们可以使用标签组件在主题里定义倒计时提示。标签组件的定义如下:
+ label {属性1=值1 属性2=值2 ...}
只要将标签组件的id属性设定为"_timeout_",就可以在指定位置以指定颜色显示即将自动执行默认启动项所剩余的秒数
我一般将此秒数显示在默认启动项(第一条菜单项)的右端。
按照我的经验,这个位置的
top是boot_menu的top+25
left是boot_menu的left+width-35
颜色使用selected_item_color
这样,倒计时标签组件的属性设置如下:
+ label {
id = "__timeout__"
top = 30%+25
left = 70%-35
color = "#fff"
}
这时,包含倒计数秒的主题文件内容如下:
# Elegant theme for GRUB2
desktop-image: "back.jpg"
title-text:""
+ boot_menu {
top = 30%
left = 30%
width = 40%
height = 40%
item_spacing = 0
item_color = "#ccc"
selected_item_pixmap_style = "box_*.png"
selected_item_color= "#fff"
}
+ label {
id = "__timeout__"
top = 34%
left = 65%
color = "#fff"
}
主题效果如下图:
如果要象默认菜单那样在屏幕最下方显示一行文字
如下设置标签组件属性:
+ label {
id = "__timeout__"
top = 100%-25
width = 100%
#组件宽度=整个屏幕的宽度
text = "高亮显示的启动项将在 %d 秒后执行..."
#文本内容,其中 %d 表示自动执行剩余秒数
align = "center"
#对齐方式 center即居中 left即居左 right即居右
color = "red"
}
由于使用了中文,记得主题文件要以utf-8编码保存。
进度条
----------
进度条组件定义如下:
+ progress_bar {属性1=值1 属性2=值2 ...}
这个组件可以用来显示一个进度条,形象展示自动执行默认启动项所剩余的时间。
只需要定义 id="__timeout__" 就会在屏幕左上角显示200*30像素的进度条,黑色边框,灰色底,白色进度。
要改变进度条显示位置,就指定top和left属性,默认值top=0 left=0 即左上角
要改变进度条显示大小,就指定width和height属性,默认值width=200 height=30
要改变边框颜色,就指定border_color属性,默认值border_color="black"
要改变进度条底色,就指定bg_color,默认值bg_color="128,128,128"
要改变进度显示颜色,就指定fg_color,默认值fg_color="200,200,200"
我们也可以使用样式框来定义进度条的外观,进度条样式框包括背景样式框bar_style和进度显示样式框highlight_style
bar_style = "box_*.png"
highlight_style = "box_*.png"
如果只使用highlight_style属性,那么就看不到进度条背景,或者说进度条背景是全透明的
使用样式框属性时,border_color/bg_color/fg_color这三个属性不起作用。
使用样式框属性时,highlight_overlay = "true" 会使得highlight_style的四边四角覆盖bar_style的四边四角,默认是不覆盖的,即默认 highlight_overlay = "false"
我很少使用进度条,如果使用的话就使用样式框,这样可以带透明效果,不至于完全遮挡背景。
我们可以指定text属性来在进度条上添加文字显示,文字的颜色使用text_color属性来指定,默认text_color="black"
进度条组件的text属性可以使用变量,如
text = "@TIMEOUT_NOTIFICATION_SHORT@" 相当于text="%ds" (这是英文提示,相应中文是"%d秒")
text = "@TIMEOUT_NOTIFICATION_MIDDLE@" 相当于text = "%ds remaining." ("剩余 %d 秒")
text = "@TIMEOUT_NOTIFICATION_LONG@" 相当于
text = "The highlighted entry will be executed automatically in %ds." ("高亮显示的启动项将在 %d 秒后执行")
使用变量的好处是grub2会根据配置文件grub.cfg中的语言设定(如lang="zh_CN")来翻译英文提示,显示成相应的语言。
实例:
+ progress_bar {
id = "__timeout__"
top = 80%
left = 30%
width = 40%
bar_style = "box_*.png"
highlight_style = "box_*.png"
text = "高亮显示的启动项将在 %d 秒后执行..."
text_color = "#fff"
}
进度环
----------
进度环组件定义如下:
+ circular_progress {属性1=值1 属性2=值2 ...}
定义一个进度环最少要指定3个属性值
+ circular_progress {
id = "__timeout__"
#id需指定为"__timeout__"
center_bitmap = "cc.png"
#环中心图片,可以是1个像素的透明图片
tick_bitmap = "ct.png"
#环刻度图片,建议用圆点图片,可带或不带透明度
}
这样会在左上角绘制一个32*32像素的环,环的中心是center_bitmap,环由64个刻度点组成,每个点是tick_bitmap,由12点钟方向开始,顺时针按时间进度逐点绘制。
要改变进度环的显示位置,就设定top和left,默认top=0 left=0
要改变进度环的大小,就设定width和height, 默认width=32 height=32
要指定环上的刻度点数,就设定num_ticks,默认num_ticks=64 (我如果使用进度环的话会设置刻度点数为timeout秒数的倍数)
要改变绘制的起始方位,就设定start_angle,这个属性值是以环的1/256来计算的,以3点钟方向为零,默认start_angle=-64 即-64/256 (=-1/4,以3点钟方向为零,-1/4即12点钟方向)
默认绘制方式是逐点绘制,如果要先绘制全部刻度点再让刻度点随时间流逝而逐点消失,可设定ticks_disappear = "true" (默认值ticks_disappear = "false")
实例:
+ circular_progress {
id = "__timeout__"
top = 80%
left = 45%
width = 10%
height = 10%
center_bitmap = "box_c.png"
tick_bitmap = "ct.png"
num_ticks = 30
}
|
|