{"id":51282540,"url":"https://github.com/anjiemo/idedesktoppetsprite","last_synced_at":"2026-06-30T03:01:10.064Z","repository":{"id":367481155,"uuid":"1280995514","full_name":"anjiemo/IdeDesktopPetSprite","owner":"anjiemo","description":"IntelliJ / Android Studio 插件：随 IDE 状态（同步 / 索引 / 构建 / 运行）变化的桌面悬浮宠物。IDE Desktop Pet Sprite.","archived":false,"fork":false,"pushed_at":"2026-06-26T07:38:23.000Z","size":465,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-26T08:09:00.437Z","etag":null,"topics":["android-studio","build-status","desktop-companion","desktop-pet","intellij-idea","intellij-plugin","jetbrains-plugin"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anjiemo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-26T06:08:02.000Z","updated_at":"2026-06-26T07:38:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/anjiemo/IdeDesktopPetSprite","commit_stats":null,"previous_names":["anjiemo/idedesktoppetsprite"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/anjiemo/IdeDesktopPetSprite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anjiemo%2FIdeDesktopPetSprite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anjiemo%2FIdeDesktopPetSprite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anjiemo%2FIdeDesktopPetSprite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anjiemo%2FIdeDesktopPetSprite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anjiemo","download_url":"https://codeload.github.com/anjiemo/IdeDesktopPetSprite/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anjiemo%2FIdeDesktopPetSprite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34950334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-studio","build-status","desktop-companion","desktop-pet","intellij-idea","intellij-plugin","jetbrains-plugin"],"created_at":"2026-06-30T03:01:09.008Z","updated_at":"2026-06-30T03:01:10.050Z","avatar_url":"https://github.com/anjiemo.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/logo.png\" width=\"120\" alt=\"IDE Desktop Pet Sprite logo\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eIDE Desktop Pet Sprite\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA desktop floating pet that reacts to your IDE's state\u003c/strong\u003e\u003cbr\u003e\n  Gradle sync / indexing / build·compile / run·debug — each state has its own animation and expression\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"docs/README.zh-CN.md\"\u003e中文\u003c/a\u003e · \u003cstrong\u003eEnglish\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/anjiemo/IdeDesktopPetSprite/releases/latest\"\u003e\u003cimg alt=\"release\" src=\"https://img.shields.io/github/v/release/anjiemo/IdeDesktopPetSprite?style=flat-square\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"license\" src=\"https://img.shields.io/github/license/anjiemo/IdeDesktopPetSprite?style=flat-square\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/anjiemo/IdeDesktopPetSprite/releases\"\u003e\u003cimg alt=\"downloads\" src=\"https://img.shields.io/github/downloads/anjiemo/IdeDesktopPetSprite/total?style=flat-square\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/anjiemo/IdeDesktopPetSprite/stargazers\"\u003e\u003cimg alt=\"stars\" src=\"https://img.shields.io/github/stars/anjiemo/IdeDesktopPetSprite?style=flat-square\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nAn Android Studio / IntelliJ plugin: across **Gradle sync, build/compile, run/debug** and other states, it shows a desktop floating pet that changes with the state and gives an expression on success / failure. The sprite is replaceable (a built-in original slime \"Gel\" by default).\n\n## State mapping\n\n| IDE event | Listener | Pet state | Sprite row |\n|---|---|---|---|\n| Gradle sync | `ExternalSystemTaskNotificationListener` (RESOLVE_PROJECT) | Thinking | row 4 |\n| Indexing | `DumbService.DUMB_MODE` (enter / exit dumb mode) | Looking around | row 1 |\n| Build / compile | `ProjectTaskListener` + Gradle EXECUTE_TASK | Running | row 2 |\n| Run / debug | `ExecutionListener` | Running (faster) | row 2 |\n| Success | the end callbacks above | Jumping (back to idle after 2.6s) | row 5 |\n| Failure / error | the end callbacks above | Dejected (back to idle after 2.6s) | row 3 |\n| Idle | —— | Idle | row 0 |\n\n\u003e When multiple activities overlap, the highest priority is shown: **run \u003e build \u003e sync \u003e index \u003e idle**.\n\u003e Indexing is frequent, so it does not pop a \"Done\" on finish — it silently returns to the current state.\n\n## Interaction\n\n- Drag with the left mouse button; position is remembered automatically (multi-monitor safe, snaps back to a corner if off-screen).\n- Right-click menu: reset position / resize (S · M · L) / **switch character · restore default character** / temporarily hide (restored on reopening the project) / permanently close (re-enable in Settings).\n- Always-on-top, transparent background, never steals editor focus.\n\n## Build \u0026 install\n\n\u003e Requires JDK 17 locally. If `JAVA_HOME` doesn't point to 17, set it first; the wrapper is pinned to Gradle 8.14.5.\n\n```bash\n# Package the plugin zip (output at build/distributions/IdeDesktopPetSprite-1.0.3.zip)\n./gradlew buildPlugin\n```\n\n```bash\n# Debug-run in a sandbox IDE (pulls IntelliJ IDEA Community as the runtime by default)\n./gradlew runIde\n```\n\nInstall into your Android Studio:\n**Settings → Plugins → ⚙ → Install Plugin from Disk… → choose `build/distributions/IdeDesktopPetSprite-1.0.3.zip`**, then restart.\nOpen any project and the pet appears at the bottom-right of the desktop.\n\n### Want to use your local IDE (e.g. Android Studio) as the debug sandbox?\n\nKeep the compile SDK as `intellijIdeaCommunity(\"2024.2.5\")` (using a newer local AS as the compile SDK fails to build due to a Kotlin version inversion).\nUse the preconfigured `runLocalIde` task instead — it still compiles against the released SDK but launches the local IDE pointed to by `localPath`:\n\n```bash\n./gradlew runLocalIde\n```\n\nTo use a different IDE, change `localPath` of `runLocalIde` in `build.gradle.kts`:\n\n```kotlin\nintellijPlatformTesting {\n    runIde {\n        register(\"runLocalIde\") {\n            localPath.set(file(\"D:\\\\ProgramFiles\\\\Android\\\\StudioApps\\\\Android Studio 4\"))\n        }\n    }\n}\n```\n\n## Characters\n\nYou can switch the pet's character at runtime — no rebuild needed:\n\n- **Built-in** — the original jelly slime \"Gel\".\n- **Local upload** — pick a PNG / WebP / GIF sprite sheet from disk (it is copied into the IDE cache so moving the original won't break it).\n- **Online catalog (Petdex)** — browse and download community characters from [petdex.dev](https://petdex.dev) in a **thumbnail grid** that loads lazily as you scroll (no per-item clicking), with search and kind filtering.\n\nOpen the picker from the pet's **right-click menu → Switch character…**, from\n**Settings → Tools → Desktop Pet Sprite（桌面宠物）**, **Tools → Desktop Pet Sprite 设置…**, or double-Shift search **「桌宠」** / **Desktop Pet** — set the **default character** and **per-project character** there.\n\nSprite sheets follow the grid convention **192×208 per frame**; columns / rows are auto-detected from the image size (the built-in sheet is 8 cols × 9 rows). Row semantics: 0=idle, 1=look, 2=run, 3=fail, 4=think, 5=jump. WebP is decoded directly (no manual conversion needed).\n\nTo change the bundled default sprite, replace `src/main/resources/pets/gel-slime.png` with a sheet of the same spec.\n\n## Author\n\nanjiemo · \u003c2695734816@qq.com\u003e · https://github.com/anjiemo/\n\n## Asset sources\n\nThe default sprite (`pets/gel-slime.png`) is the original jelly slime \"Gel\" by anjiemo, copyright anjiemo, provided with the project under Apache-2.0 — free to use, modify and redistribute.\nThe project icon / logo (`docs/assets/logo.png`) is an original work by anjiemo, **copyright anjiemo, all rights reserved**; it is the project's identity mark and is **not covered by the Apache-2.0 reuse grant** (cf. Apache-2.0 §6 Trademarks). Do not use it for other projects, products, or commercial purposes without written permission.\n\nYou may also replace it with your own sprite sheet of the same spec; for third-party assets, licensing is determined by their respective sources.\n\nCharacters downloaded from the **Petdex** online catalog are **not bundled** with this plugin — they are fetched at runtime from [petdex.dev](https://petdex.dev) (catalog source: [crafter-station/petdex](https://github.com/crafter-station/petdex)) and remain the property of their respective authors, under the licenses provided by Petdex / those authors. This plugin only downloads assets from the official `assets.petdex.dev` host over HTTPS.\n\n## Third-party dependencies\n\n- [TwelveMonkeys ImageIO](https://github.com/haraldk/TwelveMonkeys) (`imageio-webp`, `imageio-core`) — WebP decoding, licensed under [Apache-2.0](https://github.com/haraldk/TwelveMonkeys/blob/master/LICENSE.txt). Bundled with the plugin.\n\n## License\n\nCopyright © 2026 **anjiemo** (\u003chttps://github.com/anjiemo\u003e).\n\nThe project's code and built-in default sprite are **copyright anjiemo**, open-sourced under [Apache License 2.0](LICENSE) (the project icon / logo is excluded — see Asset sources):\nyou may freely use, modify and redistribute them provided the copyright and license notices (see `LICENSE` and `NOTICE`) are retained.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanjiemo%2Fidedesktoppetsprite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanjiemo%2Fidedesktoppetsprite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanjiemo%2Fidedesktoppetsprite/lists"}