feat(waybar): #63 generated bar logo + powermenu
Some checks failed
Check / eval (push) Has been cancelled

Add custom/nomarchy (left, Nomarchy monogram → nomarchy-menu) and
custom/powermenu (right → nomarchy-menu power) to the generated bar so
default-theme users match whole-swap affordances. Pin font-family:
Nomarchy; use literal UTF-8 glyphs (Nix has no \u escapes).

Verified: V2 (THEME=tokyo-night theme-shot — monogram + power glyph).
Close #63.
This commit is contained in:
Bernardo Magri
2026-07-10 08:38:45 +01:00
parent c962d07841
commit a504f35b41
3 changed files with 42 additions and 10 deletions

View File

@@ -95,12 +95,6 @@ the WiFi card.” Does **not** rewrite the flake unless a later `--apply`
is explicitly designed. Cost: extract script + package + man/README is explicitly designed. Cost: extract script + package + man/README
pointer; V0V1. pointer; V0V1.
### 63. Generated Waybar: identity-bar affordances (powermenu + logo)
Whole-swap bars ship `custom/powermenu` and a left logo → main menu; the
generated `waybar.nix` bar has neither. Optional parity add for
default-theme users. Cost: small waybar.nix + CSS; **parity rule:**
whole-swaps must get the same modules if added. V1 + visual V2.
## LATER ## LATER
- **Wallpapers artifact split** (ROADMAP § Faster switches — decided, - **Wallpapers artifact split** (ROADMAP § Faster switches — decided,

View File

@@ -17,6 +17,18 @@ Template:
--- ---
## 2026-07-10 — #63 generated Waybar logo + powermenu
- **Task:** NEXT #63 — reverse parity: generated bar lacked whole-swap
logo → menu and power icon → power menu.
- **Did:** `custom/nomarchy` (left, Nomarchy.ttf U+F000) + `custom/powermenu`
(right, U+F011 → `nomarchy-menu power`) in generated settings/style.
Fixed Nix `\uf000` pitfall (no `\u` escapes — use literal UTF-8).
Whole-swaps already had both; no JSON/CSS edits. Closed #63.
- **Verified:** **V2**`THEME=tokyo-night` theme-shot: left monogram N,
right power glyph, accent styling; config modules-left/right correct.
Crop paths under `/tmp/theme-shot-tn2-*.png`.
- **Next suggestion:** product path #55 fingerprint menu (or #57 live install).
## 2026-07-10 — #60 name-agnostic system-battery scan ## 2026-07-10 — #60 name-agnostic system-battery scan
- **Task:** NEXT #60 — align charge-limit / menu / waybar / doctor / - **Task:** NEXT #60 — align charge-limit / menu / waybar / doctor /
installer chassis with battery-notifys type=Battery + !scope=Device installer chassis with battery-notifys type=Battery + !scope=Device

View File

@@ -166,11 +166,28 @@ let
# home-manager switch restyles the running bar without a restart. # home-manager switch restyles the running bar without a restart.
reload_style_on_change = true; reload_style_on_change = true;
modules-left = [ "hyprland/workspaces" "hyprland/window" ]; # Logo + powermenu: whole-swaps already ship these (parity was reverse
# — BACKLOG #63). Click targets are existing nomarchy-menu entry points.
modules-left = [ "custom/nomarchy" "hyprland/workspaces" "hyprland/window" ];
modules-center = [ "clock" ]; modules-center = [ "clock" ];
modules-right = [ "custom/recording" "idle_inhibitor" "tray" "custom/vpn" "pulseaudio" "custom/powerprofile" "custom/nightlight" ] modules-right = [ "custom/recording" "idle_inhibitor" "tray" "custom/vpn" "pulseaudio" "custom/powerprofile" "custom/nightlight" ]
++ lib.optional showLanguage "hyprland/language" ++ lib.optional showLanguage "hyprland/language"
++ [ "battery" "custom/doctor" "custom/updates" "custom/notification" ]; ++ [ "battery" "custom/doctor" "custom/updates" "custom/notification" "custom/powermenu" ];
"custom/nomarchy" = {
interval = "once";
# U+F000 — Nomarchy monogram (literal UTF-8; Nix has no \u escapes).
# CSS pins font-family: Nomarchy so Nerd Fonts' glass glyph does not win.
format = "";
on-click = "nomarchy-menu";
tooltip-format = "Nomarchy menu";
};
"custom/powermenu" = {
format = ""; # U+F011 power symbol
on-click = "nomarchy-menu power";
tooltip = false;
};
"hyprland/workspaces" = { "hyprland/workspaces" = {
format = "{icon}"; format = "{icon}";
@@ -385,10 +402,19 @@ let
font-weight: bold; font-weight: bold;
} }
#tray, #pulseaudio, #custom-powerprofile, #custom-nightlight, #custom-updates, #custom-vpn, #custom-recording, #idle_inhibitor, #language, #battery, #custom-doctor, #custom-notification { #custom-nomarchy {
color: @accent;
font-family: Nomarchy;
font-size: ${toString (t.fonts.size + 4)}pt;
padding: 0 10px;
}
#custom-nomarchy:hover { color: @accentAlt; }
#tray, #pulseaudio, #custom-powerprofile, #custom-nightlight, #custom-updates, #custom-vpn, #custom-recording, #idle_inhibitor, #language, #battery, #custom-doctor, #custom-notification, #custom-powermenu {
color: alpha(@text, 0.85); color: alpha(@text, 0.85);
padding: 0 10px; padding: 0 10px;
} }
#custom-powermenu:hover { color: @bad; }
/* Group rhythm (item 28c): a wider breath before each functional /* Group rhythm (item 28c): a wider breath before each functional
group of the right cluster media/stats · toggles · status group of the right cluster media/stats · toggles · status
@@ -420,7 +446,7 @@ let
(size+2)pt Pango icon span the icon+text modules use bump their (size+2)pt Pango icon span the icon+text modules use bump their
font-size to match, or these glyphs read smaller than the volume / font-size to match, or these glyphs read smaller than the volume /
battery / language icons beside them. */ battery / language icons beside them. */
#custom-recording, #custom-updates, #custom-vpn, #custom-nightlight, #custom-doctor, #custom-notification { font-size: ${toString (t.fonts.size + 2)}pt; } #custom-recording, #custom-updates, #custom-vpn, #custom-nightlight, #custom-doctor, #custom-notification, #custom-powermenu { font-size: ${toString (t.fonts.size + 2)}pt; }
/* The speedometer + caffeine glyphs render small in their em box /* The speedometer + caffeine glyphs render small in their em box
size them up a touch more so they read at a glance. */ size them up a touch more so they read at a glance. */