Theming
blxshell uses matugen to generate Material Design 3 color schemes from your wallpaper.
How It Works
Section titled “How It Works”- You set a wallpaper (manually or with
Super + W) - Matugen extracts dominant colors from the image
- Generates Material Design 3 palette with complementary shades
- Updates all configs automatically:
- Hyprland (
~/.config/hypr/colors.conf) - Quickshell (
~/.config/quickshell/Colors.json) - GTK (
~/.config/gtk-*/colors.css) - Terminal (PLACEHOLDER: Ghostty config)
- Rofi, Fuzzel, etc.
- Hyprland (
Change Wallpaper
Section titled “Change Wallpaper”Random Wallpaper
Section titled “Random Wallpaper”Press Super + W to cycle through wallpapers in:
- PLACEHOLDER: Default wallpaper directory
~/.local/wallpapers/(if you added them)
Set Specific Wallpaper
Section titled “Set Specific Wallpaper”# Generate colors from any imagematugen image /path/to/wallpaper.pngThe colors will update across your entire system!
Color Scheme
Section titled “Color Scheme”Current Scheme
Section titled “Current Scheme”View generated colors:
cat ~/.config/hypr/colors.confcat ~/.config/quickshell/Colors.jsonColor Variables
Section titled “Color Variables”Material Design 3 provides these color roles:
Surface Colors
Section titled “Surface Colors”surface- Main backgroundsurfaceContainer- Elevated surfacessurfaceDim/surfaceBright- Dimmed/brightened variants
Primary Colors (Main accent)
Section titled “Primary Colors (Main accent)”primary- Primary accent coloronPrimary- Text on primaryprimaryContainer- Primary containersonPrimaryContainer- Text on containers
Secondary Colors
Section titled “Secondary Colors”secondary- Secondary accentonSecondary- Text on secondarysecondaryContainer/onSecondaryContainer
Tertiary Colors
Section titled “Tertiary Colors”tertiary- Tertiary accentonTertiary- Text on tertiarytertiaryContainer/onTertiaryContainer
Semantic Colors
Section titled “Semantic Colors”error/onError- Error statesoutline/outlineVariant- Borders and dividers
Using Colors in Hyprland
Section titled “Using Colors in Hyprland”Colors are prefixed with $ in Hyprland configs:
# Example from visual/general.confgeneral { col.inactive_border = $on_primary col.active_border = $primary $surface_container $primary}Matugen Configuration
Section titled “Matugen Configuration”Edit ~/.config/matugen/config.toml:
[config]# Color scheme variant# Options: scheme-tonal-spot, scheme-content, scheme-expressive, scheme-fidelityscheme = "scheme-content"
# Mode: dark or lightmode = "dark"
# Contrast: -1.0 to 1.0contrast = 0.0
[templates]# PLACEHOLDER: Add template pathsScheme Types
Section titled “Scheme Types”scheme-content (default)
- Colors match the wallpaper closely
- High fidelity to source image
- Best for photography
scheme-tonal-spot
- Creates harmonious tones
- Less literal interpretation
- Better for abstract wallpapers
scheme-expressive
- Bold, vibrant colors
- High saturation
- Energetic feel
scheme-fidelity
- Balanced between content and tonal
- Preserves image essence with harmony
Try Different Schemes
Section titled “Try Different Schemes”# Expressive colorsmatugen image wallpaper.png --mode dark --scheme scheme-expressive
# Tonal spotmatugen image wallpaper.png --mode dark --scheme scheme-tonal-spot
# Light modematugen image wallpaper.png --mode lightManual Color Override
Section titled “Manual Color Override”Set Specific Colors
Section titled “Set Specific Colors”Use color picker to generate from a hex color:
# Generate from hex color instead of imagematugen color "#FF5733"Edit Generated Colors
Section titled “Edit Generated Colors”Manually edit ~/.config/hypr/colors.conf:
# Override specific colors$primary = #your_color$surface = #your_colorPermanent Color Override
Section titled “Permanent Color Override”Create a template override in matugen config.
PLACEHOLDER: Add example template override
Theme Presets
Section titled “Theme Presets”Nord-Inspired
Section titled “Nord-Inspired”matugen color "#88C0D0"Catppuccin-Style
Section titled “Catppuccin-Style”matugen color "#CBA6F7" --scheme scheme-tonal-spotGruvbox-Like
Section titled “Gruvbox-Like”matugen color "#D79921" --scheme scheme-expressiveTokyo Night
Section titled “Tokyo Night”matugen color "#7AA2F7"GTK Theme
Section titled “GTK Theme”blxshell applies colors to GTK apps automatically.
~/.config/gtk-3.0/gtk.css - Auto-generated
~/.config/gtk-4.0/gtk.css - Auto-generated
Manual GTK Tweaks
Section titled “Manual GTK Tweaks”Install GTK theme manager:
yay -S nwg-look # Wayland GTK theme switcherTerminal Colors
Section titled “Terminal Colors”PLACEHOLDER: How are terminal colors configured?
Ghostty
Section titled “Ghostty”Edit PLACEHOLDER: ~/.config/ghostty/config:
# PLACEHOLDER: Terminal color configQuickshell Theming
Section titled “Quickshell Theming”Bar Colors
Section titled “Bar Colors”Colors update automatically from Colors.json.
To force specific colors, edit widgets:
Rectangle { color: col.surface // Uses auto-generated color // Or hardcode: // color: "#191113"}Widget Styling
Section titled “Widget Styling”Quickshell widgets inherit colors from Colors.json.
View current palette:
cat ~/.config/quickshell/Colors.jsonAdvanced Theming
Section titled “Advanced Theming”Per-App Colors
Section titled “Per-App Colors”Create app-specific color overrides:
windowrule = bordercolor $tertiary, ^(firefox)$windowrule = bordercolor $secondary, ^(code)$Time-Based Themes
Section titled “Time-Based Themes”PLACEHOLDER: Auto-switch dark/light based on time?
Script idea:
#!/bin/bash# Switch theme based on timehour=$(date +%H)if [ $hour -ge 6 ] && [ $hour -lt 18 ]; then matugen image wallpaper.png --mode lightelse matugen image wallpaper.png --mode darkfiWallpaper Collections
Section titled “Wallpaper Collections”Organize wallpapers by theme:
~/.local/wallpapers/├── nature/├── minimal/├── dark/└── light/PLACEHOLDER: Can launcher select from specific folder?
Troubleshooting
Section titled “Troubleshooting”Colors Don’t Update
Section titled “Colors Don’t Update”Reload Hyprland:
hyprctl reloadRestart Quickshell:
killall qs && qs >K Apps Don’t Match
Section titled “GTK Apps Don’t Match”Check if GTK theme is set:
gsettings get org.gnome.desktop.interface gtk-themeForce reload:
gsettings set org.gnome.desktop.interface gtk-theme 'Default'gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita'Wrong Colors Generated
Section titled “Wrong Colors Generated”Try different scheme:
matugen image wallpaper.png --scheme scheme-tonal-spotOr pick a dominant color manually:
matugen color "#extracted_color"