bitzdots
gitlabLean Hyprland dotfiles with automatic matugen theming. Low-end optimized, full-stack auto-coloring, 26 Jinja2 templates. Rofi-powered menus, waybar modules, screenshot/recording, event-driven cache daemon.
https://gitlab.com/bitzzdev/bitzdots.git- Shell49.9%
- CSS17.4%
- Python12.3%
- Lua8.4%
- GLSL6.1%
[!WARNING] Repository Renaming Notice: This repository will be renamed to DEVdots soon.
bitzdots is a lean, automated theming system for Hyprland on Wayland. Change your wallpaper and every component, including the status bar, terminal, launcher, notifications, logout screen, audio visualizer, and Qt/KDE apps, adapts to match.
Built for low-end hardware without sacrificing usability. The full stack (Hyprland + waybar + swaync) idles under 300MB RAM, with aggressive CPU optimizations to keep fans quiet on older machines.
Features
- Full-stack auto-theming: One wallpaper change propagates to 20+ components via matugen M3 color extraction (waybar, kitty, rofi, swaync, wlogout, cava, Hyprland borders, Qt/KDE, GTK, and browser CSS).
- Event-driven cache daemon: inotify-based background pre-generation keeps wallpaper switching fast.
- Live wallpaper support: Static images with animated transitions (
awww) and video wallpapers (mpvpaper) use automatic palette extraction. - 26 templates: Every themed component, including launcher, power, wallpaper-grid themes, and eight SVG icons, uses a template.
- Rofi-powered menus: The app launcher, clipboard manager (cliphist), power menu, wallpaper picker, WiFi, Bluetooth, audio, system monitor, and Quick Shelf styling are keyboard-navigable.
- Waybar with 16 modules: Workspace display, CPU animation, media, Quick Shelf, recording indicator, brightness, power profiles, notifications, and system TUIs.
- Screen recording: wf-recorder supports full-screen and region recording with audio and organized output directories.
- Screenshots with clipboard: Fullscreen and selection screenshots both save and copy to the clipboard.
- Fish shell and fastfetch: The shell stays quiet and fastfetch shows the custom BITZ logo on startup.
- Safe theme switching: Every matugen run creates a backup and restores the previous theme if generation fails.
- Wallpaper cache daemon: inotify watches wallpaper directories and pre-generates palettes.
- Multi-distro installer: Automated setup supports Arch, Fedora, Debian/Ubuntu, and NixOS with
--with-deps.
Quick Start
git clone https://github.com/bitzzdev/bitzdots.git ~/.config/bitzdots
cd ~/.config/bitzdots
chmod +x install.sh
# Link configs only:
./install.sh
# Or link configs + install all system packages:
./install.sh --with-deps
See the Getting Started guide for a full walkthrough.
Keybindings at a Glance
| Key | Action |
|---|---|
SUPER + T | Open terminal |
SUPER + Q | Close window |
SUPER + Space | App launcher (rofi) |
SUPER + V | Clipboard history |
SUPER + SHIFT + S | Selection screenshot |
Print | Fullscreen screenshot |
SUPER + R | Toggle screen recording |
SUPER + SHIFT + W | Wallpaper picker |
SUPER + N | Toggle notifications |
SUPER + P | Power menu |
SUPER + L | Lock screen |
Full reference: docs/keybindings.md
Documentation
| Guide | Description |
|---|---|
| Getting Started | First-time setup, recommended config |
| Installation | Detailed install per distro, manual steps |
| Features | Complete feature breakdown |
| Keybindings | All keyboard shortcuts |
| Waybar Modules | Every module explained |
| Theming | How matugen works, templates |
| Scripts | All utility scripts documented |
| Performance | Low-end optimization guide |
| Customization | Add new components, modify themes |
| DEVos Aliases | Arch Linux dev shortcuts & pacman aliases |
| FAQ | Common issues and solutions |
Directory Structure
~/.config/
├── hypr/ # Hyprland (Lua config)
│ ├── hyprland.lua # Entry point
│ ├── keybinds.lua # 55+ keybinds
│ ├── appearance.lua # Blur, opacity, borders
│ ├── animations.lua # Window animations
│ ├── rules.lua # 20+ window rules
│ ├── monitors.lua # Monitor setup
│ ├── input.lua # Keyboard, mouse, touchpad
│ └── autostart.lua # Startup applications
├── waybar/ # Status bar
│ ├── config.jsonc # Module layout (themed, 15 modules)
│ ├── style.css # Styling (themed)
│ └── scripts/ # 17 custom scripts
├── rofi/ # App launcher & menus
│ ├── themes/ # 27 variants
│ ├── icons/ # 8 themed SVG icons
│ ├── scripts/ # Power, clipboard, wallpaper
│ └── config.rasi # Main config
├── swaync/ # Notification center
├── wlogout/ # Logout screen
├── kitty/ # Terminal (themed)
├── cava/ # Audio visualizer (themed)
├── matugen/ # Theming engine (26 templates)
├── quick/shelf/ # Generated Quick Shelf palette lives in ~/.config/quick/shelf
├── fish/ # Fish shell config
├── fastfetch/ # System fetch (custom logo)
└── scripts/ # 10 utility scripts
Performance
bitzdots is engineered for low-resource environments:
| Metric | Value |
|---|---|
| Idle RAM (full stack) | ~250-300MB |
| Waybar CPU | ~3.5% idle |
| Compositor | Hyprland (~170MB) |
| Notification daemon | swaync (~85MB) |
| Status bar | waybar (~60MB) |
Optimization strategies are documented in Performance.
Theming Pipeline
Wallpaper image
↓ matugen (Material 3 palette extraction)
Material 3 & base16 color schemes
↓ 26 templates
Config files for every component (20+ files)
↓ reload-theme.sh
All apps pick up new colors instantly
Quick Shelf (qs) Integration
bitzdots integrates Quick Shelf (quickShelf), a mouse-enabled terminal shelf and Waybar popup widget by bitzzdev:
- 1:1 Default Aspect Ratio: Centered square floating geometry (
640x640) matching bitzdots aesthetics. - Bento & List Views: Tile card bento box and vertical list formats, toggled with
vordev shelf view. - Thumbnails & App Logos: Half-block terminal graphics and Nerd Font badges loaded for both formats.
- App Shortcuts: Quick-launch pinned apps or search and add installed applications with
a. - External Drag-and-Drop: Drag images or app shortcuts directly into external apps (Discord, GIMP, browser) with
xor middle-click. - Waybar Module & Keybinding: Shows item count with click-to-toggle on the bar or via
SUPER + D. - Shell Command Alias: Use
qsordev shelfdirectly from the shell.
To install or update the precompiled release binary:
dev shelf update
When updated, any running instance is automatically refreshed with a desktop notification.
Requirements
- Hyprland (Wayland compositor)
- matugen: Material 3 color palette generator
- inotify-tools: Required by the cache daemon
- Nerd Font: Provides icons, JetBrainsMono is recommended
- GTK 3 and gdk-pixbuf: for image metadata and clipboard integration
Environment Variables
XDG_CONFIG_HOME: user configuration directory (defaults to~/.config)XDG_DATA_HOME: user data directory (defaults to~/.local/share)XDG_RUNTIME_DIR: runtime socket directory (defaults to/run/user/<UID>or/tmp)WALLPAPER_DIR: directory containing wallpaper images (defaults to~/Pictures/Wallpapers)
Supported Distros
Arch Linux (including Arch-based), Fedora, Debian/Ubuntu, NixOS.
Philosophy
- Low-end first: Every watt and megabyte matters. Scripts are optimized for minimal CPU and RAM, not convenience.
- Theme automatically: One wallpaper change updates everything. No manual color picking.
- Safe by default: Every theme generation creates a backup. A failure won't leave broken configs.
- Keyboard-driven: Everything is within reach of the home row. The mouse is optional.
- No bloat: Every component earns its place. There are no unused default configs or unnecessary dependencies.
License
MIT