Real-Fruit-Snacks124 downloadsA small floating ghost that drifts around your vault, follows your cursor, and recolors when you boop it. Matches the Terminal Workbench theme palette.

A small floating ghost that lives in your Obsidian vault. It drifts around the workspace on its own, peeks over headings, reads along the paragraph you're on, spooks away from your cursor, naps in the corner when you're idle, pipes up with the occasional terminal quip, cheers you on while you write, and recolors itself when you boop it. Pick it up and fling it wherever you like.
It's the companion to the Terminal Workbench theme — the ghost matches that theme's palette out of the box — but it works with any theme.
Try the live ghost on the showcase page — it's the actual pet, running in your browser.
Set the mode in Settings → Terminal Workbench Pet, or bind the commands:
Terminal Workbench Pet: Toggle pet on or offTerminal Workbench Pet: Cycle pet mode (off, cursor, float)Terminal Workbench Pet: Recolor the petClick the ghost to pet it — it does a happy squish, tosses a heart, and cycles its body color through the theme palette (green → cyan → amber → violet → orange → red). Your color choice is remembered.
Or grab it and drag it anywhere. In float mode, give it a flick and let go — it sails across the workspace with momentum, bounces gently off the edges, and settles back into drifting.
Everything lives under Settings → Terminal Workbench Pet and applies instantly:
zzz, reading..., boop me?).Settings → Community plugins and select Browse.Terminal Workbench Pet and select Install.main.js, manifest.json, and styles.css from the latest release.<your vault>/.obsidian/plugins/terminal-workbench-pet/.Settings → Community plugins, refresh, and enable Terminal Workbench Pet.Add Real-Fruit-Snacks/terminal-workbench-pet as a beta plugin in BRAT.
Requires Obsidian 1.5.0 or newer.
--ta-* palette. Without it, it falls back to Obsidian's accent color and sensible defaults.Plain JavaScript, no build step — Obsidian loads main.js directly.
| Path | Purpose |
|---|---|
main.js |
The plugin (settings, lifecycle) and the ghost's behavior engine |
styles.css |
The ghost's appearance and animations |
manifest.json |
Plugin metadata |
versions.json |
Release compatibility map |
docs/index.html |
Showcase page with a live ghost (GitHub Pages) |
.github/workflows/ci.yml |
On every push: syntax-checks main.js, validates manifest.json against versions.json, and loads the plugin under a stubbed Obsidian API |
.github/workflows/release.yml |
Attaches main.js, manifest.json, styles.css to a release when a version tag is pushed |
To cut a release: bump version in manifest.json, add the entry to versions.json, then push a tag with the same version.