Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
boxes(1)		     General Commands Manual			boxes(1)

NAME
     boxes - text mode box and comment drawing filter

SYNOPSIS
     boxes [options] [infile [outfile]]

DESCRIPTION
     Boxes  is	a  text  filter  which can draw any kind of box around its input
     text. Box design choices range from simple boxes to complex  ASCII  art.  A
     box  can also be removed and repaired, even if it has been badly damaged by
     editing of the text inside. Since boxes may be open on any side, boxes  can
     also  be used to create regional comments in any programming language.  New
     box designs can be added and shared by appending to a configuration file.

     boxes is a command line tool, but also integrates with any text editor that
     supports filters. The boxes website has examples on how to configure editor
     integration for various text editors:
     <URL:https://boxes.thomasjensen.com/editors.html>

OPTIONS
     Options offered by boxes are the following:

     -a format, --align=format
	   Alignment/positioning of text inside box. This option takes a  format
	   string  argument  which is read from left to right. The format string
	   may not contain whitespace and must consist of one  or  more  of  the
	   following components:

	   hx  - horizontal alignment of the input text block inside a box. Pos-
	   sible values for x are l (ell, for left alignment), c (center), or  r
	   (right).  This does not affect the justification of text lines within
	   the input text block (use the j argument instead).
	   vx - vertical alignment of the input text block inside a box.  Possi-
	   ble	values	for  x are t (for top alignment), c (center), or b (bot-
	   tom).
	   jx - justification of lines within the  input  text	block.	Possible
	   values  for	x  are l (ell, for left justification), c (center), or r
	   (right). This does not affect the alignment of the input  text  block
	   itself within the box. Use the h and v arguments for input text block
	   positioning.

	   Short hand notations (can be combined with the above arguments):
	   l (ell) - short for hlvcjl
	   c - short for hcvcjc
	   r - short for hrvcjr

	   The default for -a is hlvt.

     -c string, --create=string
	   Command line design definition for simple cases. The argument of this
	   option  is the definition for the "west" (W) shape. The defined shape
	   must consist of exactly one line, i.e. no multi-line shapes	are  al-
	   lowed.  The -c option is intended as a shortcut for those cases where
	   simple regional comments are to be created, which only need a certain
	   character or sequence of characters to be placed in	front  of  every
	   line.  In such cases, it is much more convenient to simply specify -c
	   than to do a complete design definition in one's config  file,  where
	   the only shape defined is the west shape.
	   This option implies a -d and does not access the config file.  -c may
	   of  course  be  used in conjunction with any of the other options. By
	   default, -c is not specified.

     --color, --no-color
	   Printing of color codes. Box designs and the text inside  a	box  may
	   contain  ANSI  color  codes,  sometimes called "escape sequences". In
	   this way, boxes and text can be colored.
	   Whether these escape sequences are printed by boxes is  normally  de-
	   termined by the terminal capabilities (default). Using --color, boxes
	   can	be  told to always output escape sequences even if it thinks the
	   terminal may not understand them. Using --no-color, escape  sequences
	   will never be printed.

	   Of course, even with --color, a box will only appear colored if it is
	   already defined with colors. In case you want to auto-color some text
	   that isn't yet, take a look at lolcat.
	   These  options  consider  all escape sequences to be color codes. Any
	   other escape sequences present will be printed or removed along  with
	   the color codes.

     -d string, --design=string
	   Design  selection. The one argument of this option is the name of the
	   design to use, which may either be a design's primary name or any  of
	   its alias names.

     -e eol, --eol=eol
	   Override  line  terminator.	eol can be CR, LF, or CRLF.  The default
	   is to use the system-specific line terminator, which  means	CRLF  on
	   Windows,  and  LF  otherwise.  This	option should only be used in an
	   emergency, because normally the system-specific line terminator  will
	   be just fine. This option is considered experimental, and may go away
	   in	 a    future	version    of	 boxes.     Let   us   know   in
	   <URL:https://github.com/ascii-boxes/boxes/issues/60> if you think  we
	   should keep it.

     -f string, --config=string
	   Use	alternate  config  file.  The one argument of this option is the
	   name of a valid boxes config file. The argument of -f can also  be  a
	   directory  which  contains  a configuration file. More information on
	   this topic below in the CONFIGURATION FILE section.

     -h, --help
	   Print usage information.

     -i string, --indent=string
	   Indentation mode. Possible arguments are text (indent text inside  of
	   box),  box  (indent box, not text inside of box), or none (throw away
	   indentation). Arguments may be abbreviated. The default is box.

     -k bool, --kill-blank, --no-kill-blank
	   Kill leading/trailing blank lines on removal. The value  of	bool  is
	   either  true  or  false.  This option only takes effect in connection
	   with -r.  If set to true, leading and trailing blank  lines	will  be
	   removed  from  the output. If set to false, the entire content of the
	   former box is returned.  The default is false, if both  the	top  and
	   the	bottom	part  of  the box are open, as is the case with most re-
	   gional comments. If the box's design defines a top part or  a  bottom
	   part, the default is true.

     -l, --list
	   List  designs. Produces a listing of all available box designs in the
	   config file, along with a sample box and information about  its  cre-
	   ator.   Also  checks the syntax of the entire config file. If used in
	   conjunction with -d, displays detailed information about  the  speci-
	   fied design.

     -m, --mend
	   Mend box. This removes a (potentially broken) box as with -r, and re-
	   draws it afterwards. The mended box is drawn according to the options
	   given.  This  may  be  important  to  know when it comes to restoring
	   padding, indentation, etc. for the mended box. Implies -k false.

     -n encoding, --encoding=encoding
	   Character encoding. Overrides the character encoding of the input and
	   output text. Choose from the list shown by iconv -l.  If  an  invalid
	   character  encoding	is  specified here, UTF-8 is used as a fallback.
	   The default is to use the system encoding, which is normally the best
	   course of action.  So don't specify this option unless you have to.

     -p string, --padding=string
	   Padding. Specify padding in spaces around the input	text  block  for
	   all	sides of the box. The argument string may not contain whitespace
	   and must consist of a combination of the following  characters,  each
	   followed by a number indicating the padding in spaces:

	   a - (all) give padding for all sides at once
	   h - (horiz) give padding for both horizontal sides
	   v - (vertical) give padding for both vertical sides
	   b - (bottom) give padding for bottom (south) side
	   l - (left) give padding for left (west) side
	   t - (top) give padding for top (north) side
	   r - (right) give padding for right (east) side

	   Example:  -p  a4t2 would define the padding to be 4 characters on all
	   sides, except for the top of the box, where the input text block will
	   be only 2 lines away from the box.
	   The default for this option is determined by the box design used.  If
	   the design does not specify anything, no default padding is used.

     -q query, --tag-query=query
	   Query  designs  by  tag.  In contrast to -l, this will only print the
	   matching design names. This option is normally used	stand-alone;  if
	   used  in  combination with other options, behavior is undefined.  The
	   query argument is a comma-separated list of tags which can be present
	   on a design in order to match. A tag may optionally be prefixed  with
	   +  in  order to require that it be present, or with - in order to ex-
	   clude designs which have that tag. Each tag can only occur  once  per
	   query.  The special query (all) matches all box designs, even if they
	   don't have any tags.
	   This option is intended for use by scripts. Alias names  are  printed
	   below their primary design name, and postfixed with (alias).
	   Example: boxes -q programming,-comment

     -r, --remove
	   Remove  an  existing  box.  Which design to use is detected automati-
	   cally. In order to save time or in case the detection does not decide
	   correctly, combine with -d to specify the design.

     -s widthxheight, --size=widthxheight
	   Box size. This option specifies the desired	box  size  in  units  of
	   columns  (for width) and lines (for height).  If only a single number
	   is given as argument, this number specifies the desired box width.  A
	   single number prefixed by 'x' specifies only the box height.  The ac-
	   tual  resulting  box  size may vary depending on the individual shape
	   sizes of the chosen design. Also, other command line options may  in-
	   fluence the box size (such as -p).
	   By default, the smallest possible box is created around the text.

     -t tabopts, --tabs=tabopts
	   Tab	handling.  This  option controls how tab characters in the input
	   text are handled. The tabopts must always begin with a positive inte-
	   ger number indicating  the  distance  between  tab  stops,  sometimes
	   called "spaces per tab".
	   Immediately	following the tab distance, an optional character can be
	   appended, telling boxes how to treat the leading tabs. The  following
	   options are available:

	   e - expand tabs into spaces
	   k - keep tabs as close to what they were as possible
	   u  -  unexpand tabs. This makes boxes turn as many spaces as possible
	   into tabs.

	   The -t string can be just a number. In that case, e	is  assumed  for
	   tab	handling.  The	factory  default  for the -t option is simply 8,
	   which is just such a case.
	   For example, you could specify -t 4u in order to  have  your  leading
	   tabs  unexpanded.  In the box content, tabs are always converted into
	   spaces. The tab distance in this example is 4.

     -v, --version
	   Print out current version number.

CONFIGURATION FILE
     Boxes will look for the configuration file in several places, some of which
     are given by the XDG specification.

     1. -f option [file or dir]
	   When a configuration file is specified on the command line,	we  will
	   use	that.  The  -f option can also specify a directory. Any location
	   specified via -f must exist, or boxes will terminate with an error.

     2. BOXES environment variable [file or dir]
	   If no config file is specified on the command line, boxes will  check
	   for	the  BOXES environment variable, which may contain a filename or
	   directory to use. Any location specified via  the  BOXES  environment
	   variable must exist, or boxes will terminate with an error.

     3. $HOME [dir]
     4. $XDG_CONFIG_HOME/boxes [dir]
     5. $HOME/.config/boxes [dir]
     6. /usr/local/share/boxes/boxes-config [file]
     7. /etc/xdg/boxes [dir]
     8. /usr/local/share/boxes [dir]
     9. /usr/share/boxes [dir]
	   Either  one of these last two directory locations might have the same
	   name as the global config file from 6. That's  fine.  It  just  means
	   that  we first look for a file of that name, and then for a directory
	   containing the file.

     The XDG environment variable XDG_CONFIG_DIRS is not supported. However, its
     default value is supported via steps 8 and 9 above.

     In the above list, whenever a step is designated with [dir], the following
     file names will be found, in this order:
	   1. .boxes
	   2. box-designs
	   3. boxes-config
	   4. boxes

     As soon as the first valid file is found, we use that and stop the search.

     The  recommended  location  for  a  user-specific	configuration  file   is
     $HOME/.boxes  or  $HOME/.config/boxes/.boxes.  A  global configuration file
     should be located at /usr/local/share/boxes/boxes-config. But  all  of  the
     other locations are fully supported, too.

     The   syntax  of  boxes  config  files  is  described  on	the  website  at
     <URL:https://boxes.thomasjensen.com/config-syntax.html>.

EXAMPLES
     Examples  on  how	to  invoke  boxes  may	be  found  on  the  website   at
     <URL:https://boxes.thomasjensen.com/examples.html>.
     Try

     echo "Good Bye World!" | boxes -d nuke

     Boxes also combines nicely with other tools. Try

     figlet "boxes . . . !" | lolcat -f | boxes -d unicornthink

AVAILABILITY
     The  boxes  website is <URL:https://boxes.thomasjensen.com/>. It contains a
     number of examples illustrating this manual page as well as  more	in-depth
     documentation.

AUTHOR
     Boxes  was  made  by  Thomas Jensen and the boxes contributors. It has been
     lovingly maintained since 1999.
     For a full list of contributors, see
     <URL:https://boxes.thomasjensen.com/team.html#contributors>
     and <URL:https://github.com/ascii-boxes/boxes/graphs/contributors>.
     Please refer to the boxes website for the maintainer's  current  email  ad-
     dress.

VERSION
     This is boxes version 2.3.1.

LICENSE
     boxes  is	free software under the terms of the GNU General Public License,
     version 3. Details in  the  LICENSE  file:  <URL:https://raw.githubusercon-
     tent.com/ascii-boxes/boxes/v2.3.1/LICENSE>

ENVIRONMENT
     Boxes recognizes the following environment variables:

     BOXES
	   Absolute  path of the boxes configuration file. If this is specified,
	   it must refer to an existing file or directory.

     HOME
	   The user's home directory.

     XDG_CONFIG_HOME
	   The root of the configuration file location as per the XDG specifica-
	   tion.

SEE ALSO
     figlet(6), iconv(1), lolcat(6)

4th Berkeley Distribution	 October 10 2024			boxes(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=boxes&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help