Do Not Disturb Widget Configuration#
A widget that allows you to monitor and toggle Windows Focus Assist (Do Not Disturb) directly from your status bar. Works natively on Windows 10 and Windows 11 via the undocumented QuietHoursSettings COM API.
| Option | Type | Default | Description |
|---|---|---|---|
label |
str |
"{icon}" |
The primary text shown on the widget. |
label_alt |
str |
"{icon} {status}" |
The alternate text shown after calling the toggle_label callback. |
class_name |
str |
"" |
A custom CSS class added to the widget container. |
tooltip |
bool |
true |
Whether to show the status tooltip on hover. |
default_active_mode |
str |
"priority" |
The mode that will be activated when toggling from "disabled". Valid options: "priority" or "alarms". |
callbacks |
dict |
See below | Custom mouse actions mapped to widget functions. |
icons |
dict |
See below | A dictionary mapping statuses to font/icon strings. |
Icons Options#
The icons option accepts the following keys. All keys are optional, the values shown are the defaults.
icons:
disabled: "\uf0f3"
priority: "\uf186"
alarms: "\uf1f6"
Callbacks#
The callbacks option maps mouse buttons (on_left, on_middle, on_right) to actions. All keys are optional, the values shown are the defaults.
callbacks:
on_left: "toggle_status"
on_middle: "do_nothing"
on_right: "cycle_status"
Available actions:
toggle_label- Toggles betweenlabelandlabel_alt.toggle_status- Toggles between "disabled" and the most recent active restricted mode ("priority" or "alarms").cycle_status- Cycles the mode sequentially:disabled->priority->alarms->disabled.do_nothing- Do nothing.exec <command>- Run a command, for exampleexec cmd.exe /c start ms-settings:network.
Label Placeholders#
The label and label_alt options support the following placeholders:
| Placeholder | Output Example | Description |
|---|---|---|
{icon} |
\uf0f3 |
The icon corresponding to the current state. |
{status} |
disabled, priority, or alarms |
The string identifier of the current state. |
Example Configuration#
dnd:
type: "yasb.dnd.DndWidget"
options:
label: "{icon}"
label_alt: "{icon} {status}"
default_active_mode: "priority"
callbacks:
on_left: "toggle_status"
on_right: "cycle_status"
icons:
disabled: "\uf0f3"
priority: "\uf186"
alarms: "\uf1f6"
Description of Options#
- label: The primary text shown on the widget. You can use placeholders like
{icon}and{status}. - label_alt: The alternate text shown after calling the
toggle_labelcallback. - class_name: Additional CSS class name for the widget container. This allows for custom styling.
- tooltip: Whether to show the tooltip on hover.
- default_active_mode: The mode that will be activated when toggling from "disabled" for the first time. Valid options are
"priority"or"alarms". On Windows 11, priority is the default one. - callbacks: Mouse event callbacks. See Callbacks.
- icons: A dictionary mapping statuses to font/icon strings. It contains:
- disabled: Icon displayed when Do Not Disturb is disabled.
- priority: Icon displayed when "Priority Only" is active.
- alarms: Icon displayed when "Alarms Only" is active.
Note
On Windows 11, the native Do Not Disturb toggle button in the taskbar only switches between disabled (Off) and priority (On). The alarms state is typically only activated via Windows Settings or by using the cycle_status callback in this widget.
Style#
.dnd-widget {}
.dnd-widget .widget-container {}
.dnd-widget .widget-container .label {}
.dnd-widget .widget-container .label.alt {}
.dnd-widget .widget-container .icon {}
/* Status classes */
.dnd-widget .widget-container .label.status-disabled {}
.dnd-widget .widget-container .label.status-priority {}
.dnd-widget .widget-container .label.status-alarms {}
.dnd-widget .widget-container .icon.status-disabled {}
.dnd-widget .widget-container .icon.status-priority {}
.dnd-widget .widget-container .icon.status-alarms {}
Example Style#
.dnd-widget {
padding: 0 8px;
}
.dnd-widget .icon {
font-size: 14px;
margin-right: 6px;
}
.dnd-widget .label {
font-size: 13px;
color: #e0e0e0;
}
/* Disabled - Green */
.dnd-widget .icon.status-disabled {
color: #a6e3a1;
}
.dnd-widget .label.status-disabled {
color: #a6e3a1;
}
/* Priority Only - Yellow */
.dnd-widget .icon.status-priority {
color: #f9e2af;
}
.dnd-widget .label.status-priority {
color: #f9e2af;
}
/* Alarms Only - Red */
.dnd-widget .icon.status-alarms {
color: #f38ba8;
}
.dnd-widget .label.status-alarms {
color: #f38ba8;
}