Skip to content

zhaleff/hyprdots

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

308 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

BlackNode Β· bn-menu

ScriptsΒ Β  ThemesΒ Β  M3Β Β  Matugen

Hello. This document explains the rofi menu system in BlackNode β€” what it is, how it is structured, and how to use it.

It covers two separate but complementary interfaces: bn-menu (the main hub with icon + text items) and rofi sidebars (icon-only panels on the right edge of the screen). Both pull colors from the same Material You palette generated automatically from your wallpaper via matugen.

Table of Contents

The Two Interfaces

Interface Access Style Lines / Items
bn-menu SUPER + SPACE Centered 440Γ—640 window, icon + text, search bar 15 items
Sidebars Keybinds (WiFi, BT, audio, etc.) 100px-wide right panel, icon-only, no search 3–6 items

Both use the same color tokens and the same shared theme files β€” the only difference is layout and content.

Theme Architecture

Everything is modular. No standalone themes.

~/.config/rofi/
β”œβ”€β”€ colors.rasi          ← M3 palette from matugen (47 tokens)
β”œβ”€β”€ menu.rasi            ← bn-menu theme (440Γ—640, centered, search)
β”œβ”€β”€ submenu.rasi         ← bn-menu submenu theme (380px, 6 lines)
β”œβ”€β”€ shared/
β”‚   β”œβ”€β”€ config.rasi      ← Base config (font, scrollbar, sidebar-mode)
β”‚   β”œβ”€β”€ menu.rasi        ← Sidebar bundle (imports colors + config + sidebar)
β”‚   β”œβ”€β”€ sidebar.rasi     ← Sidebar layout (100px east, icon-only, feather font)
β”‚   β”œβ”€β”€ list.rasi        ← Centered list dialog (440px, 28px radius, search)
β”‚   β”œβ”€β”€ input-dialog.rasi← Input dialog (420px, 24px radius)
β”‚   β”œβ”€β”€ dialog.rasi      ← Generic dialog
β”‚   └── grid.rasi        ← Grid layout
└── styles/              ← Per-feature themes importing from shared/
    β”œβ”€β”€ wifi-list.rasi       (6  lines, imports list.rasi)
    β”œβ”€β”€ bluetooth-list.rasi  (6  lines, imports list.rasi)
    β”œβ”€β”€ notes-list.rasi      (20 lines, imports list.rasi)
    β”œβ”€β”€ search-list.rasi     (20 lines, imports list.rasi)
    β”œβ”€β”€ audio-list.rasi      (46 lines, imports list.rasi)
    β”œβ”€β”€ notes-input.rasi     (10 lines, imports input-dialog.rasi)
    β”œβ”€β”€ search-input.rasi    (10 lines, imports input-dialog.rasi)
    β”œβ”€β”€ config-list.rasi     (wrapper for shared/list.rasi)
    └── ... legacy refactored themes

The rule: every -list.rasi imports shared/list.rasi with no width, font, padding, or lines overrides. Every -input.rasi imports shared/input-dialog.rasi the same way. Consistency is enforced.

Sidebar Scripts

All sidebars live in ~/.config/rofi/scripts/ and use the same pattern:

  • Icon-only menu in a 100px-wide right panel
  • Fat icons rendered in feather font (20px via element-text)
  • Items are single icons with a trailing space: "σ°…΄ " (no leading space)
  • Uses shared/menu.rasi with -theme-str "listview { lines: N; }"
Script Trigger Icons Description
wifi.sh SUPER + A 󰀂 σ°‡š σ°€ͺ/󰀨 σ°‹΅ Scan, saved, toggle, exit
bluetooth.sh SUPER + B σ°‚― σ°‚° σ°ͺ σ°‹΅ Power, scan, devices, exit
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
kb-layout.sh SUPER + SHIFT + K 󰌌 Keyboard layout toggle
config-hud.sh SUPER + SHIFT + I σ°₯ 󰑟 󰏘  Animations, visuals, layout, rounding

Each sidebar opens centered shared/list.rasi dialogs for sub-actions (selecting networks, picking notes, etc.).

Quick Config HUD

scripts/config-hud.sh is a live Hyprland settings panel that writes to settings/overrides.lua and reloads the compositor β€” no manual config file editing, no hyprctl keyword.

Category What It Toggles / Sets
σ°₯ Animations On / Off
󰑟 Visuals Blur (on/off), Shadow (on/off), Dim (0.3 / 0.0)
󰏘 Layout Gaps In (0–8px), Gaps Out (0–16px), Border (1–4px)
 Rounding Window rounding (0–20px)

State is cached in ~/.cache/blacknode/hud-state so changes persist across sessions. The overrides.lua file is loaded at the end of hyprland.lua via pcall(require, "settings/overrides").

bn-menu Submenus

bn-menu (~/.local/bin/bn-menu) launches 15 submenus from ~/.local/bin/scripts/*/menu.sh. Each submenu shows 6–8 items with icon + text in a centered 380px window using submenu.rasi.

Menu Script Items
ο’Ό System system/menu.sh System settings
󰓃 Audio audio/menu.sh Audio controls
󰍹 Display display/menu.sh Display settings
σ°–° Window window/menu.sh Window management
σ°Ή‘ Screenshot screenshot/menu.sh Screenshot tools
σ°₯° Processes process/menu.sh Process management
󰏗 Packages package/menu.sh Package management
ο’΅ Applications apps/menu.sh App launcher
σ°Έ‰ Wallpapers wallpaper/menu.sh Wallpaper selection
󰄉 Waybar waybar/menu.sh Bar styles
󰑐 Reload reload/menu.sh Config reload
σ±–« Services services/menu.sh Service management
󰌌 Theme theme/menu.sh Theme settings
σ°‹Ό About info/menu.sh Project info, stats, keybinds, README, dotfile browser
󰍃 Session session/menu.sh Session control
σ°‚― Bluetooth bluetooth/menu.sh Bluetooth management

Development Rules

When adding new features to this system, follow these rules:

  1. Sidebars use shared/menu.rasi with -theme-str "listview { lines: N; }". Do not create per-menu .rasi files.
  2. List menus use shared/list.rasi. No width/font/padding/lines overrides.
  3. Input dialogs use shared/input-dialog.rasi. No overrides.
  4. Icons in sidebar data strings follow "σ°…΄ " β€” icon immediately followed by a single trailing space, no leading space.
  5. bn-menu items use the same pattern: "ο’Ό System" β€” icon, double space, text label.
  6. If something repeats more than once, modularize it into shared/.
  7. No standalone themes. Every .rasi imports from shared/ and colors.rasi.
  8. Hyprland runtime changes go through settings/overrides.lua + hyprctl reload, never hyprctl keyword (Hyprland 0.55+ Lua).

β€” HollowSec

Releases

No releases published

Packages

 
 
 

Contributors