Skip to content

Latest commit

Β 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HyprRice - Comprehensive Hyprland Ecosystem Ricing Tool

Version Python License: MIT Wayland CI PyPI Downloads

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

🌟 Features

🎨 Comprehensive Customization

  • 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

🎯 User Experience

  • 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

πŸ”§ Technical Excellence

  • 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

πŸ†• What's New in v1.0.0

  • 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, and hyprrice 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

πŸ“¦ Installation

Install from the AUR (Arch Linux)

HyprRice is available on the AUR as hyprrice:

yay -S hyprrice

Or use your favorite AUR helper.

Prerequisites (Manual Install)

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.

Install HyprRice (Manual)

Option 1: From Source (Recommended)

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

Option 2: Using pip

pip install hyprrice

Option 3: Using setup.py (Legacy)

# 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

Option 4: Verify Installation

# 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

πŸš€ Quick Start

  1. Install dependencies:
    pip install -r requirements.txt
  2. 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.

🎨 Usage Examples

Basic Animation Setup

# 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
}

Waybar Configuration

/* 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;
}

Rofi Theme

/* 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;
}

πŸ“ Project Structure

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)

πŸ“¦ Packaging

  • 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

Running setup.py Commands

# 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

🎯 Key Features in Detail

Animation System

  • 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

Window Management

  • 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

Theme System

  • 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

Plugin System

  • 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

πŸ”§ Configuration

HyprRice Configuration

# ~/.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/

Backup and Rollback

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

Backup, Restore, Undo, Redo

  • 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)

πŸ§ͺ Testing

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

🀝 Contributing

We welcome contributions! Here's how to get started:

Development Setup

  1. Fork and clone the repository:

    git clone https://github.com/your-username/HyprRice.git
    cd HyprRice
  2. 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
  3. Run tests to ensure everything works:

    pytest

Making Changes

  1. Create a feature branch (git checkout -b feature/amazing-feature)
  2. Make your changes and add tests
  3. Run tests (pytest)
  4. Commit your changes (git commit -m 'Add amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

What We're Looking For

  • 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

Code Style

  • Follow PEP 8 for Python code
  • Use type hints where appropriate
  • Add docstrings for new functions
  • Include tests for new functionality

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • 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

🎨 Inspiration and References

HyprRice v1.0 draws inspiration from excellent Hyprland configurations and best practices:

These projects have influenced HyprRice's template system, modular configuration approach, and package management options.

πŸ“ž Support & Troubleshooting

Getting Help

Common Issues & Solutions

Installation Problems

# 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

Runtime Issues

# Check if Hyprland is running
hyprctl version

# Verify configuration
hyprrice migrate

# Reset to defaults (creates backup)
rm ~/.config/hyprrice/config.yaml
hyprrice gui

GUI Issues

  • 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

Performance Tips

  • 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 Release

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

What's Next

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

About

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.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages