Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Cyber-Industrial Waybar Configuration

Wayland Dynamic Colors

A modular, high-performance Waybar configuration designed with a Utilitarian Brutalism / Tactical Amber Monolith aesthetic. Features auto-detection of the running compositor and dynamic color sync via Matugen β€” your bar colors adapt to every wallpaper change automatically.

Preview

Default Amber Scheme

Default View

Expanded Metrics (System Drawer)

Expanded View

Dynamic Color Adaptation

The bar automatically extracts accent colors from your current wallpaper. Here are examples with different wallpapers:

Default Color

Default Color

Green

Green

Lime

Lime

Magenta

Magenta

Red

Red

Aurora

Aurora


Features

  • Auto-Compositor Detection: A single entry-point script (launch.sh) automatically detects if you are running Hyprland, Sway, Niri, or generic wlroots compositors and loads the appropriate workspace/window module configurations.
  • Dynamic Color Sync (Matugen): Colors are extracted from your current wallpaper using Matugen β€” accent, text, borders, backgrounds all shift to match the artwork's palette. Amber fallback when Matugen is not installed.
  • Dynamic Distro Icon: Dynamically detects the running Linux distribution (Fedora, Arch Linux, Debian, Ubuntu, etc.) and displays its corresponding Nerd Font icon in the system menu.
  • Segmented Tactical Panels: Built using sharp-grid layouts, dark base layers, and high-visibility amber highlights.
  • System Metrics Drawer: Includes a collapsible grid toggle (cpu, memory, disk) using Waybar's native group drawer.
  • Audio Visualizer (caway): A live spectrum analyzer (scripts/caway) rendered from CAVA output, parked beside the clock. It auto-hides when no audio is playing and reappears the moment sound is detected (via real CAVA levels or playerctl playback status), with a debounce to prevent flicker. Click = play/pause, scroll = previous/next track.
  • Rofi Launcher: The system menu uses Rofi (rofi -show drun) with a dynamic distro icon β€” no extra launcher fallback.
  • Tactical Taskbar: wlr/taskbar truncates window titles to 15 characters (...) so long titles stay compact across the bar.
  • Clean Modular Config: Separated configuration blocks (modules.jsonc, compositor configs, and style.css) for easy maintenance and customization.

Compatibility

This theme is designed to be distro-agnostic and compositor-flexible.

1. Distro & Dependency Installation

To display icons correctly and enable all interactive functions, ensure the required dependencies are installed for your distro:

Arch Linux

yay -S waybar pavucontrol wireplumber network-manager-applet wlogout otf-jetbrains-mono-nerd rofi-wayland cava playerctl
# Optional β€” dynamic colors:
yay -S matugen-bin

Fedora

sudo dnf install waybar pavucontrol wireplumber network-manager-applet wlogout jetbrains-mono-fonts-all rofi-wayland cava playerctl
# Optional β€” dynamic colors:
sudo dnf copr enable heus-sueh/packages && sudo dnf install matugen

Debian / Ubuntu

sudo apt install waybar pavucontrol wireplumber network-manager-gnome wlogout fonts-jetbrains-mono rofi playerctl
# Optional β€” cava visualizer (PPA):
sudo add-apt-repository ppa:hsheth2/ppa && sudo apt update && sudo apt install cava
# Optional β€” dynamic colors (requires Rust):
cargo install matugen

openSUSE Tumbleweed / Leap

sudo zypper install waybar pavucontrol wireplumber NetworkManager-connection-editor wlogout jetbrains-mono-fonts rofi-wayland cava playerctl

Alpine Linux (Edge / v3.23+)

sudo apk add waybar pavucontrol wireplumber network-manager-applet wlogout font-jetbrains-mono-nerd rofi-wayland cava playerctl

Void Linux

sudo xbps-install -S Waybar pavucontrol wireplumber NetworkManager wlogout ttf-jetbrains-mono-nerd rofi-wayland cava playerctl

2. Compositor Compatibility

  • Hyprland: Uses native hyprland/workspaces (with persistent workspaces up to 5) and wlr/taskbar for active application tabs.
  • Sway: Uses native sway/workspaces and sway/window modules.
  • Niri: Uses native niri/workspaces and niri/window modules.
  • Other Compositors (Wayfire, River, Labwc, Mangowm, etc.): Automatically falls back to the Generic wlroots configuration using wlr/workspaces and wlr/taskbar for window management. No extra scripts are required for other compositors!

The Audio Visualizer (caway) and Rofi launcher are included in every compositor profile, so the center caway + clock pair and the launcher stay consistent across Hyprland, Sway, Niri, and generic setups.


Installation

Clone the repository and run the interactive installer:

git clone https://github.com/Raka-coder/waybar-cyber-industrial.git
cd waybar-cyber-industrial
./install.sh

Installation Modes:

  • Symlink (Option 1): Symlinks the entire theme directory. Highly recommended if you plan to update or modify the configuration using Git.
  • Copy (Option 2 - Minimal): Copies configuration files directly. It automatically detects your active compositor and offers a minimal installation (only copies the configs needed for your active session, leaving other files out for a cleaner setup).

The installer will:

  1. Copy/symlink all theme files to ~/.config/waybar/cyber-industrial/
  2. Generate a default Amber colors.css so your bar works out of the box
  3. Copy Matugen template + config to ~/.config/matugen/ (if you have Matugen installed)

🎨 Dynamic Color Sync (Matugen)

How It Works

Wallpaper change
      β”‚
      β–Ό
β”Œβ”€ Matugen ──────────────────────────┐
β”‚  Extract Material You colors        β”‚
β”‚  β†’ scheme-vibrant (saturated accent)β”‚
β”‚  β†’ Fill template.css                β”‚
β”‚  β†’ Write colors.css                 β”‚
β”‚  β†’ Run post_hook                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
β”Œβ”€ style.css ──────────────────────────┐
β”‚ @import url("matugen/colors.css")     β”‚
β”‚ β†’ Waybar picks up new colors         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  1. A wallpaper change triggers Matugen with scheme-vibrant
  2. Matugen extracts saturated Material You colors from the image
  3. Fills matugen/template.css β†’ writes matugen/colors.css
  4. Post-hook kills & restarts Waybar β†’ new colors apply instantly

Why scheme-vibrant? Matugen's default tonal-spot scheme produces muted pastels that barely differ between wallpapers. vibrant extracts saturated accent colors β€” each wallpaper gives a distinctly different, visible color shift.

No Matugen? No Problem.

If Matugen is not installed, the bar uses a built-in Amber scheme (#ffb000 accent). The launch.sh script auto-generates this fallback on every start.

Triggering Matugen

Matugen runs whenever your wallpaper changes. How you trigger it depends on your wallpaper tool:

Option A: Integrated wallpaper manager (Noctalia)

If you use Noctalia, use the included watcher script:

# Copy watcher to system
cp waybar/cyber-industrial/scripts/matugen-watcher.sh ~/.config/mango/scripts/matugen-watcher.sh

# Create systemd user service
mkdir -p ~/.config/systemd/user
cp waybar/cyber-industrial/matugen/matugen-watcher.service ~/.config/systemd/user/

# Enable and start
systemctl --user daemon-reload
systemctl --user enable --now matugen-watcher.service

The watcher polls Noctalia every 3 seconds and triggers Matugen on wallpaper change.

Option B: swww

# Add matugen to your swww script
swww img "$wallpaper"
matugen image "$wallpaper" --type scheme-vibrant --contrast 0.25 --prefer darkness

Option C: Hyprpaper

# Add to your wallpaper script
hyprctl hyprpaper wallpaper ",$wallpaper"
matugen image "$wallpaper" --type scheme-vibrant --contrast 0.25 --prefer darkness

Option D: swaybg / any setter

# Wrap your wallpaper setter
matugen image "$1" --type scheme-vibrant --contrast 0.25 --prefer darkness
swaybg -i "$1" &

Option E: Manual

matugen image /path/to/your/wallpaper.jpg --type scheme-vibrant --contrast 0.25 --prefer darkness

Disabling Dynamic Colors

Remove or comment out the @import line in style.css. The built-in @define-color fallback block (Amber scheme) above it will take effect.


Usage & Compositor Integration

Manual Run

You can launch the bar manually at any time:

~/.config/waybar/cyber-industrial/launch.sh

Auto-start Configuration

Add the launch script to your compositor's startup file to run it automatically on login:

Hyprland (~/.config/hypr/hyprland.conf)

exec-once = ~/.config/waybar/cyber-industrial/launch.sh

Sway (~/.config/sway/config)

exec ~/.config/waybar/cyber-industrial/launch.sh

Niri (~/.config/niri/config.kdl)

spawn-at-startup "~/.config/waybar/cyber-industrial/launch.sh"

Customization

Changing the Color Scheme

With Matugen active, colors come from your wallpaper β€” edit matugen/template.css to control how Material You colors map to Cyber-Industrial variables:

/* matugen/template.css β€” adjust the mapping */
@define-color accent         @mat-primary;   /* Main accent from wallpaper */
@define-color accent-dim     @mat-secondary; /* Dimmed variant */
@define-color bg-base        alpha(@mat-surface, 0.55);   /* Background */
@define-color bg-module      alpha(@mat-surface-container, 0.55);
@define-color border-color   alpha(@mat-outline, 0.40);
@define-color text-main      @mat-on-surface;
@define-color text-dim       alpha(@mat-on-surface, 0.6);
@define-color warn           @mat-tertiary;
@define-color danger         @mat-error;

After editing, regenerate with:

matugen image /path/to/current/wallpaper.jpg

Static override: To lock specific colors regardless of wallpaper, add @define-color lines after the @import in style.css:

@import url("matugen/colors.css");

/* Static overrides β€” these win over matugen */
@define-color accent         #00ffcc;   /* Lock to cyberpunk cyan */
@define-color danger         #ff0000;   /* Lock to pure red */

Calendar

The calendar (shown on clock hover) uses dynamic colors from the tooltip CSS β€” no hardcoded hex values. The current date is marked with bold underline (<b><u>{}</u></b>) which works with any color scheme.

Audio Visualizer (caway)

The live spectrum analyzer is a small Python wrapper around CAVA that pipes raw ASCII levels into a Waybar custom/caway module. It captures the default sink's monitor source (so it reacts to whatever you hear, not your mic), renders it as Nerd Font block glyphs, and shows the current track via playerctl.

Auto-hide behavior is stateful in the script:

  • Audio detected (any CAVA bar level > 0, or a player reporting Playing) β†’ the visualizer is shown immediately.
  • Silence β†’ after a debounce of framerate Γ— 0.6 frames (~0.6s @ 60fps) the module drops to {"text":"", "class":"custom-caway-hidden"} and CSS collapses it fully.

Preview of the visualizer in action:

Cava visualizer preview

Demo Video

Control knobs are passed on the exec line in modules.jsonc:

"custom/caway": {
  "format": "{}",
  "exec": "$HOME/.config/waybar/cyber-industrial/scripts/caway -b 10 -f 60",
  "return-type": "json",
  "on-click": "playerctl play-pause",
  "on-scroll-up": "playerctl previous",
  "on-scroll-down": "playerctl next",
  "escape": true
}
  • -b β€” number of bars (default 10).
  • -f β€” CAVA framerate (default 60). Raise it for sharper peaks, but note this also shortens the auto-hide debounce window.
  • -e β€” disable the visualizer entirely; falls back to a text/media icon + track tooltip only.

The hidden state is pure CSS (#custom-caway.custom-caway-hidden), so you can restyle or fully hide it without touching the script.

Custom Actions

If you use alternative apps for volume, network, or app launching (e.g., bemenu, nmtui), edit the command bindings inside configs/modules.jsonc:

"on-click": "your-preferred-command"

Troubleshooting

Waybar colors not updating after wallpaper change

  1. Check Matugen is installed: which matugen
  2. Run manually: matugen image /path/to/wallpaper.jpg --type scheme-vibrant --contrast 0.25 --prefer darkness and check if ~/.config/waybar/cyber-industrial/matugen/colors.css was updated
  3. Check post_hook: Verify ~/.config/matugen/config.toml has type = "scheme-vibrant" and the correct post_hook pointing to launch.sh
  4. No wallpaper tool: If you don't use a wallpaper manager, the bar keeps the default Amber colors β€” this is expected

Colors look muted / barely change between wallpapers

Make sure Matugen is using scheme-vibrant (not the default tonal-spot). Check your config:

grep type ~/.config/matugen/config.toml
# Should output: type = "scheme-vibrant"

The default tonal-spot scheme produces pastel tones that look similar across different images. The vibrant scheme extracts saturated, distinct colors from each wallpaper.

Waybar fails to start

If colors.css is missing, launch.sh auto-generates it with Amber defaults. If the issue persists, run manually:

~/.config/waybar/cyber-industrial/launch.sh

Look for error output in the terminal.

About

Modular Waybar configuration with auto-detecting Hyprland/Sway/Niri/generic support, dynamic distro icon, matugen color visual, and Tactical Amber Monolith aesthetic

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages