From nobody Mon Jul 21 02:13:47 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4blkTl6vT8z61xfj; Mon, 21 Jul 2025 02:13:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4blkTl4JNDz3NG9; Mon, 21 Jul 2025 02:13:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753064027; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rLSbwFjpifHANmFc13QXgJenve1UG+hsFh6679h4W8Q=; b=hv00yvrUzbT7BWpUE2KImIdpOwe+fprprMzl0C70tQQTML94OVVF9SK6WiE9ftkWc7B7xN TRQRUvaZH8eQ/0b+JkmHshbj97nCJMiJVqF+D6PFPde3w25k863h56Ewheeq0JiiRRJFoD NZduX+vbKn5Qf2K2XGiet6KTgN5Oba8nhgXKwG4HMTXKZVEkxwhOX3ARIcKrdn5OtJpVVU GoqVP1puZENma6pSuZ6gf3FtQyf4UG4pIgV0lxzYbsAyp+BP07MCv3UXWGeLJ5H7AehAGF 4IG0yDiAKqUPHos3mFwZqlI9rRcpADUQVBl7AeL8dCQ8x9UxA3Wg1uludEobyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753064027; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rLSbwFjpifHANmFc13QXgJenve1UG+hsFh6679h4W8Q=; b=vc/0K4Ug9UhO3QkG+vm0BxM8JcHybUgDpOTYHAM+ilijZEAHcBO/uN5piG843D3DjHnYz0 yk1qeG558KoJYPLVPN10rfpDel53fHVExejm3erzyk9xBb5igYrFUuE481gBSd7t/a6Eyt Pfi9uzWOr3ktLAG7ZobOqpX5a/y/D8/A1eVp1i2Ip+bPdXYFe0lHHjvFlPeVirvC8HDfum xhIT7IRf/QFp1jtThnkgQXQXafkS/Mg+wNJmA6I4gQ7HZ6q80fq7sy1JFRZFUL4r+ThZZL xMUYqAx3tCtdD4uOK+pOXUTMI4eq/7k3pT6Freo/4kA3G/x0DLR6jKKwtMaGRw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1753064027; a=rsa-sha256; cv=none; b=HutHJsU0IBhhxFgrgPfFyqLLMO6nPNV4ebVYzP0imXEK0n//1pi3nDm/M/FyWsyyX/9zqA 8bgBAGpWhBX1Vr8gP/T0bqnSE1wlBWE+gF9R/1K+Q75TuRCvLrBDFn3fAc0z9+3BkqJSAX babhMp9XA6Lnq9VO0xXe343bM3iyE3bCNCLNdCouyiUULcbe+rttvZAGm5AjrPX/28KyY6 S2pWyVgl12zNHn3Hcib8kfbbT5ebgzqHNymkNBvDGY1oTP2lUiNQSeOYamHSX87PyLNSBZ ofAVB2mCjNWwUZ8zdDo4pl4F9bT2IdcAUESIxDJlaiFApnA9tZ/TbBFVI1Yx5g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4blkTl3vmlzfdM; Mon, 21 Jul 2025 02:13:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 56L2Dlpp013582; Mon, 21 Jul 2025 02:13:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 56L2DlDU013579; Mon, 21 Jul 2025 02:13:47 GMT (envelope-from git) Date: Mon, 21 Jul 2025 02:13:47 GMT Message-Id: <202507210213.56L2DlDU013579@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: a934ad15516b - stable/14 - lualoader: allow graphical bits to be disabled with loader_gfx List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a934ad15516b47ff2018141381ddabab55061a56 Auto-Submitted: auto-generated The branch stable/14 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=a934ad15516b47ff2018141381ddabab55061a56 commit a934ad15516b47ff2018141381ddabab55061a56 Author: Kyle Evans AuthorDate: 2025-06-06 14:44:14 +0000 Commit: Kyle Evans CommitDate: 2025-07-21 02:12:25 +0000 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 1b4e1171315398dec ("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) (cherry picked from commit bef6d85b6de55e0e7adcfa1fd2e4abdcecbf9564) --- stand/defaults/loader.conf | 1 + stand/defaults/loader.conf.5 | 8 +++++++- stand/lua/drawer.lua | 30 +++++++++++++++--------------- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/stand/defaults/loader.conf b/stand/defaults/loader.conf index 7397082ac29b..610f4e3be4f9 100644 --- a/stand/defaults/loader.conf +++ b/stand/defaults/loader.conf @@ -104,6 +104,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) diff --git a/stand/defaults/loader.conf.5 b/stand/defaults/loader.conf.5 index 1e302172af46..2f1ced192857 100644 --- a/stand/defaults/loader.conf.5 +++ b/stand/defaults/loader.conf.5 @@ -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 July 8, 2024 +.Dd July 3, 2025 .Dt LOADER.CONF 5 .Os .Sh NAME @@ -410,6 +410,12 @@ be displayed. If set to .Dq YES , the beastie boot menu will be skipped. +.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: diff --git a/stand/lua/drawer.lua b/stand/lua/drawer.lua index 1bf741b2373e..013e7b43e126 100644 --- a/stand/lua/drawer.lua +++ b/stand/lua/drawer.lua @@ -213,6 +213,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 @@ -238,7 +245,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 @@ -324,11 +331,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 @@ -375,16 +380,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