A simple notification daemon with a GTK gui for notifications and the control center
- Keyboard shortcuts
- Notification body markup with image support
- A panel to view previous notifications
- Show album art for notifications like Spotify
- Do not disturb
- Click notification to execute default action
- Show alternative notification actions
- Customization through a CSS file
- Trackpad/mouse gesture to close notification
- The same features as any other basic notification daemon
- Basic configuration through a JSON config file
- Hot-reload config through
swaync-client
- Slick animations 😎
- Other build scripts than a PKGBUILD (debian and/or RHEL systems)
Arch: The package is available on the AUR:
Fedora: An unofficial build is available in copr:
dnf copr enable lexa/SwayNotificationCenter
dnf install SwayNotificationCenterOther:
meson build
ninja -C build
meson install -C build# Notification Daemon
exec swaync
# Toggle control center
bindsym $mod+Shift+n exec swaync-client -t -swTo start the daemon (remember to kill any other notification daemon before running)
./build/src/swayncTo toggle the panel
./build/src/swaync-client -tTo reload the config
./build/src/swaync-client -R- Up/Down: Navigate notifications
- Home: Navigate to the latest notification
- End: Navigate to the oldest notification
- Escape/Caps_Lock: Close notification panel
- Return: Execute default action or close notification if none
- Delete/BackSpace: Close notification
- Shift+C: Close all notifications
- Shift+D: Toggle Do Not Disturb
- Buttons 1-9: Execute alternative actions
The main config file is located in /etc/xdg/swaync/config.json. Copy it over
to your .config/swaync/ folder to customize without needing root access.
To reload the config, you'll need to run swaync-client --reload-config
positionX:left,rightorcenterpositionY:toporbottomtimeout: uint (Any positive number). The notification timeout for notifications with normal prioritytimeout-low: uint (any positive number without decimals). The notification timeout for notifications with low prioritytimeout-critical: uint (any positive number without decimals, 0 to disable). The notification timeout for notifications with critical prioritykeyboard-shortcuts:trueorfalse. If control center should use keyboard shortcutsimage-visibility:always,when-availableornever. Notification image visibliltytransition-time: uint (Any positive number, 0 to disable). The notification animation durationnotification-window-width: uint (Any positive number). Width of the notification in pixelshide-on-clear: bool. Hides the control center after pressing "Clear All"hide-on-action: bool. Hides the control center when clicking on notification actioncontrol-center-margin-top: uint (Any positive number, 0 to disable). The margin (in pixels) at the top of the notification centercontrol-center-margin-bottom: uint (Any positive number, 0 to disable). The margin (in pixels) at the bottom of the notification centercontrol-center-margin-right: uint (Any positive number, 0 to disable). The margin (in pixels) at the right of the notification centercontrol-center-margin-left: uint (Any positive number, 0 to disable). The margin (in pixels) at the left of the notification center
The main CSS style file is located in /etc/xdg/swaync/style.css. Copy it over to your .config/swaync/ folder to customize without needing root access.
This example requires NotoSansMono Nerd Font to get the icons looking right
Waybar config
"custom/notification": {
"tooltip": false,
"format": "{icon}",
"format-icons": {
"notification": "<span foreground='red'><sup></sup></span>",
"none": "",
"dnd-notification": "<span foreground='red'><sup></sup></span>",
"dnd-none": ""
},
"return-type": "json",
"exec-if": "which swaync-client",
"exec": "swaync-client -swb",
"on-click": "swaync-client -t -sw",
"on-click-right": "swaync-client -d -sw",
"escape": true
},Waybar css file
#custom-notification {
font-family: "NotoSansMono Nerd Font";
}I wonder how this would look with some blur 🤔

