
* feat: Add notification status indicator to waybar Adds a visual indicator in the waybar to show when notifications are silenced (do-not-disturb mode). - Shows a red dot when notifications are disabled - Shows a dimmed dot when notifications are enabled - Clicking the indicator toggles do-not-disturb mode - Syncs with the existing SUPER+CTRL+, keyboard shortcut This provides immediate visual feedback about notification status, making it easier for users to know when they've silenced notifications. * feat: Convert to unified status cluster that only shows active states - Only displays indicators when states are actually active - Supports multiple status types: DND, night light, screen recording, idle lock - Uses distinct symbols: • for DND, ◐ for night light, ● for recording, ◯ for idle lock - Completely hides module when no states are active (no visual clutter) - Extensible design for future status indicators - Improved performance with better error handling * Implement lightweight hybrid status monitoring * Enhance notification status cluster with modular design * Add waybar configuration for status cluster * Add recording click handler and fix process detection - Add wl-screenrec detection for non-nvidia systems - Add click handler to start/stop recording - Fix idle lock toggle functionality * minor alignment tweaks * improved recording detection to be more specific * Rely on Omarchy bin in PATH and lower interval to feel more snappy * Seperate out screencording stop so it doesn't start when trying to stop OBS * Add migration to add the status notifications --------- Co-authored-by: David Heinemeier Hansson <david@hey.com>
178 lines
4.3 KiB
JSON
178 lines
4.3 KiB
JSON
{
|
|
"reload_style_on_change": true,
|
|
"layer": "top",
|
|
"position": "top",
|
|
"spacing": 0,
|
|
"height": 26,
|
|
"modules-left": [
|
|
"custom/omarchy",
|
|
"hyprland/workspaces"
|
|
],
|
|
"modules-center": [
|
|
"group/status-cluster",
|
|
"clock",
|
|
"custom/update"
|
|
],
|
|
"modules-right": [
|
|
"group/tray-expander",
|
|
"bluetooth",
|
|
"network",
|
|
"pulseaudio",
|
|
"cpu",
|
|
"battery"
|
|
],
|
|
"hyprland/workspaces": {
|
|
"on-click": "activate",
|
|
"format": "{icon}",
|
|
"format-icons": {
|
|
"default": "",
|
|
"1": "1",
|
|
"2": "2",
|
|
"3": "3",
|
|
"4": "4",
|
|
"5": "5",
|
|
"6": "6",
|
|
"7": "7",
|
|
"8": "8",
|
|
"9": "9",
|
|
"active": ""
|
|
},
|
|
"persistent-workspaces": {
|
|
"1": [],
|
|
"2": [],
|
|
"3": [],
|
|
"4": [],
|
|
"5": []
|
|
}
|
|
},
|
|
"custom/omarchy": {
|
|
"format": "",
|
|
"on-click": "omarchy-menu",
|
|
"tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space"
|
|
},
|
|
"custom/update": {
|
|
"format": "",
|
|
"exec": "omarchy-update-available",
|
|
"on-click": "alacritty --class Omarchy --title Omarchy -e omarchy-update",
|
|
"tooltip-format": "Omarchy update available",
|
|
"interval": 3600
|
|
},
|
|
|
|
"cpu": {
|
|
"interval": 5,
|
|
"format": "",
|
|
"on-click": "alacritty -e btop"
|
|
},
|
|
"clock": {
|
|
"format": "{:%A %H:%M}",
|
|
"format-alt": "{:%d %B W%V %Y}",
|
|
"tooltip": false,
|
|
"on-click-right": "omarchy-cmd-tzupdate"
|
|
},
|
|
"network": {
|
|
"format-icons": ["","","","",""],
|
|
"format" : "{icon}",
|
|
"format-wifi" : "{icon}",
|
|
"format-ethernet" : "",
|
|
"format-disconnected" : "",
|
|
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
|
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
|
"tooltip-format-disconnected": "Disconnected",
|
|
"interval": 3,
|
|
"nospacing": 1,
|
|
"on-click": "alacritty --class=Impala -e impala"
|
|
},
|
|
"battery": {
|
|
"format": "{capacity}% {icon}",
|
|
"format-discharging": "{icon}",
|
|
"format-charging": "{icon}",
|
|
"format-plugged": "",
|
|
"format-icons": {
|
|
"charging": [
|
|
"", "", "", "", "", "", "", "", "", ""
|
|
],
|
|
"default": [
|
|
"", "", "", "", "", "", "", "", "", ""
|
|
]
|
|
},
|
|
"format-full": "",
|
|
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
|
|
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
|
|
"interval": 5,
|
|
"states": {
|
|
"warning": 20,
|
|
"critical": 10
|
|
}
|
|
},
|
|
"bluetooth": {
|
|
"format": "",
|
|
"format-disabled": "",
|
|
"format-connected": "",
|
|
"tooltip-format": "Devices connected: {num_connections}",
|
|
"on-click": "blueberry"
|
|
},
|
|
"pulseaudio": {
|
|
"format": "{icon}",
|
|
"on-click": "alacritty --class=Wiremix -e wiremix",
|
|
"on-click-right": "pamixer -t",
|
|
"tooltip-format": "Playing at {volume}%",
|
|
"scroll-step": 5,
|
|
"format-muted": "",
|
|
"format-icons": {
|
|
"default": ["", "", ""]
|
|
}
|
|
},
|
|
"group/tray-expander": {
|
|
"orientation": "inherit",
|
|
"drawer": {
|
|
"transition-duration": 600,
|
|
"children-class": "tray-group-item"
|
|
},
|
|
"modules": [
|
|
"custom/expand-icon",
|
|
"tray"
|
|
]
|
|
},
|
|
"group/status-cluster": {
|
|
"orientation": "inherit",
|
|
"modules": [
|
|
"custom/status-dnd",
|
|
"custom/status-nightlight",
|
|
"custom/status-recording",
|
|
"custom/status-idle"
|
|
]
|
|
},
|
|
"custom/status-dnd": {
|
|
"exec": "omarchy-status-daemon dnd",
|
|
"return-type": "json",
|
|
"interval": 1,
|
|
"on-click": "makoctl mode -t do-not-disturb"
|
|
},
|
|
"custom/status-nightlight": {
|
|
"exec": "omarchy-status-daemon nightlight",
|
|
"return-type": "json",
|
|
"interval": 1,
|
|
"on-click": "omarchy-toggle-nightlight"
|
|
},
|
|
"custom/status-recording": {
|
|
"exec": "omarchy-status-daemon recording",
|
|
"return-type": "json",
|
|
"interval": 1,
|
|
"on-click": "omarchy-cmd-screenrecord-stop"
|
|
},
|
|
"custom/status-idle": {
|
|
"exec": "omarchy-status-daemon idle",
|
|
"return-type": "json",
|
|
"interval": 1,
|
|
"on-click": "omarchy-toggle-idle"
|
|
},
|
|
"custom/expand-icon": {
|
|
"format": " ",
|
|
"tooltip": false
|
|
},
|
|
"tray": {
|
|
"icon-size": 12,
|
|
"spacing": 12
|
|
}
|
|
}
|