Skip to content

Building from source

Build tools

Install a C compiler, a C++23 compiler and a compatible standard library. std::expected, std::format and std::ranges::contains must be available; accepting the -std=c++23 flag alone is not enough.

You also need Meson 1.1 or newer, Ninja, pkg-config/pkgconf, wayland-scanner and recent wayland-protocols. Nix users can enter the supplied environment with nix develop path:. from the client source directory.

Libraries

Install development headers and pkg-config metadata as well as runtime libraries.

Librarypkg-config modules or requirement
Waylandwayland-client, wayland-egl, wayland-protocols
Graphicsegl, glesv2
Cairocairo, cairo-ft
Pangopango, pangocairo, pangoft2
Text and fontsfreetype2, fontconfig, harfbuzz
SVGlibrsvg-2.0
WebPlibwebp, libwebpdemux
JPEG XLlibjxl, libjxl_threads
Animation cachelibzstd
Keyboardxkbcommon
Datanlohmann_json, tomlplusplus
Desktop servicesgio-2.0, libsecret-1
Networklibcurl >= 8.16, with HTTPS, ws and wss
Markdownmd4c
Videolibavformat, libavcodec, libavutil, libswscale
Native playbackmpv >= 2.3 pkg-config API version
Animated stickersrlottie
Image headersstb_image_resize2.h, stb_image_write.h

The libmpv requirement refers to its pkg-config API version, not the player application's release number. Old stb packages with only stb_image_resize.h are insufficient. The Nix package pins stb revision f1c79c02822848a9bed4315b12c8c8f3761e1296 as a known reference.

The linked libcurl must support secure WebSockets. A separate curl executable with different features does not fix the library. Native Meson configuration checks the linked library; cross-build packagers must verify their target library.

Wuffs is bundled in the source tree. The project does not download missing dependencies during Meson configuration.

Compile and run

From the client source directory:

Terminal window
meson setup build-debug --buildtype=debug -Dcpp_std=c++23
meson compile -C build-debug -j 4 cressida
./build-debug/cressida --demo

With just installed, just build and just demo provide convenience commands. For a release install, follow Installation.

Run tests

Test fixtures additionally need Python 3, readelf, the ffmpeg executable, dbus-daemon and Wayland server headers/library. Graphics tests need a usable EGL context. Local sockets must be permitted.

Terminal window
meson compile -C build-debug -j 4
meson test -C build-debug --print-errorlogs

Tests use synthetic fixtures, temporary directories, private buses and local network peers. They do not need account credentials or access to a live account.

See Contributing for formatting, lint and headless UI checks, or Packaging for installed runtime requirements.