From fcf883e827bc4c08383465ad3bc4a1bf5eb5899d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 20 Feb 2026 16:52:09 +0100 Subject: [PATCH] Add notification silencing indicator to waybar --- bin/omarchy-toggle-notification-silencing | 11 ++++++++++ config/waybar/config.jsonc | 8 ++++++- config/waybar/style.css | 6 +++-- default/hypr/bindings/utilities.conf | 2 +- .../indicators/notification-silencing.sh | 7 ++++++ migrations/1771602647.sh | 22 +++++++++++++++++++ 6 files changed, 52 insertions(+), 4 deletions(-) create mode 100755 bin/omarchy-toggle-notification-silencing create mode 100755 default/waybar/indicators/notification-silencing.sh create mode 100755 migrations/1771602647.sh diff --git a/bin/omarchy-toggle-notification-silencing b/bin/omarchy-toggle-notification-silencing new file mode 100755 index 00000000..eabbff13 --- /dev/null +++ b/bin/omarchy-toggle-notification-silencing @@ -0,0 +1,11 @@ +#!/bin/bash + +makoctl mode -t do-not-disturb + +if makoctl mode | grep -q 'do-not-disturb'; then + notify-send "Silenced notifications" +else + notify-send "Enabled notifications" +fi + +pkill -RTMIN+10 waybar diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index 5ec5ed3c..9049f00e 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -5,7 +5,7 @@ "spacing": 0, "height": 26, "modules-left": ["custom/omarchy", "hyprland/workspaces"], - "modules-center": ["clock", "custom/update", "custom/voxtype", "custom/screenrecording-indicator", "custom/idle-indicator"], + "modules-center": ["clock", "custom/update", "custom/voxtype", "custom/screenrecording-indicator", "custom/idle-indicator", "custom/notification-silencing-indicator"], "modules-right": [ "group/tray-expander", "bluetooth", @@ -148,6 +148,12 @@ "signal": 9, "return-type": "json" }, + "custom/notification-silencing-indicator": { + "on-click": "omarchy-toggle-notification-silencing", + "exec": "$OMARCHY_PATH/default/waybar/indicators/notification-silencing.sh", + "signal": 10, + "return-type": "json" + }, "custom/voxtype": { "exec": "omarchy-voxtype-status", "return-type": "json", diff --git a/config/waybar/style.css b/config/waybar/style.css index 45d5a6c3..4bbf0ddb 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -72,7 +72,8 @@ tooltip { } #custom-screenrecording-indicator, -#custom-idle-indicator { +#custom-idle-indicator, +#custom-notification-silencing-indicator { min-width: 12px; margin-left: 5px; margin-right: 0; @@ -84,7 +85,8 @@ tooltip { color: #a55555; } -#custom-idle-indicator.active { +#custom-idle-indicator.active, +#custom-notification-silencing-indicator.active { color: #a55555; } diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 86e1c808..a6f8a01f 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -18,7 +18,7 @@ bindd = SUPER SHIFT, BACKSPACE, Toggle workspace gaps, exec, omarchy-hyprland-wo # Notifications bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss bindd = SUPER SHIFT, COMMA, Dismiss all notifications, exec, makoctl dismiss --all -bindd = SUPER CTRL, COMMA, Toggle silencing notifications, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications" +bindd = SUPER CTRL, COMMA, Toggle silencing notifications, exec, omarchy-toggle-notification-silencing bindd = SUPER ALT, COMMA, Invoke last notification, exec, makoctl invoke bindd = SUPER SHIFT ALT, COMMA, Restore last notification, exec, makoctl restore diff --git a/default/waybar/indicators/notification-silencing.sh b/default/waybar/indicators/notification-silencing.sh new file mode 100755 index 00000000..d5a68276 --- /dev/null +++ b/default/waybar/indicators/notification-silencing.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if makoctl mode | grep -q 'do-not-disturb'; then + echo '{"text": "󰂛", "tooltip": "Notifications silenced", "class": "active"}' +else + echo '{"text": ""}' +fi diff --git a/migrations/1771602647.sh b/migrations/1771602647.sh new file mode 100755 index 00000000..fa880780 --- /dev/null +++ b/migrations/1771602647.sh @@ -0,0 +1,22 @@ +echo "Add notification silencing indicator to Waybar" + +STYLE_FILE=~/.config/waybar/style.css +CONFIG_FILE=~/.config/waybar/config.jsonc + +# Add notification-silencing-indicator to modules-center if not present +if ! grep -q "custom/notification-silencing-indicator" "$CONFIG_FILE"; then + sed -i 's/"custom\/idle-indicator"]/"custom\/idle-indicator", "custom\/notification-silencing-indicator"]/' "$CONFIG_FILE" + + sed -i '/"tray": {/i\ "custom/notification-silencing-indicator": {\n "on-click": "omarchy-toggle-notification-silencing",\n "exec": "$OMARCHY_PATH/default/waybar/indicators/notification-silencing.sh",\n "signal": 10,\n "return-type": "json"\n },' "$CONFIG_FILE" +fi + +# Add notification-silencing-indicator CSS if not present +if ! grep -q "#custom-notification-silencing-indicator" "$STYLE_FILE"; then + # Add to the shared indicator rule + sed -i 's/#custom-idle-indicator {/#custom-idle-indicator,\n#custom-notification-silencing-indicator {/' "$STYLE_FILE" + + # Add to the shared active color rule + sed -i 's/#custom-idle-indicator.active {/#custom-idle-indicator.active,\n#custom-notification-silencing-indicator.active {/' "$STYLE_FILE" +fi + +omarchy-restart-waybar