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

Ferese

A beautiful, fluid Wayland desktop made to feel like yours.

Install · Configure · Widgets · Notifications

Ferese is a complete Wayland desktop built around personalization. Its custom shell, native settings, live-reloading themes and wallpapers, desktop widgets, fluid animations, and scrolling and tiling layouts work together as one cohesive experience—beautiful by default and unmistakably yours.

Ferese Blue desktop with Settings, Control Center, and a clock widget

Why Ferese

  • Flexible layouts: scrolling columns, tree tiling, floating windows and a workspace overview.
  • A native shell: menu bar, control center, settings, notifications and desktop widgets designed to belong together, including themed authentication prompts.
  • Personal by design: themes, wallpapers, accent colors, blur, borders and motion that update without restarting your session.
  • Ready for real setups: gestures, multi-monitor support, fractional scaling, screenshots, background services and session locking.
  • Screen sharing: a native display picker and PipeWire video streams for portal-compatible recording and conferencing apps.

Ferese Overview showing open windows and two workspace thumbnails

The overview brings windows and workspaces into one view. Read more about why Ferese builds the compositor and shell together.

Make it yours

Use the native Settings app for everyday customization, or edit ~/.config/ferese/config.kdl when you want complete control. Ferese reloads changes as you make them and keeps the last working configuration if an edit is invalid.

Ferese Settings and Control Center sharing the Gruvbox theme

Choose a preset or build your own look. Window behavior, gestures, shortcuts, rules, displays, widgets and login items are configurable too. Start with the configuration guide or the example config.

Install

Install Ferese on Linux with any Wayland-capable login manager, a command-based greeter, or a local TTY. Start with the installation guide for system dependencies and Rust 1.95 or newer, then build as your normal user:

git clone https://github.com/ferese-wm/ferese.git
cd ferese
./scripts/install.sh

Log out and select Ferese at your login screen. For greeters that take a session command, use /usr/local/bin/ferese-session. The installer preserves your configuration and other sessions, and retains the previous release for rollback. The guide covers all startup methods, optional tools, updates, and recovery.

To preview Ferese inside your current Wayland desktop instead:

cargo build --release --locked -p ferese -p ferese-shell -p ferese-settings -p feresectl -p ferese-lock
target/release/ferese --backend nested --grant-effects --grant-shell-control -- \
  target/release/ferese-shell

Get around

These are the built-in defaults; every shortcut and gesture can be changed.

Shortcut Action
Super + Enter Open a terminal
Super + H / J / K / L Focus a window
Super + R Cycle column width
Super + Tab Open workspace and window overview
Super + M Switch scrolling / tree layout
Super + Shift + S Select a screenshot area

Click the bar date for a calendar. Click the battery for power modes and confirmed Restart, Power off and Suspend actions.

Three-finger swipes move between workspaces and windows. Open Control Center → Settings → Shortcuts to change them or assign gestures to other actions.

Documentation

Development

cargo test --workspace --locked
cargo fmt --all --check

Ferese is built in Rust on Smithay. Use release builds when evaluating motion and startup performance, and keep another desktop session available while testing hardware behavior.

S
Description
No description provided
Readme MIT
146 MiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 91.7%
Python 7.2%
Shell 0.7%
GLSL 0.2%
CSS 0.1%