From 0089346d0485f756d430c8d0d594cfb0455d8dd8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 1 Dec 2024 02:02:33 +0200 Subject: [PATCH 01/39] feat(electron): enable native window buttons on frameless --- src/public/app/layouts/desktop_layout.js | 2 -- src/services/window.ts | 14 ++++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index 995654f4c..a0f7f167c 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -103,7 +103,6 @@ export default class DesktopLayout { .class("tab-row-container") .child(new LeftPaneToggleWidget(true)) .child(new TabRowWidget().class("full-width")) - .child(new TitleBarButtonsWidget()) .css('height', '40px') .css('background-color', 'var(--launcher-pane-background-color)') .setParent(appContext) @@ -122,7 +121,6 @@ export default class DesktopLayout { .css("flex-grow", "1") .optChild(!launcherPaneIsHorizontal, new FlexContainer('row') .child(new TabRowWidget()) - .child(new TitleBarButtonsWidget()) .css('height', '40px') ) .child(new FlexContainer('row') diff --git a/src/services/window.ts b/src/services/window.ts index d0c625a15..370df0e63 100644 --- a/src/services/window.ts +++ b/src/services/window.ts @@ -8,7 +8,7 @@ import sqlInit from "./sql_init.js"; import cls from "./cls.js"; import keyboardActionsService from "./keyboard_actions.js"; import remoteMain from "@electron/remote/main/index.js"; -import { App, BrowserWindow, WebContents, ipcMain } from 'electron'; +import { App, BrowserWindow, BrowserWindowConstructorOptions, WebContents, ipcMain } from 'electron'; import { fileURLToPath } from "url"; import { dirname } from "path"; @@ -71,6 +71,12 @@ async function createMainWindow(app: App) { const { BrowserWindow } = (await import('electron')); // should not be statically imported + const extraOpts: Partial = {}; + if (!optionService.getOptionBool('nativeTitleBarVisible')) { + extraOpts.titleBarStyle = "hidden"; + extraOpts.titleBarOverlay = (process.platform !== "darwin"); + } + mainWindow = new BrowserWindow({ x: mainWindowState.x, y: mainWindowState.y, @@ -82,9 +88,9 @@ async function createMainWindow(app: App) { contextIsolation: false, spellcheck: spellcheckEnabled, webviewTag: true - }, - frame: optionService.getOptionBool('nativeTitleBarVisible'), - icon: getIcon() + }, + icon: getIcon(), + ...extraOpts }); mainWindowState.manage(mainWindow); From 60192977c9e8a07a26170c4e47c02a25c63f7a00 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 1 Dec 2024 02:18:35 +0200 Subject: [PATCH 02/39] feat(electron): set overlay information at runtime --- src/public/app/desktop.js | 18 ++++++++++++++++-- src/public/stylesheets/theme-next.css | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/public/app/desktop.js b/src/public/app/desktop.js index 835624d35..313bee034 100644 --- a/src/public/app/desktop.js +++ b/src/public/app/desktop.js @@ -30,8 +30,7 @@ bundleService.getWidgetBundlesByParent().then(async widgetBundles => { glob.setupGlobs(); if (utils.isElectron()) { - utils.dynamicRequire('electron').ipcRenderer.on('globalShortcut', - async (event, actionName) => appContext.triggerCommand(actionName)); + initOnElectron(); } macInit.init(); @@ -43,3 +42,18 @@ noteAutocompleteService.init(); if (utils.isElectron()) { electronContextMenu.setupContextMenu(); } + +function initOnElectron() { + const electron = utils.dynamicRequire('electron'); + electron.ipcRenderer.on('globalShortcut', async (event, actionName) => appContext.triggerCommand(actionName)); + + // Update the native title bar buttons. + const electronRemote = utils.dynamicRequire("@electron/remote"); + const currentWindow = electronRemote.getCurrentWindow(); + currentWindow.setTitleBarOverlay({ + color: "red", + symbolColor: "white" + }); + + console.log("Electron initialized."); +} \ No newline at end of file diff --git a/src/public/stylesheets/theme-next.css b/src/public/stylesheets/theme-next.css index 22556aba9..8c3bf8536 100644 --- a/src/public/stylesheets/theme-next.css +++ b/src/public/stylesheets/theme-next.css @@ -20,7 +20,7 @@ :root { /* --main-font-family: "Noto Sans", sans-serif; */ - --main-font-family: "Ubuntu Sans", sans-serif; + --main-font-family: "Segoe UI", sans-serif; /* --main-font-family: "Ubuntu", sans-serif; */ /* --main-font-family: "Nunito", sans-serif; */ /* --main-font-family: "Inter", sans-serif; */ From 01512152ea5345d417b49c98c206a1cd851db615 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 1 Dec 2024 02:36:00 +0200 Subject: [PATCH 03/39] feat(electron): load overlay information from CSS --- src/public/app/desktop.js | 7 ++++--- src/public/stylesheets/style.css | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/public/app/desktop.js b/src/public/app/desktop.js index 313bee034..aa9564c07 100644 --- a/src/public/app/desktop.js +++ b/src/public/app/desktop.js @@ -50,10 +50,11 @@ function initOnElectron() { // Update the native title bar buttons. const electronRemote = utils.dynamicRequire("@electron/remote"); const currentWindow = electronRemote.getCurrentWindow(); + const documentStyle = window.getComputedStyle(document.documentElement); currentWindow.setTitleBarOverlay({ - color: "red", - symbolColor: "white" + color: documentStyle.getPropertyValue("--native-titlebar-background"), + symbolColor: documentStyle.getPropertyValue("--native-titlebar-foreground") }); - + console.log("Electron initialized."); } \ No newline at end of file diff --git a/src/public/stylesheets/style.css b/src/public/stylesheets/style.css index cb8cdd1aa..87a2144d1 100644 --- a/src/public/stylesheets/style.css +++ b/src/public/stylesheets/style.css @@ -21,6 +21,8 @@ :root { --submenu-opening-delay: 300ms; + --native-titlebar-background: var(--left-pane-background-color); + --native-titlebar-foreground: var(--main-text-color); } html { From bd890c49d5a8df25113d4e3f5b825e436405a13a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 1 Dec 2024 03:02:03 +0200 Subject: [PATCH 04/39] feat(electron): relocate pin to global menu --- src/public/app/widgets/buttons/global_menu.js | 22 ++++ src/public/app/widgets/title_bar_buttons.js | 112 ------------------ 2 files changed, 22 insertions(+), 112 deletions(-) delete mode 100644 src/public/app/widgets/title_bar_buttons.js diff --git a/src/public/app/widgets/buttons/global_menu.js b/src/public/app/widgets/buttons/global_menu.js index 9ee235a45..6607c0182 100644 --- a/src/public/app/widgets/buttons/global_menu.js +++ b/src/public/app/widgets/buttons/global_menu.js @@ -143,6 +143,11 @@ const TPL = ` + +