Skip to content

Tessa 0.2.2

Choose a tag to compare

@Keychrom Keychrom released this 28 Oct 20:34
· 121 commits to main since this release

Tessa 0.2.2

Tessa 0.2.2 fixes the remaining ways the pointer can become invisible over the
desktop and panel. It also handles virtual machines whose DRM cursor plane does
not render.

Fixed

  • Panel and wallpaper cursor: the compositor now restores the default
    cursor when pointer focus moves to a new layer surface. Previously a client
    could clear its cursor while leaving, and the panel (which does not set
    wl_pointer.set_cursor) would inherit the empty image indefinitely.
    Restoring on layer focus does not override a normal window's own cursor.
  • Cursor name fallback: Tessa checks for default, left_ptr, and arrow
    before setting the Xcursor image, and logs the selected name. Legacy
    xcursor-themes themes such as whiteglass only provide left_ptr.
  • VM cursor planes: tessa-session sets WLR_NO_HARDWARE_CURSORS=1
    automatically when systemd-detect-virt reports a virtual machine. Hardware
    cursors remain enabled on physical machines. Direct launches can use
    WLR_NO_HARDWARE_CURSORS=1 tessa.
  • Earlier 0.2.1 fixes are included: child signal reset, XWayland readiness
    for DISPLAY, startup-hook ordering, initial fractional scale, output
    policies on hotplug, and tracked-input cleanup.

What was not the cause

  • Setting the cursor before an output exists is safe: wlroots stores the
    xcursor manager/name and applies the image when the output layout gains an
    output.
  • Missing default in xcursor-themes alone does not force a NULL cursor in
    wlroots 0.19, which falls back to left_ptr. The explicit name selection and
    logging make this reliable and observable.
  • Terminal=true commands that exit immediately close their terminal by
    design; Kitty's desktop entry is Terminal=false.

Verification

  • Added tests/cursor-theme.sh, which synthesizes a theme containing only
    arrow and verifies the fallback log.
  • Existing spawn, XWayland, fractional-scale, Kitty, XIM, input, and smoke
    tests pass.
  • The .deb was installed in an Ubuntu 26.04 rootfs and runtime-tested with
    Kitty and a missing XWayland satellite.

Install (Ubuntu 26.04 amd64)

curl -fLO https://github.com/Keychrom/Tessa/releases/download/v0.2.2/tessa_0.2.2_amd64.deb
curl -fLO https://github.com/Keychrom/Tessa/releases/download/v0.2.2/SHA256SUMS
grep ' tessa_0.2.2_amd64.deb$' SHA256SUMS | sha256sum -c -
sudo apt install ./tessa_0.2.2_amd64.deb

Then log out and select Tessa in the display manager.

The binaries are unsigned; verify SHA256SUMS before installing.

SHA-256:
c09f2c57bcba450415ad9cc1362ba41038a32b458058e68c7c29f6abd9336b08 tessa_0.2.2_amd64.deb