From 3c36477b1e30946b5e3143034e8fae556a2721c5 Mon Sep 17 00:00:00 2001 From: Angelos Bouklis Date: Wed, 28 Aug 2024 06:19:30 +0300 Subject: [PATCH] fix: hide native-controls on linux when in-app-menu is used (#2366) --- src/index.ts | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/index.ts b/src/index.ts index 15019c91..982a6fee 100644 --- a/src/index.ts +++ b/src/index.ts @@ -56,6 +56,7 @@ import { loadI18n, setLanguage, t } from '@/i18n'; import ErrorHtmlAsset from '@assets/error.html?asset'; import type { PluginConfig } from '@/types/plugins'; +import BrowserWindowConstructorOptions = Electron.BrowserWindowConstructorOptions; if (!is.macOS()) { delete allPlugins['touchbar']; @@ -286,6 +287,23 @@ async function createMainWindow() { height: 32, }; + const decorations: Partial = { + frame: !is.macOS() && !useInlineMenu, + titleBarOverlay: defaultTitleBarOverlayOptions, + titleBarStyle: useInlineMenu + ? 'hidden' + : is.macOS() + ? 'hiddenInset' + : 'default', + autoHideMenuBar: config.get('options.hideMenu'), + }; + + // Note: on linux, for some weird reason, having these extra properties with 'frame: false' does not work + if (is.linux() && useInlineMenu) { + delete decorations.titleBarOverlay; + delete decorations.titleBarStyle; + } + const win = new BrowserWindow({ icon, width: windowSize.width, @@ -303,14 +321,7 @@ async function createMainWindow() { sandbox: false, }), }, - frame: !is.macOS() && !useInlineMenu, - titleBarOverlay: defaultTitleBarOverlayOptions, - titleBarStyle: useInlineMenu - ? 'hidden' - : is.macOS() - ? 'hiddenInset' - : 'default', - autoHideMenuBar: config.get('options.hideMenu'), + ...decorations, }); initHook(win); initTheme(win);