* feat: enhance capabilities and permissions for autostart and global shortcuts * feat: implement desktop environment detection and global shortcut registration * feat: add permission checker module for uinput access verification and configuration * feat: add autostart and global shortcut plugins; integrate permission checker functions * feat: add LXQt and LXDE support for global shortcuts * feat: add permission_checker and shortcut_setup modules to the library * feat: implement SetupWizard for first-run setup and autostart configuration * feat: overhaul install script for improved distribution detection and installation methods * feat: add autostart and global shortcut plugins to dependencies * feat: enhance Makefile with improved installation and cleanup processes * feat: enhance release workflow with version syncing and installation instructions * docs: update contributing guidelines to include required dependencies * docs: update README with Rust version, installation instructions, and new features * feat: improve installation process for uinput module and udev rules * feat: add support for AlmaLinux and improve WebKitGTK compatibility handling * feat: enhance post-removal script to handle multiple module configuration filenames * feat: add XDG_SESSION_CLASS to environment variables in wrapper script * fix: improve error handling for MATE keybinding slots * chore: remove xml formatting * feat: ensure input group exists and add user only on live system during installation * feat: add architecture detection for DEB and RPM packages * fix: correct logic for uinput module configuration in post-installation script * fix: improve error message for missing win11-clipboard-history binary * feat: enhance permission fixing by checking for required commands * fix: improve shortcut registration by ensuring thread completion * style: shortcut registration formatting * feat: add support for CachyOS * feat: enhance distribution detection and installation process * chore: update version to 0.4.0 in package.json, Cargo.toml, and tauri.conf.json * chore: update version to 0.4.0 in package-lock.json * fix: update Cloudsmith repository name to clipboard-manager * feat: add PKGBUILD and installation script for win11-clipboard-history-bin * chore: remove VERSION variable from Makefile * fix: improve error message for binary not found in wrapper script * feat: enhance installation process with Cloudsmith repository support
4.6 KiB
Contributing to Windows 11 Clipboard History For Linux
First off, thank you for considering contributing to Windows 11 Clipboard History For Linux! 🎉
📋 Table of Contents
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Pull Request Process
- Style Guidelines
- Reporting Bugs
- Suggesting Features
Code of Conduct
This project and everyone participating in it is governed by our commitment to creating a welcoming and inclusive environment. Please be respectful and constructive in all interactions.
Getting Started
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/Windows-11-Clipboard-History-For-Linux.git cd win11-clipboard-history-for-linux - Add the upstream remote:
git remote add upstream https://github.com/gustavosett/Windows-11-Clipboard-History-For-Linux.git
Development Setup
Prerequisites
Make sure you have the required dependencies installed:
- Rust 1.77+ (for autostart plugin compatibility)
- Node.js 20+
- System build dependencies
# Install system dependencies (auto-detects your distro)
make deps
# Install Rust and Node.js if needed
make rust
make node
source ~/.cargo/env
# Verify everything is installed
make check-deps
Running in Development Mode
# Install npm dependencies
npm install
# Start development server with hot reload
make dev
Making Changes
-
Create a new branch from
master:git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Make your changes and test them locally
-
Run linters and formatters:
make lint make format -
Commit your changes with a descriptive message:
git commit -m "feat: add amazing new feature" # or git commit -m "fix: resolve clipboard paste issue on Wayland"
Commit Message Convention
We follow Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringperf:- Performance improvementstest:- Adding or updating testschore:- Maintenance tasks
Pull Request Process
-
Update your branch with the latest upstream changes:
git fetch upstream git rebase upstream/master -
Push your branch to your fork:
git push origin feature/your-feature-name -
Create a Pull Request on GitHub
-
Fill out the PR template completely
-
Wait for review - maintainers will review your PR and may request changes
PR Requirements
- Code follows the project's style guidelines
- All linters pass (
make lint) - Changes are tested locally
- Documentation is updated if needed
- PR description clearly explains the changes
Style Guidelines
TypeScript/React
- Use functional components with hooks
- Follow existing component patterns
- Use TypeScript types (avoid
any) - Use meaningful variable and function names
Rust
- Follow Rust idioms and best practices
- Use
cargo fmtfor formatting - Address all
clippywarnings - Document public functions and modules
CSS/Tailwind
- Use Tailwind utility classes
- Follow the Windows 11 design system defined in
tailwind.config.js - Support both light and dark modes
Reporting Bugs
Before reporting a bug:
- Search existing issues to avoid duplicates
- Try the latest version - the bug might be fixed
- Collect information:
- OS and version
- Desktop environment
- Display server (X11/Wayland)
- Steps to reproduce
- Error messages/logs
Then create a bug report.
Suggesting Features
We welcome feature suggestions! Before suggesting:
- Check if it aligns with the project's goal (Windows 11-style clipboard manager)
- Search existing issues to avoid duplicates
- Consider implementation - how complex would it be?
Then create a feature request.
Questions?
Feel free to open a discussion for questions or ideas.
Thank you for contributing! 🙏