OpenDesktopPets places a bundled cat or dog directly over the existing macOS wallpaper. The pet follows the cursor, stays behind desktop icons, and ignores clicks so the desktop remains fully usable.
Everything runs locally. OpenDesktopPets has no account, analytics, network dependency, downloadable content, or runtime AI.
- Six bundled pets: Orange Tabby, Tuxedo Cat, Siamese Cat, Shiba Inu, Golden Retriever, and Pembroke Corgi.
- Smooth cursor following across a directional 5×5 gaze grid.
- Transparent, click-through windows on every connected display.
- Lightweight menu-bar controls for showing, hiding, and switching pets.
- Reduce Motion support and display-aware animation.
- Fully offline runtime with pre-rendered transparent assets.
- macOS 14 Sonoma or newer
- Apple Silicon Mac
- Xcode 16 or newer when building from source
Download the latest archive from GitHub Releases.
The v0.1.1 binary is an unsigned, unnotarized preview. Verify the published SHA-256 checksum before opening it. On first launch, macOS may require you to Control-click OpenDesktopPets.app, choose Open, and confirm.
For a trustable production installation, build the reviewed source locally until a signed and notarized release is available.
OpenDesktopPets starts immediately and adds a paw icon to the menu bar.
| Menu item | Action |
|---|---|
| Hide OpenDesktopPets / Show OpenDesktopPets | Toggle the desktop overlay |
| Choose Pet | Switch among the six bundled pets |
| Quit OpenDesktopPets | Stop the app and remove the overlay |
Pet selection persists between launches. The app does not modify the system wallpaper.
- Clone the repository.
- Open
OpenDesktopPets.xcworkspace. - Select the
OpenDesktopPetsscheme. - Build and run the macOS target.
Repository defaults:
| Setting | Value |
|---|---|
| Workspace | OpenDesktopPets.xcworkspace |
| Scheme | OpenDesktopPets |
| Minimum deployment target | macOS 14.0 |
| Architecture | arm64 |
The Swift package has no remote dependencies.
OpenDesktopPets/
├── OpenDesktopPets/ App entry point, icon, and Xcode resources
├── OpenDesktopPetsPackage/
│ ├── Sources/OpenDesktopPetsFeature/
│ │ ├── App/ Lifecycle and menu-bar controls
│ │ ├── Desktop/ Per-display click-through windows
│ │ ├── Tracking/ Shared display-link cursor sampling
│ │ └── Rendering/ Manifests, pose selection, and image cache
│ └── Tests/OpenDesktopPetsFeatureTests/ Runtime contract tests
├── Resources/Desktop/Pet/ Six bundled pet packages
└── Scripts/ Asset generation, validation, and release tools
One display-link source samples the cursor at the active display's native cadence. Each display advances a critically damped spring while motion is unsettled, maps the gaze to the selected pet's 5×5 grid, and assigns a shared decoded pose. Inactive displays return to center after 300 ms.
Resources/Desktop/Pet/<pet-id>/
├── manifest.json
└── Runtime/
└── 60 transparent 1536×1536 PNG poses
Each package contains 25 directional gaze poses plus gaze-matched blink, breathing, ear-twitch, and reaction frames. Startup fails closed when a required asset is missing.
Run the Swift package tests:
swift test --package-path OpenDesktopPetsPackageThe suite covers:
- all six complete 60-pose packages;
- 25 distinct directional gaze images for every alternate pet;
- resource loading and shared image caching;
- startup ordering and duplicate layer suppression;
- display reconciliation and cursor sampling;
- stable spring behavior at 30, 60, and 120 Hz.
Asset tooling has its own tests:
swift test --package-path Tools/AssetValidator
python3 -m unittest Scripts/generate/test_generate_cat_poses.pyOpenDesktopPets reads the global cursor position to select a local pose. It does not record input, capture screen contents, contact a server, or transmit data. All runtime images ship inside the app bundle.
Issues and focused pull requests are welcome. Before submitting a change:
- Keep runtime behavior offline and click-through.
- Do not add telemetry, accounts, or remote asset loading.
- Run the relevant Swift and asset-tool tests.
- Include visual evidence for rendering or pet-asset changes.
Use GitHub Issues for reproducible bugs and narrowly scoped feature proposals.
OpenDesktopPets is available under the MIT License.
