Installation
Noctalia is available on the following distributions. Choose your platform below, or use the manual installation method on another Linux distribution.
- Arch Linux
- NixOS
- Fedora
- openSUSE
- Gentoo
- Void Linux
- GNU Guix
- Debian (including Ubuntu)
You can also install manually on any other Linux distribution.
Already using Noctalia Shell v4?
Noctalia v5 is a fresh install, not an automatic upgrade from the Quickshell-based v4 implementation. Its package and configuration files are separate, so both versions can be installed at the same time on most distributions, but v4 settings are not migrated.
Only your compositor keybinds need attention. Update any bindings that launch the Noctalia launcher, panels, settings UI, or other commands when switching between versions.
Arch Linux
Section titled “Arch Linux”Using AUR (Recommended)
Section titled “Using AUR (Recommended)”The simplest way to install Noctalia on Arch Linux is through the Arch User Repository (AUR). This method installs the shell system-wide and handles dependencies automatically.
Please replace with your AUR helper of choice.
paru -S noctaliagit clone https://aur.archlinux.org/noctalia-gitcd noctalia-gitmakepkg -isFedora
Section titled “Fedora”Noctalia is available from the default repos for Fedora 44 and up.
Step 1: Install noctalia
sudo dnf install noctaliaAn alternate version using git snapshots is available from the LionHeartP Copr repository.
Step 1: Enable the repository
sudo dnf copr enable lionheartp/HyprlandStep 2: Install noctalia
sudo dnf install noctalia-gitopenSUSE
Section titled “openSUSE”Noctalia is available via home:neifua:Noctalia repository on the openSUSE Build Service.
Step 1: Add the OBS repository
sudo zypper addrepo --refresh --name noctalia-v5 https://download.opensuse.org/repositories/home:neifua:Noctalia/openSUSE_Tumbleweed/home:neifua:Noctalia.reposudo zypper addrepo --refresh --name noctalia-v5 https://download.opensuse.org/repositories/home:neifua:Noctalia/openSUSE_Slowroll/home:neifua:Noctalia.repoStep 2: Refresh and install noctalia:
sudo zypper refreshsudo zypper install noctaliasudo zypper refreshsudo zypper install noctalia-gitGentoo
Section titled “Gentoo”Noctalia is available in the GURU overlay.
Step 1: Enable and sync the overlay as read in Project:GURU/Information_for_End_Users.
Step 2: Unmask the gui-apps/noctalia package:
gui-apps/noctalia **Step 3: (Optional) Mask the live ebuild to use versioned releases
<=gui-apps/noctalia-9999Step 4: Emerge the package:
emerge --ask gui-apps/noctaliaVoid Linux
Section titled “Void Linux”Noctalia is available through a custom XBPS repository.
Step 1: Add the repository source
echo "repository=https://repo.voiders.dev" | sudo tee /etc/xbps.d/10-voiders-community.confStep 2: Sync and install Noctalia
sudo xbps-install -Ssudo xbps-install noctaliaAlternative: Build from source using xbps-src
Section titled “Alternative: Build from source using xbps-src”# Install git, wgetsudo xbps-install git wget
# Set up the Void packages treegit clone --depth 1 https://github.com/void-linux/void-packages.gitcd void-packages./xbps-src binary-bootstrap
# Copy Noctalia build templatesmkdir srcpkgs/noctaliawget https://git.voiders.dev/voiders-community/repository/raw/branch/main/pkgs/noctalia/template -P srcpkgs/noctalia/
# Build the packages./xbps-src pkg noctalia
# Install the built packagessudo xbps-install --repository=hostdir/binpkgs noctaliaGNU Guix
Section titled “GNU Guix”The Git repository of Noctalia is also available as a Guix channel. It provides a (noctalia) module with the noctalia-git package.
(channel (name 'noctalia) (url "https://github.com/noctalia-dev/noctalia") (branch "main"))To use this channel, add it into your ~/.config/guix/channels.scm. For example:
(list (channel (name 'noctalia) (url "https://github.com/noctalia-dev/noctalia") (branch "main")) %default-guix-channel)After updating channels via guix pull, Noctalia will be available to your Guix installation. Then you’re free to do what you want with the noctalia-git package ;-)
For example, spawn one-off software environment via guix shell:
guix shell noctalia-gitinstall it into your user profile via guix package:
guix install noctalia-gitdeclare it in your home environment (...s are placeholders for your existing configuration):
(use-modules (noctalia) ...)
(home-environment (packages (list noctalia-git ...)) ...)or whole-system configuration:
(use-modules (noctalia) ...)
(operating-system (packages (list noctalia-git ...)) ...)Debian
Section titled “Debian”Noctalia provides an APT repository for Debian-based distributions.
Step 1: Install the repository signing key
wget https://pkg.noctalia.dev/deb/nickh-archive-keyring.deb && sudo dpkg -i nickh-archive-keyring.debStep 2: Add the repository
sudo wget -O /etc/apt/sources.list.d/noctalia-trixie.sources https://pkg.noctalia.dev/deb/noctalia-trixie.sourcessudo wget -O /etc/apt/sources.list.d/noctalia-unstable.sources https://pkg.noctalia.dev/deb/noctalia-unstable.sourcessudo wget -O /etc/apt/sources.list.d/noctalia-resolute.sources https://pkg.noctalia.dev/deb/noctalia-resolute.sourcesStep 3: Install noctalia
sudo apt updatesudo apt install noctaliaManual Installation
Section titled “Manual Installation”If you prefer to install Noctalia locally or want more control over the installation process, you can install it manually to your user configuration directory. This method works on any Linux distribution.
Step 1: Sync and install dependencies
sudo pacman -S meson gcc just \ wayland wayland-protocols \ libglvnd freetype2 fontconfig \ cairo pango harfbuzz \ libxkbcommon glib2 \ libsecret libsodium \ sdbus-cpp libpipewire wireplumber polkit \ pam curl libwebp libjxl libsndfile librsvg \ libqalculate libxml2 \ md4c tomlplusplus \ nlohmann-json stb \ jemallocsudo dnf install meson gcc-c++ just \ wayland-devel wayland-protocols-devel \ libEGL-devel mesa-libGLES-devel \ freetype-devel fontconfig-devel \ cairo-devel pango-devel harfbuzz-devel \ libxkbcommon-devel glib2-devel \ libsecret-devel libsodium-devel \ sdbus-cpp-devel pipewire-devel wireplumber-devel \ pam-devel polkit-devel libcurl-devel libwebp-devel libjxl-devel libsndfile-devel librsvg2-devel \ libqalculate-devel libxml2-devel \ md4c-devel tomlplusplus-devel \ json-devel stb_image_resize2-devel stb_image_write-devel \ jemalloc-develsudo apt install meson g++ just \ libwayland-dev wayland-protocols \ libegl-dev libgles-dev \ libfreetype-dev libfontconfig-dev \ libcairo2-dev libpango1.0-dev libharfbuzz-dev \ libxkbcommon-dev libglib2.0-dev \ libsecret-1-dev libsodium-dev \ libsdbus-c++-dev libpipewire-0.3-dev libwireplumber-0.5-dev \ libpam0g-dev libpolkit-agent-1-dev libpolkit-gobject-1-dev \ libcurl4-openssl-dev libwebp-dev libjxl-dev libsndfile1-dev librsvg2-dev \ libqalculate-dev libxml2-dev \ libmd4c-dev libtomlplusplus-dev \ nlohmann-json3-dev libstb-dev \ libjemalloc-dev gitVendored dependencies, with no system package needed: Wuffs,
Luau, fzy, and Material Color Utilities.
System packages required beyond the Wayland/GL stack: libwebp handles WebP decoding and thumbnail encoding,
libjxl handles JPEG XL decoding, libsndfile decodes shell sound effects (WAV, FLAC, Ogg/Vorbis, Opus, MP3, and
AIFF), and Wuffs handles the other supported raster image formats.
Polkit agent support requires development files that provide the polkit-agent-1 and polkit-gobject-1 pkg-config
modules. Some distros ship these in the runtime polkit package, while split-package distros use names such as
polkit-devel, polkit-dev, or libpolkit-agent-1-dev / libpolkit-gobject-1-dev.
Optional: installing jemalloc (Fedora: jemalloc-devel, Arch: jemalloc, Debian/Ubuntu: libjemalloc-dev, Void:
jemalloc) reduces memory fragmentation in long-running sessions. On glibc systems it is used automatically when
detected. Use Meson’s -Djemalloc=enabled or -Djemalloc=disabled option to require or disable it explicitly.
Sanitizer runtime packages are only needed for ASan/UBSan builds configured with just configure asan.
Step 2: Prepare directory
git clone https://github.com/noctalia-dev/noctalia --branch maincd noctaliaStep 3: Building and installing Noctalia
# Optimized release build in build-release/just configure releasejust build release
# Install the selected build mode. This does not build or reconfigure.sudo just install releasePass a prefix to configure to install somewhere other than /usr/local:
just configure release "$HOME/.local"just build releasejust install releaseTo remove files installed from a build directory, run just uninstall release.
# Debug build in build-debug/ for local development and troubleshooting.just configurejust build
# Test your local debug build withjust runMeson installs the binary and shipped assets using the normal prefix layout:
/usr/local/bin/noctalia/usr/local/share/noctalia/assets/...Noctalia needs the shipped assets/ tree at runtime. Copying only the noctalia binary is not enough.
Portable bundle layouts are also supported:
bundle/ noctalia assets/bundle/ bin/noctalia share/noctalia/assets/See CONTRIBUTING.md for the full runtime asset lookup order.
Getting Help
Section titled “Getting Help”If you encounter issues during installation:
- Check our FAQ for common problems
- Visit our GitHub Issues page
- Join our community on Discord for real-time support