[FEAT] Memory: 1.29 GB → 512 MB with --process-per-site; make it (or lazy popups) the default
Is your feature request related to a problem? Please describe.
With the default settings Seelen UI keeps one Chromium renderer process per widget webview. On a two-monitor desktop that is 12 webviews (fancy-toolbar, weg and window-manager per monitor, plus apps-menu, flyouts, notifications, system-tray, task-switcher and tooltip), and this is what it costs on Windows 11 (v2.8.6, GPU mode, measured with the working set / private bytes of every msedgewebview2.exe whose command line belongs to Seelen):
| processes | working set | private bytes | |
|---|---|---|---|
default (unstableOptimizations: false) |
14 (9 renderers of 80–143 MB, browser, gpu, 2 utility, crashpad) | 1 290 MB | ≈ 850 MB |
unstableOptimizations: true (--process-per-site) |
6 (1 renderer of 181 MB) | 512 MB | 422 MB |
Same widgets, same layout, bars and dock identical, no new errors in the log. The single renderer for all 12 webviews takes 132 MB private vs 555 MB for the nine separate ones. seelen-ui.exe itself is 169 MB either way, slu-service 12 MB.
performanceMode does not help here (it only affects animations), so a new user with the defaults pays ~800 MB more than necessary and has no hint in the settings that the "unstable optimizations" toggle is where the memory goes.
Describe the solution you'd like
Two things, independent of each other:
Reconsider the default for
--process-per-site, or a middle ground such as--renderer-process-limit=<n>so a crashed renderer only takes down a few widgets instead of all of them, and describe the toggle in the settings UI in terms of what it actually does ("one shared renderer, ~60 % less memory, a widget crash may restart the others").Lazy popups: apps-menu, flyouts, notifications, system-tray, task-switcher and tooltip are created at startup and kept alive forever even though they are visible for seconds at a time. Creating them on first use (and optionally dropping them after being hidden for a while) would reduce both startup work and memory for everybody, including users who keep the per-widget process model. I'm happy to send a PR for this part if you agree with the direction.
Describe alternatives you've considered
Keeping everything as is and documenting the toggle. Cheapest, but the measured gap is large enough that most users would want it and never find it.
Additional context
Hardware for the numbers above: desktop, 2 external monitors, 48 GB RAM, Windows 11 26200. Numbers are working set / private bytes right after startup with the dock and toolbar idle.
Generated with Claude Code
Source: eythaann/Seelen-UI