mirror of
https://git.freebsd.org/src.git
synced 2026-01-16 23:02:24 +00:00
lualoader: allow graphical bits to be disabled with loader_gfx
Some people prefer the old ASCII art look and it's good to have a way
to confirm that the fallbacks still work right on systems that have a
functional framebuffer available. Add a loader_gfx loader.conf(5)
variable to disable the eager use of graphics for these use-cases.
While we're here, clean up the style in the area a little bit; the early
porting that I did to lualoader did a lot of redundant ~= nil that has
carried over into some of the later work. We can drop some of that, and
also re-organize some of these variables to improve readability.
ziaee notes that the positioning of the orb is a bit off; this is due to
a change in positioning that happened in
1b4e117131 ("loader: Fix orb position") to account for the image
dimensions. This should be partially reverted to get it right; we
shouldn't assume that we can use the same shift in gfx-* definitions for
both the ASCII art and the associated image -- the {image, image_rl}
pair should be converted to something more like an fbimg or gfx table
that has the image, image width and a shift override to avoid messing
up the ASCII positioning when disabled (or with no graphics available).
Reviewed by: imp, manu, ziaee (manpages)
Differential Revision: https://reviews.freebsd.org/D50706
This commit is contained in:
parent
2542189532
commit
bef6d85b6d
3 changed files with 23 additions and 16 deletions
|
|
@ -105,6 +105,7 @@ efi_max_resolution="1x1" # Set the max resolution for EFI loader to use:
|
|||
# WidthxHeight (e.g. 1920x1080)
|
||||
#kernels="kernel kernel.old" # Kernels to display in the boot menu
|
||||
kernels_autodetect="YES" # Auto-detect kernel directories in /boot
|
||||
#loader_gfx="YES" # Use graphical images when available
|
||||
#loader_logo="orbbw" # Desired logo: orbbw, orb, fbsdbw, beastiebw, beastie, none
|
||||
#comconsole_speed="115200" # Set the current serial console speed
|
||||
#console="vidconsole" # A comma separated list of console(s)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.Dd February 9, 2025
|
||||
.Dd June 5, 2025
|
||||
.Dt LOADER.CONF 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
|
@ -414,6 +414,12 @@ the beastie boot menu will be skipped.
|
|||
If set to
|
||||
.Dq NO ,
|
||||
the autoboot menu will not be displayed
|
||||
.It Va loader_gfx
|
||||
If set to
|
||||
.Dq NO ,
|
||||
the ASCII art version of the brand and logo will be used even if graphical
|
||||
versions are available.
|
||||
Additionally, the menu frame will be drawn with ASCII art as well.
|
||||
.It Va loader_logo Pq Dq Li orbbw
|
||||
Selects a desired logo in the beastie boot menu.
|
||||
Possible values are:
|
||||
|
|
|
|||
|
|
@ -217,6 +217,13 @@ local function defaultframe()
|
|||
return "double"
|
||||
end
|
||||
|
||||
local function gfxenabled()
|
||||
return (loader.getenv("loader_gfx") or "yes"):lower() ~= "no"
|
||||
end
|
||||
local function gfxcapable()
|
||||
return core.isFramebufferConsole() and gfx.term_putimage
|
||||
end
|
||||
|
||||
local function drawframe()
|
||||
local x = menu_position.x - 3
|
||||
local y = menu_position.y - 1
|
||||
|
|
@ -242,7 +249,7 @@ local function drawframe()
|
|||
x = x + shift.x
|
||||
y = y + shift.y
|
||||
|
||||
if core.isFramebufferConsole() and gfx.term_drawrect ~= nil then
|
||||
if gfxenabled() and gfxcapable() then
|
||||
gfx.term_drawrect(x, y, x + w, y + h)
|
||||
return true
|
||||
end
|
||||
|
|
@ -332,11 +339,9 @@ local function drawbrand()
|
|||
y = y + branddef.shift.y
|
||||
end
|
||||
|
||||
if core.isFramebufferConsole() and
|
||||
gfx.term_putimage ~= nil and
|
||||
branddef.image ~= nil then
|
||||
if gfx.term_putimage(branddef.image, x, y, 0, 7, 0)
|
||||
then
|
||||
local gfx_requested = branddef.image and gfxenabled()
|
||||
if gfx_requested and gfxcapable() then
|
||||
if gfx.term_putimage(branddef.image, x, y, 0, 7, 0) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
|
@ -383,16 +388,11 @@ local function drawlogo()
|
|||
y = y + logodef.shift.y
|
||||
end
|
||||
|
||||
if core.isFramebufferConsole() and
|
||||
gfx.term_putimage ~= nil and
|
||||
logodef.image ~= nil then
|
||||
local y1 = 15
|
||||
local gfx_requested = logodef.image and gfxenabled()
|
||||
if gfx_requested and gfxcapable() then
|
||||
local y1 = logodef.image_rl or 15
|
||||
|
||||
if logodef.image_rl ~= nil then
|
||||
y1 = logodef.image_rl
|
||||
end
|
||||
if gfx.term_putimage(logodef.image, x, y, 0, y + y1, 0)
|
||||
then
|
||||
if gfx.term_putimage(logodef.image, x, y, 0, y + y1, 0) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue