Thanks for considering a contribution. The project is small enough that most changes can land via a single PR — no big design ceremony needed.
- For anything bigger than a one-line fix, open an issue first and describe what you want to change. Saves you from rebuilding work that doesn't fit the project's direction.
- The project deliberately stays small. New features should be optional or behind a config flag, not "grow the popup".
git clone https://github.com/BrechtKonu/cosmic-capture.git
cd cosmic-capture
./install.shEdits to files in share/ go into the source tree. After editing, re-run
./install.sh to copy them into ~/.local/share/cosmic-capture/ — that's
where the running app reads from.
To iterate faster while developing, you can symlink instead:
ln -sf "$PWD/share/screenshot.py" ~/.local/share/cosmic-capture/screenshot.py
# repeat for any file you're hacking on<your-handle>-<short-topic>
Examples: brecht-grim-fallback, kris-kde-spectacle-flags,
alex-fix-recording-hud. One topic per branch — don't bundle unrelated
changes.
If you're internal to Konu, follow the project rule (<INITIALS>-<TICKET>)
from your ~/claude-rules/CLAUDE.md. External contributors can use any
short, descriptive slug.
Keep them short and direct. Subject line under ~70 chars; body if you need to explain why.
External contributors can use plain Conventional-Commits-ish style:
fix: grim falls back to maim when wlr-screencopy missing
feat(annotate): allow custom satty initial-tool via config
docs: KDE Plasma keyboard shortcut steps
Konu-internal commits follow the [TASK]/[TICKET] - REF [TYPE] description
format from ~/claude-rules/rules/commit-conventions.md.
- Branch off
main. - Push to your fork (or to a branch in this repo if you have write access).
- Open a PR against
main. Fill in the template — what you changed and how to test it on at least one desktop. - CI is intentionally minimal. Reviewers will manually exercise the capture flow on their own desktop before merging.
- Test reports for desktops we don't own. Open a PR adding the desktop
to the support matrix in
README.mdonce it works for you. - Capture backends. Add to
share/_capture_backend.py— one function, one entry inBACKENDS, optionally a_DESKTOP_PREFERENCEmapping. - Per-distro install instructions. PRs welcome to expand
install.shand the README's per-distro sections.
- Python: stdlib + Pillow + PyGObject only. Keep the dependency footprint minimal — this should still install with one apt/dnf/pacman line.
- Bash:
set -euo pipefail, no Bashisms beyond what stock Ubuntu's bash understands. - No mass reformatting in feature PRs — keep diffs reviewable.
Use the bug template. Include:
- Distro + version (
cat /etc/os-release) - Desktop (
echo $XDG_CURRENT_DESKTOP) - Whether you're on Wayland or X11 (
echo $XDG_SESSION_TYPE) - Logs from
/tmp/cosmic-capture-*.log - Steps to reproduce.
By contributing you agree your work is licensed under the project's MIT license.