CLI tool
noctalia-dev/noctalia avatar
noctalia-dev/noctalia

Noctalia: a C++ Wayland desktop shell that replaces the bar, launcher, lock screen and notification daemon with one program

A sleek, customizable desktop shell crafted for Wayland. Wayland Compositor Support Noctalia supports Wayland compositors that provide the layer-shell protocols it needs for shell surfaces.

12,041 stars995 forksC++MIT

At a glance

What is it?
noctalia-dev/noctalia is an MIT-licensed desktop shell for Wayland written in C++ on OpenGL ES, with no Qt or GTK. It supplies the shell layer around a compositor and deliberately leaves window management and ordinary applications to others.
Who is it for?
Noctalia fits a Linux user who already runs a layer-shell Wayland compositor such as Niri, Hyprland or Sway and wants the bar, launcher, notifications and lock screen from one consistent program. It does not fit anyone who wants a full desktop environment, a window manager, or guaranteed integration on a compositor outside the named list.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • noctalia-dev/noctalia12,041 ★ · +2,993
Star history
Repository2026-07-282026-11-14
noctalia-dev/noctalia9k12k

2,993 Stars in the last 109 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

One program owns the surfaces that a typical Wayland setup splits across separate tools

The project's argument is that a Wayland setup usually combines a bar, a launcher, a notification daemon, a lock screen, a wallpaper daemon and scripts for session actions, each with its own configuration format. Noctalia provides all of those surfaces: bars, widgets, a dock, a launcher, a control center, notifications with history, wallpaper, a lock screen, session actions, clipboard history, OSDs, tray integration and desktop widgets.

The consequence is a trade. You get one visual style and one configuration model, and you give up the ability to swap individual pieces for the tool you prefer. If you like a particular launcher or notification daemon, you would be replacing it, not mixing it in. The stated goal is a desktop with fewer moving parts.

No Qt or GTK means the rendering and UI toolkit are the project's own

Noctalia is built directly on Wayland and OpenGL ES, and the README states it has no Qt or GTK dependency. The primary language is C++, and the build file justfile sets the C++ standard to c++23. Rendering, configuration and the IPC model are designed together instead of being assembled from unrelated panels.

This keeps the dependency set away from the two big toolkits. Styling goes through Noctalia's own theme and palette support, which the project says includes template application. The ARCHITECTURE.md file describes the design and its invariants and is the place to read before changing rendering code.

Compositor support depends on layer-shell, and other compositors may get reduced integration

Noctalia supports Wayland compositors that provide the layer-shell protocols it needs for shell surfaces. Workspace integration uses compositor-native backends where needed, or ext-workspace-v1 on compositors that implement it. The named integrations are Niri, Hyprland, Sway, Scroll, Mango, Labwc and dwl, along with other compatible compositors.

Other compositors may run Noctalia but can have reduced workspace, window, output or session-action integration, depending on the protocols and IPC they expose. Layer-shell is the requirement for the shell surfaces, so before installing, check which protocols your compositor implements, and expect gaps on anything not in the named list.

It is a shell, not a desktop environment, and the scope file lists what it declines

The README says plainly that Noctalia is a desktop shell, not a full desktop environment. Window management, compositor configuration and standalone desktop applications belong elsewhere, and non-essential features live in plugins. A SCOPE.md file records what the project takes on and what it declines.

So a feature request outside the shell layer can be answered with a plugin or a different tool. You still need a compositor, a file manager, a terminal and every other application you use. If you are coming from a full desktop environment, plan for those pieces yourself. The scope statement is also a useful filter before opening an issue, since it tells you what the maintainers will not add.

Configuration is TOML with hot reload, and the GUI writes overrides on top

The configuration format is TOML with hot reload, GUI-managed overrides, theme and palette support, template application and IPC for runtime control. A ready-to-use starting file with all defaults is example.toml at the repository root, and the full reference sits on the documentation site at docs.noctalia.dev. The source MDX files are in docs/user/, and tools/sync-docs.sh syncs them to a local docs checkout.

The mention of GUI-managed overrides means settings you change in the interface are kept separately from your hand-written file. When a value does not behave as you wrote it, look for an override before assuming the file was ignored. Start from example.toml, change one value at a time and rely on hot reload to see the result.

Building from source uses Meson and just, and install steps live in separate files

The README does not carry install commands. It sends you to BUILDING.md for dependencies, distro-specific package commands, build modes and install layouts, and to PACKAGING.md for distro packagers. The repository also holds meson.build, meson_options.txt, a justfile, flake.nix, default.nix and a nix directory.

The justfile defines configure, build, run and test recipes. Its default mode is debug with a build-debug directory and a /usr/local prefix, a release mode adds link-time optimization, and an asan mode enables the address and undefined behavior sanitizers. Debug is the default, so a build without arguments is not the optimized one. Ask for release mode when you want the version you will actually use every day.

Releases arrive within days of each other, so pin the tag you tested

The recent releases are v5.3.0 on 2026-10-15, v5.4.0 on 2026-10-26 and v5.4.1 on 2026-10-29. The last push was on 2026-11-02 and the repository is not archived. Three releases in two weeks is a fast cadence for something that controls your lock screen and session actions.

A shell that owns the lock screen deserves a deliberate upgrade path. Note the version you run, read what changed between tags before you update, and keep a second way into your session, such as a TTY, in case a new build misbehaves. Version and package details for your distribution are in PACKAGING.md, and contribution rules are in CONTRIBUTING.md.

Editorial conclusion

Noctalia fits a Linux user who already runs a layer-shell Wayland compositor such as Niri, Hyprland or Sway and wants the bar, launcher, notifications and lock screen from one consistent program. It does not fit anyone who wants a full desktop environment, a window manager, or guaranteed integration on a compositor outside the named list. Before switching, check that your compositor exposes layer-shell and decide whether to run a tagged v5 release or build main.

Frequently asked questions

What is Noctalia?

Noctalia is a native Wayland desktop shell written in C++ that provides bars, a dock, a launcher, notifications, a lock screen, wallpaper and other shell surfaces. It is built on Wayland and OpenGL ES with no Qt or GTK dependency.

How do I install Noctalia?

The README points to BUILDING.md for source dependencies, distro-specific package commands and build modes, and PACKAGING.md for packagers. An installation page is also linked on docs.noctalia.dev.

How do I access Noctalia settings?

Settings are TOML with hot reload and GUI-managed overrides. A starting file with all defaults is example.toml, and the full reference is on the documentation site.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/noctalia-dev-noctalia.svg)](https://hysenlabs.com/projects/noctalia-dev-noctalia)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/noctalia-dev-noctalia.svg)](https://hysenlabs.com/projects/noctalia-dev-noctalia)

Was this useful?