All checks were successful
Check / eval (push) Successful in 2m59s
Item 28 color-only accessibility sweep. Swept every Waybar status indicator for shape/glyph redundancy: all already carry non-color distinction (updates shows a count + self-hides; vpn/doctor/nightlight/ recording self-gate; battery/idle/muted are glyph-distinct) except the swaync notification module — its `inhibited-*` states reused the normal bells (/), so an app-inhibited (suppressed) state was distinguished from a normal one by color alone. Route every suppressed state (DND + inhibited) to the bell-off glyph + @muted, so "notifications are off right now" reads by SHAPE. Applied to the generated bar and all four whole-swaps (summer-day/night use their own bell-off glyph; executive-slate/boreal use ) — parity rule. Reuses the glyph DND already ships, so no new codepoint / tofu risk. Verified: V0 (flake check --no-build; 4 jsoncs valid JSON) + V1 (built homeConfigurations.nomarchy.activationPackage — the built config has inhibited-* = U+F009B and style.css routes .inhibited-* → @muted). V3 pending: live inhibited-state render with an app holding an inhibitor (HARDWARE-QUEUE). MEMORY gains the "status is never color-only" invariant. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
178 lines
4.3 KiB
JSON
178 lines
4.3 KiB
JSON
{
|
|
"margin-top": 8,
|
|
"margin-left": 14,
|
|
"margin-right": 14,
|
|
"margin-bottom": 0,
|
|
"height": 38,
|
|
"layer": "bottom",
|
|
"position": "top",
|
|
"spacing": 4,
|
|
"reload_style_on_change": true,
|
|
"modules-left": [
|
|
"custom/nomarchy",
|
|
"clock",
|
|
"clock#date"
|
|
],
|
|
"modules-center": [
|
|
"hyprland/workspaces"
|
|
],
|
|
"modules-right": [
|
|
"custom/recording",
|
|
"custom/updates",
|
|
"custom/doctor",
|
|
"idle_inhibitor",
|
|
"custom/nightlight",
|
|
"hyprland/language",
|
|
"custom/vpn",
|
|
"pulseaudio",
|
|
"battery",
|
|
"custom/powerprofile",
|
|
"tray",
|
|
"custom/notification",
|
|
"custom/powermenu"
|
|
],
|
|
"custom/nomarchy": {
|
|
"interval": "once",
|
|
"format": "",
|
|
"on-click": "nomarchy-menu",
|
|
"tooltip-format": "Nomarchy menu"
|
|
},
|
|
"clock": {
|
|
"format": "{:%H:%M}",
|
|
"on-click": "nomarchy-calendar",
|
|
"tooltip": true,
|
|
"tooltip-format": "{:%Z (UTC%z)}\n<tt><small>{calendar}</small></tt>"
|
|
},
|
|
"clock#date": {
|
|
"format": "{:%a %d %b}",
|
|
"tooltip": false
|
|
},
|
|
"hyprland/workspaces": {
|
|
"disable-scroll": true,
|
|
"all-outputs": true,
|
|
"on-click": "activate",
|
|
"on-scroll-up": "hyprctl dispatch workspace r+1",
|
|
"on-scroll-down": "hyprctl dispatch workspace r-1"
|
|
},
|
|
"custom/recording": {
|
|
"return-type": "json",
|
|
"interval": 10,
|
|
"signal": 8,
|
|
"exec": "nomarchy-record status",
|
|
"on-click": "nomarchy-record stop"
|
|
},
|
|
"custom/updates": {
|
|
"return-type": "json",
|
|
"interval": 1800,
|
|
"signal": 9,
|
|
"exec": "nomarchy-updates status",
|
|
"on-click": "sh -c '$TERMINAL -e nomarchy-updates upgrade'"
|
|
},
|
|
"custom/doctor": {
|
|
"return-type": "json",
|
|
"interval": 300,
|
|
"exec": "nomarchy-doctor-status",
|
|
"on-click": "nomarchy-menu doctor"
|
|
},
|
|
"idle_inhibitor": {
|
|
"format": "{icon}",
|
|
"format-icons": {
|
|
"activated": " ",
|
|
"deactivated": " "
|
|
}
|
|
},
|
|
"custom/nightlight": {
|
|
"return-type": "json",
|
|
"interval": 3,
|
|
"exec": "nomarchy-nightlight status",
|
|
"on-click": "nomarchy-nightlight toggle"
|
|
},
|
|
"hyprland/language": {
|
|
"format": "<span size='13pt'></span> {short}",
|
|
"tooltip": false
|
|
},
|
|
"custom/vpn": {
|
|
"return-type": "json",
|
|
"interval": 5,
|
|
"exec": "nomarchy-vpn-status",
|
|
"on-click": "nomarchy-vpn"
|
|
},
|
|
"pulseaudio": {
|
|
"scroll-step": 5,
|
|
"format": "<span size='13pt'>{icon}</span> {volume}%",
|
|
"format-bluetooth": "<span size='13pt'>{icon}</span> {volume}%",
|
|
"format-bluetooth-muted": " {icon}",
|
|
"format-muted": "<span size='13pt'></span> muted",
|
|
"format-icons": {
|
|
"headphone": "",
|
|
"hands-free": "",
|
|
"headset": "",
|
|
"phone": "",
|
|
"portable": "",
|
|
"car": "",
|
|
"default": [
|
|
"",
|
|
"",
|
|
""
|
|
]
|
|
},
|
|
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
|
|
"on-click-right": "pwvucontrol",
|
|
"tooltip-format": "{desc} | {volume}%"
|
|
},
|
|
"battery": {
|
|
"interval": 30,
|
|
"states": {
|
|
"warning": 25,
|
|
"critical": 10
|
|
},
|
|
"format": "<span size='13pt'>{icon}</span> {capacity}%",
|
|
"format-charging": "<span size='13pt'></span> {capacity}%",
|
|
"format-plugged": "<span size='13pt'></span> {capacity}%",
|
|
"format-icons": [
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
""
|
|
],
|
|
"on-click": "nomarchy-menu powermgmt",
|
|
"tooltip-format": "Battery status"
|
|
},
|
|
"custom/powerprofile": {
|
|
"return-type": "json",
|
|
"interval": 5,
|
|
"exec": "nomarchy-powerprofile-status",
|
|
"on-click": "nomarchy-menu powermgmt"
|
|
},
|
|
"tray": {
|
|
"icon-size": 15,
|
|
"spacing": 10
|
|
},
|
|
"custom/notification": {
|
|
"format": "{icon}",
|
|
"return-type": "json",
|
|
"exec": "swaync-client -swb",
|
|
"exec-if": "which swaync-client",
|
|
"escape": true,
|
|
"tooltip": true,
|
|
"on-click": "swaync-client -t -sw",
|
|
"on-click-right": "swaync-client -d -sw",
|
|
"format-icons": {
|
|
"none": "",
|
|
"notification": "",
|
|
"dnd-none": "",
|
|
"dnd-notification": "",
|
|
"inhibited-none": "",
|
|
"inhibited-notification": "",
|
|
"dnd-inhibited-none": "",
|
|
"dnd-inhibited-notification": ""
|
|
}
|
|
},
|
|
"custom/powermenu": {
|
|
"format": "",
|
|
"on-click": "nomarchy-menu power",
|
|
"tooltip": false
|
|
}
|
|
}
|