Not stable yet. WolOS is in active development and the current ISO is a test build: try it in a virtual machine or on a spare disk, not on a computer you depend on.

WolOS
Manual contents

Under the hood

Performance budgets

Idle cost and response times of the desktop, with targets and measurements.

What it is

Targets and measurements for the desktop: how much the window server and shell cost when idle, and how fast a key press reaches the screen for the switcher, Control Center, Overview and Search.

Why

Calm means the computer does nothing when you do nothing, and answers at once when you act. Budgets written down make regressions visible.

How

Every number below lists the script that reproduces it.

Reference

Measured live, release build, Linux host, nested Hyprland 0.56.2 fork (patches + plugins) on a 1280x720 headless output, started the product way: wol-session -> start-hyprland -> exec-once wol-shell. Probes: design/tools/perf/build.sh builds dmg (screencopy region hash per frame), vk/vp (virtual keyboard/pointer, STAMP=1 prints send time). Run the scripts inside the session (WAYLAND_DISPLAY, HYPRLAND_INSTANCE_SIGNATURE set, probes on PATH).

MetricTargetMeasuredReproduce
Hyprland idle CPU<= 2 ms/s0.06 ms/sidle.py 60 Hyprland wol-shell
Hyprland idle wakeups<= 2/s1.14/ssame
Hyprland RSS-73 MBsame
wol-shell idle CPU (own)<= 1 ms/s0.25-0.28 ms/ssame
wol-shell helpers (children)-~1.0 ms/s (Linux nmcli/wpctl, 1/min)same, kids column
wol-shell idle wakeups<= 2/s1.72-1.78/ssame
wol-shell RSS-~110 MBsame
Super+Tab to first frame< 100 ms31.1 median / 32.5 p95latency.py (30 runs)
Control Center click to frame< 100 ms27.0 / 36.8same
Overview (Super+Up)< 100 ms31.6 / 32.3same
Volume OSD< 100 ms36.2 / 37.0same
Search keystroke to frame< 100 ms15.4 / 24.3same
Search keystroke compute< 16 ms0.58 / 0.94WOL_SHELL_TIMING=1 log
Control Center x200 RSS growth< 5 MB-0.9 MBleak.py
Switcher x200 RSS growth< 5 MB+0.5 MBsame
Search x200no leftover process200/200 exitedsame
wol-shell start to wallpaper+dock+menu bar mapped-~237 mssession_start.py LOG -- wol-session
Session login to full desktop-~2.54 s nested (see notes)same

Fixes behind these numbers (before -> after):

  • Status refresh: 1 s always -> 1 s only while a panel watches, else 10 s with 60 s TTLs. Helpers 14 -> 1 ms/s; wakeups 3-10 -> 1.8/s.
  • Volume keys: OSD shows after an on-demand audio read (wol shell show osd), not from polling.
  • Control Center: spawned app per open (52/109 ms, +110 MB over 200 opens) -> resident shell panel, built once, watcher stopped on hide.
  • blocking pool threads woke at 2 Hz forever -> exit when idle (ADR 0006, tests/idle_threads.rs).
  • wolos-perf.conf was installed but never sourced -> sourced from the desktop hyprland.conf.
  • wol shell ... spawns from the shell write the socket directly (no CLI fork).

Notes:

  • Latency = first frame whose region hash differs after the input stamp; includes compositor frame pacing (60 Hz headless).
  • N/A on this host: hypridle (not installed), wold (needs root paths under /var/run). perf/ptrace unavailable; profiling used LD_PRELOAD timer shims and per-thread context switches.

Reference synced from wonderlandos/wolos docs/modules/performance.md.