vantfindthe/hothello

A different piece of ASCII art from asciiart.website, news headlines and a themed system summary at every login, with a Textual settings UI

Python

0

5 commits

updated Oct 1, 2026

See the code

See what people are saying

SourceMessageScoreDate

hothello: A different piece of animated, colourful ASCII art every time you log in with a quick system summary, news headlines and an oh-my-posh-style header, all fitted to the size of your screen. (r/linux)

[https://github.com/vantfindthe/hothello](https://github.com/vantfindthe/hothello) has a ui to control every piece. it wont change your terminal, only the motd. utillzes oh-my-posh for themes, an open source ascii collection for a new picture every login, animations, rss reader, and you can pick…

3

Oct 1, 2026

README

hothello

A different piece of ASCII art every time you log in, picked from Christopher Johnson's ASCII Art Collection, with a quick system summary, news headlines and an oh-my-posh-style header, all fitted to the size of your screen.

hothello greeting a login: a powerline header, a System summary, a gradient-coloured dragon in a titled frame, and news headlines

Screenshots use made-up machine details and placeholder headlines. The art is real and always credited.

Install

git clone https://github.com/vantfindthe/hothello.git ~/hothello
cd ~/hothello
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/hothello install      # adds the login hook, then downloads a first batch of art and news

On Ubuntu, if python3 -m venv complains that ensurepip is missing, run sudo apt install python3-venv. Without sudo you can use python3 -m venv --without-pip .venv and then curl -sSL https://bootstrap.pypa.io/get-pip.py | .venv/bin/python.

To run hothello from anywhere, link it into a folder on your PATH:

ln -s ~/hothello/.venv/bin/hothello ~/.local/bin/hothello

Then open the settings UI with hothello, or change things from the command line (see Commands).

Developed and tested on Ubuntu 24.04 with bash. Hooks for zsh, fish, PowerShell (Windows) and a system-wide /etc/update-motd.d script are included too.

What it shows

  • Art from about 630 categories, cycled so nothing repeats until you've seen everything that fits. Pieces the site flags as nudity or explicit are skipped by default.
  • A header bar with a greeting, host, OS, date and time, and uptime.
  • A System section, a themed version of Ubuntu's login message: load, disk, memory and swap with usage bars, processes, users, IP addresses, pending updates, restart required, new-release notices and your last login. hothello on hushlogin hides Ubuntu's plain version so it isn't shown twice.
  • News headlines from 37 built-in feeds (BBC, NPR, The Guardian, NYT, Al Jazeera, DW, PBS, The Economist, Ars Technica, Nature, NASA and more) or your own RSS/Atom feeds, interleaved so no single source dominates.

Themes

The same greeting in four themes: Gruvbox, Synthwave '84 with rainbow art, Catppuccin Latte on a light background, and Nord

Twelve built-in themes, each with header colours, an art gradient or rainbow, and frame and text colours. hothello theme lists them all with a live sample, and hothello theme --import-omp builds a theme from the colours of your oh-my-posh prompt.

Output of hothello theme: each theme's header bar and art colours side by side

Themes only colour hothello's own output. hothello never changes your terminal's colour scheme, background or font, and it doesn't touch your shell prompt (oh-my-posh, starship or anything else). A theme decides the colours of the text hothello prints when you log in (and in its previews), and that's all. The prompt that follows looks exactly as it did before.

  • Most themes assume a dark terminal background; Catppuccin Latte is made for light ones.
  • Classic uses your terminal's own 16-colour palette, so it follows whatever colour scheme your terminal has.
  • --import-omp only reads your oh-my-posh config to copy its colours into a new hothello theme; your oh-my-posh setup isn't modified.
  • The settings UI itself uses its own fixed look; the Theme tab's preview shows how your greeting will look.

Fonts and glyphs

Output of hothello font: the same sample drawn with each glyph set

hothello doesn't install or change fonts. Your terminal draws the text with whatever font it's set to use, on the machine you're sitting at. What hothello can choose is which symbols it prints:

Glyph setNeedsYou get
nerda Nerd Fonticons (clock, host, memory ...) and rounded, slanted or flame separators
powerlinea Powerline-patched fontarrow separators, no icons
unicodeany modern fontflat colour blocks, box-drawing frames, ▸ bullets
asciianything, even a serial consoleplain ASCII frames (+--+), * bullets, # bars
  • auto (the default) picks nerd when oh-my-posh or starship is installed on the machine running hothello (they need a Nerd Font too), or when NERD_FONT=1 is set; otherwise it picks unicode.
  • Over SSH the server can't see your local font, and prompt tools usually aren't installed there, so auto settles on unicode. If your terminal uses a Nerd Font, run hothello font nerd once on the server.
  • Boxes or question marks in hothello font mean your font is missing those symbols. Pick the richest set that draws cleanly.
  • The art is plain text and looks right in any monospace font. Glyph sets only change the decorations around it.
  • Colour depth works the same way: auto reads what the terminal reports, but SSH usually doesn't pass on truecolor support, so you may get 256 colours. If gradients look banded, run hothello color truecolor.

Fits any screen

A 40 by 12 phone-sized terminal: the header, one alert line and a small cat

Everything (header, system summary, framed art, headlines and a couple of rows for your prompt) is budgeted into the screen size: your terminal's real size, fixed presets from 40x12 (phones and small SSH panes) up to 200x60, or a custom size. Art that doesn't fit isn't chosen (if nothing cached fits, the closest piece is centre-cropped, or skipped if you prefer). On short screens the headlines go first, then the system grid folds into a single alert line, so the art keeps its room and "restart required" stays visible.


Login animations

The nuke animation: a bomb drops, a fireball grows, and a blast wave reveals the greeting

Optional effects that reveal the greeting: lines, slide (right to left), wipe, rain, decode, nuke or random. Try one with hothello animation nuke --try. Any key skips the animation, and it only runs when the output is a terminal. Only changed characters are redrawn, so it stays light over SSH. The real text is printed at the end, so scrollback and links are intact.

Privacy mode, for screen recordings

The same greeting with privacy mode off (top) and on (bottom)

hothello privacy on hides your user and host names, IP addresses, the last-login address, OS and kernel versions, uptime, memory and disk totals, and patch status (pending updates and "restart required" tell people how up to date a machine is). Use HOTHELLO_PRIVACY=1 or hothello preview --private for a single session.

The settings UI

The Art tab: a category tree with check boxes and cycling options The Theme tab: theme, glyph and colour options with a live preview

TabWhat you control
ArtWhich categories to cycle (Space checks a category or a whole group; nothing checked means all), shuffle / rotate / random, every login / hourly / daily, prefer bigger pieces, hide flagged content, fetch more now
DisplayScreen size presets or a custom size, smallest art worth showing, rows kept for your prompt, frame style, alignment, crop or skip when nothing fits, art name and source on or off, login animation
NewsBuilt-in feeds, your own feeds (checked before they're added), how many headlines, per-source cap, max age, refresh interval, clickable links
SystemWhich facts to show, alerts, last login, usage bars, hiding the system's own login message, privacy mode
ThemeTheme, glyph set, colour depth, art colouring, header segments, greeting, date format, timezone, oh-my-posh import
InstallLogin hooks for bash, zsh, fish and PowerShell, and the system-wide /etc/update-motd.d hook

Keys: p full-screen preview at your real terminal size · a play the animation · n next art · f fetch art and news · q quit.

Commands

Everything in the settings UI can also be done from the command line. Commands that take a choice show the options with a live example when you leave the choice off, and accept any unique prefix (hothello theme gruv).

hothello                         settings UI (also: hothello config)
hothello show | preview          print the greeting; preview doesn't use up the art
                                 --private, --animate STYLE, --no-animate, --width/--height, --color, --glyphs

hothello features                every feature and whether it's on
hothello on|off|toggle NAME ...  show / hide features:  art headlines system header title credit frame
                                 badges ages links bars alerts lastlogin network privacy animation color
                                 flagged hushlogin   (e.g.  hothello off headlines credit)

hothello privacy [on|off]        privacy mode for recordings  (--alias NAME)
hothello theme [NAME]            themes with examples  (--import-omp [NAME|PATH] for oh-my-posh)
hothello font [NAME]             glyph sets with examples: auto, nerd, powerline, unicode, ascii
hothello color [MODE]            colour depth with examples: auto, truecolor, 256, 16, none
hothello frame [STYLE]           frames with examples
hothello size [NAME|WxH]         screen size presets, or a custom size like 100x30
hothello cycle [MODE]            shuffle | rotate | random  --every login|hourly|daily  --prefer any|large
hothello categories [SEARCH]     --add / --remove / --only NAME|GROUP|ID ...   --clear   --selected
hothello feeds                   --add ID|URL  --remove ID|URL  --name NAME
hothello headlines               --count N  --per-source N  --max-age HOURS
hothello animation [STYLE]       none lines slide wipe rain decode nuke random  --speed  --target all|art  --try
hothello greeting [TEXT]         e.g.  hothello greeting 'Hey {user}, {greeting}!'
hothello get [KEY] | set KEY VALUE | reset [SECTION] --yes

hothello refresh                 fetch art and headlines now (--art, --news, --catalog)
hothello status                  paths, cache size, feed health, hook status
hothello install | uninstall     [--target bash|zsh|fish|pwsh|powershell|update-motd] [--hushlogin]

Config lives in ~/.config/hothello/config.json (your own themes in themes/), and the cache in ~/.cache/hothello/hothello.db.

How it works

  • At login the hook runs hothello show, which reads the local cache, prints, and exits in well under a tenth of a second. It never touches the network and never breaks your login: errors are swallowed (set HOTHELLO_DEBUG=1 to see them). It only runs in interactive shells, so ssh host cmd, scp and deploy scripts are unaffected.
  • In the background it starts a detached hothello refresh --if-due when the news is older than the refresh interval, when unseen art that fits is running low, or when you pick categories it hasn't fetched yet.
  • Art comes from the site's public category pages, each of which serves 20 random pieces. It fetches a few pages at a time, pauses between requests and identifies itself honestly. The cache grows gradually.

System-wide (every user, via pam_motd)

sudo ~/hothello/.venv/bin/python -m hothello install --target update-motd

This copies your config to /var/lib/hothello and adds /etc/update-motd.d/60-hothello. pam_motd has no terminal to measure, so choose a fixed size (for example Classic 80x24) first.

Tests

.venv/bin/pip install -e ".[dev]" && .venv/bin/pytest

Credits

The art is © its artists, is credited on every greeting with a link back to asciiart.website, and comes from Christopher Johnson's ASCII Art Collection. Headlines belong to their publishers and link to the original articles.

vantfindthe/hothello

A different piece of ASCII art from asciiart.website, news headlines and a themed system summary at every login, with a Textual settings UI

Python

0

5 commits

updated Oct 1, 2026

See the code

See what people are saying

SourceMessageScoreDate

hothello: A different piece of animated, colourful ASCII art every time you log in with a quick system summary, news headlines and an oh-my-posh-style header, all fitted to the size of your screen. (r/linux)

[https://github.com/vantfindthe/hothello](https://github.com/vantfindthe/hothello) has a ui to control every piece. it wont change your terminal, only the motd. utillzes oh-my-posh for themes, an open source ascii collection for a new picture every login, animations, rss reader, and you can pick…

3

Oct 1, 2026

README

hothello

A different piece of ASCII art every time you log in, picked from Christopher Johnson's ASCII Art Collection, with a quick system summary, news headlines and an oh-my-posh-style header, all fitted to the size of your screen.

hothello greeting a login: a powerline header, a System summary, a gradient-coloured dragon in a titled frame, and news headlines

Screenshots use made-up machine details and placeholder headlines. The art is real and always credited.

Install

git clone https://github.com/vantfindthe/hothello.git ~/hothello
cd ~/hothello
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/hothello install      # adds the login hook, then downloads a first batch of art and news

On Ubuntu, if python3 -m venv complains that ensurepip is missing, run sudo apt install python3-venv. Without sudo you can use python3 -m venv --without-pip .venv and then curl -sSL https://bootstrap.pypa.io/get-pip.py | .venv/bin/python.

To run hothello from anywhere, link it into a folder on your PATH:

ln -s ~/hothello/.venv/bin/hothello ~/.local/bin/hothello

Then open the settings UI with hothello, or change things from the command line (see Commands).

Developed and tested on Ubuntu 24.04 with bash. Hooks for zsh, fish, PowerShell (Windows) and a system-wide /etc/update-motd.d script are included too.

What it shows

  • Art from about 630 categories, cycled so nothing repeats until you've seen everything that fits. Pieces the site flags as nudity or explicit are skipped by default.
  • A header bar with a greeting, host, OS, date and time, and uptime.
  • A System section, a themed version of Ubuntu's login message: load, disk, memory and swap with usage bars, processes, users, IP addresses, pending updates, restart required, new-release notices and your last login. hothello on hushlogin hides Ubuntu's plain version so it isn't shown twice.
  • News headlines from 37 built-in feeds (BBC, NPR, The Guardian, NYT, Al Jazeera, DW, PBS, The Economist, Ars Technica, Nature, NASA and more) or your own RSS/Atom feeds, interleaved so no single source dominates.

Themes

The same greeting in four themes: Gruvbox, Synthwave '84 with rainbow art, Catppuccin Latte on a light background, and Nord

Twelve built-in themes, each with header colours, an art gradient or rainbow, and frame and text colours. hothello theme lists them all with a live sample, and hothello theme --import-omp builds a theme from the colours of your oh-my-posh prompt.

Output of hothello theme: each theme's header bar and art colours side by side

Themes only colour hothello's own output. hothello never changes your terminal's colour scheme, background or font, and it doesn't touch your shell prompt (oh-my-posh, starship or anything else). A theme decides the colours of the text hothello prints when you log in (and in its previews), and that's all. The prompt that follows looks exactly as it did before.

  • Most themes assume a dark terminal background; Catppuccin Latte is made for light ones.
  • Classic uses your terminal's own 16-colour palette, so it follows whatever colour scheme your terminal has.
  • --import-omp only reads your oh-my-posh config to copy its colours into a new hothello theme; your oh-my-posh setup isn't modified.
  • The settings UI itself uses its own fixed look; the Theme tab's preview shows how your greeting will look.

Fonts and glyphs

Output of hothello font: the same sample drawn with each glyph set

hothello doesn't install or change fonts. Your terminal draws the text with whatever font it's set to use, on the machine you're sitting at. What hothello can choose is which symbols it prints:

Glyph setNeedsYou get
nerda Nerd Fonticons (clock, host, memory ...) and rounded, slanted or flame separators
powerlinea Powerline-patched fontarrow separators, no icons
unicodeany modern fontflat colour blocks, box-drawing frames, ▸ bullets
asciianything, even a serial consoleplain ASCII frames (+--+), * bullets, # bars
  • auto (the default) picks nerd when oh-my-posh or starship is installed on the machine running hothello (they need a Nerd Font too), or when NERD_FONT=1 is set; otherwise it picks unicode.
  • Over SSH the server can't see your local font, and prompt tools usually aren't installed there, so auto settles on unicode. If your terminal uses a Nerd Font, run hothello font nerd once on the server.
  • Boxes or question marks in hothello font mean your font is missing those symbols. Pick the richest set that draws cleanly.
  • The art is plain text and looks right in any monospace font. Glyph sets only change the decorations around it.
  • Colour depth works the same way: auto reads what the terminal reports, but SSH usually doesn't pass on truecolor support, so you may get 256 colours. If gradients look banded, run hothello color truecolor.

Fits any screen

A 40 by 12 phone-sized terminal: the header, one alert line and a small cat

Everything (header, system summary, framed art, headlines and a couple of rows for your prompt) is budgeted into the screen size: your terminal's real size, fixed presets from 40x12 (phones and small SSH panes) up to 200x60, or a custom size. Art that doesn't fit isn't chosen (if nothing cached fits, the closest piece is centre-cropped, or skipped if you prefer). On short screens the headlines go first, then the system grid folds into a single alert line, so the art keeps its room and "restart required" stays visible.


Login animations

The nuke animation: a bomb drops, a fireball grows, and a blast wave reveals the greeting

Optional effects that reveal the greeting: lines, slide (right to left), wipe, rain, decode, nuke or random. Try one with hothello animation nuke --try. Any key skips the animation, and it only runs when the output is a terminal. Only changed characters are redrawn, so it stays light over SSH. The real text is printed at the end, so scrollback and links are intact.

Privacy mode, for screen recordings

The same greeting with privacy mode off (top) and on (bottom)

hothello privacy on hides your user and host names, IP addresses, the last-login address, OS and kernel versions, uptime, memory and disk totals, and patch status (pending updates and "restart required" tell people how up to date a machine is). Use HOTHELLO_PRIVACY=1 or hothello preview --private for a single session.

The settings UI

The Art tab: a category tree with check boxes and cycling options The Theme tab: theme, glyph and colour options with a live preview

TabWhat you control
ArtWhich categories to cycle (Space checks a category or a whole group; nothing checked means all), shuffle / rotate / random, every login / hourly / daily, prefer bigger pieces, hide flagged content, fetch more now
DisplayScreen size presets or a custom size, smallest art worth showing, rows kept for your prompt, frame style, alignment, crop or skip when nothing fits, art name and source on or off, login animation
NewsBuilt-in feeds, your own feeds (checked before they're added), how many headlines, per-source cap, max age, refresh interval, clickable links
SystemWhich facts to show, alerts, last login, usage bars, hiding the system's own login message, privacy mode
ThemeTheme, glyph set, colour depth, art colouring, header segments, greeting, date format, timezone, oh-my-posh import
InstallLogin hooks for bash, zsh, fish and PowerShell, and the system-wide /etc/update-motd.d hook

Keys: p full-screen preview at your real terminal size · a play the animation · n next art · f fetch art and news · q quit.

Commands

Everything in the settings UI can also be done from the command line. Commands that take a choice show the options with a live example when you leave the choice off, and accept any unique prefix (hothello theme gruv).

hothello                         settings UI (also: hothello config)
hothello show | preview          print the greeting; preview doesn't use up the art
                                 --private, --animate STYLE, --no-animate, --width/--height, --color, --glyphs

hothello features                every feature and whether it's on
hothello on|off|toggle NAME ...  show / hide features:  art headlines system header title credit frame
                                 badges ages links bars alerts lastlogin network privacy animation color
                                 flagged hushlogin   (e.g.  hothello off headlines credit)

hothello privacy [on|off]        privacy mode for recordings  (--alias NAME)
hothello theme [NAME]            themes with examples  (--import-omp [NAME|PATH] for oh-my-posh)
hothello font [NAME]             glyph sets with examples: auto, nerd, powerline, unicode, ascii
hothello color [MODE]            colour depth with examples: auto, truecolor, 256, 16, none
hothello frame [STYLE]           frames with examples
hothello size [NAME|WxH]         screen size presets, or a custom size like 100x30
hothello cycle [MODE]            shuffle | rotate | random  --every login|hourly|daily  --prefer any|large
hothello categories [SEARCH]     --add / --remove / --only NAME|GROUP|ID ...   --clear   --selected
hothello feeds                   --add ID|URL  --remove ID|URL  --name NAME
hothello headlines               --count N  --per-source N  --max-age HOURS
hothello animation [STYLE]       none lines slide wipe rain decode nuke random  --speed  --target all|art  --try
hothello greeting [TEXT]         e.g.  hothello greeting 'Hey {user}, {greeting}!'
hothello get [KEY] | set KEY VALUE | reset [SECTION] --yes

hothello refresh                 fetch art and headlines now (--art, --news, --catalog)
hothello status                  paths, cache size, feed health, hook status
hothello install | uninstall     [--target bash|zsh|fish|pwsh|powershell|update-motd] [--hushlogin]

Config lives in ~/.config/hothello/config.json (your own themes in themes/), and the cache in ~/.cache/hothello/hothello.db.

How it works

  • At login the hook runs hothello show, which reads the local cache, prints, and exits in well under a tenth of a second. It never touches the network and never breaks your login: errors are swallowed (set HOTHELLO_DEBUG=1 to see them). It only runs in interactive shells, so ssh host cmd, scp and deploy scripts are unaffected.
  • In the background it starts a detached hothello refresh --if-due when the news is older than the refresh interval, when unseen art that fits is running low, or when you pick categories it hasn't fetched yet.
  • Art comes from the site's public category pages, each of which serves 20 random pieces. It fetches a few pages at a time, pauses between requests and identifies itself honestly. The cache grows gradually.

System-wide (every user, via pam_motd)

sudo ~/hothello/.venv/bin/python -m hothello install --target update-motd

This copies your config to /var/lib/hothello and adds /etc/update-motd.d/60-hothello. pam_motd has no terminal to measure, so choose a fixed size (for example Classic 80x24) first.

Tests

.venv/bin/pip install -e ".[dev]" && .venv/bin/pytest

Credits

The art is © its artists, is credited on every greeting with a link back to asciiart.website, and comes from Christopher Johnson's ASCII Art Collection. Headlines belong to their publishers and link to the original articles.

Languages

Python

100.0%