Skip to content
animfetch
Menu

Configuration

Colours and art styles

How the art is drawn, the gradient and accent colours, and following your desktop theme.

Art styles#

style (or --style) picks how the animation is drawn into character cells:

StyleHow it drawsGood for
half (default)Two vertical samples per cell, with half blocks (▀▄█). Solid glyphs only, so edges are crisp and small holes stay holes.Most animations.
quadFour samples per cell in a 2x2 grid (▘▝▖▗▚▞…). Twice the resolution of half in both directions.Art with fine detail.
rampOne sample per cell, mapped onto the characters in ramp by density.A classic ASCII look.
rawThe art's own characters, exactly as authored.Hand-drawn and pre-coloured ASCII, such as earth.

half and quad render as solid blocks and rescale to any terminal. ramp uses ramp, lowest coverage first:

toml
style = "ramp"
ramp  = " .:-=+*#%@"      # a classic ASCII ramp
# ramp = " █"             # hard edges

The shaded blocks of the default ramp are stipple patterns in most fonts, which can read as noise along edges; a plain ASCII ramp is cleaner.

raw prints the art's own characters untouched. Frames may carry their own truecolor escapes, and art_color picks between them and the theme gradient:

art_colorMeaning
"own" (default)Show the art's real embedded colours.
"theme"Ignore them and paint the art with the gradient, like escape-free art.

When it has to shrink, raw keeps thin strokes by picking an inked cell from each block rather than a blind fixed sample.

Size#

The art scales to fit inside width by height cells (56 by 20 by default), keeping its aspect ratio. It is never enlarged beyond its authored size: more room gives chunkier blocks, not more detail. Set either to 0 to fill the space.

sh
animfetch --width 40 --height 12

Both caps matter: a wide, short animation slips under a height cap alone.

Colours#

toml
# Vertical colour ramp down the art. An empty list leaves the art uncoloured.
gradient = ["#f5c95c", "#f17f5b", "#f45c82", "#b07cf4", "#74a4ff"]

# Animate the gradient so it crawls through the art.
gradient_scroll = false

accent = "#74a4ff"     # user@host, the rule, and labels
value  = "#c8ccd4"     # values

gradient_scroll is off by default: a gradient that crawls through the art draws the eye away from the terminal, which is the thing you are meant to be looking at.

--no-color (or gray = true) draws everything in shades of grey: every colour keeps its brightness and loses its hue, so the art and the text stay readable and the palette swatches are left out. --def-color puts the default colours back. color = false (or NO_COLOR) sends no colour codes at all, which leaves your terminal's own colours.

Following your desktop theme#

Set color_source = "palette" and the fetch follows your desktop theme, reading a matugen, pywal or wallust palette. Anything the file does not define keeps the value you wrote, so a palette can only add colour, never remove it.

toml
color_source = "palette"

Try it without editing anything:

sh
animfetch --once --palette

animfetch looks for the first of these files that exists:

toml
palette_files = [
  "~/.local/state/quickshell/user/generated/colors.json",  # matugen
  "~/.cache/wal/colors.json",                              # pywal
  "~/.cache/wallust/colors.json",                          # wallust
]

and reads these names out of it. The defaults are Material You role names, as written by matugen:

toml
palette_accent   = "primary"
palette_value    = "on_surface"
palette_gradient = ["primary", "secondary", "tertiary"]

pywal and wallust name their colours color0..color15 instead, so with those you want something like:

toml
palette_accent   = "color4"
palette_value    = "color7"
palette_gradient = ["color4", "color5", "color6"]

Under --pin the palette file is re-read when it changes, so retheming your desktop recolours the running animation without restarting it.