fix: dark native chrome — no white flash on resize or first paint
Live-resize frame lag: the native window surface resizes before the compositor has a frame at the new size; the gap showed Electron's default WHITE window background — glaring on a dark app, at the edges on shrink. The standard treatment, all three: - BrowserWindow backgroundColor '#141414' fills the lag with the app bg - show: false + ready-to-show — the window appears only after the page has rendered (kills the first-paint white window) - color-scheme: dark — native widgets and scrollbars render dark Owner resize-verified in the Electron dev shell.
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
/* Palette (owner's hexes): main #141414, raised #1C1C1C, edges #434343.
|
||||
Mono chrome = JetBrains Mono; prose = Source Sans 3; titles = CMU Serif. */
|
||||
:root {
|
||||
color-scheme: dark;
|
||||
--radius: 8px;
|
||||
--background: #141414;
|
||||
--foreground: #e6e6e6;
|
||||
|
||||
@@ -200,6 +200,15 @@ function createWindow(url) {
|
||||
sandbox: true,
|
||||
nodeIntegration: false,
|
||||
},
|
||||
// Live-resize + first-paint flash (owner, 2026-09-17): during a resize
|
||||
// the native window surface changes size before Chromium's compositor
|
||||
// has a frame at the new size, and the gap shows the window's NATIVE
|
||||
// background — Electron's default is white, glaring on a dark app.
|
||||
// The app background (#141414) fills the lag instead. `show: false` +
|
||||
// ready-to-show is the same treatment for first paint: the window
|
||||
// appears only once the page has actually rendered.
|
||||
backgroundColor: "#141414",
|
||||
show: false,
|
||||
});
|
||||
|
||||
const allowedOrigin = () => new URL(url).origin;
|
||||
@@ -226,6 +235,7 @@ function createWindow(url) {
|
||||
});
|
||||
|
||||
void win.loadURL(url);
|
||||
win.once("ready-to-show", () => win.show());
|
||||
return win;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user