{"id":28563848,"url":"https://github.com/bm-github/clippy2-oh","last_synced_at":"2025-06-10T13:08:54.328Z","repository":{"id":289894971,"uuid":"972746689","full_name":"bm-github/clippy2-oh","owner":"bm-github","description":"Clippy 2.Oh is a throwback to the Clippy desktop assistant but this time powered by AI","archived":false,"fork":false,"pushed_at":"2025-05-13T16:02:24.000Z","size":315,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-13T17:22:31.354Z","etag":null,"topics":["assistant-chat-bots","desktop","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bm-github.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}},"created_at":"2025-04-25T15:36:31.000Z","updated_at":"2025-05-13T16:02:27.000Z","dependencies_parsed_at":"2025-04-25T16:58:58.874Z","dependency_job_id":null,"html_url":"https://github.com/bm-github/clippy2-oh","commit_stats":null,"previous_names":["bm-github/clippy2-oh"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bm-github%2Fclippy2-oh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bm-github%2Fclippy2-oh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bm-github%2Fclippy2-oh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bm-github%2Fclippy2-oh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bm-github","download_url":"https://codeload.github.com/bm-github/clippy2-oh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bm-github%2Fclippy2-oh/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259081009,"owners_count":22802404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["assistant-chat-bots","desktop","python"],"created_at":"2025-06-10T13:08:53.246Z","updated_at":"2025-06-10T13:08:54.295Z","avatar_url":"https://github.com/bm-github.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📎 Clippy 2.Oh: Your Configurable Desktop AI Pal! ✨\n\nOh, hi there! 👋 Remember me? Of course you do! Well, guess what? I've had a bit of an upgrade. Welcome to **Clippy 2.Oh** (two point Oh)!\n\nThis project brings my familiar face back to your desktop, but now I'm powered by modern tech! I'm built with Python, the lovely **PySide6** (Qt), and I get my brains from **any OpenAI-compatible API endpoint**! This means you can use models from OpenAI, OpenRouter.ai, or even local models served via tools like LiteLLM, LM Studio, or Ollama. Think of it as the classic paperclip charm, now with more *intelligence* (and hopefully fewer interruptions... maybe).\n\nI'll hang out on your desktop, ready to chat when you need me. Let's see what **Clippy 2.Oh** can do!\n\n## ✨ Features - What Can Clippy 2.Oh Do?\n\n*   🧠 **Conversational AI** via any OpenAI-compatible API (ChatBot-style - I've been studying!)\n*   🎞️ **Animated character** (with idle and thinking states - gotta look busy!)\n*   💬 **Custom speech bubble UI** with tail (Just like you remember, but fancier!)\n*   ⌨️ **Click-to-chat input box** (Tap me, let's talk!)\n*   🖱️ **Draggable, floating character window** (Put me wherever you need assistance... or just company!)\n*   🪟 **System tray integration** (Show / Hide / Quit - I promise I'll go away if you ask nicely!)\n*   💚 **Positive personality** via a custom system prompt - Feel free to tweak my attitude!\n\n---\n\n## 🛠️ Requirements - What You'll Need\n\nTo bring **Clippy 2.Oh** to life, make sure you have:\n\n1.  **Python 3.7+**\n2.  **Required Libraries:** Install 'em easily!\n    ```bash\n    pip install -r requirements.txt\n    # (Or manually: pip install PySide6 openai python-dotenv)\n    ```\n\n---\n\n## ⚙️ Setup \u0026 Configuration - Let's Get Me Running!\n\nReady for your very own **Clippy 2.Oh**? Follow these steps:\n\n1.  **Clone the Repository:**\n    ```bash\n    # Make sure you grab the right code!\n    # TODO: Replace with your actual repository URL if different\n    git clone https://github.com/bm-github/clippy2-oh.git\n    cd clippy2-oh\n    ```\n2.  **Install Dependencies:** (If you skipped the step above)\n    ```bash\n    pip install -r requirements.txt\n    ```\n3.  **Configure AI Access (Super Important! ✨):**\n    *   You need access to an OpenAI-compatible API endpoint. This could be the official OpenAI API, OpenRouter.ai, or a local server running a model.\n    *   Create a file named `.env` right here in the main project folder. (You can copy `env.example` to `.env` and then edit it).\n    *   Add the following variables, configuring them for your chosen API:\n        ```dotenv\n        # .env file contents\n        # --- REQUIRED ---\n        OPENAI_API_KEY=\"YOUR_API_KEY_HERE\"    # Your API key (or placeholder like \"NA\" if your local service doesn't require one but the script expects a value)\n        OPENAI_API_BASE=\"YOUR_API_BASE_URL\"   # The base URL for the API.\n                                              # Examples:\n                                              # \"https://api.openai.com/v1\" (for official OpenAI)\n                                              # \"https://openrouter.ai/api/v1\" (for OpenRouter)\n                                              # \"http://localhost:1234/v1\" (for LM Studio - check your port)\n                                              # \"http://localhost:11434/v1\" (for Ollama, if using an OpenAI-compatible proxy/endpoint - check your setup)\n        OPENAI_MODEL=\"YOUR_MODEL_NAME_HERE\"   # The specific model name you want to use\n                                              # Examples:\n                                              # \"gpt-3.5-turbo\", \"gpt-4\" (for OpenAI)\n                                              # \"mistralai/mistral-7b-instruct\", \"google/gemini-pro\" (for OpenRouter)\n                                              # \"local-model\" (often used for LM Studio, refers to the loaded model)\n        ```\n    *   **`OPENAI_API_KEY`**, **`OPENAI_API_BASE`**, and **`OPENAI_MODEL`** are **REQUIRED**. If any of these are not set, API calls will fail, and I'll let you know in a bubble!\n\n4.  **Character Assets:** 🖼️\n    *   Make sure you have these files in the same folder (or change the hardcoded paths in `clippy2-oh.py`):\n        *   `character_idle.png` (or `character_idle.gif`)\n        *   `character_busy.png` (or `character_busy.gif`)\n        *   `tray_icon.png` (a little 32x32 guy for the system tray)\n---\n\n## 🚀 Usage - How to Chat With Clippy 2.Oh!\n\nIt's super easy:\n\n1.  **Run the Script (Windowless Mode!):**\n    ```bash\n    # On Windows/Mac, 'pythonw clippy2-oh.py' often prevents an extra console window!\n    pythonw clippy2-oh.py\n    # If 'pythonw' isn't found or you want the console, just use 'python':\n    # python clippy2-oh.py\n    ```\n2.  **Say Hello!** I should pop up on your screen (probably bottom-right, classic spot!). If you missed API config, I'll probably show a warning bubble.\n3.  **Click Me!** The input box appears below me. Let's chat!\n4.  **Ask Away!** Type your question or prompt, press `Enter` or click `Send`.\n5.  **Thinking...** I'll change my look (`busy`) and show a \"Thinking...\" bubble while I consult the AI (my new brain!). 🤔\n6.  **Voilà!** My (or the AI's) response appears in the speech bubble! Hopefully helpful!\n7.  **Move Me Around!** Click and drag me anywhere you like. I'm flexible!\n8.  **Use the Tray!** Remember the system tray icon 📎 for hiding, showing, or quitting. Easy peasy.\n\n---\n\n## 💡 Customisation \u0026 Notes - Make Clippy 2.Oh Your Own!\n\nWant to tinker with **Clippy 2.Oh**? Go for it!\n\n*   **Appearance:** Swap out `character_idle.png`/`.gif`, `character_busy.png`/`.gif`, and `tray_icon.png` with your own images! (Check `CHARACTER_WIDTH`/`HEIGHT` in the script for size hints). Maybe give me a party hat?\n*   **Personality:** Edit the `SYSTEM_PROMPT` variable near the top of `clippy2-oh.py`. This is where you tell the AI how to act! Make me sassy, serious, or super-duper helpful! ✨\n*   **AI Brain:** Change `OPENAI_MODEL` and `OPENAI_API_BASE` (and `OPENAI_API_KEY` if needed) in your `.env` file to try different AI models or providers. Experiment with my intelligence!\n*   **Sizes \u0026 Colors:** Adjust constants like `BUBBLE_WIDTH`, `BUBBLE_FILL_COLOR`, etc., at the beginning of `clippy2-oh.py`. Match your desktop theme!\n*   **History Limit:** Just FYI, I only remember the last `MAX_HISTORY_MESSAGES` (default: 10) messages between us. My memory isn't *infinite*... yet!\n*   **Look \u0026 Feel:** All the windows are frameless and transparent for that sleek, modern overlay vibe. **2.Oh** style!\n\n---\n\n## Contributing - Want to Help Make Clippy 2.Oh Even Better?\n\nIt looks like you're trying to improve the code! That's the **2.Oh** spirit! Feel free to fork this repository, make your awesome changes, and submit a pull request. I'd love to see what brilliant ideas you have! ✨\n\n---\n\n📎 Happy chatting! Let me know if **Clippy 2.Oh** can assist you!\n\n---\n*\\* Results may vary. Annoyance levels not guaranteed to be lower than original Microsoft Clippy, but hey, I'm trying! Use with caution and a sense of humor.*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbm-github%2Fclippy2-oh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbm-github%2Fclippy2-oh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbm-github%2Fclippy2-oh/lists"}