fix(window): force dark native title bar
Apply Electron nativeTheme dark mode before creating the main window so the Windows title bar remains dark across local, server, and RDP user profiles. Add focused coverage for the native theme contract.
This commit is contained in:
+6
-3
@@ -1,7 +1,7 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { pathToFileURL } from "node:url";
|
||||
import { app, BrowserWindow, clipboard, dialog, ipcMain, Menu, powerMonitor, safeStorage, shell, Tray, type IpcMainEvent, type IpcMainInvokeEvent } from "electron";
|
||||
import { app, BrowserWindow, clipboard, dialog, ipcMain, Menu, nativeTheme, powerMonitor, safeStorage, shell, Tray, type IpcMainEvent, type IpcMainInvokeEvent } from "electron";
|
||||
import { AddLinksPayload, AppSettings, DebridProvider, EnableRemoteDiagnosticsInput, RendererSettingsUpdate, UpdateInstallProgress } from "../shared/types";
|
||||
import { AppController } from "./app-controller";
|
||||
import { IPC_CHANNELS } from "../shared/ipc";
|
||||
@@ -25,8 +25,11 @@ import { validateRealDebridLoginRequest } from "../shared/preload-api";
|
||||
import { migrateProductUserDataDirectory } from "./storage";
|
||||
import { validateCollectorContainerInspectionRequest, validateCollectorInspectionRequest } from "../shared/collector";
|
||||
import { DailyStartScheduler, hasDailyStartRulePatch, prepareDailyStartSettingsPatch } from "./daily-start-scheduler";
|
||||
|
||||
function validateString(value: unknown, name: string): string {
|
||||
import { forceDarkNativeTheme } from "./native-theme";
|
||||
|
||||
forceDarkNativeTheme(nativeTheme);
|
||||
|
||||
function validateString(value: unknown, name: string): string {
|
||||
if (typeof value !== "string") {
|
||||
throw new Error(`${name} muss ein String sein`);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
export interface NativeThemeTarget {
|
||||
themeSource: string;
|
||||
}
|
||||
|
||||
export function forceDarkNativeTheme(theme: NativeThemeTarget): void {
|
||||
theme.themeSource = "dark";
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { forceDarkNativeTheme } from "../src/main/native-theme";
|
||||
|
||||
describe("native window theme", () => {
|
||||
it("forces the native Windows title bar to use the dark theme", () => {
|
||||
const theme = { themeSource: "system" };
|
||||
|
||||
forceDarkNativeTheme(theme);
|
||||
|
||||
expect(theme.themeSource).toBe("dark");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user