Skip to content
animfetch
Menu

Art

Borders

Draw PNG ornaments beside and below your system info in kitty, WezTerm and Ghostty.

An ornament can run down the left of the data, between the art and the info, and another along its bottom. They are drawn from PNG line art, as the pictures they are.

The built-in images are numbered 00, 01, 02 and so on, in one set, and any of them can go on either edge. The left one is drawn as it is. The bottom one is turned a quarter clockwise so it lies along the bottom.

Browse the built-in borders.

sh
animfetch --pin --border-left 00 --border-bottom 11
animfetch --pin --lb 00 --db 11   # the same, shorter: --lb is left, --db is down
animfetch --list-borders          # what is built in, and your own
animfetch --pin --no-border       # for this run only
animfetch --no-border --save      # none from now on: both names saved empty
toml
border_left   = "00"      # a built-in name, one of your own, or a path to a PNG
border_bottom = "11"
border_render = "auto"    # auto | image | cells

Which terminals show them#

Borders are drawn with the kitty graphics protocol, which these terminals speak:

TerminalPictures
kittyyes
WezTermyes
Ghosttyyes
VS Code's terminalno
tmux, GNU screenno (the protocol is not passed through)
OthersOnly if they implement the protocol, and only with border_render = "image": animfetch detects kitty, WezTerm and Ghostty.

A terminal that does not speak it gets no border. Nothing is silently converted to text unless you ask for it.

To check a terminal:

sh
animfetch --list-borders

The first line says whether this terminal shows pictures. In kitty, kitten icat some-image.png should show an image too.

Rendering: border_render#

ValueMeaning
autoThe pictures, where the terminal can show them, else no border.
imageThe pictures, even where they are not detected.
cellsThe image redrawn as braille characters: coarse, but works in any terminal with colour.

cells is the opt-in for terminals without picture support:

sh
animfetch --pin --border-left 00 --border-render cells

Picture borders are not colour, so NO_COLOR leaves them in place; it does remove cells, which is coloured text. --no-color draws both in grey. Nothing is drawn when output is piped.

Placing the bottom ornament#

Whatever image is on the bottom edge is turned a quarter clockwise so it lies along the bottom, so what is at its top ends up at the right. Two settings nudge where it sits, both in cells and both allowed to be fractions:

KeyDefaultMeaning
border_bottom_lift2.15Rows to raise it toward the info. 0 is flush under the last row. Capped at 3.
border_bottom_shift12.0Columns to move it right. 0 starts it flush with the left border. Capped at 24.
sh
animfetch --pin --border-bottom-lift 2.5 --border-bottom-shift 16

The picture is narrowed by as much as it is moved, so it never runs past the edge of the terminal. Only pictures move by part of a cell; cells move by whole ones.

Your own images#

Put PNGs here, and they show up in --list-borders:

~/.config/animfetch/border/

Then name one: --border-left mine or --border-bottom mine for mine.png. Like the built-in ones, it can go on either edge. A file of yours shadows a built-in of the same name. Or pass a path directly:

sh
animfetch --pin --border-left ~/pictures/vine.png

A folder inside it, left_border/ or bottom_border/, holds images for that edge only, if you want the same name to be a different picture on each.

They should be mostly transparent line art in light strokes, drawn for a dark terminal, as the built-in ones are. Draw an image that is to lie along the bottom upright, since it is turned. JPEG is not supported.

Layout and limits#

  • The art and the info give up the room a border takes.
  • A border is left out on a terminal under 60 columns, and when the output is not a terminal.
  • Pictures are drawn over the cells and under the text, scaled to a whole number of cells so nothing is stretched.
  • The built-in images add about 950 KiB to the binary. A build with --no-default-features leaves them out, and borders still work from your own files.

The look with a border#

The minimal style is made to sit beside an ornament. For the whole look, turn the animation off so the ornament and the list are the pane:

sh
animfetch --pin --info minimal --no-art --border-left 00 --border-bottom 08
toml
info_style    = "minimal"
art           = false
border_left   = "00"
border_bottom = "08"

Its values are the fuller ones (zsh 5.9.2, kitty 0.48.2, mango (Wayland)), which cost the same few milliseconds as boxed.