Skip to content

Releases: stubbedev/lys-wm

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 03 Nov 01:07

The default look changed. A config that sets only some keys gets the new defaults for the rest: rounding, gaps, shadows, borders, tab strips, animations and blur. docs/config.md lists the keys for the old look. Binds in the built-in config don't reach a config with its own binds; the new ones are listed below.

just docker hardware passes on an RTX 3060 Ti, with simulated vsync. None of this has run on a real display, and no touchpad has been tried.

Added

  • Gestures. A gestures config for swipe, pinch and hold. Three fingers horizontally switch workspaces, tracking 1:1 and settling with the fingers' velocity.
  • Overview. The overview action (SUPER + Tab, or three fingers vertically) lays out live windows, with workspace thumbnails to click or drag onto. overview-scrub-30-follow-open is 5.5% late on the RTX, so the overview's pacing steps are reported but not gated yet.
  • Layout holds. A tiling change lands in one frame, or within 100 ms if a client doesn't answer. Input is never held.
  • Zoom. SUPER + =, SUPER + -, SUPER + BackSpace, SUPER + CTRL + scroll, SUPER + two-finger pinch. Captures show the unzoomed screen.
  • Drag preview and snapping. Edges give a half, corners a quarter, the top edge the full usable area. drag_preview.enabled: false turns off both.
  • Reduced motion. animations.reduced_motion, with an IPC query and event.
  • Frame pacing. lys-wm -frame-trace, the lys-wm-pace tool and just pace.
  • SUPER + Space opens lys-shell launcher in the built-in config.

Changed

  • A default look per renderer: everything on a GPU, no blur on CPU drivers, also no shadow or animated workspace switch on software. Any key you set wins.
  • A frame slower than half a refresh can now take up to a full refresh, instead of missing every vblank.
  • Genie no longer re-renders an unchanged window every frame.
  • Spring maths and Xcursor come from lys-lib.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 20:12

Nothing here has run on a real GPU or an HDR display yet: the renderers were tested on llvmpipe and lavapipe, and HDR with KMS fakes and virtio.

Added

  • Minimize. xdg_toplevel.set_minimized, X clients, foreign toplevel handles and the minimize and restore actions all work, with a genie animation (windows_minimize) and a minimized field and event over IPC. Tiled windows come back beside the focused window, not in their old spot.
  • Blur for clients. ext_background_effect_v1, and blur behind popups.
  • Glass. decoration.blur gains tint, saturation, brightness, contrast, grain, refraction, specular and mica; window rules gain blur_look and mica. All off by default. A closing window keeps its frost.
  • Screen shaders. outputs[].shader post-processes an output in a subset of GLSL ES 1.00, on all three renderers; docs/shaders.md has examples. Lock screens and captures see the image unshaded, and the software renderer is too slow for real use.
  • HDR. outputs[].hdr drives an output with PQ in BT.2020, off by default, with wp_color_manager_v1. An HDR output costs about 66 MB at 4K, and screen shaders stay off on it.
  • Esc for dropdowns. lys_escape_v1 gives a dropdown one bare Esc while another window has the keyboard. That Esc doesn't reach the window.

Fixed

  • A layer dropping its keyboard focus now gives it back.

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 02 Nov 14:49

Dependencies only: lys-ui at the commit of its v0.1.2.

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 02 Nov 09:11

Dependencies only: lys-lib v0.2.1's and lys-ui v0.1.1's commits, the latest modules, and a newer lys-shell for the VM checks.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 05:30

Changes for users

  • The built-in config binds SUPER + SHIFT + E to exit.
  • Vulkan works on all backends, but GLES stays the default.

Commits

backend

committiming

  • a timed commit allocates nothing and arms once (c46dd0b)

compositor

  • a commit wakes only the outputs that show the surface (0eac7bf)
  • the syncobj device outlives the clients using it (e2b4c47)
  • fullscreen asked for before mapping is honoured (ebb52f9)
  • hold an inherited frame for 30s, not 10s (024322c)

config

  • the built-in config binds SUPER + SHIFT + E to exit (f737d83)

dmabuf

  • a commit waits for its buffer's writer (0047cbd)

drm

  • a native backend that fails to open reports why (b0bf2bc)
  • a software stack moves to the card without logging a refused allocation (8f579b2)
  • a cursor commit carries only what changed on the plane (5410c16)
  • a steady frame sets the primary plane's buffer and nothing else (a36d764)
  • a stack that cannot allocate on the render node moves to the card (4cab787)
  • secondary GPUs blit on either renderer (3fc0c94)
  • KMS and Mesa stop sharing GEM handles (0a691a4)
  • a refused 10-bit format moves on to the next, and frames stay up (#215) (27d54ab)
  • Vulkan renders into scanout buffers GBM allocates (dfa9f1d)
  • leave the last frame on screen when lys-wm exits (#248) (b6a79f2)

fifo

  • a barrier cycle allocates nothing (f179353)

gles

  • client pixels reach the GPU through a ring, with one copy (c47702d)

gpu

  • GLES texture uploads allocate nothing (#252) (ae24dc7)
  • a machine with only NVIDIA cards loads only NVIDIA's EGL (8e6042a)

harness

  • blur, decoration, opacity and animation tests run on every renderer (8d8ca75)

infra

  • Dependabot Go bumps get their Nix vendorHash (#251) (5f36e1f)

ipc

  • a watcher costs nothing until something changes (0d76bd5)

loop

  • a timer firing costs no read (98c0b70)

nested

  • Vulkan runs on a host that imports only implicit modifiers (f4a9e96)
  • render with Vulkan (7421dd1)

nix

  • the VM tests name the host's lavapipe ICD (f5400d8)
  • a docs commit does not change the package (33e6c5f)
  • lys-shell input follows 272f13c (d8c665f)

other

  • math and fused products stay out of this repository (6530955)
  • float products round the same on every architecture (eb899cf)
  • syncobj, capture, readback: a sync_file of -1 means the GPU has finished (fc27eb7)

packaging

  • the built-in terminal bind has its terminal (a51d9ee)
  • recommend the portal backends lys-wm-portals.conf falls back to (74569e5)

render

  • gles Close deletes every program it linked (#250) (c1517c7)
  • GLES fragment shaders always compute in highp (#249) (a579e85)

scanner

  • a server object an event ends is reused, not allocated each time (7463975)

seat

  • pointer motion allocates nothing (a9aa065)

session

  • a libinput motion costs 12 allocations, not 34 (9d98426)

surface

  • presentation feedback lists keep their storage (f05f2f1)

vulkan

  • reads off the loop on every driver, no steady allocation, every YUV format (69dbfc2)
  • every GLES path test runs on both renderers, in a VM on lavapipe (5544238)
  • reads back off the loop, honours chroma siting, names its device (c96cee0)
  • Begin does not allocate its pass (ac944ad)

wire

  • a short read means the socket is empty (3dac89d)
  • a connection's buffers start small and grow on demand (75ce9b2)

xkb

  • names are not filled in from the environment (ca3e9fa)
  • keymaps come from lys-lib's xkb, not libxkbcommon (6f9cfa9)

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 16:19

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 09:59

What's Changed

  • chore(deps): bump the all group with 4 updates by @dependabot[bot] in #157
  • chore(deps): bump github.com/ebitengine/purego from 0.11.1 to 0.11.2 in the all group by @dependabot[bot] in #156

Full Changelog: https://github.com/stubbedev/lys-wm/commits/v0.1.0