HyprRice is an advanced, all-encompassing ricing tool for the Hyprland Wayland compositor ecosystem. It provides a seamless, user-friendly GUI to customize every aspect of Hyprland and its associated tools, including animations, Waybar, Rofi, window opacities, notifications, clipboard managers, and more.
- Documentation Home
- User Guide
- Troubleshooting
- Quick Start
- API Reference
- Plugin Development
- Security Guide
- Hyprland Core: Animations, window management, workspaces, input, display settings
- Waybar: Layout, styling, modules, and interactivity
- Rofi: Appearance, modes, themes, and behavior
- Notifications: Dunst/Mako integration with styling and behavior
- Clipboard Manager: Cliphist/wl-clipboard integration with GUI
- Lockscreen: Hyprlock/Swaylock customization
- Ecosystem Tools: Terminal, file manager, screenshot tools, audio
- Modern, responsive PyQt6 GUI optimized for Wayland with UI stability fixes
- Live preview system for animations and color schemes with debounced updates
- Theme system with gallery and import/export capabilities
- Auto-backup and rollback functionality
- Beginner-friendly presets and advanced customization options
- Configuration editor for manual file editing
- Debug mode for system analysis and troubleshooting
- Package options for easy installation across distributions
- Import Wizard (MVP) for importing configurations from popular dotfiles
- Wayland-safe rendering mode and UI reset functionality
- Modular, extensible architecture with plugin support
- Robust error handling and validation
- Configuration parsing and syntax validation
- Performance optimized for low resource usage
- Full Wayland compatibility with UI stability improvements
- Advanced security with plugin sandboxing
- Enhanced theme preview with expanded Hyprland options support
- Comprehensive testing and debugging tools
- PyQt6 Migration: Upgraded to PyQt6 for modern, sleek UI with better Wayland support
- Modern Theme System: New QSS-based theming with dark/light modes and accent colors
- UI Stability Fixes: Resolved glitches, click-through issues, and rendering problems
- Enhanced Live Preview: Debounced updates, DPR-aware rendering, and expanded Hyprland options
- Wayland Compatibility: Improved Wayland session detection and safe rendering mode
- Fixed Installation & Runtime Issues: Resolved entry points, hyprctl API, and GUI startup problems
- Modern Python Packaging: Updated to use
pyproject.toml
with SPDX license format, no setuptools warnings - Enhanced CLI: Improved
hyprrice doctor
,hyprrice migrate
, andhyprrice gui
commands - Advanced Plugin System: Event-based hooks (before/after apply, theme change, import, preview, etc.)
- Modern UI: Polished interface with tooltips, help overlays, and improved feedback
- Configuration Migration: Automatic migration from older config formats with backup
- Import/Export: Validation, preview, and backup integration
- Security Features: Input validation, path restrictions, and command sanitization
- Performance Monitoring: Built-in performance tracking and optimization
- Comprehensive Testing: 298+ tests covering all major functionality
- π Configuration Editor: Dedicated text editor for manual configuration file editing
- π Debug Mode: Comprehensive system analysis and testing with detailed reports
- π Enhanced Sourced Files Management: GUI for managing external configuration files
- π Template System: Auto-generation of configuration files with customizable templates (examples only)
- π Advanced Security: Plugin sandboxing with resource limits and import restrictions
- π Package Options: Comprehensive package management options for all major distributions
- π Critical Stability Fixes: Resolved plugin import errors, Qt compatibility issues, JSON parsing errors, and memory optimization
HyprRice is available on the AUR as hyprrice
:
yay -S hyprrice
Or use your favorite AUR helper.
Ensure you have the following system dependencies installed:
# Arch Linux / Manjaro
sudo pacman -S hyprland waybar rofi dunst swww grim slurp cliphist hyprlock \
python-pyqt6 python-pillow python-yaml python-gobject qt6-wayland
# Ubuntu / Debian
sudo apt install hyprland waybar rofi dunst swww grim slurp cliphist hyprlock \
python3-pyqt6 python3-pil python3-yaml python3-gi qt6-wayland
# Fedora
sudo dnf install hyprland waybar rofi dunst swww grim slurp cliphist hyprlock \
python3-qt6 python3-pillow python3-pyyaml python3-gobject qt6-qtwayland
Note: qt6-wayland
(or qt6-qtwayland
) is required for proper Wayland support with PyQt6.
git clone https://github.com/DuckyOnQuack-999/HyprRice.git
cd HyprRice
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode
pip install -e .
# Install development dependencies
pip install -r requirements-dev.txt -r requirements-test.txt
pip install hyprrice
# Clone the repository
git clone https://github.com/DuckyOnQuack-999/HyprRice.git
cd HyprRice
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install using setup.py
python setup.py install
# Or install in development mode
python setup.py develop
# Note: setup.py is maintained for compatibility but pyproject.toml is preferred
# Check system status and dependencies
hyprrice doctor
# Launch GUI
hyprrice gui
# List available plugins
hyprrice plugins list
# Migrate configuration (if needed)
hyprrice migrate
# Run debug mode for comprehensive system analysis
hyprrice gui --debug
- Install dependencies:
pip install -r requirements.txt
- Run HyprRice:
# Launch GUI hyprrice gui # Or check system status first hyprrice doctor
See the Quick Start Guide or the User Guide for detailed instructions.
# HyprRice automatically generates this hyprland.conf
animations {
enabled = true
animation = windows, 1, 7, myBezier
animation = border, 1, 10, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
/* Generated by HyprRice */
* {
border: none;
border-radius: 0;
font-family: "JetBrainsMono Nerd Font", "Font Awesome 5 Free";
font-size: 13px;
min-height: 0;
}
window#waybar {
background-color: rgba(43, 48, 59, 0.5);
border-bottom: 3px solid rgba(100, 115, 245, 0.5);
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
/* Generated by HyprRice */
* {
bg: #2e3440;
bg-alt: #3b4252;
fg: #eceff4;
fg-alt: #d8dee9;
border: 0;
margin: 0;
padding: 0;
highlight: bold, #5e81ac;
urgent: #bf616a;
}
window {
width: 40%;
location: center;
anchor: center;
y-offset: -50px;
x-offset: 0px;
}
HyprRice/
βββ src/hyprrice/ # Main source code
β βββ cli.py # Command-line interface
β βββ main.py # Legacy entry point
β βββ main_gui.py # Main GUI application
β βββ config.py # Configuration management
β βββ utils.py # Utility functions
β βββ migration.py # Configuration migration
β βββ backup.py # Backup system
β βββ history.py # History management
β βββ plugins.py # Plugin system
β βββ security.py # Security features
β βββ performance.py # Performance monitoring
β βββ hyprland/ # Hyprland-specific modules
β β βββ animations.py # Animation configuration
β β βββ display.py # Display settings
β β βββ input.py # Input configuration
β β βββ windows.py # Window management
β β βββ workspaces.py # Workspace settings
β βββ gui/ # GUI components
β βββ tabs.py # Tab implementations
β βββ theme_manager.py # Theme management
β βββ preview.py # Live preview
β βββ preferences.py # Preferences dialog
β βββ backup_manager.py # Backup management
β βββ plugin_manager.py # Plugin management
βββ plugins/ # Built-in plugins
β βββ terminal_theming.py
β βββ notification_theming.py
βββ themes/ # Pre-installed themes
βββ tests/ # Unit tests
βββ docs/ # Documentation
βββ requirements.txt # Python dependencies
βββ requirements-dev.txt # Development dependencies
βββ requirements-test.txt # Testing dependencies
βββ pyproject.toml # Modern Python packaging (primary)
βββ setup.py # Legacy setup (minimal, for compatibility)
- Primary:
pyproject.toml
- Modern Python packaging with SPDX license format - Legacy:
setup.py
- Minimal compatibility layer - Dependencies: Managed through
pyproject.toml
with optional extras - No Warnings: All setuptools deprecation warnings resolved
# Install the package
python setup.py install
# Install in development mode (editable)
python setup.py develop
# Build distribution packages
python setup.py sdist bdist_wheel
# Clean build artifacts
python setup.py clean --all
# Show package information
python setup.py --help-commands
# Note: While setup.py works, pip install -e . is recommended for development
- Global Toggle: Enable/disable all animations
- Animation Types: slide, fade, popin, shrink, zoom
- Duration Control: 0.1s to 5.0s with fine-grained control
- Easing Curves: linear, ease-in-out, cubic-bezier
- Per-Window Rules: Custom animations for specific applications
- Opacity Control: Global and per-application (0.0-1.0)
- Border Customization: Size, color, gradient, corner radius
- Effects: Shadows, blur, dim with customizable parameters
- Gaps: Inner/outer gaps with smart gap support
- Floating Rules: Size, position, opacity for floating windows
- Pre-installed Themes: minimal, cyberpunk, pastel, nord, dracula
- Custom Themes: Create and save your own themes
- Import/Export: Share themes with the community
- Live Preview: See changes before applying
- Extensible Architecture: Add custom animations, Waybar modules
- API: Third-party tool integration
- Community Contributions: Share plugins via GitHub
- Plugin Development: Place your plugin
.py
files in~/.hyprrice/plugins/
- Plugin Registration: Each plugin must define a
register(app)
function - Example Plugin:
def register(app): print("Plugin loaded! You can add tabs, controls, or logic here.")
- Plugin Capabilities: Plugins can add tabs, controls, or logic to the main app
# ~/.config/hyprrice/config.yaml
general:
auto_backup: true
backup_retention: 10
live_preview: true
theme: dark
paths:
hyprland_config: ~/.config/hypr/hyprland.conf
waybar_config: ~/.config/waybar/
rofi_config: ~/.config/rofi/
backup_dir: ~/.hyprrice/backups/
log_dir: ~/.hyprrice/logs/
HyprRice automatically creates timestamped backups before applying changes:
~/.hyprrice/backups/
βββ 2024-01-15_14-30-25_hyprland.conf
βββ 2024-01-15_14-30-25_waybar_config
βββ 2024-01-15_14-30-25_rofi_config
- Use the Settings tab to backup or restore your config, or to undo/redo changes
- All changes are logged in the audit log for traceability
- Export/import and CI/CD-ready output (coming soon)
Run the complete test suite:
# Run all tests
pytest
# Run with verbose output
pytest -v
# Run specific test categories
pytest tests/test_cli.py
pytest tests/test_gui.py
pytest tests/test_hyprland_integration.py
pytest tests/test_plugin_system.py
# Run with coverage
pytest --cov=src/hyprrice
# Run tests in parallel
pytest -n auto
Test Coverage: 298+ tests covering:
- CLI functionality and commands
- GUI components and interactions
- Hyprland integration and configuration
- Plugin system and security
- Backup and migration systems
- Configuration management
- Error handling and validation
- PyQt6 compatibility and enum usage
- JSON parsing and subprocess handling
- Memory management and performance optimization
We welcome contributions! Here's how to get started:
-
Fork and clone the repository:
git clone https://github.com/your-username/HyprRice.git cd HyprRice
-
Set up development environment:
python -m venv venv source venv/bin/activate pip install -e . pip install -r requirements-dev.txt -r requirements-test.txt
-
Run tests to ensure everything works:
pytest
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes and add tests
- Run tests (
pytest
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Bug fixes: Help us improve stability
- New features: Enhance the user experience
- Plugin development: Extend functionality
- Documentation: Improve guides and examples
- Testing: Increase test coverage
- AUR PKGBUILD: Package management improvements
- Follow PEP 8 for Python code
- Use type hints where appropriate
- Add docstrings for new functions
- Include tests for new functionality
This project is licensed under the MIT License - see the LICENSE file for details.
- Hyprland - The amazing Wayland compositor
- Waybar - Highly customizable Wayland bar
- Rofi - Window switcher and launcher
- PyQt6 - Modern GUI framework
- Qt6 - Cross-platform application framework
- Python - Programming language
- Wayland - Display server protocol
HyprRice v1.0 draws inspiration from excellent Hyprland configurations and best practices:
- ML4W Dotfiles - Cross-distro installation flows and setup scripts
- end-4 dots-hyprland - Modular configuration layout and AI integration
- end-4 Hyprland Wiki - Hyprland configuration conventions and best practices
These projects have influenced HyprRice's template system, modular configuration approach, and package management options.
- GitHub Issues: Report bugs and request features
- Documentation: Check the docs folder for detailed guides
- Troubleshooting: See troubleshooting guide
# Check system dependencies
hyprrice doctor
# Verify Python version (3.10+ required)
python --version
# Reinstall in development mode (clean installation)
pip install -e . --force-reinstall
# If you see setuptools warnings, they should be resolved in v1.0.0+
# The project now uses modern pyproject.toml packaging
# Check if Hyprland is running
hyprctl version
# Verify configuration
hyprrice migrate
# Reset to defaults (creates backup)
rm ~/.config/hyprrice/config.yaml
hyprrice gui
- Ensure you're running on Wayland:
echo $WAYLAND_DISPLAY
- Check PyQt6 installation:
python -c "import PyQt6; print('OK')"
- Try running with debug mode:
hyprrice gui --debug
- For HiDPI displays, ensure proper scaling:
export QT_SCALE_FACTOR=1.5
- Use the new Configuration Editor for manual file editing
- Run Debug Mode for comprehensive system analysis
- Fixed in v1.0.0: All PyQt6 compatibility issues resolved, including enum usage and timer handling
- Use
hyprrice doctor
to identify missing dependencies - Enable performance monitoring in preferences
- Use the backup system before major changes
- Keep your configuration files organized
- Use Debug Mode for system analysis and optimization
- Leverage the Configuration Editor for advanced customization
- Optimized in v1.0.0: Memory management improved with automatic garbage collection and reduced UI update frequency
HyprRice v1.0.0 represents a major milestone in the project's development, bringing enterprise-grade features and reliability to the Hyprland ecosystem. This release includes:
- Production-Ready Quality: Comprehensive testing, security hardening, and performance optimization
- Modern Architecture: PyQt6 migration, advanced plugin system, and extensible design
- Enhanced User Experience: Configuration editor, debug mode, and improved GUI
- Advanced Security: Plugin sandboxing, input validation, and secure file handling
- Comprehensive Documentation: Updated guides, troubleshooting, and API references
- Critical Stability Fixes: Resolved all major runtime issues including plugin imports, Qt compatibility, JSON parsing, and memory optimization
HyprRice v1.0.0 provides a solid foundation for future development. Planned features for upcoming releases include:
- Enhanced theme marketplace integration
- Advanced animation presets
- Cloud configuration sync
- Mobile companion app
- Advanced plugin marketplace
Made with β€οΈ for the Hyprland community