feat(dnd): swaync Do-Not-Disturb toggle + Waybar bell indicator
Adds a Do-Not-Disturb story on top of swaync: - Waybar `custom/notification` module via `swaync-client -swb` — streams the notification count + DND state (no polling). Left-click toggles the panel, right-click toggles DND; bell-off glyph + muted color when DND is on, accent when notifications are waiting. - `nomarchy-menu dnd` toggle in the root picker and bound to SUPER+CTRL+D (so it shows in the SUPER+? cheatsheet). Turning DND off confirms with a toast; turning it on is silent — notifications are suppressed and the bell-off icon is the cue. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -66,7 +66,7 @@ let
|
||||
|
||||
modules-left = [ "hyprland/workspaces" "hyprland/window" ];
|
||||
modules-center = [ "clock" ];
|
||||
modules-right = [ "tray" "pulseaudio" "network" "cpu" "memory" "custom/powerprofile" "battery" ];
|
||||
modules-right = [ "tray" "pulseaudio" "network" "cpu" "memory" "custom/powerprofile" "battery" "custom/notification" ];
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
@@ -118,6 +118,31 @@ let
|
||||
on-click = "${powerProfileCycle}";
|
||||
};
|
||||
|
||||
# swaync notification bell + Do-Not-Disturb state. `-swb` streams JSON
|
||||
# (text/tooltip/class) on every change, so it tracks count and DND with
|
||||
# no polling. Left-click toggles the panel; right-click toggles DND.
|
||||
# The `dnd-*` classes (bell-off glyph) are styled muted below.
|
||||
"custom/notification" = {
|
||||
exec = "swaync-client -swb";
|
||||
return-type = "json";
|
||||
exec-if = "which swaync-client";
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
none = "";
|
||||
notification = "";
|
||||
dnd-none = "";
|
||||
dnd-notification = "";
|
||||
inhibited-none = "";
|
||||
inhibited-notification = "";
|
||||
dnd-inhibited-none = "";
|
||||
dnd-inhibited-notification = "";
|
||||
};
|
||||
on-click = "swaync-client -t -sw";
|
||||
on-click-right = "swaync-client -d -sw";
|
||||
tooltip = true;
|
||||
escape = true;
|
||||
};
|
||||
|
||||
tray.spacing = 8;
|
||||
};
|
||||
|
||||
@@ -164,11 +189,16 @@ let
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#tray, #pulseaudio, #network, #cpu, #memory, #custom-powerprofile, #battery {
|
||||
#tray, #pulseaudio, #network, #cpu, #memory, #custom-powerprofile, #battery, #custom-notification {
|
||||
color: @subtext;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
/* notifications waiting → accent; Do-Not-Disturb → muted bell-off */
|
||||
#custom-notification.notification { color: @accent; }
|
||||
#custom-notification.dnd-none,
|
||||
#custom-notification.dnd-notification { color: @muted; }
|
||||
|
||||
#pulseaudio.muted { color: @muted; }
|
||||
#battery.warning { color: @warn; }
|
||||
#battery.critical { color: @bad; }
|
||||
|
||||
Reference in New Issue
Block a user