From b6c3c8024b60d8d8e0f76457ceee941613c1329c Mon Sep 17 00:00:00 2001 From: Vendicated Date: Tue, 28 May 2024 18:11:55 +0200 Subject: [PATCH 1/4] disable background throttling; hopefully fix unloads when in background --- src/main/index.ts | 13 +++++++------ src/main/mainWindow.ts | 4 +++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index 87ef60c..29010c4 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -42,7 +42,13 @@ function init() { // disable renderer backgrounding to prevent the app from unloading when in the background // https://github.com/electron/electron/issues/2822 + // https://github.com/GoogleChrome/chrome-launcher/blob/5a27dd574d47a75fec0fb50f7b774ebf8a9791ba/docs/chrome-flags-for-tools.md#task-throttling app.commandLine.appendSwitch("disable-renderer-backgrounding"); + app.commandLine.appendSwitch("disable-background-timer-throttling"); + app.commandLine.appendSwitch("disable-backgrounding-occluded-windows"); + if (process.platform === "win32") { + disabledFeatures.push("CalculateNativeWinOcclusion"); + } // work around chrome 66 disabling autoplay by default app.commandLine.appendSwitch("autoplay-policy", "no-user-gesture-required"); @@ -50,12 +56,7 @@ function init() { // HardwareMediaKeyHandling,MediaSessionService: Prevent Discord from registering as a media service. // // WidgetLayering (Vencord Added): Fix DevTools context menus https://github.com/electron/electron/issues/38790 - disabledFeatures.push( - "WinRetrieveSuggestionsOnlyOnDemand", - "HardwareMediaKeyHandling", - "MediaSessionService", - "WidgetLayering" - ); + disabledFeatures.push("WinRetrieveSuggestionsOnlyOnDemand", "HardwareMediaKeyHandling", "MediaSessionService"); app.commandLine.appendSwitch("enable-features", [...new Set(enabledFeatures)].filter(Boolean).join(",")); app.commandLine.appendSwitch("disable-features", [...new Set(disabledFeatures)].filter(Boolean).join(",")); diff --git a/src/main/mainWindow.ts b/src/main/mainWindow.ts index a3675d8..12772d9 100644 --- a/src/main/mainWindow.ts +++ b/src/main/mainWindow.ts @@ -403,7 +403,9 @@ function createMainWindow() { contextIsolation: true, devTools: true, preload: join(__dirname, "preload.js"), - spellcheck: true + spellcheck: true, + // disable renderer backgrounding to prevent the app from unloading when in the background + backgroundThrottling: false }, icon: ICON_PATH, frame: !noFrame, From 3772db9eeac82b38871031fb6c179a0fdaeffca6 Mon Sep 17 00:00:00 2001 From: MrGarlic1 <61215937+MrGarlic1@users.noreply.github.com> Date: Tue, 28 May 2024 20:03:01 -0400 Subject: [PATCH 2/4] Windows Portable: store settings in portable folder (#592) Co-authored-by: MrGarlic Co-authored-by: vee --- src/main/constants.ts | 17 ++++++++++++++--- src/updater/main.ts | 8 ++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/constants.ts b/src/main/constants.ts index 1a02d5e..1bce303 100644 --- a/src/main/constants.ts +++ b/src/main/constants.ts @@ -5,11 +5,22 @@ */ import { app } from "electron"; -import { existsSync, readdirSync, renameSync, rmdirSync } from "fs"; -import { join } from "path"; +import { existsSync, mkdirSync, readdirSync, renameSync, rmdirSync } from "fs"; +import { dirname, join } from "path"; + +const vesktopDir = dirname(process.execPath); + +export const PORTABLE = + process.platform === "win32" && + !process.execPath.toLowerCase().endsWith("electron.exe") && + !existsSync(join(vesktopDir, "Uninstall Vesktop.exe")); const LEGACY_DATA_DIR = join(app.getPath("appData"), "VencordDesktop", "VencordDesktop"); -export const DATA_DIR = process.env.VENCORD_USER_DATA_DIR || join(app.getPath("userData")); +export const DATA_DIR = + process.env.VENCORD_USER_DATA_DIR || (PORTABLE ? join(vesktopDir, "Data") : join(app.getPath("userData"))); + +mkdirSync(DATA_DIR, { recursive: true }); + // TODO: remove eventually if (existsSync(LEGACY_DATA_DIR)) { try { diff --git a/src/updater/main.ts b/src/updater/main.ts index 207687e..4c19ffd 100644 --- a/src/updater/main.ts +++ b/src/updater/main.ts @@ -5,6 +5,7 @@ */ import { app, BrowserWindow, shell } from "electron"; +import { PORTABLE } from "main/constants"; import { Settings, State } from "main/settings"; import { handle } from "main/utils/ipcWrappers"; import { makeLinksOpenExternally } from "main/utils/makeLinksOpenExternally"; @@ -23,17 +24,12 @@ let updateData: UpdateData; handle(IpcEvents.UPDATER_GET_DATA, () => updateData); handle(IpcEvents.UPDATER_DOWNLOAD, () => { - const portable = !!process.env.PORTABLE_EXECUTABLE_FILE; - const { assets } = updateData.release; const url = (() => { switch (process.platform) { case "win32": return assets.find(a => { - if (!a.name.endsWith(".exe")) return false; - - const isSetup = a.name.includes("Setup"); - return portable ? !isSetup : isSetup; + return a.name.endsWith(PORTABLE ? "win.zip" : ".exe"); })!.browser_download_url; case "darwin": return assets.find(a => From d3e8dfa724b38622fd957b10ce2d97f3d6c5275d Mon Sep 17 00:00:00 2001 From: MrGarlic1 <61215937+MrGarlic1@users.noreply.github.com> Date: Sat, 1 Jun 2024 11:25:42 -0400 Subject: [PATCH 3/4] hide macos traffic light with custom titlebar (#636) Co-authored-by: MrGarlic --- src/main/mainWindow.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/mainWindow.ts b/src/main/mainWindow.ts index 12772d9..5bbbb61 100644 --- a/src/main/mainWindow.ts +++ b/src/main/mainWindow.ts @@ -430,6 +430,7 @@ function createMainWindow() { autoHideMenuBar: enableMenu })); win.setMenuBarVisibility(false); + if (process.platform === "darwin" && customTitleBar) win.setWindowButtonVisibility(false); win.on("close", e => { const useTray = !isDeckGameMode && Settings.store.minimizeToTray !== false && Settings.store.tray !== false; From 7fe79b629ead44e6d781378d8c59db04dd73ceb8 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 1 Jun 2024 19:12:29 +0200 Subject: [PATCH 4/4] fix(css): brand-experiment is now brand-500 --- src/renderer/components/screenSharePicker.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/renderer/components/screenSharePicker.css b/src/renderer/components/screenSharePicker.css index c2586a1..645f73c 100644 --- a/src/renderer/components/screenSharePicker.css +++ b/src/renderer/components/screenSharePicker.css @@ -38,7 +38,7 @@ } .vcd-screen-picker-selected img { - border: 2px solid var(--brand-experiment); + border: 2px solid var(--brand-500); border-radius: 3px; } @@ -49,7 +49,7 @@ } .vcd-screen-picker-grid label:hover { - outline: 2px solid var(--brand-experiment); + outline: 2px solid var(--brand-500); } @@ -101,8 +101,8 @@ } .vcd-screen-picker-radio[data-checked="true"] { - background-color: var(--brand-experiment); - border-color: var(--brand-experiment); + background-color: var(--brand-500); + border-color: var(--brand-500); } .vcd-screen-picker-radio[data-checked="true"] h2 {