SwayNotificationCenter: a GTK4 notification daemon for wlroots compositors
A simple GTK based notification daemon for any Wayland compositor
At a glance
- What is it?
- SwayNotificationCenter (swaync) is a Vala notification daemon and control center for Wayland desktops that implement wlr_layer_shell_unstable_v1. It ships distro packages, a JSON config, a CSS theme file and a swaync-client CLI, but it does not support third-party GTK3 themes.
- Who is it for?
- Adopt SwayNotificationCenter if you run Sway, Hyprland or another wlroots-based compositor and want grouped notifications, inline replies and a control center panel that third-party GTK3 themes cannot style. Do not adopt it on a compositor without wlr_layer_shell_unstable_v1, or if you depend on a GTK3 theme.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 99 days ago.
- What is it written in?
- Mainly Vala, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What SwayNotificationCenter solves and who it is for
Wayland compositors do not ship a notification server. Applications send desktop notifications over D-Bus, and something has to own the org.freedesktop.Notifications name and draw the popups. SwayNotificationCenter is that something for wlroots-based sessions. The README describes it as "a simple notification daemon with a GTK gui for notifications and the control center", and the repository topics list sway, swaywm, wayland and wlroots alongside gtk4 and libadwaita.
The audience is narrow and specific. If you run Sway, Hyprland or another compositor built on wlroots, swaync fits. The README states plainly that it "only supports Desktops / Window Managers that support wlr_layer_shell_unstable_v1 like Sway or anything wlroots based". GNOME and KDE already have their own notification servers, so swaync is not aimed at them. It is for people who assemble a desktop from a compositor, a bar and a launcher, and who want the notification layer to be configurable rather than fixed.
How the daemon, the panel and swaync-client fit together
Three pieces make up the project. The daemon, started as swaync, registers as the session notification server and renders popups on a layer surface. The control center is a panel that lists previous notifications, and the README lists widgets that can be added, removed and reordered: Title, Do Not Disturb, Notifications, Label, Calendar, Mpris, a menubar with dropdown and buttons, a button grid, a PulseAudio volume slider and a backlight slider. The Notifications widget is the exception: it "will always be visible".
swaync-client is the control surface. The Sway Usage section shows it toggling the panel from a keybinding, and the feature list credits it with hot-reloading the config and selecting the preferred monitor. Because it is a command, bars and scripts can drive the panel without touching the daemon's internals.
Configuration is split by concern. A JSON file holds basic settings, and a CSS file holds appearance. The README warns that swaync "does not support third-party GTK3 themes and is only tested with the default GTK Adwaita theme", adding that other themes "might require extra tweaks to the default CSS style file". That is a real constraint, not a footnote. If your desktop's look depends on a GTK3 theme, you are editing CSS rather than inheriting it.
Installing SwayNotificationCenter and toggling the panel for the first time
The README lists packages for Alpine, Arch, Fedora (via COPR), Fedora Silverblue and other rpm-ostree variants, Gentoo (an unofficial ebuild in GURU), openSUSE Tumbleweed, Ubuntu, Debian, Guix, rde and Void. On Arch the command is a single package install:
sudo pacman -S swayncOn Ubuntu Lunar and later, and Debian Bookworm and later, the package name differs from the binary name:
sudo apt install sway-notification-centerIf no package exists for your distribution, the README lists build dependencies including vala >= 0.56, meson, blueprint-compiler, gtk4, gtk4-layer-shell, libadwaita and granite7, then gives the Meson sequence:
meson setup build --prefix=/usr
meson compile -C build
meson install -C buildStarting the daemon is one command. The README notes you should "remember to kill any other notification daemon before running":
swayncTo bind the panel in Sway, the README gives this configuration, where -t toggles and -sw appears alongside it:
exec swaync
bindsym $mod+Shift+n exec swaync-client -t -swAfter that, sending a notification from any application should produce a popup, and pressing the keybinding should open the control center with the notification listed.
Where SwayNotificationCenter is the wrong choice
The layer shell requirement is the first filter. A compositor that does not implement wlr_layer_shell_unstable_v1 cannot host the panel, and the README does not offer a fallback mode. That rules out GNOME and KDE sessions, which have their own servers anyway.
The theme limitation is the second. Testing only against Adwaita means a third-party GTK3 theme is unsupported territory. The README's phrasing, "might require extra tweaks", understates the work: you are maintaining a CSS file against a project that changes it. That is a recurring cost, not a one-time edit.
The planned feature list is short, and it contains one item: "Slick animations". Read that as a statement about priorities. The project targets correctness and configurability of the notification layer, not motion design.
Finally, running two notification daemons at once is a known conflict. The README's instruction to kill any other daemon before starting swaync is the only guidance it gives on the subject; it does not document automatic takeover or a warning when the D-Bus name is already owned.
SwayNotificationCenter compared with mako and dunst
mako and dunst are the two names people search alongside swaync, and the difference is scope. Both are notification daemons for Wayland sessions that render popups and are configured through a text file. Neither ships a control center panel with a calendar, an MPRIS widget, a volume slider and a backlight slider, and neither exposes a client command for toggling a panel or hot-reloading configuration.
That extra surface is the trade. swaync depends on GTK4, libadwaita and granite7, and it draws a full panel, so it carries more dependencies and more configuration files than a popup-only daemon. If all you want is notifications appearing in a corner, a smaller daemon does that with less installed weight. If you want a clickable history, media controls and inline replies in the same window, swaync is the one of the three that provides them.
Maintenance, packaging and the GPL-3.0 licence
The last push to the default branch was on 2026-06-25, and the most recent release listed is v0.12.6 from 2026-03-23, following v0.12.5 and v0.12.4 (titled "Bug and performance fixes"). The repository is not archived. The release cadence visible here is patch-level work rather than a rewrite.
The upgrade cost depends on your distribution. Arch, openSUSE Tumbleweed, Void, Alpine, Ubuntu and Debian carry packages, so upgrades arrive with the rest of the system. Fedora users go through the COPR repository, and Fedora Silverblue users layer the package onto the base image with rpm-ostree, which means an upgrade requires a new deployment rather than a simple package swap. Gentoo users pull from GURU, described in the README as an unofficial ebuild, so its maintenance is not the project's responsibility.
SwayNotificationCenter is GPL-3.0. For desktop users this changes nothing. If you intend to redistribute a modified build, the licence terms apply, and the repository carries a COPYING file. This is not legal advice; read the licence text if redistribution is planned.
Editorial conclusion
Adopt SwayNotificationCenter if you run Sway, Hyprland or another wlroots-based compositor and want grouped notifications, inline replies and a control center panel that third-party GTK3 themes cannot style. Do not adopt it on a compositor without wlr_layer_shell_unstable_v1, or if you depend on a GTK3 theme. Before committing, verify that the Adwaita theme is acceptable, that your distro package matches the v0.12.6 release, and that no other notification daemon is running, because two daemons on the same session bus conflict.
Frequently asked questions
What is SwayNotificationCenter?
It is a notification daemon with a GTK GUI for notifications and a control center, written in Vala. The README states it only supports desktops and window managers that implement wlr_layer_shell_unstable_v1, such as Sway or anything wlroots based.
How does SwayNotificationCenter compare with mako?
The README does not mention mako. What it does document is a control center panel with widgets for notifications, a calendar, MPRIS media controls, a volume slider and a backlight slider, plus a swaync-client command for toggling the panel and hot-reloading config. A popup-only daemon would not carry that panel surface.
How does SwayNotificationCenter compare with dunst?
The README does not mention dunst either. The features it lists include grouped notifications, inline replies, a panel to view previous notifications, notification action filtering and Do Not Disturb, all configured through a JSON config file and a CSS style file. Whether dunst covers the same ground is not something the repository states.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/erikreider-swaynotificationcenter)