splashboard 2.10.2

A customizable terminal splash screen with plugin-based data sources
Documentation
# home_feed — morning briefing. Hero band (lifted on `bg = "subtle"`): figlet date as
# masthead, "good morning" greeting, live `Day · HH:MM`, and an almanac strip
# (moon · zodiac · day-of-year). Body: 2 cols × 3 rows of curated feeds — HN | r/programming,
# Wired | BBC Tech, Engadget | Wikipedia on this day. Footer: a daily fortune flourish.
#
# Trust: this preset wires Network-class widgets (`rss`, `reddit_subreddit_posts`). When
# installed to `$HOME/.splashboard/home.dashboard.toml` (global config) it's implicitly
# trusted; as a per-directory `.splashboard/dashboard.toml` it needs `splashboard trust`
# before the network panels render.

# ── Widgets ────────────────────────────────────────────────────────

# Hero centerpiece — date in moderate text_ascii blocks (quadrant pixel size, ~3 rows tall),
# colored with `panel_title` so it reads as the masthead.
[[widget]]
id = "hero_date"
fetcher = "clock"
format = "%a %e %b"
render = { type = "text_ascii", style = "blocks", pixel_size = "quadrant", color = "panel_title", align = "center" }

# Footer flourish — daily fortune. `length = "auto"` row sizes itself to whatever cookie was
# drawn so 1-line fortunes hug the closing line and 4-line ones get the room they need.
[[widget]]
id = "fortune"
fetcher = "random_fortune"
render = { type = "list_plain", align = "center", color = "panel_title" }

# Greeting seam — "good " (right) + time-of-day (left), home_minimal pattern.
[[widget]]
id = "greeting_prefix"
fetcher = "basic_static"
format = "good "
render = { type = "text_plain", align = "right" }

[[widget]]
id = "greeting"
fetcher = "clock_derived"
render = { type = "text_plain", align = "left" }
  [widget.options]
  kind = "time_of_day"

# Subtitle — full day name + current HH:MM. Different vocabulary from the figlet
# ("Sun 26 Apr" → abbreviated; subtitle uses "Sunday · 14:23" for the live "right now"
# read), so the band stops feeling like a date duplication.
[[widget]]
id = "now"
fetcher = "clock"
format = "%A · %H:%M"
render = { type = "text_plain", align = "center" }

# Almanac strip — moon · zodiac · day-of-year, centred. Three `clock_derived` values joined
# by basic_static " · " separators so today's sky reads as one decorative line.
[[widget]]
id = "moon"
fetcher = "clock_derived"
render = { type = "text_plain", align = "right" }
  [widget.options]
  kind = "moon_phase"

[[widget]]
id = "sep1"
fetcher = "basic_static"
format = "  ·  "
render = { type = "text_plain", align = "center" }

[[widget]]
id = "zodiac"
fetcher = "clock_derived"
render = { type = "text_plain", align = "center" }
  [widget.options]
  kind = "zodiac"

[[widget]]
id = "sep2"
fetcher = "basic_static"
format = "  ·  "
render = { type = "text_plain", align = "center" }

[[widget]]
id = "day_of_year"
fetcher = "clock_derived"
render = { type = "text_plain", align = "left" }
  [widget.options]
  kind = "day_of_year"

# Row 1 — Hacker News | Reddit r/programming
[[widget]]
id = "hn"
fetcher = "hackernews_top"
render = { type = "list_links", max_items = 5 }

[[widget]]
id = "reddit"
fetcher = "reddit_subreddit_posts"
render = { type = "list_links", max_items = 5 }
  [widget.options]
  subreddit = "programming"
  type = "top"
  period = "day"

# Row 2 — Wired (rss) | BBC Tech (rss)
[[widget]]
id = "wired"
fetcher = "rss"
render = { type = "list_links", max_items = 5 }
  [widget.options]
  url = "https://www.wired.com/feed/rss"

[[widget]]
id = "bbc"
fetcher = "rss"
render = { type = "list_links", max_items = 5 }
  [widget.options]
  url = "https://feeds.bbci.co.uk/news/technology/rss.xml"

# Row 3 — Engadget (rss) | Wikipedia on this day
[[widget]]
id = "engadget"
fetcher = "rss"
render = { type = "list_links", max_items = 5 }
  [widget.options]
  url = "https://www.engadget.com/rss.xml"

[[widget]]
id = "on_this_day"
fetcher = "wikipedia_on_this_day"
render = { type = "list_links", max_items = 5 }

# ── Layout ─────────────────────────────────────────────────────────
#
# Hero band sits on `bg = "subtle"` so the date masthead / greeting / almanac strip read as
# a header surface lifted off the body feeds. Footer band mirrors the same subtle bg with
# the fortune flourish, closing the splash in the same visual register.

[[row]]
height = { length = 1 }
bg = "subtle"

# Hero date — text_ascii blocks @ quadrant pixel size. Needs 4 rows for the 5×6 pixel font
# rendered as quadrants (≈3 cells of glyph + 1 cell of breathing room above/below).
[[row]]
height = { length = 4 }
bg = "subtle"
  [[row.child]]
  widget = "hero_date"

[[row]]
height = { length = 1 }
bg = "subtle"

# Greeting seam.
[[row]]
height = { length = 1 }
bg = "subtle"
flex = "center"
  [[row.child]]
  widget = "greeting_prefix"
  width = { length = 5 }
  [[row.child]]
  widget = "greeting"
  width = { length = 12 }

# Now — full day + live HH:MM. Complements the figlet without repeating the date.
[[row]]
height = { length = 1 }
bg = "subtle"
  [[row.child]]
  widget = "now"

# Almanac strip — moon · zodiac · day_of_year.
[[row]]
height = { length = 1 }
bg = "subtle"
flex = "center"
  [[row.child]]
  widget = "moon"
  width = { length = 22 }
  [[row.child]]
  widget = "sep1"
  width = { length = 5 }
  [[row.child]]
  widget = "zodiac"
  width = { length = 12 }
  [[row.child]]
  widget = "sep2"
  width = { length = 5 }
  [[row.child]]
  widget = "day_of_year"
  width = { length = 12 }

[[row]]
height = { length = 1 }
bg = "subtle"

[[row]]
height = { length = 1 }

# Body row 1 — HN | Reddit. 100-cell content band (49+gap2+49); 5 items + 1 border = 6.
[[row]]
height = { length = 6 }
flex = "center"
gap = 2
  [[row.child]]
  widget = "hn"
  width = { length = 49 }
  border = "top"
  title = "  HACKER NEWS  "
  title_align = "center"
  [[row.child]]
  widget = "reddit"
  width = { length = 49 }
  border = "top"
  title = "  R/PROGRAMMING  "
  title_align = "center"

[[row]]
height = { length = 1 }

# Body row 2 — Wired | BBC Tech
[[row]]
height = { length = 6 }
flex = "center"
gap = 2
  [[row.child]]
  widget = "wired"
  width = { length = 49 }
  border = "top"
  title = "  WIRED  "
  title_align = "center"
  [[row.child]]
  widget = "bbc"
  width = { length = 49 }
  border = "top"
  title = "  BBC TECH  "
  title_align = "center"

[[row]]
height = { length = 1 }

# Body row 3 — Engadget | Wikipedia on this day
[[row]]
height = { length = 6 }
flex = "center"
gap = 2
  [[row.child]]
  widget = "engadget"
  width = { length = 49 }
  border = "top"
  title = "  ENGADGET  "
  title_align = "center"
  [[row.child]]
  widget = "on_this_day"
  width = { length = 49 }
  border = "top"
  title = "  ON THIS DAY  "
  title_align = "center"

[[row]]
height = { length = 1 }

# ── Footer band ────────────────────────────────────────────────────
#
# Fortune flourish closes the splash on the default body bg — the hero alone wears the
# subtle band, so the bottom feels like the splash settling rather than another header.

[[row]]
height = { length = 1 }

[[row]]
# `height = "auto"` — text_plain's `natural_height` returns the TextBlock line count, so
# 1-line fortunes hug the closing line and multi-line cookies get the room they need.
height = "auto"
flex = "center"
  [[row.child]]
  widget = "fortune"
  width = { length = 80 }

[[row]]
height = { length = 1 }