Skip to content

NotchFlow drives WindowServer CPU to ~44% sustained; no lighter/low-power mode available #10

Closed

Description

@ikentrock

Summary

NotchFlow keeps WindowServer pinned at a sustained ~43-45% CPU while running, causing noticeable system-wide UI lag (menu bar dropdowns, general responsiveness). Quitting NotchFlow drops WindowServer CPU to 0% within seconds.

Environment

  • NotchFlow version: 0.1.0 (build 1)
  • macOS: 26.6 (build 25G72)
  • Arch: Apple Silicon (arm64)

Measurement

  1. NotchFlow running normally (default settings, no config changes) alongside a handful of other menu-bar utilities (Stats, Ice, Jiggler, MeetingBar, Amphetamine — all measured under 1% CPU).
  2. After ~2 hours of uptime, NotchFlow had accumulated ~10 minutes of CPU time (~7% CPU sustained) — clearly higher than the other menu-bar apps running concurrently.
  3. Sampling WindowServer directly (top -l 1 -pid <WindowServer PID> -stats pid,command,cpu) while NotchFlow was running returned 43.2%, 44.5%, 45.3% across repeated samples.
  4. Quit NotchFlow (osascript -e 'quit app "NotchFlow"'). Re-sampling WindowServer immediately after showed 0.0% CPU across four consecutive samples taken 3s apart.

Expected

Rendering an idle notch status overlay shouldn't require sustained heavy WindowServer load.

Additional notes

  • No settings/preferences UI exists in the app (it's an LSUIElement background app) and no lighter/low-power/reduced-motion toggle was found in the binary — it only reads the system's isLowPowerModeEnabled via ProcessInfo, it doesn't expose its own performance mode.
  • A "lite mode" (lower redraw/animation frequency, or auto-degrading when the system reports Low Power Mode) would likely fix this.

Activity

  1. ikentrock commented on Aug 9, 2026

    @ikentrock
    Author

    Update: the build I tested (0.1.0, build 1, ad-hoc signed locally on 2026-07-29 12:47) was very likely compiled from commit 5a87305 (2026-07-28, "Ask for Accessibility at the first jump, not at launch") — the last commit before that build timestamp — not from current main.

    I checked the commit history up to current HEAD (7931f5f, 2026-08-07) and didn't find anything after 5a87305 touching notch rendering / animation / WindowServer / low-power handling, so I'd still expect this to reproduce on latest main. Flagging the exact base commit in case there's a fix in between that I missed, or in case you want a fresh measurement against a build from current HEAD before investigating further.

  2. cloudstudio commented on Aug 10, 2026

    @cloudstudio
    Owner

    Implemented in #11.

    The permanently running eye timeline has been replaced with finite explicit animation schedules. Stable faces now render once, attention feedback is bounded, and Low Power Mode caps every animated burst. Five focused policy tests were added.

    The macOS CI workflow completed successfully on commit f7f5342. A same-machine WindowServer A/B measurement is still useful as follow-up validation, but the unbounded idle redraw path is removed.

    Closing this as completed; review and any follow-up remain tracked in #11.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions