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
yay -S halleyyay -S halley-fullyay -S halley-liftDevelopment Version
yay -S halley-gitFrom Source
git clone https://github.com/saltnpepper97/halley
cd halley
git checkout v0.6.0
cargo build --release --workspaceNotes
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.