A sleek and minimal desktop shell thoughtfully crafted for Wayland.
  • C++ 98.2%
  • Python 0.4%
  • Meson 0.4%
  • Shell 0.4%
  • Emacs Lisp 0.2%
  • Other 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
MA Dingjie d0e88fb572
fix(settings): stop inflating tiled settings buffers past compositor size (#3978)
* fix(settings): stop inflating tiled settings buffers past compositor size

Tiled and portrait outputs could configure the settings toplevel below our
min_size hint; clampToMinSize then grew the local buffer without resizing
the window, which cropped the UI until the next configure. Keep the
compositor configure size authoritative and cap portrait min_size hints to
the same short-edge budget used for the default open size.

Co-authored-by: Cursor <cursoragent@cursor.com>

* cleanup

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Lemmy <studio@quadbyte.net>
2026-08-16 11:29:25 -04:00
.github refactor(calendar): replace custom iCalendar parser with libical (#3636) 2026-07-30 08:17:51 -04:00
assets chore(i18n): arabic push/pull from json 2026-08-16 11:01:27 -04:00
nix feat(nix): bundle shell completions to be picked up by nixos/hm (#3880) 2026-08-12 11:00:35 -04:00
protocols feat(wayland): include monitor serial number in output description 2026-08-02 20:25:44 +01:00
src fix(settings): stop inflating tiled settings buffers past compositor size (#3978) 2026-08-16 11:29:25 -04:00
tests fix(launcher): resolve executable paths for app origin detection 2026-08-16 16:14:58 +02:00
third_party refactor(audio): replace vendored dr_wav with system libsndfile 2026-07-29 22:42:15 -04:00
tools chore: cleanup a few noctalia-shell => noctalia 2026-07-12 23:20:18 -04:00
.clang-format chore(clang-format): BreakBeforeBinaryOperators: NonAssignment 2026-05-24 16:47:30 -04:00
.clang-tidy style: uppercase float literal suffixes for readability-uppercase-literal-suffix 2026-08-03 22:10:12 -04:00
.gitignore chore(git): don't ignore "noctalia", binary is not place here anyways 2026-07-12 21:50:07 -04:00
BUILDING.md chore(docs): extract source build guide from readme 2026-08-15 14:42:49 -04:00
CONTRIBUTING.md chore(docs): extract source build guide from readme 2026-08-15 14:42:49 -04:00
CREDITS.md chore(docs): add libical in CREDITS & CONTRIBUTING 2026-07-30 08:27:43 -04:00
default.nix nix: add nixos module for noctalia (#3024) 2026-06-19 12:05:18 -04:00
example.toml feat(notifications): support selective dnd bypass. Fix #3936 2026-08-15 18:52:02 -04:00
flake.lock chore(flake): update flake.lock 2026-08-16 00:19:10 +00:00
flake.nix chore(flake): update deprecated xz tarball to zst tarball, format 2026-08-10 08:08:21 +02:00
justfile chore(build): share production objects across test targets 2026-07-27 00:55:11 -04:00
lefthook.yml chore(lefthook): test clang format 2026-04-04 08:58:28 -04:00
LICENSE chore: license and credits 2026-04-27 08:56:08 -04:00
meson.build fix(network): support WPA3 SAE connections (#3949) 2026-08-15 22:42:20 -04:00
meson_options.txt build(meson): make native CPU optimizations opt-in 2026-07-16 14:57:47 -04:00
noctalia.scm noctalia.scm: Add libsecret and libsodium dependencies. (#3738) 2026-08-01 08:52:37 -04:00
PACKAGING.md chore(docs): extract source build guide from readme 2026-08-15 14:42:49 -04:00
README.md chore(docs): extract source build guide from readme 2026-08-15 14:42:49 -04:00

Noctalia

Noctalia is a native Wayland desktop shell for people who want a polished, configurable Linux desktop without stitching together a separate bar, launcher, notification daemon, lock screen, wallpaper tool, and settings UI.

It provides the shell layer around your compositor: bars, widgets, dock, launcher, control center, notifications, wallpaper, lock screen, session actions, clipboard history, OSDs, tray integration, and desktop widgets. The project is built directly on Wayland and OpenGL ES with no Qt or GTK dependency, so the UI, rendering, configuration, and IPC model are designed as one cohesive shell instead of a collection of unrelated panels and scripts.

Important

Noctalia v5 is currently in Beta. While the core features and architecture are stabilizing, you may still encounter occasional configuration or behavior adjustments as we prepare for the final release.


Noctalia Logo

Install Noctalia


Last commit GitHub stars Documentation Discord

Why Noctalia?

Most Wayland setups leave the desktop shell to a stack of small tools: one bar, another launcher, another notification daemon, a lock screen, a wallpaper daemon, scripts for session actions, and separate config formats for each piece. That can be flexible, but it also makes a complete desktop feel fragile and hard to keep visually consistent.

Noctalia solves that by providing one configurable shell layer that owns the common desktop surfaces and services while still fitting into compositor-driven Wayland workflows. It is meant for users who want the control of a custom desktop environment with fewer moving parts and a consistent UI.

To understand the values and philosophy guiding the project, read our ethos.

What It Includes

  • Multi-monitor bars with configurable widgets, taskbar, workspaces, system tray, media, network, battery, brightness, weather, clipboard, and custom script-backed widgets.
  • Dock, launcher, control center, notification toasts/history, wallpaper picker, OSD overlays, lock screen, session panel, and desktop widgets.
  • TOML configuration with hot reload, GUI-managed overrides, theme/palette support, template application, and IPC for runtime control.
  • Direct Wayland integration for layer-shell, session lock, idle behavior, clipboard, foreign toplevels, workspaces, fractional scaling, and compositor-specific workspace backends where needed.

Wayland Compositor Support

Noctalia supports Wayland compositors that provide the layer-shell protocols it needs for shell surfaces. Workspace integration works through compositor-native backends where needed, or through ext-workspace-v1 on compositors that implement it.

Current compositor integrations include Niri, Hyprland, Sway, Scroll, Mango, Labwc, Triad, dwl, and other compatible Wayland 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.

Scope

Noctalia is a desktop shell, not a full desktop environment. It provides the visual and service layer around your Wayland compositor: bars, panels, launcher, notifications, dock, lock screen, idle behavior, OSDs, theming, wallpapers, desktop widgets, and multi-monitor shell surfaces.

Window management, tiling, file management, removable-drive mounting, printers management and screen mirroring/casting belong to the compositor, dedicated desktop applications, or system services.

Display/login greeter support lives in the separate Noctalia Greeter project. Noctalia may integrate with those pieces when useful, but it does not replace them.

The plugin system is available for user-installed extensions. Features that are useful to some users but not essential to the core shell can live there: extra bar widgets, launcher providers, desktop widgets, panels, shortcuts, background services, compositor-specific extras, hardware-specific controls, and third-party service integrations.

Build from source

Source dependencies, distro-specific package commands, build modes, and install layouts live in BUILDING.md.

Configuration

A ready-to-use starting config with all defaults is at example.toml. The full configuration reference lives in the documentation site.

Contributing

Developer notes, architecture overview, code style, project layout, and debugging commands live in CONTRIBUTING.md.

Bug reports, fixes, documentation updates, themes, and configuration examples are welcome. For general help and design discussion, join the community on Discord.

Credits

Thank you to the contributors and community members who test Noctalia, report issues, share configurations, and help shape the project.

Donations

Donations are appreciated but completely optional.

Buy Me a Coffee Ko-fi

License

MIT License. See LICENSE for details.

Packaging

Distro packaging notes (description, deps, install layout, Meson options) live in PACKAGING.md.

Star History

Star History