Draw a banner-like box in the console
list_border_styles()boxx(
label,
header = "",
footer = "",
border_style = "single",
padding = 1,
margin = 0,
float = c("left", "center", "right"),
col = NULL,
background_col = NULL,
border_col = col,
align = c("left", "center", "right"),
width = console_width()
)
Label to show, a character vector. Each element will be
in a new line. You can color it using the col_*
, bg_*
and
style_*
functions, see ANSI styles and the examples
below.
Text to show on top border of the box. If too long, it will be cut.
Text to show on the bottom border of the box. If too long, it will be cut.
String that specifies the border style.
list_border_styles
lists all current styles.
Padding within the box. Either an integer vector of
four numbers (bottom, left, top, right), or a single number x
, which
is interpreted as c(x, 3*x, x, 3*x)
.
Margin around the box. Either an integer vector of four
numbers (bottom, left, top, right), or a single number x
, which is
interpreted as c(x, 3*x, x, 3*x)
.
Whether to display the box on the "left"
, "center"
, or
the "right"
of the screen.
Color of text, and default border color. Either a style
function (see ANSI styles) or a color name that is
passed to make_ansi_style()
.
Background color of the inside of the box.
Either a style function (see ANSI styles), or a color
name which will be used in make_ansi_style()
to create a
background style (i.e. bg = TRUE
is used).
Color of the border. Either a style function
(see ANSI styles) or a color name that is passed to
make_ansi_style()
.
Alignment of the label within the box: "left"
,
"center"
, or "right"
.
Width of the screen, defaults to console_width()
.
The boxes might or might not look great in your terminal, depending on the box style you use and the font the terminal uses. We found that the Menlo font looks nice in most terminals an also in Emacs.
RStudio currently has a line height greater than one for console output, which makes the boxes ugly.
boxx("Hello there!")
#> ┌──────────────────┐ #> │ │ #> │ Hello there! │ #> │ │ #> └──────────────────┘
boxx("Hello there!", border_style = "double")
#> ╔══════════════════╗ #> ║ ║ #> ║ Hello there! ║ #> ║ ║ #> ╚══════════════════╝
boxx(c("Hello", "there!"), padding = 1)
#> ┌────────────┐ #> │ │ #> │ Hello │ #> │ there! │ #> │ │ #> └────────────┘
boxx("Hello there!", padding = 1)
boxx("Hello there!", padding = c(1, 5, 1, 5))
#> ┌──────────────────┐ #> │ │ #> │ Hello there! │ #> │ │ #> └──────────────────┘ #> ┌──────────────────────┐ #> │ │ #> │ Hello there! │ #> │ │ #> └──────────────────────┘
boxx("Hello there!", padding = 1, float = "center")
boxx("Hello there!", padding = 1, float = "right")
#> ┌──────────────────┐ #> │ │ #> │ Hello there! │ #> │ │ #> └──────────────────┘ #> ┌──────────────────┐ #> │ │ #> │ Hello there! │ #> │ │ #> └──────────────────┘
boxx(col_cyan("Hello there!"), padding = 1, float = "center")
#> ┌──────────────────┐
#> │ │
#> │ Hello there! │
#> │ │
#> └──────────────────┘
boxx("Hello there!", padding = 1, background_col = "brown")
boxx("Hello there!", padding = 1, background_col = bg_red)
#> ┌──────────────────┐ #> │ │ #> │ Hello there! │ #> │ │ #> └──────────────────┘ #> ┌──────────────────┐ #> │ │ #> │ Hello there! │ #> │ │ #> └──────────────────┘
boxx("Hello there!", padding = 1, border_col = "green")
boxx("Hello there!", padding = 1, border_col = col_red)
#> ┌──────────────────┐ #> │ │ #> │ Hello there! │ #> │ │ #> └──────────────────┘ #> ┌──────────────────┐ #> │ │ #> │ Hello there! │ #> │ │ #> └──────────────────┘
boxx(c("Hi", "there", "you!"), padding = 1, align = "left")
boxx(c("Hi", "there", "you!"), padding = 1, align = "center")
boxx(c("Hi", "there", "you!"), padding = 1, align = "right")
#> ┌───────────┐ #> │ │ #> │ Hi │ #> │ there │ #> │ you! │ #> │ │ #> └───────────┘ #> ┌───────────┐ #> │ │ #> │ Hi │ #> │ there │ #> │ you! │ #> │ │ #> └───────────┘ #> ┌───────────┐ #> │ │ #> │ Hi │ #> │ there │ #> │ you! │ #> │ │ #> └───────────┘
star <- symbol$star
label <- c(paste(star, "Hello", star), " there!")
boxx(
col_white(label),
border_style="round",
padding = 1,
float = "center",
border_col = "tomato3",
background_col="darkolivegreen"
)
#> ╭───────────────╮ #> │ │ #> │ ★ Hello ★ │ #> │ there! │ #> │ │ #> ╰───────────────╯