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
2026-10-04 11:11:14 +01:00
2026-10-04 11:11:14 +01:00
2026-10-04 11:11:14 +01:00
2026-10-04 11:11:14 +01:00
2026-10-04 12:04:44 +01:00
2026-10-04 12:04:44 +01:00

Ferese

A configurable Wayland desktop

Install · Configure · Screenshots · Documentation

Ferese combines a window manager and desktop shell with one configuration.

Ferese Blue dark desktop with Appearance settings

View more screenshots

Features

  • Scrolling columns with window grouping, tree tiling and floating windows that remember their size and placement
  • Workspace overview and recent-window switching
  • Remappable keyboard shortcuts and touchpad gestures
  • Continuum motion: interruptible springs, gesture momentum and motion settings shared by the compositor and shell
  • Multiple monitors with fractional scaling and automatic refresh-rate switching on low battery
  • Themes, wallpapers and blur that update live, with Light/Dark/Auto modes and custom KDL themes
  • Continuous corners across windows and shell
  • Desktop widgets, including a clock and sticky notes
  • Screenshots with annotation, screen sharing and built-in recording
  • A built-in lock screen and authentication dialogs
  • Idle inhibition during fullscreen media playback, with rules for selected apps
  • Settings and Control Center with Wi-Fi, Bluetooth and audio controls

How Ferese compares

Ferese combines scrolling and tree layouts with its own desktop controls. The table compares current upstream features and names separate tools where they are needed.

Feature Ferese Hyprland niri
Tiling layouts Scrolling columns and tree tiling; switch per workspace Scrolling, dwindle, master and monocle; per-workspace layouts Scrolling columns
Floating windows Built in Built in Built in
Workspace overview Built in Plugins such as HyprExpo Built in
Animations Continuum: interruptible springs, gesture momentum; speed and reduced-motion settings shared by the compositor and shell Bézier and spring curves Spring and easing animations; custom shaders
Corner shapes Continuous corners across windows and shell Rounded corners and squircles Rounded corners with optional clipping
Live configuration reload Yes Yes Yes
Monitor mirroring Built in Built in Separate tool, such as wl-mirror
Desktop controls Included Settings and Control Center Separate utilities or a desktop shell Separate desktop shell or tools
Notifications Included in ferese-shell Separate notification daemon Separate notification daemon or shell
Lock screen Included ferese-lock Separate hyprlock Separate locker, such as swaylock or hyprlock
Screen-sharing backend xdg-desktop-portal-ferese xdg-desktop-portal-hyprland xdg-desktop-portal-gnome

Ferese's shell, Settings, lock screen and dialogs use a shared theme. Other desktop shells, including DankMaterialShell and Noctalia, also include desktop controls; their features depend on the shell and tools you install.

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

Configure Ferese through Control Center → Settings or ~/.config/ferese/config.kdl. Changes apply live. Invalid edits leave the last working configuration in place.

The configuration reference and example config cover appearance, window layouts, 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
Display Fn key (XF86Display) Choose the display mode
Super + H / J / K / L Focus left / down / up / right
Super + Backspace Return to the last focused window
Super + Escape Toggle between the last two visited workspaces on this monitor
Alt + Tab / Alt + Shift + Tab Preview recent windows forward / backward; release Alt to select, Escape to cancel
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

See all shortcuts and mouse actions for window and workspace controls.

Documentation

The documentation index lists the desktop guides. Development instructions cover building, testing and contributing.

Ferese is written in Rust using Smithay. Development happens on GitHub. If something goes wrong, open an issue with the steps to reproduce it and any relevant logs.

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%