Commit Graph
487 Commits
Author SHA1 Message Date
Samuel Onoja dcbcec6ba4 Preserve display assignments and fix CI checks
Keep surviving outputs on their applied CRTCs when enabling another display. Reserve nested IPC directories with explicit private permissions and cover session umasks.

Separate compositor checks from release-only workspace checks, provide test runtime prerequisites, and correct the reload test's initial revision assumption.
2026-10-07 09:30:25 +01:00
Samuel Onoja a6f24e8188 Harden desktop recovery and pre-release stability checks
Bound IPC transport deadlines while preserving portal leases, supervise desktop helper and agent recovery, and reserve final floating window geometry during placement.

Stabilize CLI output and isolated tests, expand workspace CI, resolve formatting and lint failures, and bundle the MIT license with installer compatibility.
2026-10-07 09:08:23 +01:00
Samuel Onoja a00f1c6f3a Unify scrolling viewport presentation ownership 2026-10-07 08:44:40 +01:00
Samuel Onoja 4a9880eaad Support keyboard movement and resizing for floating windows 2026-10-07 08:19:33 +01:00
Samuel Onoja 76112b59ac Add MRU focus switching between tiled and floating layers 2026-10-07 08:13:42 +01:00
Samuel Onoja ce024d4794 Isolate nested IPC sockets and define session ownership policy 2026-10-07 08:03:30 +01:00
Samuel Onoja 97026a0db7 Modernize feresectl and add bounded IPC event streaming 2026-10-07 07:39:27 +01:00
Samuel Onoja cfdd2a148a Fix lock-screen input and wallpaper handling 2026-10-07 07:19:06 +01:00
Samuel Onoja bbc5b27c25 Add unified window focus opacity and dimming effects 2026-10-07 07:00:30 +01:00
Samuel Onoja 02ec7e5199 optimize wallpaper loading and free pixels 2026-10-06 20:32:07 +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 ed23949a95 style MPRIS bar border and background
Assign the result back to bar_style.border instead of mutating in place, and tint the media bar background with the palette border color.
2026-10-05 21:54:54 +01:00
Samuel Onoja 8a0dd7615e mpris and bar control impl
gitignore

fix import error
2026-10-05 16:12:24 +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 5706a71941 Simplify compositor and shell conditionals
Flatten nested guards in swipe cleanup, recording updates and popup dismissal. Use an eager optional fallback for workspace layouts and an array in the malformed-opacity test.
2026-10-04 14:43:43 +01:00
Samuel Onoja 3ba1f3522d Release wallpaper pixel memory after image changes
Store decoded pixels and RGB conversion scratch in anonymous mappings so dropping an image releases its pages. Reclaim decoder scratch on the worker thread after each load.

Verify PNG, JPEG and WebP pixels against the existing decoder and cover decode limits and corrupt files. Add an isolated release memory regression for repeated 4K wallpaper loads.
2026-10-04 14:41:53 +01:00
Samuel Onoja 004a5cdefe Add island bar layout and Settings controls
Group workspaces with Overview and status controls with the clock. Keep themed backgrounds and borders around each island, with click-through gaps and configurable side padding defaulting to 4 px.

Capture blur within each panel region and update material and input regions when island bounds change. Cover layout reloads and padding changes with widget and native shell tests.
2026-10-04 14:18:03 +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 49e54f9a63 Fix Settings rendering, theme accents and wallpaper loading 2026-10-04 12:30:54 +01:00
Samuel Onoja 950ba723ab docs: restore screenshots to Why Ferese 2026-10-04 12:13:18 +01:00
Samuel Onoja 643fd5fef1 docs: explain why Ferese integrates the desktop 2026-10-04 12:10:26 +01:00
Samuel Onoja 4cdce60d62 Update desktop screenshots 2026-10-04 12:04:44 +01:00
Samuel Onoja 4dd425f1f1 Fix wallpaper upgrade compatibility and Settings icon clipping
Allow installed releases to omit the two newer appearance wallpapers while keeping new bundle verification strict. Fit the Settings header symbol within its square slot without clipping.

Verified 30 installer tests, the real upgrade dry-run, and release rendering previews on GPU and software backends.
2026-10-04 11:18:08 +01:00
Samuel Onoja 3533fac521 Update branding
Update the Ferese symbols, appearance-specific wallpapers, and rounded wallpaper and theme previews. Bundle Figtree and add the Ferese name to the website header.

Verified configuration, theme, Settings, wallpaper and installer tests, both UI renderers, the static site build, and browser layouts.
2026-10-04 11:11:14 +01:00
Samuel Onoja f81d8d50ea Group imported themes in a custom gallery 2026-10-04 09:39:53 +01:00
Samuel Onoja 5c321addec Inset panel highlights and align bar content 2026-10-04 09:18:18 +01:00
Samuel Onoja 831ac3a77f Derive theme gradients and add solid paint controls 2026-10-04 09:03:28 +01:00
Samuel Onoja 20395007a5 Use the orbit symbol in Settings and the shell 2026-10-04 08:25:28 +01:00
Samuel Onoja 3c40854077 add animation model doc 2026-10-04 08:23:05 +01:00
Samuel Onoja a2f5a7ffba Fix collective resize waits and fullscreen ownership 2026-10-04 08:16:03 +01:00
Samuel Onoja d5a829eb16 Decouple scrolling translation from resize readiness
Track configure-owned presentation dependencies so independent viewport translation can continue while clients resize. Preserve linked reflow waits, native snapshots, handoff deadlines and shared rendering/input coordinates.

Closes #10.
2026-10-04 08:05:44 +01:00
Samuel Onoja c1801e1f07 fix overview entrance animation 2026-10-04 07:53:34 +01:00
Samuel Onoja d75c93db85 Match shell squircle outlines with compositor masks
Use shared corner geometry for shell controls, window clipping, materials and blur masks. Preserve circular pills and controls where appropriate, track contour changes in damage, and use tagged ferese-shape and libcosmic dependencies.
2026-10-04 07:39:54 +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 e6e1a2a8cf Restore inactive workspace previews in overview 2026-10-03 04:43:26 +01:00
Samuel Onoja 1d7a472847 make button focus ring conditional on tab press 2026-10-03 04:29:06 +01:00
Samuel Onoja 64a80dc069 Unify window presentation and frame-driven shell motion
Share window geometry across overview, resize snapshots and retained closes. Advance close handoffs and group retained rendering by stacking position.

Drive shell motion from surface frames, reuse settled widget content, and synchronize notification materials with each card's fade. Replace physical config keys with duration and bounce, and update documentation and regression coverage.
2026-10-03 04:22:36 +01:00
Samuel Onoja f8bc17e913 Implement Continuum compositor and shell motion 2026-10-03 03:19:11 +01:00
Samuel Onoja 259f7e93b6 Document animation configuration and desktop comparisons 2026-10-03 01:01:44 +01:00
Samuel Onoja 934380d095 Remove component boundary script and dependent CI workflow 2026-10-03 00:14:09 +01:00
Samuel Onoja ee686507c5 Check component dependency boundaries in CI 2026-10-03 00:13:42 +01:00
Samuel Onoja cc0bddbec1 Separate theme rendering from client subscriptions and materials 2026-10-03 00:12:59 +01:00
Samuel Onoja ccf7497b6f Publish theme snapshots through IPC from explicit live state 2026-10-03 00:05:29 +01:00
Samuel Onoja 8195b82073 Separate resolved theme values from configuration resolution 2026-10-02 23:57:02 +01:00
Samuel Onoja 4c3e884438 Pin theme snapshot defaults and offline preview behavior 2026-10-02 23:55:26 +01:00
Samuel Onoja c3acb5af5a Move shell configuration out of desktop core 2026-10-02 23:54:27 +01:00
Samuel Onoja f5de30d037 Publish output topology through a desktop reconciliation boundary 2026-10-02 23:46:08 +01:00