Thank you for your interest in contributing to GhostKeys! This document provides guidelines and information for contributors.
Please be respectful and constructive in all interactions. We welcome contributors of all experience levels.
We follow the Conventional Commits specification. Please prefix your commits with the appropriate type:
| Prefix | Description |
|---|---|
feat: |
New features |
fix: |
Bug fixes |
docs: |
Documentation only |
style: |
Formatting, missing semicolons, etc. |
refactor: |
Code restructuring without changing behavior |
test: |
Adding or updating tests |
chore: |
Updating build tasks, package manager configs, etc. |
perf: |
Performance improvements |
# Good commit messages
git commit -m "feat: add ABNT2 to US layout key mapping for Portuguese accents"
git commit -m "fix: resolve incorrect accent mapping for tilde key"
git commit -m "docs: update README with installation instructions"
# Bad commit messages (too vague)
git commit -m "fix: update code"
git commit -m "feat: add hashmap"Open the project in VS Code or Kiro with the Dev Containers extension. All dependencies are pre-installed automatically.
- Install Rust (stable toolchain)
- Clone the repository
- Install system dependencies:
Linux/WSL:
sudo apt-get update && sudo apt-get install -y \
libx11-dev libxcb1-dev libxkbcommon-dev pkg-config \
libxi-dev libxtst-dev libxrandr-dev libxcursor-dev \
libgtk-3-dev clang lld libxdo-dev libayatana-appindicator3-devWindows: No additional system dependencies needed.
- Install development tools:
cargo install just cargo-xwin git-cliff- Build and test:
just build # or: cargo build
just test # or: cargo testWe use just for common tasks (like npm scripts):
just # List all commands
just build # Build debug
just build-windows # Cross-compile to Windows
just test # Run tests
just lint # Run clippy
just fmt # Format code
just ci # Run all CI checks- Fork the repository
- Create a feature branch (
git checkout -b feat/amazing-feature) - Make your changes following the coding standards
- Write or update tests as needed
- Commit using Conventional Commits format
- Push to your fork
- Open a Pull Request
- Follow Rust idioms and best practices
- Use
cargo fmtbefore committing - Ensure
cargo clippypasses without warnings - Add documentation comments for public APIs
- Keep functions small and focused
This project handles keyboard input. Please:
- Never log or transmit keystrokes
- Use only trusted, well-maintained dependencies
- Report security issues privately
Open an issue for any questions or concerns!