Git, the way your desktop intended.
A fast, native Git client for the KDE Plasma desktop. No Electron. No web runtime. No waiting — just a clean, keyboard-friendly window that feels like it belongs on your machine, because it does.
Think GitHub Desktop, but native, fast, and built for the KDE ecosystem.
Built on Rust + GPUI. The interface lives in crates/app and
talks directly to the backend Rust crates (git_cmd, ai_core, vcs_core,
config) — no FFI, no C++, no hidden slowdowns.
- Native speed — Compiled Rust, rendered with GPUI. The UI keeps up with your fingers, not the other way around.
- KDE-native — Wears your Plasma theme like a second skin. System fonts, system colors, zero effort.
- Zero bloat — No Electron, no web runtime, no 200 MB tax. A Git client that feels as light as git itself.
- Your data stays yours — AI commit messages can run 100% locally on your own GPU. No account, no cloud, no telemetry.
- Keyboard-friendly — Everyday Git work is a few keystrokes away.
- See what changed at a glance — Color-coded status list: modified = yellow, added = green, deleted = red, renamed = purple, untracked = gray.
- Stage by choice — Check exactly the files you want. A master Select All checkbox lives in the header bar.
- Review diffs like a pro — Clean diff view with line numbers and syntax highlighting. Images (png, jpg, webp, gif, …) render inline; videos get a tidy placeholder.
- Commit in one click — Summary plus optional description, done.
A lightning-bolt toggle skips pre-commit hooks (
--no-verify). - Give credit, automatically — Co-author detection scans the checked
files' git history and appends
Co-authored-by:trailers for you. - Push, fetch, pull — one smart button — It cycles through push, fetch, and pull based on your repository's state. No menu hunting.
- Manage remotes natively — Add, edit, rename, remove, or copy a remote's
URL straight from the toolbar. Powered by the bundled
crates/vcs_coreRust crate — nogit remotesubprocess, no dependencies. - SSH keys, done right — Generate Ed25519 or RSA-4096 keypairs (optionally
passphrase-encrypted), list or copy your public keys, delete them, and test
connections. All native — no
ssh-keygen, nosshsubprocess. - Branch and switch with ease — Create, switch, and delete branches from one dropdown.
- A history you can explore — Tabbed sidebar with a color-coded commit list. Click a commit to see its files; click a file to see its diff.
- Add a project in three ways — Clone a repository, create one with
git init, or load an existing folder. - Recent projects, always handy — Persistent history in
projects.lua, grouped by remote owner/org, with a yellow dot on repos holding uncommitted changes. - Scan a folder — Bulk-import every Git repository inside a directory.
- Keep it tidy — Remove one project or clear the whole list, with friendly confirmation dialogs.
- In the cloud — Generate a summary and description from the diffs of your checked files. OpenRouter, OpenAI, Anthropic, and Google AI Studio are all supported. Add your API key in Settings → AI.
- Or fully local — Built-in GGUF model support with one-click downloads
from HuggingFace, a GPU acceleration toggle, and complete model management.
Inference runs inside the bundled Rust crate
crates/ai_core(powered byllama-cpp-2) — your diffs never leave your machine. - Fast switching — Right-click the AI button to switch providers; the model name is configurable in Settings → AI.
The repository ships Conventional Commits and branch-creation skills so AI editors produce commit messages and branch names that match your project's rules — every time:
| Tool | Location | Skills |
|---|---|---|
| OpenCode | .opencode/skills/ |
commit, create-branch |
commitdetects Git vs Jujutsu, studies the diff and recent history, and drafts a Conventional Commits message (type(scope): subject) — committing only after you approve.create-branchnames branches with thetype/scope?/short-descriptionconvention (e.g.feat/vcs/jj-support), for both Git and Jujutsu.
- A shared palette token system (
crates/app/src/theme.rs) drives every surface, interactive state, and text tier — no hardcoded UI colors anywhere. - Built-in Dark and Light palettes, plus System Default that follows your desktop appearance.
- Custom Lua themes (
.theme.lua) pick their mode from the background color; every other shade flows from the matching token set. - The system monospace font powers the diff viewer; the file list needs no custom painting.
Drop a .theme.lua file into ~/.config/lazydesktop/themes/ and a new theme
option appears in Appearance settings:
return {
name = "Ocean Night",
colors = {
background = "#0d1117",
foreground = "#c9d1d9",
}
}Only background is required — its luminance selects the Dark or Light token
set. See themes.
A categorized settings dialog covers:
- Appearance — System Default, Dark, Light, and any custom Lua themes.
- Git — Read and write your global
user.name/user.emailviagit config --global. - SSH Keys — Generate keypairs, browse existing public keys (only public material is ever shown), copy them to the clipboard, and test connections.
- AI — Enable toggle, provider, API key, model name, system prompts, and local model downloads.
- Git bootstrapping — If Git is missing, LazyDesktop offers to install it
(
pkexec/sudoon Linux,xcode-selecton macOS,wingeton Windows). - Credential handling —
GIT_ASKPASSintegration with a credential dialog for remote authentication. - Auto-refresh — A file watcher keeps an eye on
.git/indexand.git/HEAD; changes trigger a debounced status refresh that preserves your selection and diff state. - Files menu — Open in Editor (kate), File Manager, Terminal (konsole), or View on GitHub.
- Right-click context menu — Discard changes on modified files or delete untracked files.
just setup # install the pinned toolchain via mise
just build # cargo build --workspace (Rust app + crates)
just run # run the debug binaryNo make install needed — the binary runs straight from the target
directory. Your data survives rebuilds:
- Projects:
~/.config/lazydesktop/projects.lua - Settings (API key, theme, model, system prompt):
~/.config/lazydesktop/lazydesktop.conf - Custom themes:
~/.config/lazydesktop/themes/*.theme.lua - Local AI models:
~/.config/lazydesktop/models/
See build from source for the
full guide, or browse the justfile recipes
(just setup, just build, just run, …).
Build the GPUI app plus the bundled Rust crates, then ship only the runtime — the container connects to your host's X server, or falls back to a browser-accessible VNC session:
docker compose build # build the image
# Linux host with an X server -> native window
docker compose up -d
# Any OS (macOS/Windows) or headless -> open http://localhost:6080 in a browser
VNC_MODE=1 docker compose up -dBy default the container mounts:
/tmp/.X11-unix— host X socket for the native windowlazydesktop-config(named volume) — settings, projects, themes, models./repos→/workspace— bind-mount your Git repositories, e.g.REPO_DIR=~/code/myrepo docker compose up -d
Set PUID/PGID to your host UID/GID if the mounted config is owned by
root. Shortcuts: just docker-build, just docker-up, just docker-shell,
just docker-logs. Full details in
docker.
makepkg -sisudo dpkg -i lazydesktop_*.debGrab the latest lazydesktop-*-x86_64.AppImage from the
Releases page, make it
executable, and run it.
See build from source.
- Open Settings → AI.
- Toggle Enable AI.
- Choose a provider and paste an API key, or pick a local GGUF model and let LazyDesktop download it from HuggingFace.
- Click the AI button next to the commit panel to generate a message.
See the AI documentation for details.
- Rust stable toolchain (builds the GPUI app and bundled crates)
- moon (build orchestration)
- Git
- Linux:
libgl1,libxkbcommon-x11-0(X11/GL runtime), plus standard build deps (cmake,ninja) for the bundled C-dependent crates
The full documentation lives in docs/:
| Area | Guide |
|---|---|
| Getting started | Installation · Build from source · Docker · Configuration |
| User guide | Git workflow · Branches & history · Projects · Themes |
| AI | Overview · Cloud providers · Local models · Editor skills |
| Development | Architecture · Source layout · ai_core · Build & test · Packaging |
Other resources: Roadmap · Implementation details · Contributing · FAQ · Release process
MIT — see the repository license file for details.