The Settings portal reads appearance exclusively from the compositor's theme control socket and falls back to defaults when no compositor is reachable, so the contract test could no longer assert appearance from an on-disk KDL document. Add a fixtures/theme_owner.py peer that speaks the theme IPC framing and publishes schema-v2 snapshots, point the test at a private runtime socket, and clear WAYLAND_DISPLAY and WAYLAND_SOCKET so the backend cannot reach a host compositor. Assert the initial values, the SettingChanged payload after a republish, and that ReadAll matches the published snapshot, then confirm an invalid local document does not disturb portal-owned appearance.
A complete Wayland desktop built around personalization
Install · Configure · Screenshots · Documentation
Ferese is a window manager and desktop shell built together and configured in one place, for people who want their desktop to be their own.
Features
- Arrange your windows in scrolling columns or tree layouts, keep some floating, and bring your workspaces together in overview
- Move around with keyboard shortcuts and touchpad gestures you can change to suit you
- Set up multiple monitors with fractional scaling
- Make the whole desktop your own with six theme families, Light/Dark/Auto modes, custom KDL themes, wallpapers, blur and adjustable corners
- Keep a clock and sticky notes on your desktop
- Capture and edit screenshots with Satty, share a window or display, and record from the top bar
Install
Start with the dependencies, then clone Ferese and build it as your normal user:
git clone https://github.com/ferese-wm/ferese.git
cd ferese
./scripts/install.sh
Once it’s installed, log out and choose Ferese at your login screen, or run
ferese-session from a TTY or a greeter that accepts a command. The installation
guide also walks you through previews, updates and recovery.
Configure
Make it yours through Control Center → Settings or ~/.config/ferese/config.kdl,
with changes applying as you make them and the last working configuration staying in
place if an edit is invalid.
The configuration reference and example config cover everything from appearance and window layouts to displays and startup apps.
Default shortcuts
Use Super, usually the Windows key, to move around your desktop, and open Settings →
Shortcuts whenever you want to change a shortcut or gesture.
| Control | Action |
|---|---|
| Super + Enter | Open a terminal |
| Super + H / J / K / L | Focus left / down / up / right |
| Super + F | Maximize the window |
| Super + Shift + F | Toggle fullscreen |
| Super + R | Cycle column width |
| Super + Tab | Open overview |
| Super + M | Switch scrolling / tree layout |
| Print Screen | Capture the active monitor and open Satty |
| Super + Shift + S | Select a screenshot area |
| Super + Shift + E | Ask to log out |
| Super + left-button drag | Move a floating window |
| Super + right-button drag | Resize a floating window |
| Three-finger swipe up / down | Next / previous workspace |
| Three-finger swipe left / right | Focus the window to the right / left |
Explore all shortcuts and mouse actions for more ways to arrange your windows and move between workspaces.
Documentation
The documentation index brings the desktop guides together, while development instructions cover building, testing and contributing.
Ferese is written in Rust using Smithay, with development happening on GitHub. If something goes wrong, open an issue with the steps to reproduce it and any relevant logs.
