BlackNode uses two rofi interfaces: bn-menu (icon + text hub) and sidebars (icon-only right panels). Both use Material You colours generated by matugen.
All themes are modular. No standalone themes exist.
~/.config/rofi/
├── colors.rasi ← M3 token palette (47 vars)
├── menu.rasi ← bn-menu theme (440x640, centred, search bar)
├── submenu.rasi ← bn-menu submenu theme (380px, 6 lines)
├── shared/
│ ├── config.rasi ← base configuration
│ ├── menu.rasi ← sidebar bundle (colors + config + sidebar)
│ ├── sidebar.rasi ← 100px east panel, icon-only, feather font
│ ├── list.rasi ← centred list dialog, 440px, 28px radius
│ ├── input-dialog.rasi← centred input dialog, 420px, 24px radius
│ └── dialog.rasi ← generic dialog
└── styles/ ← per-feature themes importing from shared/
├── wifi-list.rasi
├── bluetooth-list.rasi
├── notes-list.rasi
├── search-list.rasi
├── audio-list.rasi
├── notes-input.rasi
├── search-input.rasi
├── notifications-list.rasi
└── kb-layout.rasi
Rules:
- Every
-list.rasiimportsshared/list.rasiwith no width/font/padding/lines overrides. - Every
-input.rasiimportsshared/input-dialog.rasiwith no overrides. - Sidebars use
shared/menu.rasi+-theme-str "listview { lines: N; }". No per-menu.rasifiles for main sidebars. - Icons in sidebar data:
" "— icon + single trailing space, no leading space. - Icons in bn-menu items:
" System"— icon + double space + label.
Trigger: SUPER + SPACE. Opens a centred 440x640 window with 16 items:
| Item | Script |
|---|---|
| System | system/menu.sh |
| Audio | audio/menu.sh |
| Display | display/menu.sh |
| Window | window/menu.sh |
| Screenshot | screenshot/menu.sh |
| Processes | process/menu.sh |
| Packages | package/menu.sh |
| Applications | apps/menu.sh |
| Wallpapers | wallpaper/menu.sh |
| Waybar | waybar/menu.sh |
| Reload | reload/menu.sh |
| Services | services/menu.sh |
| Theme | theme/menu.sh |
| About | info/menu.sh |
| Session | session/menu.sh |
| Bluetooth | bluetooth/menu.sh |
Each opens a submenu using submenu.rasi (centred, 380px, 6 lines).
Icon-only panels, 100px wide, right edge of screen. Triggered by keybinds:
| Script | Keybind | Action |
|---|---|---|
wifi.sh |
SUPER + A |
Wi-Fi scan, connect, saved networks |
bluetooth.sh |
SUPER + B |
Bluetooth power, scan, devices |
audio.sh |
SUPER + SHIFT + A |
Recently played (album art), audio apps |
notes.sh |
SUPER + SHIFT + N |
New note, view notes, open folder |
search.sh |
SUPER + SHIFT + F |
File, web, text, recent search |
kb-layout.sh |
SUPER + SHIFT + K |
Keyboard layout toggle (us/es) |
notifications.sh |
SUPER + N |
Notification history, clear, pause |
config-hud.sh |
SUPER + SHIFT + I |
Live Hyprland overrides |
Sub-actions open centred dialogs styled with shared/list.rasi.
scripts/config-hud.sh writes to settings/overrides.lua and calls hyprctl reload. Categories:
- Animations: on/off
- Visuals: blur, shadow, dim
- Layout: gaps in/out, border width
- Rounding: window corner radius (0–20px)
State is cached in ~/.cache/blacknode/hud-state.
All live in ~/.config/rofi/scripts/. They are executable and use #!/usr/bin/env bash.