From 2e4c834a909397ab9d4a853085ef49987e79ab76 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Tue, 16 Jan 2024 01:08:06 +0100 Subject: [PATCH] also allow using discord titlebar on non-windows --- src/main/mainWindow.ts | 6 +++--- src/main/settings.ts | 10 ++++++++-- src/renderer/components/Settings.tsx | 8 ++++---- src/renderer/patches/platformClass.tsx | 4 ++-- src/renderer/patches/windowsTitleBar.tsx | 2 +- src/shared/settings.d.ts | 5 ++++- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/main/mainWindow.ts b/src/main/mainWindow.ts index 2561c43..fb7f926 100644 --- a/src/main/mainWindow.ts +++ b/src/main/mainWindow.ts @@ -374,11 +374,11 @@ function createMainWindow() { removeSettingsListeners(); removeVencordSettingsListeners(); - const { staticTitle, transparencyOption, enableMenu, discordWindowsTitleBar } = Settings.store; + const { staticTitle, transparencyOption, enableMenu, customTitleBar } = Settings.store; const { frameless } = VencordSettings.store; - const noFrame = frameless === true || (process.platform === "win32" && discordWindowsTitleBar === true); + const noFrame = frameless === true || customTitleBar === true; const win = (mainWin = new BrowserWindow({ show: false, @@ -398,7 +398,7 @@ function createMainWindow() { backgroundMaterial: transparencyOption }), // Fix transparencyOption for custom discord titlebar - ...(discordWindowsTitleBar && + ...(customTitleBar && transparencyOption && transparencyOption !== "none" && { transparent: true diff --git a/src/main/settings.ts b/src/main/settings.ts index c4df364..03c705e 100644 --- a/src/main/settings.ts +++ b/src/main/settings.ts @@ -35,9 +35,15 @@ function loadSettings(file: string, name: string) { } export const Settings = loadSettings(SETTINGS_FILE, "Vesktop settings"); +if (Object.hasOwn(Settings.plain, "discordWindowsTitleBar")) { + Settings.plain.customTitleBar = Settings.plain.discordWindowsTitleBar; + delete Settings.plain.discordWindowsTitleBar; + Settings.markAsChanged(); +} + export const VencordSettings = loadSettings(VENCORD_SETTINGS_FILE, "Vencord settings"); -if (Object.hasOwn(Settings.store, "firstLaunch") && !existsSync(STATE_FILE)) { +if (Object.hasOwn(Settings.plain, "firstLaunch") && !existsSync(STATE_FILE)) { console.warn("legacy state in settings.json detected. migrating to state.json"); const state = {} as TState; for (const prop of [ @@ -47,7 +53,7 @@ if (Object.hasOwn(Settings.store, "firstLaunch") && !existsSync(STATE_FILE)) { "skippedUpdate", "steamOSLayoutVersion", "windowBounds" - ]) { + ] as const) { state[prop] = Settings.plain[prop]; delete Settings.plain[prop]; } diff --git a/src/renderer/components/Settings.tsx b/src/renderer/components/Settings.tsx index 0c22138..b9ef4d6 100644 --- a/src/renderer/components/Settings.tsx +++ b/src/renderer/components/Settings.tsx @@ -10,7 +10,7 @@ import { Margins } from "@vencord/types/utils"; import { Button, Forms, Select, Switch, Text, Toasts, useState } from "@vencord/types/webpack/common"; import { setBadge } from "renderer/appBadge"; import { useSettings } from "renderer/settings"; -import { isMac, isWindows } from "renderer/utils"; +import { isMac } from "renderer/utils"; import { isTruthy } from "shared/utils/guards"; export default function SettingsUi() { @@ -21,10 +21,10 @@ export default function SettingsUi() { const [autoStartEnabled, setAutoStartEnabled] = useState(autostart.isEnabled()); const allSwitches: Array boolean)?]> = [ - isWindows && [ - "discordWindowsTitleBar", + [ + "customTitleBar", "Discord Titlebar", - "Use Discord's custom title bar instead of the Windows one. Requires a full restart." + "Use Discord's custom title bar instead of the native system one. Requires a full restart." ], !isMac && ["tray", "Tray Icon", "Add a tray icon for Vesktop", true], !isMac && [ diff --git a/src/renderer/patches/platformClass.tsx b/src/renderer/patches/platformClass.tsx index 30fbfd0..58767a8 100644 --- a/src/renderer/patches/platformClass.tsx +++ b/src/renderer/patches/platformClass.tsx @@ -5,7 +5,7 @@ */ import { Settings } from "renderer/settings"; -import { isMac, isWindows } from "renderer/utils"; +import { isMac } from "renderer/utils"; import { addPatch } from "./shared"; @@ -22,8 +22,8 @@ addPatch({ ], getPlatformClass() { + if (Settings.store.customTitleBar) return "platform-win"; if (isMac) return "platform-osx"; - if (isWindows && Settings.store.discordWindowsTitleBar) return "platform-win"; return "platform-web"; } }); diff --git a/src/renderer/patches/windowsTitleBar.tsx b/src/renderer/patches/windowsTitleBar.tsx index 4ae50b2..401e1c5 100644 --- a/src/renderer/patches/windowsTitleBar.tsx +++ b/src/renderer/patches/windowsTitleBar.tsx @@ -8,7 +8,7 @@ import { Settings } from "renderer/settings"; import { addPatch } from "./shared"; -if (Settings.store.discordWindowsTitleBar) +if (Settings.store.customTitleBar) addPatch({ patches: [ { diff --git a/src/shared/settings.d.ts b/src/shared/settings.d.ts index 8c63373..d796e4b 100644 --- a/src/shared/settings.d.ts +++ b/src/shared/settings.d.ts @@ -19,9 +19,12 @@ export interface Settings { hardwareAcceleration?: boolean; arRPC?: boolean; appBadge?: boolean; - discordWindowsTitleBar?: boolean; disableMinSize?: boolean; + /** @deprecated use customTitleBar */ + discordWindowsTitleBar?: boolean; + customTitleBar?: boolean; + checkUpdates?: boolean; splashTheming?: boolean;