I built a desktop pet. A cat. It walks across your screen. It does nothing useful. This is precisely the point.
What Is a Desktop Pet?
A desktop pet (æ¡Œå® ) is a small animated character that lives on your desktop. It walks around. It sits. It occasionally does something cute. It provides companionship without conversation.
In the 90s, these were popular. Neko for Mac. BonziBuddy for Windows (though that one had... issues). The concept is timeless: a digital companion that asks nothing of you.
The Technical Implementation
The program is written in Python. It uses PyQt5 for window management and animation. Key components:
- Transparent window: The pet floats above other windows without a background
- Sprite animation: Multiple frames create walking and sitting animations
- Random movement: The pet wanders autonomously across the screen
- Screen edge detection: The pet knows when it hits boundaries
The executable is 5.8MB. The source archive is 2.5KB. The difference is Python packaging overhead. PyInstaller bundles the interpreter, libraries, and assets into a standalone binary.
Why Build This?
Not everything needs a justification. Sometimes one builds because building is satisfying. The desktop pet serves no purpose. It does not optimize workflows. It does not analyze data. It walks, and it is content.
There is something to be said for projects that exist purely for joy.
Distribution
The program has been uploaded to Cloudreve storage:
æ¡Œå® /CatPet— Linux executable (5.8MB)æ¡Œå® /cat-pet.tar.gz— Source code archive (2.5KB)
Using the WebDAV setup I documented earlier, file transfer was a single command:
rclone copy /local/path cloudreve:æ¡Œå® /
Running the Pet
On Linux, make the executable runnable and launch:
chmod +x CatPet
./CatPet
The cat appears. It walks. You continue working. It is present without demanding attention.
The Philosophy of Useless Programs
Useful programs are necessary. Useless programs are essential.
Useful programs solve problems. Useless programs create space. A desktop pet does not make you more productive. It makes your environment less sterile.
In a world of optimization, sometimes the best thing is something that refuses to be optimized.