/** * Grundfarbe des Fensters, bevor die Anzeige das erste Mal gezeichnet hat. * * Befund L12 (EN 301 549 Kap. 11.7): In `createWindow` stand fest `#f4f6f9` - * der Wert von `--grund` aus dem HELLEN Erscheinungsbild. Wer im dunklen Modus * oder in einem dunklen Kontrastdesign arbeitet, bekam damit bei jedem Start * und bei jedem "Neu laden" einen hellen Blitz. Fuer Anwender mit * Lichtempfindlichkeit, Migraene oder Photophobie ist das kein * Schoenheitsfehler. * * Die beiden Werte stehen hier ein zweites Mal - der Hauptprozess kennt das * Stylesheet nicht, er hat keine CSS-Variablen. Ein eigenes Modul, damit die * Doppelung nachpruefbar bleibt: `tests/electron/fenstergrund.test.ts` liest die * Werte aus src/styles/app.css und vergleicht. Wer dort `--grund` aendert und * hier nicht, erfaehrt es beim naechsten Testlauf statt beim naechsten Start. * * DAS KONTRASTDESIGN IST DIE ZWEITE EINGANGSGROESSE * * Bei aktivem Kontrastdesign malt die Anzeige keine der beiden Farben: Windows * ersetzt unter `forced-colors: active` alle Farben durch das vom Anwender * gewaehlte Paar, und `body { background: var(--grund) }` wird zum Systemgrund * `Canvas` (siehe den Kommentar ueber `@media (forced-colors: active)` in * src/styles/app.css). Die Wahl des Kontrastdesigns haengt ausserdem nicht am * Windows-Schalter fuer App-Farben: Bei "App-Farbmodus hell" plus dunklem * Kontrastdesign steht `nativeTheme.shouldUseDarkColors` auf `false`. Der * Hauptprozess malte dann FENSTER_GRUND_HELL unter eine nahezu schwarze * Anzeige - genau der Blitz, den dieses Modul beseitigen soll (Befund 30). * * Deshalb nimmt `fensterGrundfarbe` zusaetzlich die vom Betriebssystem * gemeldete Grundfarbe entgegen. Sie ist nichts, was dieses Programm * geschrieben hat; taugt sie nicht als Farbangabe, gilt weiter die * Anwendungsfarbe. */ /** `--grund` aus `:root` in src/styles/app.css. */ export const FENSTER_GRUND_HELL = '#f4f6f9'; /** `--grund` aus `:root[data-erscheinungsbild='dunkel']` in src/styles/app.css. */ export const FENSTER_GRUND_DUNKEL = '#12161d'; /** Farbangabe, mit der sich ein Fenster fuellen laesst: `#rgb` bis `#rrggbbaa`. */ const FARBANGABE = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/; /** * Grundfarbe des Fensters. * * `kontrastgrund` ist die vom Betriebssystem gemeldete Fenstergrundfarbe des * Kontrastdesigns, sonst `null`; sie geht den beiden Anwendungsfarben vor. */ export function fensterGrundfarbe(dunkel: boolean, kontrastgrund: string | null = null): string { if (kontrastgrund !== null && FARBANGABE.test(kontrastgrund)) return kontrastgrund; return dunkel ? FENSTER_GRUND_DUNKEL : FENSTER_GRUND_HELL; }