Skip to main content

EN | RU | CN | ID | KO

Desktop Cat: QT Overlay 🐱

cat.gif

Latest release Python Versions PyPI Version Pepy Total Downloads

I made a cute little animated cat 🐈 for your desktop, with an interface in English, 中文, 한국어 and Русский.
It's a lightweight Python + Qt app - no borders, and you can drag it around easily.
Shows static first frame for 5 seconds, then plays GIF animation once, then loops back to static.
Switch the interface language any time under Settings → Language.
If you like it, maybe I'll share an AnimeGirl version next time~ 😉

image

LLM Chat, Reminders, GitHub Integration & Tracking Activity

image image
image image

🎨 Create your own cat with AI

Turn a few photos into your own cat. Right-click → Chars → Create custom with AI…, add 1–3 photos of the same person, edit the prompt (and a negative prompt for the self-hosted backends) to shape the character, pick txt2img (from the prompt) or img2img (from your photos), and generate with OpenAI or your own self-hosted Stable Diffusion (AUTOMATIC1111) or ComfyUI server — set its address in the dialog and pick the checkpoint from the live model list. It's saved as an ordinary local char you can reuse or delete anytime; reference photos are resized in memory and never stored by myCat. OpenAI needs your own API key (one request per generation) and returns a transparent cat; the self-hosted backends run on your own GPU.

Create custom cat with AI — dialog Generated cat
AI character — options Generated cat on the desktop

🚀 Quick start

Pick whichever is easiest - the cat runs on Windows, macOS and Linux.

Option A - prebuilt binary (no Python needed)

Grab the build for your OS - each button downloads the latest release:

Download for Windows
Download for macOS (Apple Silicon)
Download for macOS (Intel)
Download Linux .deb
Download Linux AppImage

Then run it:

  • Windows - double-click the .exe.
  • macOS - unzip and open mycat.app (first launch: right-click → Open to get past Gatekeeper).
  • Linux .deb - sudo apt install ./mycat-linux-amd64.deb.
  • Linux AppImage - chmod +x mycat-linux-x86_64.AppImage && ./mycat-linux-x86_64.AppImage.

Builds for every release live on the Releases page.

Option B - pip (Windows / macOS / Linux, Python ≥ 3.10)

pip install mycat
mycat

On Linux also install the Qt platform plugin once:

sudo apt install -y libxcb-cursor0

The activity diary can count key presses and clicks (never which keys) - it works out of the box on Windows, macOS and Linux/X11. Where global input access isn't available (e.g. Wayland) it degrades to recording the cursor path.

Upgrade or remove later with pip install -U mycat / pip uninstall mycat.

Option C - from source

git clone https://github.com/yumiaura/myCat
cd myCat
pip install .
mycat                 # or, without installing:  python3 mycat/main.py

✨ Features

  • Animated overlay 🐱 - a frameless, always-on-top, draggable cat. Right-click for the menu (switch char, quit).
  • Reminder 🛩️ - set a message and a time (one-shot or daily) and the cat flies a little banner plane across the top of your screen. Right-click → Reminder… to set the message, direction, plane and color.
  • Chat (Ollama) 💬 - talk to the cat through a local Ollama model, no account or API key needed (see below).
  • Create with AI 🎨 - turn 1–3 photos into a custom chibi cat character with your own OpenAI key (right-click → Chars → Create custom with AI…). Reference photos are never stored; the result is an ordinary local char you can reuse or delete.
  • Multilingual interface 🌐 — the whole UI is available in English, 한국어 (Korean), Русский (Russian) and 简体中文 (Simplified Chinese). Right-click the cat (or the tray) → under Settings… → Language to switch at any time; the choice is remembered. Translations live in plain mycat/locale/*.json files, so adding a language is just dropping in a file.

💬 Chat with the cat (Ollama)

The cat can chat using a model served locally by Ollama - everything stays on your machine, no API key required.

  1. Install Ollama and pull a model:
    ollama pull llama3.1
    
  2. Launch mycat, then right-click the cat → Ollama…
  3. Set the host/port (default localhost:11434), click Load models, pick one, hit Test, then Save and tick LLM enabled.
  4. Right-click → Chat to start talking. 🐾

🎮 Usage & options

Run mycat (or python3 mycat/main.py from source) and customise it with command-line options.

--image, -i <path> 🖼️ - use a custom ZIP archive (containing one GIF) instead of the default cat:

mycat --image ~/my-custom-cat.zip

A char ZIP must contain exactly one .gif: its first frame is the static pose, then the GIF plays once and returns to that frame. Images larger than 300×500 are scaled down automatically.

--pos <x> <y> 📍 - start at a specific screen position (otherwise the cat appears bottom-right and remembers where you last dragged it):

mycat --pos 960 540        # center of a 1920x1080 screen

--wait <seconds> ⏱️ - how long to hold the static first frame before the animation plays.

--debug 🐞 - verbose per-frame logging.

Controls

  • Left-drag the cat to move it.
  • Right-click the cat for the menu (Chars, Reminder…, Ollama…, Chat, Quit).
  • Quit from the menu or with Ctrl+C in the terminal.

The cat remembers its position and selected char between sessions in ~/.config/mycat/config.ini.

🎬 Make your own cat

A char is just an animated GIF in a .zip - from a quick doodle to a fully interactive cat with cursor-tracking eyes, blinking, sleeping and click reactions. Step-by-step guide (draw it, build the GIF, package, install & share): docs/CHARS.md.

🐳 Docker

Run the cat in a container with GUI forwarding to your host's X server.

Prerequisites: Docker, and an X server on the host (Xorg on Linux, VcXsrv on Windows, XQuartz on macOS).

# Linux
xhost +local:docker
docker compose up --build

# Windows (VcXsrv running, network clients allowed)
docker compose -f docker-compose.windows.yml up

# macOS (XQuartz running, network clients allowed)
docker compose -f docker-compose.mac.yml up

🔧 Troubleshooting

Cat appears in a black box / transparency doesn't work 🫥

  • On X11 transparency needs a compositor. mycat falls back to clipping the window to the cat's outline when none is running, so this is rare; if you still see a box, enable display compositing (XFCE: Window Manager Tweaks → Compositor) or run a compositor such as picom.

Window doesn't stay on top / doesn't show in the taskbar 📌

  • Some window managers override "always on top" - restart the desktop session or check the WM settings.

Custom char doesn't load ❌

  • The ZIP must contain exactly one valid .gif. Check the path and that the file isn't corrupted.

Position not saving 💾

  • Make sure ~/.config/mycat/ exists and is writable; the config file is ~/.config/mycat/config.ini.

Windows / launch issues 🪟

  • Need Python ≥ 3.10 (python --version) for the pip install, or just use the prebuilt .exe.
  • From the repo you can also launch with run.bat (Windows) or run.sh (Linux/macOS).
  • Verify PySide6: python -c "import PySide6; print('PySide6 OK')".

Permission errors 🔒

  • On Linux prefer a user install over sudo (pip install --user mycat).

🤝 Getting help

  • Search the GitHub Issues for similar problems.
  • Read CONTRIBUTING.md for development setup.
  • Open a new issue with your OS, desktop environment, Python version and any terminal errors.

License

MIT License

Thank you for reading to the end! 😸🐾

Buy Me a Coffee Patreon

Metadata

Release files for mycat 0.1.36

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mycat 0.1.36
File Size Uploaded Provenance Actions
mycat-0.1.36.tar.gz 4.2 MB With provenance Details for mycat-0.1.36.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mycat 0.1.36
File Interpreter ABI Platform Actions
mycat-0.1.36-py3-none-any.whl Python 3 none any Details for mycat-0.1.36-py3-none-any.whl

Total release size: 8.4 MB

Release files / mycat-0.1.36.tar.gz

Download URL mycat-0.1.36.tar.gz
Size 4.2 MB
Tags Source
SHA-256 checksum
How to use checksums
a0d6a68f4d17383b897b73fb23f5064fae96b49c09ca815371e3a1386074df1b
BLAKE2b-256 checksum
How to use checksums
bd73e3579ec0e6b368598230e5e824504d44359a271f8ab85d3bef2f1dfdd8a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / mycat-0.1.36-py3-none-any.whl

Download URL mycat-0.1.36-py3-none-any.whl
Size 4.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
5419d3885fc4801de0cf59b1efbde7768e30170c320047cf0ce9e51d8e392f25
BLAKE2b-256 checksum
How to use checksums
a958ba864f9c2f37c69fa548baf607bc866ac42f9a3a7d2abbb88a27c49142a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Security for mycat 0.1.36

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mycat-0.1.36.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.36 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page