All versions since v0.4.5
v0.4.5
- Fixed Blur
- Overview mode enabled
- default setting for toggle_overview (used in scrolling) is Super + W
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v0.4.4...v0.4.5
0.4.6
What’s Changed
- added composable layouts by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/36
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v0.4.5...0.4.6
Scrolling update
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/0.4.6...0.4.7
v0.4.8
This release expands HDR and color-management support, brings aqueousctl outputs to wlr-randr information parity, improves portrait display layouts, and fixes maximized floating-window behavior.
Highlights
- Added Auto HDR-style SDR highlight expansion on HDR outputs.
- Added native Wine/Proton HDR paths through
color-management-v1version 3. - Added full output inspection and JSON reporting to
aqueousctl. - Added automatic vertical placement for scrolling layouts on portrait displays.
- Improved packaging, UWSM integration, and release automation.
HDR and color management
- Added configurable HDR peak presets through
hdr_level:100,400, or1000cd/m²"auto"selects the nearest preset using EDID luminance metadata
- Added configurable SDR diffuse white through
sdr_white_level. - Added
auto_hdrandauto_hdr_boostoutput settings. - Added the per-window
hdr_expandrule. - Added Windows scRGB and Windows BT.2100 descriptions for Wine/Proton HDR clients.
- Corrected target and reference luminance reporting so Proton receives valid HDR headroom.
- Preserved SDR output reporting to prevent false HDR detection.
- Added wlroots patches exposing EDID HDR metadata, SDR white-level rendering, and Windows HDR color-management support.
- Added live tests for color-management luminance and Proton HDR behavior.
Auto HDR requires a build with Vulkan effects enabled.
aqueousctl output reporting
aqueousctl outputs now reports the complete wlr-randr information set:
- Connector name and description
- Manufacturer, model, and serial number
- Physical dimensions
- Enabled state
- Every advertised mode
- Current and preferred modes
- Logical position
- Transform
- Scale
- Adaptive-sync state
Use aqueousctl outputs --json for the same atomic snapshot with wlr-randr-compatible field names and value types.
Window management
- Added
prefer_vertical_on_portraitfor scrolling layouts. New windows can automatically join the active column when its local usable region is taller than it is wide. - Fixed minimizing and restoring maximized floating windows.
- Fixed maximized-window stacking in floating layouts so focus order determines which floating window appears on top.
- Expanded fixture and integration coverage for vertical scrolling behavior.
Packaging and session integration
- Updated package versions and release metadata to 0.4.8.
- Updated install and upgrade messages with current configuration, session, shell, and logging information.
- Moved the packaged UWSM environment from
/etc/uwsm/env-aqueousto/etc/xdg/uwsm/env-aqueous, where UWSM actually discovers system configuration. - Corrected environment packaging across standard, Git, Intel, binary, and DMS packages.
- Added the missing
xcb-util-renderutilCI dependency. - Updated release and artifact GitHub Actions.
- Improved CI concurrency and branch filtering.
Auto HDR development tools
Added an Auto HDR training and evaluation stack with:
- Synthetic SDR/HDR pair generation
- Multiple tone-mapping degradation methods
- Gain-map, LUT, and parameter-regression model options
- Training, evaluation, and export tooling
- ROCm acceleration and GPU validation
- Python 3.12 and 3.14 environment support
Upgrade notes
wayland-protocols1.49 or newer is now required.- Restart the complete Aqueous session after upgrading.
- If you maintain a custom system-wide UWSM environment under
/etc/uwsm, move it to/etc/xdg/uwsm. Per-user overrides remain supported under~/.config/uwsm. - Existing Aqueous configuration files remain compatible; all new HDR and portrait-layout options are optional.
What’s Changed
- Improve clientMinimizeAllowed gate and fix z_order for maximized layout by @azdanov in https://github.com/Seafoam-Labs/Aqueous/pull/37
New Contributors
- @azdanov made their first contribution in https://github.com/Seafoam-Labs/Aqueous/pull/37
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/0.4.7...v0.4.8
v0.5.0
What’s Changed
- Refactor output scale handling via scaling module by @azdanov in https://github.com/Seafoam-Labs/Aqueous/pull/41
- fixed button sizing by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/47
- Fractional scaling by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/48
- restore edid output by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/49
- window pinning on open by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/50
- added resize off of drag by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/51
- add rotation keybinding by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/52
- implemented drag hover fixes for focus follows mouse by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/55
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v0.4.8...v0.5.0
What’s Changed
- Refactor output scale handling via scaling module by @azdanov in https://github.com/Seafoam-Labs/Aqueous/pull/41
- fixed button sizing by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/47
- Fractional scaling by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/48
- restore edid output by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/49
- window pinning on open by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/50
- added resize off of drag by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/51
- add rotation keybinding by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/52
- implemented drag hover fixes for focus follows mouse by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/55
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v0.4.8...v0.5.0
v0.6.0
Aqueous — changes since v0.5.0
This update makes Dank Material Shell the default for the source packages, adds screen mirroring and more scrolling controls, and improves fullscreen transitions, multi-monitor reliability, and HDR capture support.
Desktop and shell integration
- Source packages now default to Seafoam Labs’
dms-aqueous, including the Aqueous Settings plugin, screen-sharing chooser, Spotlight launcher, and region screenshots. The prebuiltPKGBUILD-binretains Noctalia; the newgitNoctalia/PKGBUILDpreserves a Noctalia Git package option. - Improved DMS settings control colors and added integration coverage for the shell, settings helper, and packaging.
- Added persistent shell IPC through
AQUEOUS_SOCKET, with capability discovery, snapshots, acknowledged state updates, and typed runtime commands. Existingaqueousctlcommands remain supported. DMS adoption of the new socket is still a separate integration step. - Added native
ext-background-effect-v1support so compatible applications and shells can request blur for precise regions. Global blur settings and explicit rule exclusions remain authoritative.
Window management and input
- Added
open_new_windows_to_rightfor scrolling layouts: new windows can open immediately beside the focused column. The default remains insertion at the far right. - Added the
scrolling_full_widthwindow rule to open matching applications with a full-width scrolling column. Manual width changes override the rule. - Mouse-wheel and touchpad scrolling can now bind to built-in actions and custom
commands using
WheelUp,WheelDown,WheelLeft, andWheelRight. Existing viewport wheel shortcuts can be reassigned or disabled. - Added the optional
mouse_follows_focussetting to move the pointer into a newly focused window. Pointer-driven interactions avoid triggering a warp. - Output focus shortcuts now move the pointer to the destination output’s center and work with empty outputs.
- Improved fullscreen workspace slide transitions, including transparent fullscreen content, containment within the correct output, and interrupted transitions.
Displays, rendering, and reliability
- Added screen mirroring with independent refresh rates and aspect-preserving
letterboxing, configurable through
mirror_ofor the Displays settings page. Initial support is limited to one SDR mirror pair on the same backend/device, with normal orientation. Mirrors go black while the session is locked or the source is unavailable. See the mirroring guide. - Fixed cross-monitor window remapping and explicit-sync buffer release issues that could leave windows stalled after being hidden and shown again.
- Added retries with backoff after output rendering or commit failures, allowing recovery from transient failures.
- Preserved color-management and Auto HDR state in captured window buffers used for workspace transitions and resizing.
- Added FIFO v1 protocol support for client presentation pacing.
- Added an SDR screenshot conversion path for 10-bit HDR outputs, plus native
10-bit shared-memory format negotiation for ext image-copy capture. Experimental
aqueous-capture-color-v1metadata enables cooperating clients to identify the captured color encoding. Native HDR export requires client and encoder support; the synchronous conversion fallback is intended for screenshots, with continuous recording still requiring further work and validation. - Added regression coverage for mirroring, output recovery, fullscreen transitions, window remapping, wheel bindings, capture formats, and FIFO, plus Proton Wayland focus-stall diagnostics.
Upgrade notes
- Window rules no longer implicitly select Game Mode. Omitting
layoutpreserves the current layout. Addlayout = "game-mode"to rules that relied on the previous behavior. An existing Game Mode workspace claim may need a manual layout selection to clear it. - Existing user configuration is preserved when switching to DMS source
packages. Update launcher and screenshot commands in
~/.config/aqueous/wm.tomltodms ipc call spotlight toggleanddms screenshot region, including direct screenshot bindings. Compare with/usr/share/aqueous/wm.tomlfor the packaged defaults. - Remove duplicate manual shell startup entries when adopting packaged startup.
GitPKGBUILD/PKGBUILDusesdms.service; remove manual enablement of the oldaqueous-dms.servicewhen switching to that variant. Other source variants useaqueous-dms.service. - The nested launcher is now
launch_aqueous.sh, withAQUEOUS_DMS_CMDfor overriding its shell command. - Rebuild and ship the matching patched wlroots library, then restart Aqueous
for the new protocol and capture functionality. Diagnostic builds with
-Dvulkan-effects=falsealso require this patched dependency.
Full comparison at the reviewed master commit
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v0.5.0...v0.6.0
v0.7.0
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v0.6.0...v0.7.0
v0.8.0
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v0.7.0...v0.8.0
v0.9.0
- Added window switched
- Finished wayland protocols
- Added more compatibility for Pearl
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v0.8.0...v0.9.0
v0.9.1
Fixing my own screw up
v1.0.0
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v0.9.1...v1.0.0
v1.0.1
v1.0.2
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.1...v1.0.2
v1.0.3
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.2...v1.0.3
v1.0.4
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.3...v1.0.4
v1.0.5
What’s Changed
- Focus-aware tiling by @arighi in https://github.com/Seafoam-Labs/Aqueous/pull/91
- Rotate built-in panels mounted sideways by default by @arighi in https://github.com/Seafoam-Labs/Aqueous/pull/88
- Let directional focus cross workspaces by @arighi in https://github.com/Seafoam-Labs/Aqueous/pull/93
- fix window rounding to be sized around actual window by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/94
- Xwayland scaling by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/100
- display configure update by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/101
New Contributors
- @arighi made their first contribution in https://github.com/Seafoam-Labs/Aqueous/pull/91
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.4...v1.0.5
v1.0.6
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.5...v1.0.6
v1.0.7
Fixed a bunch of memory leaks. Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.6...v1.0.7
v1.0.8
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.7...v1.0.8
v1.0.9
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.8...v1.0.9
v1.0.10
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.9...v1.0.10
v1.0.11
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.10...v1.0.11
v1.0.12
What’s Changed
- 111 raise on focus does not engage in floating mode by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/113
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.11...v1.0.12
v1.0.13
What’s Changed
- bumping zig version to 0.17 by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/120
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.12...v1.0.13
v1.0.14
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.13...v1.0.14
v1.0.15
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.14...v1.0.15
v1.0.16
What’s Changed
- fixed dwindle overflow by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/121
- added patch 0039 to adjust fifo pacing when occluded by @ZoeyErinBauer in https://github.com/Seafoam-Labs/Aqueous/pull/122
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.15...v1.0.16
v1.0.17
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.16...v1.0.17
v1.0.18
Fixed most of the biggest memory issues
Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.17...v1.0.18
v1.0.19 Latest
🌊 Aqueous v1.0.19 — HDR Color, Live Slides, and Smarter Windows
Aqueous v1.0.19 is a color and motion release. HDR capture and Windows scRGB content arrive alongside a new 600-nit HDR preset, workspace and scrolling slides now move live client content, and window rules gain Once and Startup matching. Scrolling columns learn new placement options, output selection follows the pointer, and a batch of drag, focus, transition, and overflow fixes tightens the edges.
🌈 HDR and color management
- 🌕 600-nit HDR preset —
hdr_level = "600"joins 100, 400, and 1000. Automatic selection now chooses 100 up to 250 nits, 400 up to 500, 600 up to 800, and 1000 above that. - 🎥 HDR capture metadata — capture protocol
aqueous_capture-color-v1is now version 2. Sessions advertise per-format encoding, and the portal publishes PipeWiretransferFunctionandcolorPrimariesfor every offered format: SMPTE 2084/BT.2020 for native PQ, gamma 2.2/BT.709 for SDR and converted 8-bit output. - 🖼️ 8-bit destinations from PQ outputs — PQ output frames copied to 8-bit SHM or DMA-BUF destinations are decoded to SDR with BT.2020 mapped to sRGB. Native and 10-bit destinations keep their source encoding.
- 🪟 Windows scRGB snapshots — snapshot buffers now carry the fixed Windows-scRGB mapping (1.0 = 80 cd/m²), so live slides and other snapshot-based transitions match their source regardless of the SDR-white setting. This uses private wlroots patch 0043.
- 🔬 Extended target volume — Aqueous advertises
extended_target_volumeon its scRGB-capable Vulkan path, letting Mesa’s Wayland WSI enumerateVK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXTfor Proton and Wine HDR. It does not change the fixed 80-nit predefined mapping. (#130)
🎞️ Live workspace and scrolling slides
Workspace and scrolling slides now display live client content while input geometry stays at its settled destination. (#133)
- 🎬 Live content in motion — preview callbacks, presentation, and captured explicit-sync lifetimes come from private wlroots patch 0045, with callback-paced content through transitions and reversals.
- 🧯 One-frame flash fixed — outgoing workspace trees are now disabled before the transition clears
prev_workspace, so finalizing a swap on one output can no longer flash the previous workspace on a neighboring output. (#106) - 🧪 More stress coverage — added probes for buffer retention and Xwayland resize churn alongside the live-slide harness.
🧩 Window rules
- ⏱️ Matching timing — new
matchingfield withalways,once, andstartupmodes (plus aliases). Aoncerule stays bound to the first window that claims it across title, tag, and content-type changes and survives hot reloads until its matcher is edited;startupapplies during the first 10 seconds after compositor startup. - 🛠️ Settings rule editor — Pearl exposes Matching timing as a first-class rule field with native edit, save, and reopen coverage.
- 🪟 Portal picker stays floating — the portal picker is now forced floating so it cannot be tiled. (#129)
🖱️ Focus, drag, and window switcher
- 🖱️ Pointer selects the output — physical pointer motion makes the output under the cursor the target for output, workspace, and window actions without enabling focus-follows-mouse. Hovering an empty output no longer steals keyboard focus.
- ↔️ Corner-aware resize — floating resize drags hit-test the pointer quadrant so the corner opposite the pointer stays anchored.
- ⌨️ Switcher commits on release — releasing the initiating modifier finishes the window switcher immediately. Shift is ignored so a reverse-cycle chord can release Shift without ending the presentation.
- 🍷 Wine/Wayland input fix — Xwayland focus and grab resync paths now skip redundant text-input focus calls when the target surface is already focused, avoiding an assertion that interrupted Wine sessions.
🧭 Layout and scrolling
- 📐 New window placement —
new_window_positionsupportsappend,right,left,above, andbelow. The deprecatedopen_new_windows_to_rightboolean still works and mapstruetorightandfalsetoappend; if both keys appear, the later one wins. - 👀 Vertical arrivals stay visible —
aboveandbelowarrivals pan within their column. - 🔲 Themeable snap zones — snap-zone preview colors now derive from the configured window border colors.
- 🧮 Overflow floor fixed — dwindle and reverse-dwindle minimum content size is now
max(client minimum, 320 x 200)logical pixels instead of scaling with output size, so larger displays fit more tiles instead of stretching a fixed handful.
🧰 Configuration and packaging
- 📄 Seeded templates —
input.tomlandlayout.tomlare packaged as inert, fully commented templates and copied to~/.config/aqueouson first login only when missing. The layout seed is skipped when$AQUEOUS_LAYOUTor an active[layout].pathis set. - 💾 Backups — both templates are included in package backup lists, and Gentoo installation seeds them too.
- 📏 Top strut default — the shipped
wm.tomlno longer adds a 32 px top strut on top of layer-shell exclusive zones. - ⚠️ Read-only default warning — Settings now warns when edits resolve to system defaults that the helper must refuse to write.
- 🌕 HDR 600 in configuration —
outputs.toml, display schemas, and the display preview include the 600-nit option.
🧪 Build and test updates
- 🧱 LLVM test steps — the GpuPin and ToplevelIcon test steps now receive
-Dllvm. (#115) - 🧪 New headless coverage — live-slide transitions, scRGB snapshots, Proton HDR color management, workspace transition finalization, and snapshot color checks.
- 🩹 Assertion fixes — cleaned up extra assertions in the test suite.
- 🧷 Private wlroots patches — the build hook and Nix packaging pin patches 0043, 0044, and 0045; rebuild the patched wlroots dependency before testing HDR or live slides.
🚀 Upgrade notes
open_new_windows_to_right is deprecated. Use new_window_position; true maps to right and false maps to append, so existing configurations keep working.
The first login seeds input.toml and layout.toml only when they are absent. Existing files are left alone, and the layout template is not seeded when an explicit sidecar is configured.
HDR 600 is opt-in through hdr_level = "600". Automatic selection chooses it for panels whose peak falls between 501 and 800 nits.
Capture clients should request frame information before capture. The portal handles the new session description, but 8-bit captures from PQ outputs will be delivered as SDR.
❤️ Thanks
❤️ Thanks to Kode54 for the scRGB fix and test tooling, and to everyone who tested HDR capture, live slides, and the new rule timing.
📋 Full Changelog: v1.0.18…8639e2c
🔀 Release commit: 8639e2c
