diff --git a/src/main/autoStart.ts b/src/main/autoStart.ts index fbbc30ec..dac8e63a 100644 --- a/src/main/autoStart.ts +++ b/src/main/autoStart.ts @@ -10,38 +10,51 @@ import { join } from "path"; interface AutoStart { isEnabled(): boolean; + wasAutoStarted(): boolean; enable(): void; disable(): void; } +const isFlatpak = process.env.FLATPAK_ID !== undefined; + function makeAutoStartLinux(): AutoStart { const configDir = process.env.XDG_CONFIG_HOME || join(process.env.HOME!, ".config"); const dir = join(configDir, "autostart"); const file = join(dir, "vencord.desktop"); return { - isEnabled: () => existsSync(file), + isEnabled: () => existsSync(file), // TODO: flatpak + wasAutoStarted: () => process.argv.includes("--autostart"), enable() { - const desktopFile = ` + if (isFlatpak) { + } else { + const desktopFile = ` [Desktop Entry] Type=Application Version=1.0 Name=Vencord Comment=Vencord autostart script -Exec=${process.execPath} +Exec=${process.execPath} --autostart Terminal=false StartupNotify=false `.trim(); - mkdirSync(dir, { recursive: true }); - writeFileSync(file, desktopFile); + mkdirSync(dir, { recursive: true }); + writeFileSync(file, desktopFile); + } }, - disable: () => rmSync(file, { force: true }) + disable: () => { + if (isFlatpak) { + } else { + rmSync(file, { force: true }); + } + } }; } const autoStartWindowsMac: AutoStart = { isEnabled: () => app.getLoginItemSettings().openAtLogin, + wasAutoStarted: () => app.getLoginItemSettings().wasOpenedAtLogin, enable: () => app.setLoginItemSettings({ openAtLogin: true }), disable: () => app.setLoginItemSettings({ openAtLogin: false }) }; diff --git a/src/main/mainWindow.ts b/src/main/mainWindow.ts index 6e9a05c6..cd2fd628 100644 --- a/src/main/mainWindow.ts +++ b/src/main/mainWindow.ts @@ -24,6 +24,7 @@ import type { SettingsStore } from "shared/utils/SettingsStore"; import { ICON_PATH } from "../shared/paths"; import { createAboutWindow } from "./about"; import { initArRPC } from "./arrpc"; +import { autoStart } from "./autoStart"; import { DATA_DIR, DEFAULT_HEIGHT, @@ -442,8 +443,8 @@ function createMainWindow() { const runVencordMain = once(() => require(join(VENCORD_FILES_DIR, "vencordDesktopMain.js"))); export async function createWindows() { - const { startMinimized } = Settings.store; - const splash = createSplashWindow(startMinimized); + const shouldStartMinimized = Settings.store.startMinimized && autoStart.wasAutoStarted(); + const splash = createSplashWindow(shouldStartMinimized); // SteamOS letterboxes and scales it terribly, so just full screen it if (isDeckGameMode) splash.setFullScreen(true); await ensureVencordFiles(); @@ -454,7 +455,7 @@ export async function createWindows() { mainWin.webContents.on("did-finish-load", () => { splash.destroy(); - if (!startMinimized || isDeckGameMode) mainWin!.show(); + if (!shouldStartMinimized || isDeckGameMode) mainWin!.show(); if (isDeckGameMode) { // always use entire display