Packaging Tessa
Tessa requires Zig 0.17 and links the wlroots 0.20 ABI. The default build also
uses scenefx 0.5. Distribution packages must pin these; the source build refers
to wlroots-0.20 explicitly in build.zig.
Arch Linux
Section titled “Arch Linux”Arch’s official repositories provide Zig 0.17 as zig, wlroots 0.20 as
wlroots0.20, and scenefx 0.5 as scenefx, which match this tree. Install the
build dependencies:
sudo pacman -Syu --needed base-devel git zig wlroots0.20 scenefx \ wayland wayland-protocols libxkbcommon libinput pixman libdrm \ libseat libudev libegl libgles2 mesa cairo pango glib2Then build the tessa-git package:
git clone https://github.com/Keychrom/Tessa.gitcd Tessa/packaging/archmakepkg -siThe PKGBUILD declares depends=('wlroots0.20' ...) and
makedepends=('git' 'zig'); its build step calls scripts/build.sh, which
requires Zig 0.17.x.
It installs:
/usr/bin/tessa,/usr/bin/tessa-panel,/usr/bin/tessa-ctl/usr/bin/tessa-session/usr/share/wayland-sessions/tessa.desktop/usr/share/tessa/config.example/usr/share/xdg-desktop-portal/portals/tessa.portal- man pages and documentation under
/usr/share
The PKGBUILD depends on scenefx and enables rounded corners and backdrop blur
by default. For the plain wlroots scene, build a source checkout with
-Dscenefx=false. xwayland-satellite is optional and is available in
the AUR as xwayland-satellite-git; without it, X11 applications do not start.
kitty/foot are user choices. Screen sharing additionally needs
xdg-desktop-portal, xdg-desktop-portal-wlr, and PipeWire. The installed
tessa.portal routes the Screenshot and ScreenCast portals to the wlr backend
when XDG_CURRENT_DESKTOP=Tessa. With a single monitor, set up
~/.config/xdg-desktop-portal-wlr/config:
[screencast]chooser_type=noneoutput_name=HDMI-A-1Debian / Ubuntu
Section titled “Debian / Ubuntu”The debian/ directory at the repository root uses debhelper and Zig. Build on
a machine with the development packages in debian/control:
sudo apt install debhelper dpkg-dev fakerootZIG="$HOME/.local/zig-0.17.0/zig" ./scripts/build-deb.shsudo apt install ./dist/tessa_<version>_<arch>.deb0.2.4 may be the final
.debrelease. It is the last package planned against Zig 0.16 and wlroots 0.19. The current source tree (0.2.5) targets Zig 0.17, wlroots 0.20, and scenefx 0.5; the Debian definitions are kept for downstream packaging but no new binary release is planned.
The Debian build passes -Dscenefx=false because Ubuntu 26.04 has no scenefx
0.5 development package. The .deb therefore uses the plain wlroots scene
without rounded corners or backdrop blur.
The script runs dpkg-buildpackage -b -us -uc -d, collects the .deb,
.buildinfo, and .changes under dist/, and prints the package metadata.
-d skips the declared build-dependency check because Ubuntu 26.04 packages an
older Zig; the script verifies the supplied Zig is 0.17.x instead.
The package installs the same binaries, session entry, example config, and
portal selector. The libwlroots-0.20-dev build dependency and the linked
wlroots-0.20 pkg-config name pin the compositor ABI.
Zig 0.17 is required. If the distribution packages an older Zig, install the
upstream 0.17 toolchain and pass it with ZIG=... before building. Run
lintian dist/*.deb for a first packaging audit.
Do not install the .deb on a machine that already has a manual
/usr/local install unless you intend to replace it; both copy the same
binaries and session entry to different prefixes.
Manual install
Section titled “Manual install”For development or a user-local install, use:
./scripts/install-session.shThis installs under ~/.local by default. PREFIX=/usr/local and sudo may be
used for a system-wide install.