A modern, elegant wallpaper manager designed specifically for Hyprland on Arch Linux. Built with C++ and ImGui for a beautiful, responsive interface.
- Hyprland Integration: Native support for Hyprland's wallpaper system
- Multi-Display Support: Manage wallpapers across multiple monitors
- Modern UI: Clean, intuitive interface built with ImGui
- Multiple Wallpaper Modes: Stretch, Center, Tile, and Scale options
- File Format Support: PNG, JPG, JPEG, BMP, TIFF, WebP, GIF
- Display Detection: Automatic detection of connected displays
- Settings Persistence: Remember your preferences and last used wallpapers
- OS: Arch Linux (or other Linux distributions)
- Window Manager: Hyprland
- Dependencies:
- xmake (build system)
- OpenGL 3.3+
- GLFW
- ImGui
- zenity (for file dialogs)
# Install required packages
sudo pacman -S xmake glfw imgui zenity
# For development
sudo pacman -S base-devel# Clone the repository
git clone https://github.com/KleaSCM/caithe.git
cd caithe
# Build the project
xmake
# Run the application
xmake run- Launch Caithe Wallpaper Manager
- Click "Load Wallpaper" to select an image file
- Choose your target display from the display panel
- Select your preferred wallpaper mode (Stretch, Center, Tile, Scale)
- Click "Apply to Selected Display" or "Apply to All Displays"
- Stretch: Stretches the image to fill the entire display
- Center: Centers the image without scaling
- Tile: Tiles the image across the display
- Scale: Scales the image to fit while maintaining aspect ratio
The application automatically detects your connected displays and shows them in the display panel. You can:
- Select individual displays for wallpaper application
- View display information (resolution, refresh rate, connector type)
- Apply different wallpapers to different displays
- Auto-start with system: Automatically launch Caithe on system startup
- Remember last wallpaper: Restore the last used wallpaper on startup
- Wallpaper mode: Set the default wallpaper scaling mode
Caithe integrates directly with Hyprland's wallpaper system using hyprctl hyprpaper. The application:
- Automatically detects Hyprland displays
- Uses proper Hyprland display names (DP-1, HDMI-A-1, etc.)
- Supports all Hyprland wallpaper modes
caithe/
├── src/
│ ├── main.cpp # Application entry point
│ ├── ui/
│ │ ├── Application.h # Main application class
│ │ └── Application.cpp # Application implementation
│ ├── core/
│ │ ├── WallpaperManager.h # Wallpaper management
│ │ ├── WallpaperManager.cpp # Wallpaper implementation
│ │ ├── DisplayManager.h # Display detection
│ │ └── DisplayManager.cpp # Display implementation
│ └── utils/
│ ├── FileUtils.h # File operations
│ └── FileUtils.cpp # File utilities
├── Tests/ # Unit tests
├── Docs/ # Documentation
├── xmake.lua # Build configuration
└── README.md # This file
# Debug build
xmake -m debug
# Release build
xmake -m release
# Clean build
xmake clean- New Wallpaper Modes: Add to
WallpaperModeenum inWallpaperManager.h - File Format Support: Add to
SUPPORTED_FORMATSinWallpaperManager.cpp - UI Components: Add to
Application.cpprender methods - Display Detection: Extend
DisplayManager.cppparsing methods
Application won't start
- Ensure Hyprland is running
- Check that all dependencies are installed
- Verify OpenGL support
Wallpapers not applying
- Check Hyprland is running:
hyprctl monitors - Verify hyprpaper is installed:
pacman -Q hyprpaper - Check file permissions on wallpaper images
Display detection issues
- Run
hyprctl monitorsto verify display detection - Check X11 fallback:
xrandr --listmonitors
# Build with debug information
xmake -m debug
# Run with verbose output
xmake run -v- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Add tests in the
Tests/directory - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Hyprland: For the excellent Wayland compositor
- ImGui: For the beautiful immediate mode GUI library
- xmake: For the modern build system
Author: KleaSCM
Email: KleaSCM@gmail.com