HyperPets
Animated pets for Hyper terminal panes.
The first pass includes:
- one or two pets per pane
- idle, wander, sleep, cursor-chase, and toy-chase behavior
- bounded toy spawning with cooldowns
- lightweight per-pane overlay rendering
- external cat sprite assets with state transitions between major behaviors
Install locally during development
- Put this folder somewhere stable.
- Add
hyperpetstolocalPluginsin your Hyper config.
module.exports = {
config: {
hyperPets: {
petCount: 1,
petTypes: ['cat'],
maxToys: 1,
toyCooldownMs: 20000,
successToyChance: 0.35,
walkSpeed: 0.45,
animationSpeed: 0.5,
sleepMinDurationMs: 30000,
sleepMaxDurationMs: 180000,
debugFrames: false
}
},
localPlugins: [
'hyperpets'
]
};
On macOS the config file is typically:
~/Library/Application Support/Hyper/.hyper.js
Then reload Hyper with Cmd+R.
Config
hyperPets: {
enabled: true,
petCount: 1,
petTypes: ['cat'],
maxToys: 1,
toyCooldownMs: 20000,
successToyChance: 0.35,
chaseCursorChance: 0.04,
walkSpeed: 0.45,
animationSpeed: 0.5,
sleepMinDurationMs: 30000,
sleepMaxDurationMs: 180000,
debugFrames: false,
reducedMotion: false,
onlyActivePane: true
}
Notes
- Command-success toy spawning currently uses a prompt-return heuristic from terminal output, not shell integration.
- The plugin is intentionally conservative so it does not flood panes with toys or constant motion.
- The current animation system uses asset manifests under
assets/pets/.catis currently aliased to the Maple sprite sheet so existing configs keep working.
Asset Pipeline
- Cat frames live in
assets/pets/cat/frames/*.svg. - The cat manifest in
assets/pets/cat.jsmaps clips and transitions to those frame files. - Maple lives in
assets/pets/maple/and is wired as a sprite-sheet asset throughassets/pets/maple.js. - The renderer supports both individual SVG frames and sprite-sheet cells behind the same clip API.
- To add a new pet type later, create another manifest under
assets/pets/plus a matching frame directory, then register it inassets/pets/index.js.
Sheet Tools
- Split a uniform sheet into per-frame PNGs:
bash scripts/split_sprite_sheet.sh assets/pets/maple/spritesheet.webp 192 208 assets/pets/maple/frames maple
- Stitch a frame directory back into a sheet:
bash scripts/stitch_sprite_sheet.sh assets/pets/maple/frames 8 9 /tmp/maple-sheet.png maple
Debugging
- Set
hyperPets.debugFramestotrueto show the active clip, frame number, facing direction, sprite-sheet row/column, and a rolling history of the last 5 displayed frames beside each pet.
Description
Languages
JavaScript
92.6%
Shell
7.4%