Repository navigation
Releases: stubbedev/lys-wm
Release list
v0.4.1
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
gesturesconfig for swipe, pinch and hold. Three fingers horizontally switch workspaces, tracking 1:1 and settling with the fingers' velocity. - Overview. The
overviewaction (SUPER + Tab, or three fingers vertically) lays out live windows, with workspace thumbnails to click or drag onto.overview-scrub-30-follow-openis 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: falseturns off both. - Reduced motion.
animations.reduced_motion, with an IPC query and event. - Frame pacing.
lys-wm -frame-trace, thelys-wm-pacetool andjust pace. SUPER + Spaceopenslys-shell launcherin 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
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 aminimizedfield 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.blurgainstint,saturation,brightness,contrast,grain,refraction,specularandmica; window rules gainblur_lookandmica. All off by default. A closing window keeps its frost. - Screen shaders.
outputs[].shaderpost-processes an output in a subset of GLSL ES 1.00, on all three renderers;docs/shaders.mdhas examples. Lock screens and captures see the image unshaded, and the software renderer is too slow for real use. - HDR.
outputs[].hdrdrives an output with PQ in BT.2020, off by default, withwp_color_manager_v1. An HDR output costs about 66 MB at 4K, and screen shaders stay off on it. - Esc for dropdowns.
lys_escape_v1gives 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
Dependencies only: lys-ui at the commit of its v0.1.2.
v0.3.1
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
Changes for users
- The built-in config binds
SUPER + SHIFT + Eto exit. - Vulkan works on all backends, but GLES stays the default.
Commits
backend
- a lost Vulkan device ends the session (stubbedev/lys-lib#59) (facff64)
- reading the clock is not a system call (f0b4d09)
- a frame clock cycle allocates nothing (#252) (26c8394)
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
ipc
- a watcher costs nothing until something changes (0d76bd5)
loop
- a timer firing costs no read (98c0b70)
nested
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
v0.2.0
v0.1.0
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