Thank you for your interest in contributing to RGB Linux Controller! This document provides guidelines for contributing to the project.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Test thoroughly
- Commit with clear messages:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request
- Adding support for new RGB devices
- Improving existing device protocols
- Hardware compatibility testing
- Fixing device detection issues
- Resolving permission problems
- Correcting installation scripts
- Improving setup guides
- Adding troubleshooting steps
- Hardware compatibility lists
- New RGB effects
- Better user interfaces
- Performance improvements
Before submitting hardware support:
- Test on clean Ubuntu/Mint installation
- Document hardware specifications
- Verify detection and control functionality
- Test with different RGB modes
# Run detection tests
sudo python3 src/detection/test_protocols.py
# Test installation script
sudo ./install_rgb_linux.sh
# Verify device control
sudo rgb-controller --list
sudo rgb-controller blueWhen adding new hardware support, include:
# Device details
lsusb -v -d [vendor:product]
sudo i2cdetect -l
sudo i2cdetect -y -r [bus]
# System information
lsb_release -a
uname -a- Add detection logic to
src/detection/ - Update hardware database
- Include fallback methods
- Implement in
src/protocols/ - Document command structure
- Add error handling
- Provide before/after photos
- Test multiple modes/colors
- Document any limitations
- Follow PEP 8
- Use meaningful variable names
- Add docstrings for functions
- Handle exceptions properly
def detect_corsair_memory():
"""
Detect Corsair RGB memory modules via I2C scan.
Returns:
list: Detected memory modules with addresses
"""
try:
# Implementation
pass
except Exception as e:
log_error(f"Memory detection failed: {e}")
return []- Use
set -efor error handling - Quote variables:
"$variable" - Add comments for complex logic
- Test on multiple distributions
#!/bin/bash
set -e
detect_hardware() {
local device_type="$1"
echo "Detecting $device_type devices..."
# Implementation
}src/
├── controllers/ # Device-specific controllers
│ ├── corsair.py # Corsair memory/devices
│ ├── aigo.py # AIGO fans
│ └── gigabyte.py # Gigabyte motherboards
├── detection/ # Hardware detection
│ ├── i2c_scanner.py # I2C device detection
│ ├── usb_scanner.py # USB device detection
│ └── auto_detect.py # Main detection logic
├── protocols/ # Communication protocols
│ ├── i2c_protocol.py # I2C communication
│ ├── hid_protocol.py # HID communication
│ └── openrgb_proto.py # OpenRGB integration
└── utils/ # Utility functions
├── colors.py # Color conversion
├── logging.py # Logging utilities
└── permissions.py # Permission handling
When reporting bugs, include:
# Distribution
lsb_release -a
# Kernel version
uname -a
# Installation method
cat /var/log/rgb-linux-installer.log | tail -50# RGB devices
sudo openrgb --list-devices
# I2C devices
sudo i2cdetect -l
# USB devices
lsusb | grep -i rgb- Complete error messages
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if relevant
- Code follows project style guidelines
- Changes are tested on target hardware
- Documentation is updated
- Commit messages are clear
- No sensitive information in commits
- Hardware compatibility is documented
For major features, please:
- Open an issue first to discuss
- Provide use case and benefits
- Consider backward compatibility
- Plan testing approach
- Issues: Use GitHub issues for bugs and feature requests
- Discussions: Use GitHub discussions for questions
- Email: Contact maintainer for sensitive issues
Contributors will be recognized in:
- README.md contributors section
- Release notes
- Project documentation
Thank you for helping make RGB control accessible on Linux! 🌈