Commit Graph
86 Commits
Author SHA1 Message Date
Samuel OnojaandSamuel Onoja d73d5f08f9 fix(input): require mapped layers for keyboard focus (#48)
Co-authored-by: Samuel Onoja <[email protected]>
2026-10-14 13:28:33 +01:00
Samuel Onoja a5e8ba65e2 Fix fractional-scale capture sizing and release idle capture caches 2026-10-14 13:16:24 +01:00
Samuel Onoja d8bdb68b2a Add native shell launcher with themed search and browsing 2026-10-13 23:15:44 +01:00
Samuel Onoja 2a400b26d0 Add gamma control and night light (#38)
Add configurable night light, smooth gamma transitions, and shell controls. Update documentation and panel tests, and fix portal test startup synchronization.
2026-10-13 14:37:26 +01:00
Samuel Onoja 8007f7a107 fix(panel): close Morph after outside clicks 2026-10-13 03:29:54 +01:00
Samuel Onoja a6f83689f8 Add XWayland support (#16)
* save dev state

* fix xwayland-satellite supervisor lifecycle, readiness and cleanup

* remove wayland scanner protocol generated files

* default xwayland enabled with path

* remove jargons

* address x11 review: park unconfirmed cleanup, never signal a reaped group, fix storm test and notify dir mode

* fix resize tests: never build Size values from negative dimensions

* add min-width/min-height window rules that replace client minimum sizes

* rename effective_size_constraints to effective_minimum_size and minor cleanups
2026-10-06 19:40:22 +01:00
Samuel Onoja 73f21e20ce general improvement and bug fixes, cursor scaling, DMA-BUF routing and nested backend recovery
ignore performance-baseline.md

more improvement and code quality fixes
2026-10-04 18:33:05 +01:00
Samuel Onoja 405c74af9f fix compositor edge cases, process handing and other cool improvements 2026-10-04 17:11:40 +01:00
Samuel Onoja 90e5c3543d Avoid idle clock and screenshot polling
Update visible shell clocks at their displayed time boundaries and receive recorder state through events, with elapsed updates only while recording. Arm screenshot expiry at the earliest pending deadline and cancel abandoned requests when their IPC client disconnects.

Cache desktop clock formats across shell updates. Transfer owned screenshot readback pixels to the encoder and borrow the canvas for PNG encoding; both paths previously copied a full image. Close the recorder's stdout reader before waiting for its child when a status line is rejected.

Validation: 910 Rust tests passed in the release workspace suite, with 44 ignored. The six screenshot-script tests passed. A private nested release test passed with a visible desktop clock, notification and modal animations, and three real PNG captures. The recorder shutdown and readback ownership regressions failed before their fixes and pass afterwards.

The isolated clock settings check dropped from 30,000 allocations to zero over 10,000 rebuilds. Borrowing the PNG canvas removed 33,177,600 allocated bytes for a 3840x2160 capture while producing identical PNG bytes.

Direct DRM and laptop power checks remain pending.
2026-10-04 13:01:52 +01:00
Samuel Onoja 03a265b97f Add automatic idle inhibition for fullscreen playback and selected apps 2026-10-03 11:20:55 +01:00
Samuel Onoja 453ec16583 Protect selected windows from screen capture
Add capture privacy rules for windows, transient children, overview previews and client cursors, with separate capture rendering and deferred-frame invalidation. Keep detached close snapshots out of captures after clients leave the registry.

Validated with release workspace tests, private compositor/EGL regressions, and an isolated release PipeWire capture test.
2026-10-03 10:49:01 +01:00
Samuel Onoja bffd538dd4 Synchronize shell material presentation with surface commits
Queue popup, modal and notification material geometry and opacity until the matching content buffer commits. Remove event-handler opacity writes that could present material state ahead of content, while preserving compositor dismissal ownership.

Add pending-presentation regression coverage and update the nested shell lifecycle check.
2026-10-03 04:45:12 +01:00
Samuel Onoja f8bc17e913 Implement Continuum compositor and shell motion 2026-10-03 03:19:11 +01:00
Samuel Onoja 8ad5293178 Model lock ownership explicitly and allow protected crash recovery 2026-10-02 08:48:01 +01:00
Samuel Onoja 96b0a9d097 Separate presentation facts from surface eligibility policy 2026-10-02 08:16:00 +01:00
Samuel Onoja 6b2974d0fa Track displayed surface visibility for idle inhibition 2026-10-02 07:57:15 +01:00
Samuel Onoja aa54ab1b2b Reuse window capture targets and offload pixel conversion 2026-10-02 07:44:13 +01:00
Samuel Onoja 325835f40a Invalidate blur from per-output sampled backdrop damage 2026-10-02 04:27:07 +01:00
Samuel Onoja 95c8940008 Skip layer relayout for content-only surface commits 2026-10-02 02:41:44 +01:00
Samuel Onoja 6f2951c6b0 Scope redraw requests and avoid redundant animation fallback wakeups
Instrument redraw sources, per-output request coalescing, and animation fallback scheduling. Route local visual changes to their affected outputs while preserving deferred grab and gesture updates.

Schedule fallback recovery using each orphaned animation output's refresh interval, suppress it while a normal frame chain exists, and retain requested final frames after scheduling failures. Add mixed-refresh, cursor footprint, frame-chain, and disconnect regressions and document measurement limits.
2026-10-02 01:21:11 +01:00
Samuel Onoja da60ecb719 micro optimization fixes 2026-10-01 20:47:05 +01:00
Samuel Onoja cd19691f52 fix wl-copy..copy on select bug 2026-10-01 18:29:56 +01:00
Samuel Onoja 07bda5a21c Refactor window ownership and immutable frame sampling 2026-10-01 18:03:01 +01:00
Samuel Onoja 0162870cca Add focus history and Alt-Tab window switching 2026-10-01 16:00:23 +01:00
Samuel Onoja 91d2388d12 Fix dialog placement and decorations and compact confirmation dialogs 2026-10-01 14:36:33 +01:00
Samuel Onoja 7b88083020 Upgrade compositor to v6 with output-aware surface preferences 2026-10-01 12:56:03 +01:00
Samuel Onoja cbf048566a Split shell, settings, and compositor into focused modules 2026-10-01 12:47:26 +01:00
Samuel Onoja 53bad8c672 Restore floating window size before the first buffer 2026-10-01 11:36:53 +01:00
Samuel Onoja b29d271252 Add floating placement memory and edge snapping 2026-10-01 11:24:56 +01:00
Samuel Onoja 4137f787bf styling fix and clippy fixes 2026-10-01 08:59:00 +01:00
Samuel Onoja 46509f880a Fix compositor output routing and pointer hints; format imports 2026-09-30 06:39:58 +01:00
Samuel Onoja d26e1511d1 Implement native InputCapture with private EIS receiver transport
Add consent, zones and outside-edge barriers, connection-scoped leases, bounded input queues and keyboard/pointer forwarding. Restore local input on release, locking, topology or keymap changes, receiver loss and emergency escape. Preserve held-key state and distinguish finger stops from absent scroll axes.

Validation: independent review cleared; 5 native InputCapture unit tests; 32 portal tests; official D-Bus contract checks on a private bus; real installed libei receiver interoperability test. Live physical barrier and consent interaction remain to be checked in a desktop session.
2026-09-30 04:51:08 +01:00
Samuel Onoja baca852ee9 Support isolated live window ScreenCast streams
Render selected toplevels through a private portal-only capture protocol, preserve logical snapshot geometry, and renegotiate PipeWire video on window resizing. Bound outstanding snapshots and retry temporary contention; stop on source closure and session locking.

Validation: portal unit tests (31), capture budget unit, private-bus portal contracts, and real nested/PipeWire isolation, workspace, resize, close and paused-lock tests pass. Independent review cleared. Monitor restore integration timed out on both this build and the unchanged previous compositor under the current nested host.
2026-09-30 04:02:33 +01:00
Samuel Onoja 29a71e9974 Implement native inhibition and acknowledged session-ending confirmation 2026-09-30 02:38:54 +01:00
Samuel Onoja 0ab5f2e05b Add isolated window screenshot targets with native selection 2026-09-29 23:54:32 +01:00
Samuel Onoja 38673e41c8 Abandon screenshot requests whose output is never redrawn 2026-09-29 16:19:46 +01:00
Samuel Onoja eda453dabd Capture screenshots in the compositor instead of grim 2026-09-29 15:51:56 +01:00
Samuel Onoja 2eb5fe7b73 Release layout slots for unbuffered XDG windows 2026-09-29 11:52:17 +01:00
Samuel Onoja 67192c0c04 Speed up per-frame layout, hit testing, and stacking paths
Split ScrollingLayout validation so the per-frame geometry solve only
checks scalars and keeps the full tree validation behind debug_assert,
removing a HashSet build from every frame. Replace the per-region Vec
in decode_regions with a stack array via as_chunks, and skip the window
hit test in PointerMotion when Overview is not presenting, where
visual_scale_for_window returns 1.0 regardless.

Guard sync_window_stacking behind a check that the space already matches
the target order with uniform z_index, avoiding an O(n^2) raise_element
loop on every redraw. Narrow window_under_visual to the space iterator
outside Overview, keeping the collected and sorted candidate list for
the Overview branch where front-to-back order is load-bearing.

Raise rust-version to 1.98 and clear the resulting Clippy findings
across the workspace: let-chain collapses, clamp, and while-let loops.
2026-09-29 09:49:04 +01:00
Samuel Onoja dbdfc5688e Fix screenshots and workspace switching; add configurable swipe bindings 2026-09-27 05:21:52 +01:00
Samuel Onoja 23991d5bd8 Add native Settings and complete live configuration reload
Add compact branded Settings with safe atomic edits, external config refresh and a draggable sidebar. Reconcile services, update connected displays and input devices, apply live layout policy and window rules, and resolve initial floating placement before tiled insertion. Package the Settings launcher and shared Ferese icon.
2026-09-26 20:31:05 +01:00
Samuel Onoja 672b4e2b60 Add live config reload, session locking and managed daemons
Refine focus gradients, shell workspace controls and popup motion. Correct floating stacking and preserve client-chosen dialog sizes. Add lock protocol probes and session integration.
2026-09-26 19:03:37 +01:00
Samuel Onoja 0709484efb Overhaul resize presentation and wallpaper rendering
Coordinate native-pixel resize handoffs, fractional geometry and shared animation timing. Delegate wallpaper rendering to the compositor, advertise DMA-BUF device feedback, and improve callback pacing and render metrics.

Handle monitor-local shell surfaces, lid-driven output evacuation and workspace restoration.
2026-09-26 14:50:14 +01:00
Samuel Onoja 64c95f0b97 Replace glass effects with plain backdrop blur and refine shell layout 2026-09-26 09:12:51 +01:00
Samuel Onoja af32c29a49 Fix layer-shell scale propagation and honor configured shell font 2026-09-26 07:27:23 +01:00
Samuel Onoja b3fa82b53b Refine shell status controls and glass rendering; defer cursor redraw safely 2026-09-26 05:05:50 +01:00
Samuel Onoja e85fc1e032 advance shell integration and session support 2026-09-25 09:15:07 +01:00
Samuel Onoja 05fb4280f5 flush initial layer surface configure 2026-09-25 08:18:02 +01:00
Samuel Onoja b3c5821e3b fix: invalidate semantic materials on scene changes 2026-09-25 05:16:38 +01:00
Samuel Onoja 6d19932a64 fix: unify animated presentation and stacking 2026-09-25 04:57:39 +01:00