Skip to content

Building from source

Use this route when your distribution does not provide a Noctalia Greeter package. Install the build dependencies for your distribution, then build from a cloned Noctalia Greeter checkout.

Terminal window
sudo pacman -S --needed base-devel meson just \
greetd dbus \
wayland wayland-protocols wlroots0.20 libinput \
libglvnd freetype2 fontconfig \
cairo pango harfbuzz \
libxkbcommon glib2 \
tomlplusplus nlohmann-json stb \
libwebp libjxl librsvg libxml2
Terminal window
sudo dnf install meson gcc-c++ just \
greetd dbus \
wayland-devel wayland-protocols-devel wlroots-devel libinput-devel \
libEGL-devel mesa-libGLES-devel \
freetype-devel fontconfig-devel \
cairo-devel pango-devel harfbuzz-devel \
libxkbcommon-devel glib2-devel \
tomlplusplus-devel json-devel stb_image_resize2-devel \
libwebp-devel libjxl-devel librsvg2-devel libxml2-devel
Terminal window
sudo zypper install meson gcc-c++ just \
greetd dbus-1 \
wayland-devel wayland-protocols wlroots-devel libinput-devel \
Mesa-libEGL-devel Mesa-libGLESv2-devel \
freetype2-devel fontconfig-devel \
cairo-devel pango-devel harfbuzz-devel \
libxkbcommon-devel glib2-devel \
tomlplusplus-devel nlohmann_json-devel stb-devel \
libwebp-devel libjxl-devel librsvg-devel libxml2-devel
Terminal window
sudo apt install meson g++ just \
greetd dbus \
libwayland-dev wayland-protocols libwlroots-0.20-dev libinput-dev \
libegl-dev libgles-dev \
libfreetype-dev libfontconfig-dev \
libcairo2-dev libpango1.0-dev libharfbuzz-dev \
libxkbcommon-dev libglib2.0-dev \
libtomlplusplus-dev nlohmann-json3-dev libstb-dev \
libwebp-dev libjxl-dev librsvg2-dev libxml2-dev
Terminal window
sudo xbps-install meson ninja pkg-config git \
greetd dbus \
wayland-devel wayland-protocols wlroots-devel libinput-devel libepoxy-devel \
MesaLib-devel libglvnd-devel cairo-devel \
pango-devel fontconfig-devel freetype-devel harfbuzz-devel \
tomlplusplus-devel nlohmann-json-devel stb \
libxkbcommon-devel libwebp-devel libjxl-devel librsvg-devel libxml2-devel

From a cloned Noctalia Greeter checkout, build and install a release under the system prefix:

Terminal window
meson setup build-release --prefix=/usr --buildtype=release
just build-release
sudo meson install -C build-release

After configuring greetd’s session user, initialize greeter state with the installed helper:

Terminal window
sudo noctalia-greeter-apply-appearance --setup-system

See state initialization for directory ownership and tmpfiles overrides for custom greeter accounts.

The portable setup script also prepares /var/lib/noctalia-greeter/, greeter.toml, and sync.toml for the greetd user and adjusts greetd’s PAM stack for the detected systemd or elogind runtime module. Run it when that PAM adjustment is appropriate for your distribution:

Terminal window
sudo ./scripts/setup_greeter_system.sh

The state helper above also works on systems without tmpfiles processing, where it creates the directory as well. Set GREETER_USER explicitly if its existing owner differs from the account you intend to use.

Continue with Configure greetd to merge the installed session wrapper into your greetd configuration and complete the safe display-manager cutover.