{"id":47630568,"url":"https://github.com/ponack/linux-claude-desktop","last_synced_at":"2026-05-15T12:01:27.158Z","repository":{"id":346057197,"uuid":"1188350927","full_name":"ponack/linux-claude-desktop","owner":"ponack","description":"A lightweight, native Claude AI desktop client for Linux built with Tauri v2 and Svelte 5","archived":false,"fork":false,"pushed_at":"2026-03-27T02:43:01.000Z","size":7898,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T05:29:50.691Z","etag":null,"topics":["ai","anthropic","chatbot","claude","claude-ai","desktop-app","linux","llm","native-app","rust","svelte","tauri"],"latest_commit_sha":null,"homepage":"","language":"Svelte","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/ponack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-22T00:29:10.000Z","updated_at":"2026-03-26T23:11:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ponack/linux-claude-desktop","commit_stats":null,"previous_names":["ponack/ubuntu-claude-desktop","ponack/linux-claude-desktop"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/ponack/linux-claude-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponack%2Flinux-claude-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponack%2Flinux-claude-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponack%2Flinux-claude-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponack%2Flinux-claude-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ponack","download_url":"https://codeload.github.com/ponack/linux-claude-desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponack%2Flinux-claude-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292886,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ai","anthropic","chatbot","claude","claude-ai","desktop-app","linux","llm","native-app","rust","svelte","tauri"],"created_at":"2026-04-01T23:23:12.854Z","updated_at":"2026-05-15T12:01:27.147Z","avatar_url":"https://github.com/ponack.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.svg\" alt=\"Linux Claude Desktop\" width=\"180\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eLinux Claude Desktop\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A lightweight, native Claude AI desktop client for Ubuntu/Linux built with Tauri v2 and Svelte 5.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ponack/linux-claude-desktop/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/ponack/linux-claude-desktop?label=latest\u0026logo=github\" alt=\"Latest Release\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ponack/linux-claude-desktop/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/downloads/ponack/linux-claude-desktop/total?logo=github\" alt=\"Downloads\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ponack/linux-claude-desktop/actions/workflows/build.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/ponack/linux-claude-desktop/build.yml?logo=github\u0026label=build\" alt=\"Build Status\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-Linux-blue?logo=linux\" alt=\"Platform\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/built_with-Tauri_v2-orange?logo=tauri\" alt=\"Tauri\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/frontend-Svelte_5-red?logo=svelte\" alt=\"Svelte\" /\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/ponack/linux-claude-desktop\" alt=\"License\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"gifs/v0.9.1-01-chat-stream.gif\" alt=\"Linux Claude Desktop — chat\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eStreaming chat with syntax highlighting, markdown rendering, and artifacts\u003c/em\u003e\u003c/p\u003e\n\n---\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/v0.9.1-01-chat.png\" alt=\"Chat view\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eStreaming chat with markdown rendering, syntax highlighting, and conversation sidebar\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/v0.9.1-02-settings-general.png\" alt=\"Settings — General\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eSettings — provider, model, system prompt, MCP servers, and more\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/v0.9.1-03-settings-appearance.png\" alt=\"Settings — Appearance\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eAppearance — themes, custom CSS, and display options\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/v0.9.1-04-settings-accessibility.png\" alt=\"Settings — Accessibility\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eAccessibility — font size, high contrast, reduce motion, TTS and STT\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/v0.9.1-05-comparison.png\" alt=\"Model comparison\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eSide-by-side model comparison with response grading\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/v0.9.1-06-computer-use.png\" alt=\"Computer Use\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eComputer Use — Claude controls your desktop with live screenshot feedback\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/v0.9.1-07-extensions.png\" alt=\"Desktop Extensions\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eDesktop Extensions — one-click install for popular MCP servers\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/v0.9.1-09-command-palette.png\" alt=\"Command palette\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eCommand palette (Ctrl+P) — jump to any conversation, view, or action\u003c/em\u003e\u003c/p\u003e\n\n---\n\n## In Action\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"gifs/v0.9.1-02-theme-switch.gif\" alt=\"Theme switching\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eTheme switching — Appearance settings with live preview\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"gifs/v0.9.1-03-command-palette.gif\" alt=\"Command palette\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eCommand palette (Ctrl+P) — fuzzy search across all commands and conversations\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"gifs/v0.9.1-04-comparison.gif\" alt=\"Model comparison\" width=\"700\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eSide-by-side model comparison\u003c/em\u003e\u003c/p\u003e\n\n---\n\n## Why?\n\nAnthropic's official Claude Desktop app is available for macOS and Windows, but not Linux. Linux Claude Desktop fills that gap with a native, lightweight alternative that uses the Anthropic API directly.\n\n- **~10MB** binary (vs ~150-500MB for Electron-based alternatives)\n- **Native WebKitGTK** rendering (no bundled Chromium)\n- **Low memory footprint** (~30-40MB idle vs ~200-300MB for Electron apps)\n- **Multi-provider** — Anthropic, OpenAI, Ollama (local models), custom endpoints\n- **Your API key, your data** — everything stays local on your machine\n\n## How Does It Compare?\n\n| | LCD | Claude Desktop (Official) | claude-desktop-debian | Chatbox AI | Jan |\n|---|---|---|---|---|---|\n| **Technology** | Tauri v2 + Rust | Electron | Electron (repackaged) | Electron | Electron |\n| **Binary size** | ~10 MB | ~200 MB | ~200 MB | ~100 MB | ~500 MB |\n| **RAM (idle)** | ~30-40 MB | ~200+ MB | ~200+ MB | ~150+ MB | ~300+ MB |\n| **Linux native** | Yes | No | Unofficial port | Yes | Yes |\n| **Multi-provider** | Anthropic, OpenAI, Ollama, Custom | Claude only | Claude only | Multi | Multi |\n| **MCP support** | Yes | Yes | Yes | No | Yes |\n| **Artifacts** | Yes (6 renderers) | Yes | Yes | No | No |\n| **Computer use** | Yes (xdotool + scrot) | macOS only | No | No | No |\n| **Desktop Extensions** | Yes (12 MCP servers) | Yes | No | No | No |\n| **Embedded terminal** | Yes (PTY shell) | No | No | No | No |\n| **Code execution** | Yes (Python/JS/Bash/Ruby) | No | No | No | No |\n| **Git panel** | Yes (status/diff/commit) | No | No | No | No |\n| **Open source** | MIT | No | Scripts only | GPLv3 | Apache 2.0 |\n| **Offline mode** | Yes (queue + retry) | No | No | No | Yes (local models) |\n| **Custom themes** | Yes (CSS + presets) | No | No | No | No |\n| **Voice TTS/STT** | Yes (spd-say + whisper) | macOS only | No | No | No |\n| **Accessibility** | Full (WCAG, high contrast) | Partial | Partial | No | No |\n| **Desktop integration** | Global hotkey, tray, DBus, URI handler | Tray | Tray | Tray | Tray |\n\n**LCD is purpose-built for Linux** — not an Electron wrapper or a repackaged Windows app. It uses your system's WebKitGTK for rendering, keeping the binary small and memory usage low.\n\n## Features\n\n- Streaming chat responses in real-time\n- Conversation management (create, rename, delete, fork)\n- Persistent conversation history (SQLite)\n- Multi-provider: Anthropic (Claude), OpenAI-compatible APIs, Ollama (local models), custom endpoints\n- Model selection per provider; side-by-side model comparison with response grading\n- Cost estimation per conversation with per-model pricing\n- Markdown rendering with syntax-highlighted code blocks (copy button, artifact preview)\n- AI-generated conversation titles\n- Search/filter conversations\n- Custom system prompts; prompt library with variable placeholders\n- Custom slash commands (run shell scripts from chat)\n- Image upload with Claude Vision API; drag-and-drop and clipboard paste\n- Screenshot-to-Claude (capture screen region and attach to message)\n- Edit messages and regenerate responses\n- Light and dark theme; custom CSS with presets (Nord, Solarized, Monokai, Dracula)\n- System tray integration (minimize to tray)\n- LaTeX/math rendering (KaTeX)\n- Keyboard shortcuts (Ctrl+N, Ctrl+K, Ctrl+,, Ctrl+L, Ctrl+P, and more)\n- Global hotkey (Super+Shift+C) and quick-ask overlay (Super+Shift+Q)\n- Stop generation mid-stream\n- Local API key storage\n- Artifacts panel (6 renderers: HTML, SVG, React, Mermaid, Markdown, Code) with live editing, versioning, and export\n- MCP (Model Context Protocol) tool use\n- Project folders with persistent context and per-project settings\n- Knowledge base (manual, URL import, file watcher)\n- Conversation memory (persistent facts injected into system prompt)\n- Export conversations (Markdown/JSON)\n- Offline mode (queue messages, auto-retry on reconnect)\n- Agent mode (multi-step autonomous task execution)\n- Scheduled/recurring prompts\n- Auto-update notifications with in-app download and install\n- Accessibility: keyboard navigation, high contrast theme, adjustable font size, reduce motion\n- Text-to-speech output (`spd-say`/`espeak-ng`) and speech-to-text input (`arecord` + `whisper.cpp`)\n- Embedded terminal (`Ctrl+Shift+T`) — real PTY shell (bash/zsh) with \"Send to Claude\" selection\n- Inline code execution — run Python/JS/Bash/Ruby snippets from chat code blocks with output panel\n- Git panel (`Ctrl+Shift+G`) — staged/unstaged files, diff viewer, commit/push/pull, \"Ask Claude\" to send diff to chat\n- Plugin system — JS/TS plugins add slash commands, persistent storage, toast notifications, event hooks (`message:before-send`, `response:complete`, etc.), and custom artifact renderers; see [docs/PLUGINS.md](docs/PLUGINS.md)\n\n## Quick Start\n\n1. [Install](#install-pre-built) the app for your distro\n2. Launch **Linux Claude Desktop** from your application menu\n3. Open **Settings** and choose your provider (Anthropic, OpenAI, or Ollama)\n4. Enter your API key (or set Ollama URL for local models)\n5. Start chatting\n\n## Install (Pre-built)\n\nDownload the latest packages from [Releases](https://github.com/ponack/linux-claude-desktop/releases).\n\n### Ubuntu / Debian\n\n```bash\nsudo dpkg -i Linux.Claude.Desktop_*.deb\n```\n\n### Fedora / RHEL / openSUSE\n\n```bash\nsudo rpm -i Linux.Claude.Desktop-*.rpm\n```\n\n### Arch Linux (from source)\n\n```bash\n# Install dependencies\nsudo pacman -S webkit2gtk-4.1 gtk3 libayatana-appindicator openssl\n\n# Clone and build\ngit clone https://github.com/ponack/linux-claude-desktop.git\ncd linux-claude-desktop\nnpm install\nnpm run tauri build\n\n# Install the generated .deb or run the binary directly\n./src-tauri/target/release/linux-claude-desktop\n```\n\n\u003e **Want an AUR package or Flatpak?** Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md).\n\n### Verify Installation\n\nAfter installing, launch from your application menu or run:\n\n```bash\nlinux-claude-desktop\n```\n\n## Building from Source\n\n### Prerequisites\n\n- **Node.js** \u003e= 22 (Vite 8 requires `^20.19.0 || \u003e=22.12.0`; recommend 22 LTS)\n- **Rust** (install via [rustup](https://rustup.rs/))\n- **System libraries** (see distro-specific commands above, or for Ubuntu/Debian):\n\n```bash\nsudo apt install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev libssl-dev\n```\n\n### Build\n\n```bash\nnpm install\nnpm run tauri build\n```\n\nThis generates `.deb` and `.rpm` packages in `src-tauri/target/release/bundle/`.\n\n## Project Structure\n\n```\nlinux-claude-desktop/\n├── src/                          # Svelte 5 frontend\n│   ├── App.svelte                # Layout: sidebar + main area\n│   ├── lib/\n│   │   ├── Sidebar.svelte        # Conversation list\n│   │   ├── Chat.svelte           # Message list + input + streaming\n│   │   ├── MessageBubble.svelte  # Markdown rendering per message\n│   │   ├── ArtifactPreview.svelte # Sandboxed HTML/SVG preview\n│   │   └── Settings.svelte       # Provider, model, themes, plugins config\n│   └── styles/global.css         # Light/dark theme CSS variables\n├── src-tauri/                    # Rust backend (Tauri v2)\n│   └── src/\n│       ├── lib.rs                # App state + command registration\n│       ├── api.rs                # Multi-provider API streaming (SSE)\n│       ├── providers.rs          # Provider types + Ollama model discovery\n│       ├── mcp.rs                # Model Context Protocol client\n│       └── db.rs                 # SQLite: conversations, messages, settings\n└── assets/                       # Logo and branding\n```\n\n## Roadmap\n\n### Phase 1 — Polish ✅\n- [x] Copy button on code blocks\n- [x] Syntax highlighting for code\n- [x] AI-generated conversation titles\n- [x] Search conversations\n- [x] Custom system prompts\n- [x] Keyboard shortcuts\n\n### Phase 2 — Feature Parity ✅\n- [x] File and image upload (vision API)\n- [x] Edit and regenerate messages\n- [x] Light/dark theme toggle\n- [x] System tray integration\n- [x] LaTeX/math rendering\n\n### Phase 3 — Power Features ✅\n- [x] Artifacts (sandboxed HTML/SVG preview)\n- [x] MCP (Model Context Protocol) support\n- [x] Project folders with persistent context\n- [x] Export conversations (Markdown/JSON)\n- [x] Auto-update mechanism\n\n### Phase 4 — Beyond Official ✅\n- [x] Local model support (Ollama)\n- [x] Multi-provider support (OpenAI, any OpenAI-compatible API)\n- [x] Custom commands / plugin system (slash commands run shell scripts)\n- [x] Custom CSS themes with presets (Nord, Solarized, Monokai, Dracula)\n- [x] Prompt library/templates\n\n### Phase 4.5 — Polish Pass ✅\n- [x] Accessibility (aria-labels, aria-live regions, focus management)\n- [x] Active model indicator in chat header\n- [x] Settings validation (API keys, URLs)\n- [x] Error handling improvements (retry failed sends, surface command errors)\n- [x] Preserve partial content on streaming errors\n- [x] Professional auto-update system (configurable intervals, download progress, pkexec install, restart)\n- [x] About section (version, OS distro, architecture, repo link)\n\n### Phase 5 — Desktop Integration ✅\n- [x] Global hotkey to summon app (Super+Shift+C)\n- [x] Screenshot-to-Claude (capture region, send via vision API)\n- [x] Drag-and-drop file attachments\n- [x] Clipboard-aware paste (images)\n- [x] Desktop notifications for completed responses\n- [x] URI protocol handler (claude://ask?q=...)\n- [x] Quick-ask floating overlay window (Super+Shift+Q)\n- [x] DBus interface for scripting/automation\n\n### Phase 6 — Workflows \u0026 Productivity ✅\n- [x] Conversation branching (fork at any message)\n- [x] Prompt library/templates with variable placeholders\n- [x] Command palette (Ctrl+P)\n- [x] Agent mode (multi-step autonomous task execution)\n- [x] Scheduled/recurring prompts\n- [x] Workspace profiles (per-project API keys, models, prompts)\n- [x] Conversation analytics and token usage tracking\n- [x] Multi-window support\n\n### Phase 7 — Scale \u0026 Reliability ✅\n- [x] Conversation pagination / virtual scroll\n- [x] Database backup and restore\n- [x] Performance profiling and optimization\n- [x] Offline mode (queue messages when disconnected)\n\n### Phase 8 — Co-Work (Artifacts) ✅\n- [x] Persistent artifacts panel (side panel alongside chat)\n- [x] Artifact types (Code, Markdown, Mermaid diagrams, HTML/SVG, React components)\n- [x] Live editing with syntax highlighting (CodeMirror 6)\n- [x] Iterate with Claude (send artifact state back for modification)\n- [x] Multiple artifacts per conversation (tab-based management)\n- [x] Artifact versioning (diff between versions, revert)\n- [x] Artifact persistence (save to DB, restore on reopen)\n- [x] Export artifacts (save to file, clipboard, open in external editor)\n- [x] Code splitting (CodeMirror, KaTeX, highlight.js, Mermaid in separate lazy chunks)\n\n### Phase 8.5 — Housekeeping ✅\n- [x] Reduce highlight.js bundle (import only common languages — 65% main bundle reduction)\n- [x] Lazy-load Mermaid renderer only when mermaid artifacts are opened (already done in Phase 8)\n- [x] Add artifact search/filter in the panel\n- [x] Keyboard shortcuts for artifact panel (Ctrl+E edit, Ctrl+S save, Ctrl+F search, Alt+1/2/3 tabs)\n- [x] Artifact templates (HTML, React, Python, Mermaid, Markdown, SVG)\n\n### Phase 9 — Knowledge \u0026 Context ✅\n- [x] Context window visualization (progress bar with model-aware token limits)\n- [x] Conversation memory (persistent key-value facts injected into system prompt)\n- [x] Web page import (fetch URL, strip HTML, store as knowledge)\n- [x] Local knowledge base (manual, URL, or file import; project-scoped; enable/disable)\n- [x] File watcher (auto-update knowledge entries when watched files change)\n\n### Phase 10 — Multi-Model \u0026 Comparison ✅\n\n- [x] Side-by-side model comparison (same prompt to multiple models)\n- [x] Model routing rules (auto-select model based on task type)\n- [x] Response grading/ranking (rate responses to track model quality)\n- [x] Custom model endpoints (add arbitrary OpenAI-compatible providers)\n- [x] Cost estimation per conversation (based on model pricing)\n\n### Phase 11 — Voice \u0026 Accessibility ✅\n\n- [x] Screen reader support (ARIA landmarks, live regions, `aria-modal`, skip-link)\n- [x] Keyboard-only navigation (`:focus-visible` ring, full focus audit)\n- [x] High contrast theme (`[data-theme=\"high-contrast\"]`) + auto `prefers-contrast`\n- [x] Adjustable font size (11–20px slider, persisted)\n- [x] Reduce motion toggle + auto `prefers-reduced-motion`\n- [x] Text-to-speech output (`spd-say` / `espeak-ng`, rate control, per-message button)\n- [x] Speech-to-text input (`arecord` + `whisper.cpp`, mic button in toolbar)\n\n### Phase 12 — Computer Use \u0026 Desktop Extensions ✅\n\n- [x] Computer Use — Claude controls the Linux desktop (click, type, scroll, drag) via xdotool + scrot\n- [x] Agentic loop with live screenshot feedback and streaming action log (up to 30 iterations)\n- [x] Computer Use model selector (Opus/Sonnet/Haiku) with availability check\n- [x] Desktop Extensions catalog — 12 curated MCP servers with one-click install (no JSON editing)\n- [x] Extensions install dialog — guided API key / path collection per server\n- [x] Installed/Remove badges, Node.js availability check, toast feedback\n- [x] `Ctrl+Shift+U` (Computer Use) and `Ctrl+Shift+E` (Extensions) shortcuts\n\n### Phase 13 — Terminal \u0026 Developer Tools ✅\n\n- [x] Embedded terminal panel (`Ctrl+Shift+T`) — full PTY shell (bash/zsh) powered by portable-pty and xterm.js, with \"Send to Claude\" selection\n- [x] Code execution sandbox — run Python/JS/Bash/Ruby snippets inline from chat code blocks, with stdout/stderr/timeout output panel\n- [x] Git integration (`Ctrl+Shift+G`) — staged/unstaged file list, per-file diff viewer, stage/unstage, commit, push/pull, recent repo picker, \"Ask Claude\" to send diff to chat\n\n### Phase 14 — Plugin System ✅\n\n- [x] JavaScript ES module plugins loaded from `~/.local/share/linux-claude-desktop/plugins/\u003cid\u003e/` — see [docs/PLUGINS.md](docs/PLUGINS.md)\n- [x] Settings → Plugins UI: enable/disable, per-plugin console + error display, \"Open Plugins Folder\" + \"Reload\" buttons\n- [x] Permission-gated `lcd` API: `registerCommand`, `storage` (per-plugin namespaced KV), `notify` (toast), `invoke` (read-only Tauri whitelist), `log`, event bus\n- [x] Core event hooks: `message:before-send` (mutable — can rewrite or cancel), `response:chunk`, `response:complete`, `conversation:create`/`delete`, `artifact:create`/`update`\n- [x] Custom artifact renderers via `lcd.registerArtifactType` (match by typeName, language, or title extension)\n- [ ] Plugin marketplace / registry (future)\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|-----------|\n| Framework | [Tauri v2](https://v2.tauri.app/) |\n| Frontend | [Svelte 5](https://svelte.dev/) |\n| Backend | Rust |\n| Database | SQLite (via rusqlite) |\n| API | [Anthropic](https://docs.anthropic.com/en/api/messages), [OpenAI](https://platform.openai.com/docs/api-reference), [Ollama](https://ollama.com/) |\n| Build | Vite |\n\n## Contributing\n\nContributions are welcome! Feel free to open issues or submit pull requests.\n\n## License\n\nMIT\n\n## Disclaimer\n\nThis is an unofficial, community-built client. It is not affiliated with or endorsed by Anthropic. \"Claude\" is a trademark of Anthropic.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fponack%2Flinux-claude-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fponack%2Flinux-claude-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fponack%2Flinux-claude-desktop/lists"}