Back to Articles

Cybrdots: Building a Modular Cyberpunk Desktop Environment with Hyprland

[ View on GitHub ]

Cybrdots: Building a Modular Cyberpunk Desktop Environment with Hyprland

Hook

Most dotfile collections are glorified config dumps. Cybrdots treats desktop theming like software architecture—with a central color specification, modular component repositories, and a dependency graph that would make any package maintainer nod in approval.

Context

The Linux desktop customization landscape is fragmented. You might find a beautiful Waybar theme, a slick Rofi config, and an impressive Neovim setup—but they rarely share a cohesive visual language. When you piece them together, you get a Frankenstein desktop where each component screams in a different color palette. This problem compounds with Wayland compositors like Hyprland, where the ecosystem is younger and pre-packaged themes are scarce.

Cybrdots emerged from this chaos with an ambitious goal: create a complete, thematically unified desktop environment for Hyprland users who want the cyberpunk aesthetic without spending weeks harmonizing configs. Drawing inspiration from Cyberpunk 2077’s UI design and Catppuccin’s systematic theming approach, it treats desktop customization as a product design problem rather than a collection of random dotfiles.

Technical Insight

Applications

Window Management

color spec

color spec

color spec

color spec

color spec

wallpaper path

dynamic colors

dynamic colors

orchestrates

orchestrates

orchestrates

cybrcolors

Color Palette Spec

cybrpapers

Wallpaper Collection

cybrdots

Orchestration Repo

cybrland

Hyprland Config

cybrbar

Waybar Status

cybrfi

Rofi Launcher

cybrtty

Kitty Terminal

TUI Tools

btop/yazi/micro

Wallpaper Rotation

swww + wal

System architecture — auto-generated

The architectural genius of cybrdots lies in its separation of concerns. At the foundation sits cybrcolors, a centralized color specification that defines the entire palette. This isn’t just a list of hex codes—it’s a theming contract. Every component repository (cybrland for Hyprland configs, cybrbar for Waybar, cybrcursor for cursor themes) imports this specification, ensuring color consistency without tight coupling.

The modular repository strategy is particularly clever. Rather than a monolithic dotfiles repo, each application gets its own repository under the cybrcore organization. This approach has several technical advantages: granular version control (you can update Waybar themes without touching Hyprland configs), reduced merge conflicts for contributors, and most importantly, composability. Want just the Rofi theme? Clone cybrfi. Need the whole stack? Clone the umbrella cybrdots repo that orchestrates everything.

Here’s how the wallpaper rotation system demonstrates this modularity:

#!/usr/bin/env bash
# Simplified from cybrpapers integration

WALLPAPER_DIR="$HOME/.config/cybrpapers/current"
TRANSITION_TYPE="fade"
TRANSITION_DURATION=2

# swww (wayland wallpaper daemon) integration
random_wallpaper=$(find "$WALLPAPER_DIR" -type f | shuf -n 1)
swww img "$random_wallpaper" \
  --transition-type "$TRANSITION_TYPE" \
  --transition-duration "$TRANSITION_DURATION"

# Extract colors from wallpaper for dynamic theming
wal -i "$random_wallpaper" --backend colorz -q

# Reload dependent components
pkill -SIGUSR1 waybar  # Reload Waybar with new colors

This script showcases the system’s dynamic theming capability. It doesn’t just swap wallpapers—it extracts colors using pywal and signals other components to reload with the updated palette. This is dotfiles-as-API: each component exposes hooks for color updates, creating a reactive theming system.

The tool curation reveals deep thought about workflow coherence. Instead of throwing every popular CLI tool into the mix, cybrdots curates a specific stack: yazi for file management (not ranger or lf), broot for tree navigation, bat instead of cat, micro as the quick editor. These choices aren’t arbitrary—they’re selected for visual consistency (all support true color), modern UX patterns (intuitive keybindings), and interoperability (they play nicely with the shared color scheme).

Waybar configuration demonstrates the attention to detail in making components communicate:

{
  "layer": "top",
  "modules-left": ["hyprland/workspaces", "hyprland/window"],
  "modules-center": ["clock"],
  "modules-right": ["pulseaudio", "network", "battery"],
  "hyprland/workspaces": {
    "format": "{icon}",
    "on-click": "activate",
    "format-icons": {
      "1": "",
      "2": "",
      "3": "",
      "urgent": "",
      "active": "",
      "default": ""
    }
  },
  "clock": {
    "format": "{:%H:%M}",
    "format-alt": "{:%Y-%m-%d}",
    "tooltip-format": "<tt><small>{calendar}</small></tt>",
    "on-click-right": "kitty --class floating -e calcurse"
  }
}

Notice the hyprland/workspaces module using Nerd Font icons that match the cyberpunk aesthetic, and the clock spawning a floating Kitty terminal with calcurse for calendar management. Every interaction stays within the themed ecosystem—no jarring transitions to unstyled GTK applications.

The shell integration uses Starship with a custom preset that prioritizes information density without clutter. The prompt shows git status, language versions, and execution time, but renders them with the cybrcolors palette and carefully chosen symbols that maintain the cyberpunk vibe without sacrificing readability. This is harder than it sounds—many themed prompts prioritize aesthetics over function, becoming unusable in real work scenarios.

Gotcha

The ecosystem’s ambition is also its Achilles’ heel. Several critical components remain works-in-progress: Neovim theming isn’t complete, Firefox styling is missing, and GTK application theming is still in development. For a daily driver setup, these gaps matter. You’ll have beautifully themed terminal applications sitting alongside stock-looking web browsers and file pickers, breaking the immersion.

The Arch Linux and Hyprland dependencies create real portability issues. Hyprland’s configuration syntax is incompatible with other Wayland compositors, so you can’t easily migrate to Sway or River. The installation scripts assume AUR access and specific package names from Arch repositories. If you’re on Fedora, Ubuntu, or NixOS, expect significant manual translation work. The README mentions this limitation but doesn’t provide migration guides.

Maintenance burden is non-trivial. With 10+ separate repositories under cybrcore, keeping everything synchronized requires discipline. If cybrcolors updates its palette, you theoretically need to update every dependent repository. While this modular approach enables flexibility, it also means you’re tracking multiple repos instead of a single dotfiles directory. The lack of automated update tooling means you’re manually checking each component for updates.

Verdict

Use if: You’re running Arch Linux with Hyprland, want a cohesive cyberpunk-themed desktop without weeks of manual theming work, appreciate terminal-centric workflows with modern TUI tools, and don’t mind some rough edges in GUI application theming. The modular architecture makes it excellent for cherry-picking individual themes (grab just the Waybar config or Rofi setup) even if you don’t want the full stack. Perfect for enthusiasts who enjoy tinkering and value aesthetic consistency across their development environment. Skip if: You need production-ready, fully-polished theming for all applications immediately, use a different window manager or distribution without time to adapt configs, prefer minimal or traditional desktop aesthetics over cyberpunk styling, or want a single-repo dotfiles setup with simpler maintenance. Also skip if you rely heavily on GUI applications—the incomplete GTK/Firefox theming will frustrate you.

// ADD TO YOUR README
[![Featured on Starlog](https://starlog.is/api/badge/developer-tools/cybrcore-cybrdots.svg)](https://starlog.is/api/badge-click/developer-tools/cybrcore-cybrdots)