News

Release News

Halley, Rewritten

Halley v0.6.0 is a ground-up rewrite: the spatial desktop returns on a smaller, typed, damage-aware compositor core, with new titlebars, floating cluster members, native XWayland, stronger output protocols, and a stable client API.

Halley 0.6 is not an incremental port. The compositor was rebuilt around Smithay's current renderer and protocol foundations, then the parts that make Halley Halley were brought back deliberately: per-monitor Fields, decay, nodes, clusters, Bearings, Trail, Apogee, Lift, capture, and the local control surface.

That distinction matters. Some of 0.6 is genuinely new, some is restored parity on better foundations, and some old policy was intentionally left behind. This release note separates those threads so the rewrite is clear about what changed and why.

New foundations

A compositor rebuilt from the frame up

The rewrite replaces the old runtime beneath Halley's model instead of changing the model into a conventional desktop.

Damage-aware GLES rendering

A Smithay GLES renderer now tracks output damage, buffer age, presentation, scanout eligibility, and animation-driven redraws instead of repainting the whole scene by habit.

Native embedded XWayland

Halley now starts and manages XWayland itself, including X11 window management and RandR state. The external xwayland-satellite process is no longer part of the session.

A typed client foundation

halley-api is redesigned around persistent connections, capability negotiation, sequenced subscriptions, and typed IPC shared by halleyctl, Lift, and the portal.

Atomic, dependency-aware config reloads

Rune configs keep the same format-version marker, but validation and migration are stricter. Nested gather dependencies are watched as one graph and invalid saves leave the last good config active.

New in 0.6

Capabilities the old compositor did not have

Floating cluster members

A cluster member can leave its tiling or stacking slot for retained floating geometry, then return without losing its place in the layout.

Server-side titlebars

Halley can draw titlebars for server-decorated windows, with configurable controls, title and icon placement, colors, height, radius, and pin placement.

Context-scoped controls

The same chord can perform different actions in the Field, a cluster, a tile layout, or a stack. Field keyboard resizing and cluster tile swapping can therefore share Mod+Ctrl+Arrow cleanly.

Stronger output protocols

Clients gain writable wlr output-management, gamma control, richer output state, and exact connector targeting alongside Halley's per-output view policy.

Explicit node lifecycle control

halleyctl can collapse, restore, or toggle a selected node directly, in addition to inspecting, focusing, moving, and closing it.

Restored systems

Halley's spatial memory returns

These are important parts of the release, but they are restored Halley systems rather than rewrite inventions.

Field, decay, nodes, and clusters

Per-monitor spatial Fields, the focus ring, automatic decay, collapsed landmarks, intentional clusters, tiling, stacking, bloom, and pinning all return on the new core.

Trail, Bearings, and Apogee

Per-output focus history, offscreen navigation cues, and the multi-monitor overview are restored with keyboard, gesture, and remote-control paths.

Lift, portal, and capture

The Halley-native launcher, screenshot and screencast portal, native capture menu, and source selection flows are rebuilt against the typed API.

Input and gestures

Libinput tuning, remappable pointer grabs, swipes and holds, exact modifier sides, and smooth resize are present again.

The complete control surface

halleyctl again reaches outputs, nodes, clusters, Trail, Bearings, capture, monitor focus, layouts, portal diagnostics, config migration, and reload.

Intentional changes

What did not come forward unchanged

View replaces viewport

The 0.6 config groups repeated output blocks under view. Hardware mode fields must be supplied as a complete width-and-height group, while ring-only entries remain portable.

No compositor gaming layer

The old game classifier, gaming config section, and halleyctl Gamescope wrapper are gone. Games use normal fullscreen and pointer paths, and launchers can invoke Gamescope directly when wanted.

Wallpaper replaces background

The compositor image and field-shader section is now named wallpaper. Existing background and gesso spellings remain accepted as compatibility aliases.

A simpler spatial contract

Active windows may overlap freely, zoom stops at native scale, cross-output dragging is direct, and the old maximum-active-window policy and Field Jump behavior are not part of 0.6.

Installation

Get v0.6.0

AUR

AUR
yay -S halley
AUR
yay -S halley-full
AUR
yay -S halley-lift

Development Version

dev package
yay -S halley-git

From Source

source build
git clone https://github.com/saltnpepper97/halley
cd halley
git checkout v0.6.0
cargo build --release --workspace

Notes

Still Growing

  • The wiki now defaults to v0.6.0. v0.5.0 and earlier documentation remains available from the version picker for existing installs.
  • The main workspace packages are versioned 0.6.0 for release; the redesigned halley-api is 0.3.0, while the rewritten Halley Lift and portal packages are 0.2.0.
  • The config format marker is now halley-config-version: 2. Use halleyctl config migrate for an explicit compatibility migration, especially when a config is split across gathered files.
  • Native sessions expect an Xwayland executable when X11 support is enabled. Nested development sessions now use halley --winit.

Thanks

To The Early Field

Thanks to everyone who kept testing the spatial model while nearly every implementation detail underneath it changed.

The reports around multi-monitor focus, Steam and X11 teardown, fullscreen restoration, pointer routing, capture, resize, and unnecessary redraws are what turned the rewrite back into Halley.

The same field, with a new foundation under it.