home | help
DRAWER.LUA(8)		     System Manager's Manual		   DRAWER.LUA(8)

NAME
     drawer.lua -- bootloader menu/screen drawer module

DESCRIPTION
     drawer.lua  contains  functionality  for drawing and manipulating the menu,
     logo, and brand to the screen.

     Before using the functionality provided by drawer.lua, it must be	included
     with a statement such as the following:

	   local drawer = require("drawer")

   BRAND DEFINITIONS
     Brand  definitions  describe a "brand", traditionally drawn above the menu.
     The exact position may be controlled by using the loader.conf(5)  variables
     loader_brand_x and loader_brand_y.  The following keys may be defined for a
     brand definition:

	   graphic  A  table  of  strings containing rows of text to be drawn to
		    the screen.

   LOGO DEFINITIONS
     Logo definitions describe a "logo", traditionally to the right of the menu.
     The exact position may be controlled by using the loader.conf(5)  variables
     loader_logo_x  and  loader_logo_y.  The following keys may be defined for a
     logo definition:

	   requires_color  A boolean describing whether or not this logo defini-
			   tion requires color.  If it is chosen to be drawn and
			   it  requires  color	 on   a   color-disabled   boot,
			   drawer.lua will elect to use the default "orbbw" logo
			   rather than the chosen logo.

	   graphic	   A  table  of  strings  containing  rows of text to be
			   drawn to the screen.

	   shift	   A table describing the x and y shift that  should  be
			   applied to all elements should this logo be selected.
			   This  is  typically	used  for  shifting the menu and
			   brand if an empty or minimal logo are selected.

   CUSTOM BRANDS AND LOGOS
     The brand and logo system is designed to allow brands and logos to be  eas-
     ily  plugged  in.	When an unrecognized loader_brand or loader_logo are en-
     countered, drawer.lua will attempt to include brand-${loader_brand}.lua  or
     logo-${loader_logo}.lua respectively.  These files are expected to call ei-
     ther drawer.addBrand() or drawer.addLogo() to add the requested branddef or
     logodef.	drawer.lua  will  attempt to do another lookup for the requested
     brand or logo before falling back to one of the following:

	   drawer.default_brand 	 The default brand to be used if the re-
					 quested brand cannot be located.

	   drawer.default_color_logodef  The default logodef to be  used  if  an
					 invalid   logodef   is   requested  and
					 loader(8) has been configured to  allow
					 output of color.

	   drawer.default_bw_logodef	 The  default  logodef to be used if ei-
					 ther an invalid logodef  has  been  re-
					 quested,  or  a  logodef  has	been re-
					 quested   that   requires   color   and
					 loader(8)  has  been  configured to not
					 output color.

   FRAME STYLES
     drawer.lua contains the definitions for the different frame styles that may
     be drawn around the menu.	Frame styles define  the  characters  drawn  for
     horizontal lines, vertical aligns, and each of the four corner styles.  The
     following keys may be defined for a frame style:

     * horizontal

     * vertical

     * top_left

     * bottom_left

     * top_right

     * bottom_right
     Frame styles are currently defined in the table drawer.frame_styles indexed
     by the name used for loader_menu_frame.  No API currently exists for manip-
     ulating this table indirectly.

   Exported functions
     The following functions are exported from drawer.lua:

	   drawer.addBrand(name, def)
			      Add  the	brand definition described by def to the
			      table of known brand definitions, indexed by name.

	   drawer.addLogo(name, def)
			      Add the logo definition described by  def  to  the
			      table of known logo definitions, indexed by name.

	   drawer.drawscreen(menudef)
			      Draws the logo, brand, menu frame, and the current
			      menu as described in menudef, formatted as defined
			      by menu.lua(8).

SEE ALSO
     menu.lua(8)

AUTHORS
     The   drawer.lua	file   was   originally  written  by  Pedro  Souza  <pe-
     drosouza@FreeBSD.org>.  Later work and this manual page was done by
     Kyle Evans <kevans@FreeBSD.org>.

FreeBSD 15.1			 March 29, 2025 		   DRAWER.LUA(8)

home | help