From 09210898a08689e35f3b83d0ae8086d04c306737 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Wed, 30 Sep 2026 17:13:02 +0200 Subject: [PATCH] Fix native titlebar setting --- src/Vencord.ts | 11 +++++------ src/api/Settings.ts | 4 ++-- src/components/settings/tabs/vencord/index.tsx | 14 +++++--------- src/main/patcher.ts | 6 ++---- src/nativeTitleBar.css | 7 +++++++ 5 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 src/nativeTitleBar.css diff --git a/src/Vencord.ts b/src/Vencord.ts index 17790136d..4a7e544bc 100644 --- a/src/Vencord.ts +++ b/src/Vencord.ts @@ -20,6 +20,8 @@ import "~plugins"; import "./fixWeirdAppRegionBug.css"; +import nativeTitleBarStyles from "./nativeTitleBar.css?managed"; + export * as Api from "./api"; export * as Plugins from "./api/PluginManager"; export * as Components from "./components"; @@ -29,11 +31,9 @@ export * as Webpack from "./webpack"; export * as WebpackPatcher from "./webpack/patchWebpack"; export { PlainSettings, Settings }; -import { coreStyleRootNode, initStyles } from "@api/Styles"; +import { enableStyle, initStyles } from "@api/Styles"; import { openSettingsTabModal, UpdaterTab } from "@components/settings"; import { debounce } from "@shared/debounce"; -import { IS_WINDOWS } from "@utils/constants"; -import { createAndAppendStyle } from "@utils/css"; import { StartAt } from "@utils/types"; import { SettingsRouter } from "@webpack/common"; @@ -181,8 +181,7 @@ init(); document.addEventListener("DOMContentLoaded", () => { startAllPlugins(StartAt.DOMContentLoaded); - // FIXME - if (IS_DISCORD_DESKTOP && Settings.winNativeTitleBar && IS_WINDOWS) { - createAndAppendStyle("vencord-native-titlebar-style", coreStyleRootNode).textContent = "[class*=titleBar]{display: none!important}"; + if (IS_DISCORD_DESKTOP && Settings.nativeTitleBar) { + enableStyle(nativeTitleBarStyles); } }, { once: true }); diff --git a/src/api/Settings.ts b/src/api/Settings.ts index 2bcc785f9..f5ddfa294 100644 --- a/src/api/Settings.ts +++ b/src/api/Settings.ts @@ -64,7 +64,7 @@ export interface Settings { | undefined; windowsMaterial: "none" | "mica" | "tabbed" | "acrylic"; disableMinSize: boolean; - winNativeTitleBar: boolean; + nativeTitleBar: boolean; plugins: { [plugin: string]: { enabled: boolean; @@ -107,7 +107,7 @@ const DefaultSettings: Settings = { macosVibrancyStyle: undefined, windowsMaterial: "none", disableMinSize: false, - winNativeTitleBar: false, + nativeTitleBar: false, plugins: {}, uiElements: { diff --git a/src/components/settings/tabs/vencord/index.tsx b/src/components/settings/tabs/vencord/index.tsx index ca4ddede6..5bd1718a3 100644 --- a/src/components/settings/tabs/vencord/index.tsx +++ b/src/components/settings/tabs/vencord/index.tsx @@ -51,7 +51,7 @@ type KeysOfType = { }[keyof Object]; function Switches() { - const settings = useSettings(["useQuickCss", "enableReactDevtools", "frameless", "winNativeTitleBar", "transparent", "winCtrlQ", "disableMinSize"]); + const settings = useSettings(["useQuickCss", "enableReactDevtools", "frameless", "nativeTitleBar", "transparent", "winCtrlQ", "disableMinSize"]); const Switches = [ { @@ -59,15 +59,11 @@ function Switches() { title: "Enable Custom CSS", description: "Apply your configured QuickCSS" }, - !IS_WEB && (!IS_DISCORD_DESKTOP || !IS_WINDOWS ? { - key: "frameless", - title: "Disable the window frame", + IS_DISCORD_DESKTOP && { + key: "nativeTitleBar", + title: "Enable the system's title bar in addition to Discord's custom one", restartRequired: true - } : { - key: "winNativeTitleBar", - title: "Use Windows' native title bar instead of Discord's custom one", - restartRequired: true - }), + }, !IS_WEB && { key: "transparent", title: "Enable window transparency", diff --git a/src/main/patcher.ts b/src/main/patcher.ts index 42083f655..a3e5d75e3 100644 --- a/src/main/patcher.ts +++ b/src/main/patcher.ts @@ -74,15 +74,13 @@ if (!IS_VANILLA) { return; } - const { frameless, winNativeTitleBar, disableMinSize, transparent, macosVibrancyStyle, windowsMaterial } = settings; + const { nativeTitleBar, disableMinSize, transparent, macosVibrancyStyle, windowsMaterial } = settings; const original = options.webPreferences.preload; options.webPreferences.preload = join(__dirname, "preload.js"); options.webPreferences.sandbox = false; - if (frameless) { - options.frame = false; - } else if (process.platform === "win32" && winNativeTitleBar) { + if (nativeTitleBar) { delete options.frame; } diff --git a/src/nativeTitleBar.css b/src/nativeTitleBar.css new file mode 100644 index 000000000..f9e5ba465 --- /dev/null +++ b/src/nativeTitleBar.css @@ -0,0 +1,7 @@ +[class*="bar_"] { + margin-inline-end: 12px !important; +} + +[class*="winButtons_"] { + display: none !important; +} \ No newline at end of file