Skip to content

All versions since v0.8.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

New Contributors

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

Full Changelog: https://github.com/Seafoam-Labs/Aqueous/compare/v1.0.11...v1.0.12

v1.0.13

What’s Changed

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

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-v1 is now version 2. Sessions advertise per-format encoding, and the portal publishes PipeWire transferFunction and colorPrimaries for 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_volume on its scRGB-capable Vulkan path, letting Mesa’s Wayland WSI enumerate VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT for 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 matching field with always, once, and startup modes (plus aliases). A once rule 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; startup applies 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_position supports append, right, left, above, and below. The deprecated open_new_windows_to_right boolean still works and maps true to right and false to append; if both keys appear, the later one wins.
  • 👀 Vertical arrivals stay visible — above and below arrivals 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.toml and layout.toml are packaged as inert, fully commented templates and copied to ~/.config/aqueous on first login only when missing. The layout seed is skipped when $AQUEOUS_LAYOUT or an active [layout].path is set.
  • 💾 Backups — both templates are included in package backup lists, and Gentoo installation seeds them too.
  • 📏 Top strut default — the shipped wm.toml no 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

© 2026 Seafoam LabsShelly Chel