English | 日本語
Shows an AI-generated shiba inu in the bottom-right corner of your Ghostty terminal, and swaps it for a new one every 3 minutes.
Built as a small ADHD aid: a bit of comfort and visual variety in the terminal you stare at all day.
launchd (every 180s)
→ dogtty
1. Generate a shiba inu image with Pollinations.ai (free, no API key)
2. Convert it to a 300px PNG and overwrite ~/.local/share/dogtty/dogtty.png
3. Send SIGUSR2 to Ghostty to reload its config → the corner dog changes
6 poses × 6 styles (watercolor, pastel, flat illustration, colored pencil, DSLR photo, film photo) × random seed — a different shiba every time.
The tool is the single dogtty script: generation plus the install /
config / uninstall subcommands. It is fully self-contained (it even
generates its own launchd plist), so downloading that one file is enough.
./dogtty installIt asks for the dog, the look and the interval (Enter keeps the shown value). In non-interactive contexts it installs silently with the defaults (shiba inu, mixed, 180s).
The dog picker offers shiba inu (default), shih tzu, corgi, toy poodle,
golden retriever, or a free-form prompt (which doesn't even have to be a
dog). The look picker offers mixed (default), illustration only, photo
only, or a free-form style (e.g. pixel art). Choices are stored under
~/.config/dogtty/.
Then add the following to your Ghostty config (~/.config/ghostty/config)
and reload with Cmd+Shift+,:
background-image = ~/.local/share/dogtty/dogtty.png
background-image-position = bottom-right
background-image-fit = none
background-image-opacity = 0.3dogtty # generate a random shiba now
dogtty "corgi puppy, pixel art" # generate with your own prompt
dogtty config # change the dog, look and interval interactively
dogtty install # (re)install
dogtty uninstall # remove everything(install, uninstall and config are reserved words and can't be used
as generation prompts.)
- Change the dog, the look or the interval anytime with
dogtty config— each question is prefilled with the current setting, so Enter skips what you don't want to change - Logs go to
~/Library/Logs/dogtty.log(auto-truncated over 1MB) - When Ghostty is not running, dogtty skips generation entirely (no wasted API calls)
dogtty uninstallThe 4 background-image lines added to your Ghostty config must be removed
manually.
- Do not symlink
~/.local/bin/dogttyinto this repository. If the repo lives under a TCC-protected folder such as~/Documents, launchd cannot read through the symlink and fails with "Operation not permitted". A real copy is required —dogtty installdoes exactly that (re-run it after editing the script) - Never send Ghostty any signal other than SIGUSR2. Unhandled signals kill the process. Config reload via SIGUSR2 is officially supported since Ghostty 1.2
- Anonymous Pollinations.ai usage is rate-limited: rapid requests get HTTP 429, so the script retries up to 3 times with a 15-second wait
- Generated images are AI output, free of copyright concerns
- macOS (
sips,launchd, andpython3are all stock macOS tools) - Ghostty 1.2+ (
background-imageand SIGUSR2 reload required; tested on 1.3.1)
MIT
