Automatic dynamic theme for Waybar based on the current wallpaper, with intelligent layout and style preservation on Hyprland.
While many scripts generate colors from wallpapers, WaybarDynamicTheme is designed for users who care about consistency. Most tools break your Waybar layout when switching themes; this project introduces Zero-Loss Layout Switching, ensuring your custom modules and bar positions remain intact while the colors adapt perfectly to your environment.
It acts as a Full-System Palette Injector, synchronizing everything from window borders to notification styles in a single unified workflow.
| Bar Layout Switcher | GTK & Hyprland Sync |
|---|---|
![]() |
![]() |
- Unified Management Hub: A single script control center to manage wallpapers, bar layouts, and animations.
- Bar Layout Preservation: Switch between multiple Waybar configurations (top, bottom, vertical, etc.) without losing your dynamic color theme.
- Visual Wallpaper Picker: Browse your wallpaper collection with high-quality thumbnails and premium transition effects via SWWW.
- 🎨 Full System Synchronization:
- Hyprland: Dynamic window borders, active colors, and shadows.
- Waybar & Rofi: Fully themed bars and menus based on wallpaper tones.
- GTK 3/4: Real-time CSS injection for apps like Thunar, Nautilus, and others.
- Terminals: Automatic color syncing for Kitty and Ghostty.
- SwayNC & Cava: Themed notifications and audio visualizers.
- ⚙️ Intelligent Persistence: Automatically saves and reapplies your last chosen wallpaper and layout on startup.
To ensure full functionality, make sure you have the following installed:
| Component | Package | Description |
|---|---|---|
| Wallpaper Engine | swww |
For smooth wallpaper transitions. |
| Menu System | rofi-wayland |
For the wallpaper picker and hub UI. |
| Status Bar | waybar |
The main dynamic bar. |
| Color Engine | wallust |
Generates color palettes from images. |
| Notification | swaync |
Dynamic notification styling. |
| Visualizer | cava |
Audio visualizer color syncing. |
Clone the repository and run the automated setup script to link all templates and scripts to your configuration folders:
git clone https://github.com/JADRT22/WaybarDynamicTheme.git
cd WaybarDynamicTheme
chmod +x setup.sh
./setup.shEnsure your ~/.config/wallust/wallust.toml includes the provided templates to enable full system syncing. Refer to the project files for the complete template list.
Add these keybinds to your Hyprland configuration (~/.config/hypr/UserConfigs/UserKeybinds.conf):
# Direct wallpaper switcher (Visual Picker)
bind = $mainMod, G, exec, ~/.config/hypr/scripts/WaybarTheme.sh --switch
# Full Management Hub (Layouts, Transitions, etc.)
bind = $mainMod SHIFT, H, exec, ~/.config/hypr/scripts/WaybarTheme.sh --hub
# Optional: Direct UI refresh
bind = $mainMod, R, exec, ~/.config/hypr/scripts/WaybarTheme.sh --refresh
scripts/WaybarTheme.sh: The unified script that handles all tasks (Refresh, Wallpaper Switcher, Layout Selector, and Hub).setup.sh: Streamlined installation and environment setup.*.template: Wallust templates for various system components.
backend = "kmeans"
color_space = "labmixed"
palette = "dark16"
[templates]
cava.template = 'colors-cava'
cava.target = '~/.config/cava/config'
hypr.template = 'colors-hyprland.conf'
hypr.target = '~/.config/hypr/wallust/wallust-hyprland.conf'
rofi.template = 'rofi-colors.rasi'
rofi.target = '~/.config/rofi/wallust/colors-rofi.rasi'
waybar.template = 'waybar-colors.template'
waybar.target = '~/.config/waybar/wallust/colors-waybar.css'
kitty.template = 'colors-kitty.conf'
kitty.target = '~/.config/kitty/kitty-themes/01-Wallust.conf'
ghostty.template = 'colors-ghostty.conf'
ghostty.target = '~/.config/ghostty/wallust.conf'
gtk3.template = 'gtk-colors.template'
gtk3.target = '~/.config/gtk-3.0/colors.css'
gtk4.template = 'gtk-colors.template'
gtk4.target = '~/.config/gtk-4.0/colors.css'Developed by JADRT22 - Optimized for Hyprland


