From 419cb8eb4a00c96cb17f17754bad376360a443f8 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 15 May 2024 18:14:49 +0200 Subject: [PATCH 001/896] feat: new folder structure --- src/common/config.ts | 157 ++++++ src/common/dom.ts | 20 + src/common/flags.ts | 47 ++ src/common/lang.ts | 67 +++ src/common/sleep.ts | 3 + src/common/version.ts | 19 + src/common/windowState.ts | 34 ++ src/{ => discord}/content/css/discord.css | 0 .../content/css/inAppSettings.css | 0 src/{ => discord}/content/css/logos.css | 0 src/{ => discord}/content/css/mobile.css | 0 src/{ => discord}/content/css/screenshare.css | 0 src/{ => discord}/content/css/settings.css | 0 src/{ => discord}/content/css/settingsEng.css | 0 src/{ => discord}/content/css/setup.css | 0 src/{ => discord}/content/css/splash.css | 0 src/{ => discord}/content/css/titlebar.css | 0 .../content/js/disableAutogain.js | 0 src/{ => discord}/content/js/rpc.js | 0 .../mods.ts => discord/extensions/csp.ts} | 2 +- src/discord/extensions/mods.ts | 124 +++++ src/{ => discord}/extensions/plugin.ts | 0 src/{ => discord}/ipc.ts | 33 +- src/{ => discord}/menu.ts | 2 +- src/{ => discord}/preload/bridge.ts | 0 src/{ => discord}/preload/capturer.ts | 2 +- src/{ => discord}/preload/mobile.ts | 2 +- src/{ => discord}/preload/optimizer.ts | 0 src/{ => discord}/preload/preload.ts | 14 +- src/{ => discord}/preload/settings.ts | 9 +- src/{ => discord}/preload/titlebar.ts | 6 +- src/{ => discord}/screenshare/main.ts | 2 +- src/{ => discord}/screenshare/picker.html | 0 src/{ => discord}/screenshare/preload.ts | 0 src/{ => discord}/window.ts | 19 +- src/keybindMaker/main.ts | 66 --- src/keybindMaker/maker.html | 392 -------------- src/keybindMaker/preload.ts | 36 -- src/main.ts | 38 +- src/settings/main.ts | 2 +- src/setup/main.ts | 3 +- src/setup/preload.ts | 3 +- src/splash/main.ts | 2 +- src/themeManager/main.ts | 4 +- src/themeManager/preload.ts | 2 +- src/tray.ts | 5 +- src/utils.ts | 478 ------------------ tsconfig.json | 2 +- 48 files changed, 536 insertions(+), 1059 deletions(-) create mode 100644 src/common/config.ts create mode 100644 src/common/dom.ts create mode 100644 src/common/flags.ts create mode 100644 src/common/lang.ts create mode 100644 src/common/sleep.ts create mode 100644 src/common/version.ts create mode 100644 src/common/windowState.ts rename src/{ => discord}/content/css/discord.css (100%) rename src/{ => discord}/content/css/inAppSettings.css (100%) rename src/{ => discord}/content/css/logos.css (100%) rename src/{ => discord}/content/css/mobile.css (100%) rename src/{ => discord}/content/css/screenshare.css (100%) rename src/{ => discord}/content/css/settings.css (100%) rename src/{ => discord}/content/css/settingsEng.css (100%) rename src/{ => discord}/content/css/setup.css (100%) rename src/{ => discord}/content/css/splash.css (100%) rename src/{ => discord}/content/css/titlebar.css (100%) rename src/{ => discord}/content/js/disableAutogain.js (100%) rename src/{ => discord}/content/js/rpc.js (100%) rename src/{extensions/mods.ts => discord/extensions/csp.ts} (95%) create mode 100644 src/discord/extensions/mods.ts rename src/{ => discord}/extensions/plugin.ts (100%) rename src/{ => discord}/ipc.ts (91%) rename src/{ => discord}/menu.ts (98%) rename src/{ => discord}/preload/bridge.ts (100%) rename src/{ => discord}/preload/capturer.ts (97%) rename src/{ => discord}/preload/mobile.ts (92%) rename src/{ => discord}/preload/optimizer.ts (100%) rename src/{ => discord}/preload/preload.ts (87%) rename src/{ => discord}/preload/settings.ts (75%) rename src/{ => discord}/preload/titlebar.ts (94%) rename src/{ => discord}/screenshare/main.ts (98%) rename src/{ => discord}/screenshare/picker.html (100%) rename src/{ => discord}/screenshare/preload.ts (100%) rename src/{ => discord}/window.ts (97%) delete mode 100644 src/keybindMaker/main.ts delete mode 100644 src/keybindMaker/maker.html delete mode 100644 src/keybindMaker/preload.ts delete mode 100644 src/utils.ts diff --git a/src/common/config.ts b/src/common/config.ts new file mode 100644 index 0000000..9b1f62b --- /dev/null +++ b/src/common/config.ts @@ -0,0 +1,157 @@ +import {app, dialog} from "electron"; +import path from "path"; +import fs from "fs"; +import {getWindowStateLocation} from "./windowState"; +export let firstRun: boolean; +export function checkForDataFolder(): void { + const dataPath = path.join(path.dirname(app.getPath("exe")), "armcord-data"); + if (fs.existsSync(dataPath) && fs.statSync(dataPath).isDirectory()) { + console.log("Found armcord-data folder. Running in portable mode."); + app.setPath("userData", dataPath); + } +} + +export interface Settings { + // Referenced for detecting a broken config. + "0"?: string; + // Referenced once for disabling mod updating. + noBundleUpdates?: boolean; + // Only used for external url warning dialog. + ignoreProtocolWarning?: boolean; + customIcon: string; + windowStyle: string; + channel: string; + armcordCSP: boolean; + minimizeToTray: boolean; + multiInstance: boolean; + spellcheck: boolean; + mods: string; + dynamicIcon: boolean; + mobileMode: boolean; + skipSplash: boolean; + performanceMode: string; + customJsBundle: RequestInfo | URL; + customCssBundle: RequestInfo | URL; + startMinimized: boolean; + useLegacyCapturer: boolean; + tray: boolean; + keybinds: Array; + inviteWebsocket: boolean; + disableAutogain: boolean; + trayIcon: string; + doneSetup: boolean; + clientName: string; +} +export function getConfigLocation(): string { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + return `${storagePath}settings.json`; +} +export async function getConfig(object: K): Promise { + let rawdata = fs.readFileSync(getConfigLocation(), "utf-8"); + let returndata = JSON.parse(rawdata); + return returndata[object]; +} +export function getConfigSync(object: K) { + let rawdata = fs.readFileSync(getConfigLocation(), "utf-8"); + let returndata = JSON.parse(rawdata); + return returndata[object]; +} +export async function setConfig(object: K, toSet: Settings[K]): Promise { + let rawdata = fs.readFileSync(getConfigLocation(), "utf-8"); + let parsed = JSON.parse(rawdata); + parsed[object] = toSet; + let toSave = JSON.stringify(parsed, null, 4); + fs.writeFileSync(getConfigLocation(), toSave, "utf-8"); +} +export async function setConfigBulk(object: Settings): Promise { + let existingData = {}; + try { + const existingDataBuffer = fs.readFileSync(getConfigLocation(), "utf-8"); + existingData = JSON.parse(existingDataBuffer.toString()); + } catch (error) { + // Ignore errors when the file doesn't exist or parsing fails + } + // Merge the existing data with the new data + const mergedData = {...existingData, ...object}; + // Write the merged data back to the file + const toSave = JSON.stringify(mergedData, null, 4); + fs.writeFileSync(getConfigLocation(), toSave, "utf-8"); +} +export async function checkIfConfigExists(): Promise { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + const settingsFile = `${storagePath}settings.json`; + + if (!fs.existsSync(settingsFile)) { + if (!fs.existsSync(storagePath)) { + fs.mkdirSync(storagePath); + console.log("Created missing storage folder"); + } + console.log("First run of the ArmCord. Starting setup."); + setup(); + firstRun = true; + } else if ((await getConfig("doneSetup")) == false) { + console.log("First run of the ArmCord. Starting setup."); + setup(); + firstRun = true; + } else { + console.log("ArmCord has been run before. Skipping setup."); + } +} +export async function checkIfConfigIsBroken(): Promise { + try { + let settingsData = fs.readFileSync(getConfigLocation(), "utf-8"); + JSON.parse(settingsData); + console.log("Config is fine"); + } catch (e) { + console.error(e); + console.log("Detected a corrupted config"); + setup(); + dialog.showErrorBox( + "Oops, something went wrong.", + "ArmCord has detected that your configuration file is corrupted, please restart the app and set your settings again. If this issue persists, report it on the support server/Github issues." + ); + } + try { + let windowData = fs.readFileSync(getWindowStateLocation(), "utf-8"); + JSON.parse(windowData); + console.log("Window config is fine"); + } catch (e) { + console.error(e); + fs.writeFileSync(getWindowStateLocation(), "{}", "utf-8"); + console.log("Detected a corrupted window config"); + } +} + +export function setup(): void { + console.log("Setting up temporary ArmCord settings."); + const defaults: Settings = { + windowStyle: "default", + channel: "stable", + armcordCSP: true, + minimizeToTray: true, + keybinds: [], + multiInstance: false, + mods: "none", + spellcheck: true, + performanceMode: "none", + skipSplash: false, + inviteWebsocket: true, + startMinimized: false, + dynamicIcon: false, + tray: true, + customJsBundle: "https://armcord.app/placeholder.js", + customCssBundle: "https://armcord.app/placeholder.css", + disableAutogain: false, + useLegacyCapturer: false, + mobileMode: false, + trayIcon: "default", + doneSetup: false, + clientName: "ArmCord", + customIcon: path.join(__dirname, "../", "/assets/desktop.png") + }; + setConfigBulk({ + ...defaults + }); +} diff --git a/src/common/dom.ts b/src/common/dom.ts new file mode 100644 index 0000000..7f0a73b --- /dev/null +++ b/src/common/dom.ts @@ -0,0 +1,20 @@ +export function addStyle(styleString: string): void { + const style = document.createElement("style"); + style.textContent = styleString; + document.head.append(style); +} + +export function addScript(scriptString: string): void { + let script = document.createElement("script"); + script.textContent = scriptString; + document.body.append(script); +} +export async function injectJS(inject: string): Promise { + const js = await (await fetch(`${inject}`)).text(); + + const el = document.createElement("script"); + + el.appendChild(document.createTextNode(js)); + + document.body.appendChild(el); +} diff --git a/src/common/flags.ts b/src/common/flags.ts new file mode 100644 index 0000000..65db241 --- /dev/null +++ b/src/common/flags.ts @@ -0,0 +1,47 @@ +import {app} from "electron"; +import {getConfig} from "./config"; + +export let transparency: boolean; +export async function injectElectronFlags(): Promise { + // MIT License + + // Copyright (c) 2022 GooseNest + + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to deal + // in the Software without restriction, including without limitation the rights + // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + // copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + + // The above copyright notice and this permission notice shall be included in all + // copies or substantial portions of the Software. + + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + // SOFTWARE. + const presets = { + performance: `--enable-gpu-rasterization --enable-zero-copy --ignore-gpu-blocklist --enable-hardware-overlays=single-fullscreen,single-on-top,underlay --enable-features=EnableDrDc,CanvasOopRasterization,BackForwardCache:TimeToLiveInBackForwardCacheInSeconds/300/should_ignore_blocklists/true/enable_same_site/true,ThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes,UseSkiaRenderer,WebAssemblyLazyCompilation --disable-features=Vulkan --force_high_performance_gpu`, // Performance + battery: "--enable-features=TurnOffStreamingMediaCachingOnBattery --force_low_power_gpu", // Known to have better battery life for Chromium? + vaapi: "--ignore-gpu-blocklist --enable-features=VaapiVideoDecoder --enable-gpu-rasterization --enable-zero-copy --force_high_performance_gpu --use-gl=desktop --disable-features=UseChromeOSDirectVideoDecoder" + }; + switch (await getConfig("performanceMode")) { + case "performance": + console.log("Performance mode enabled"); + app.commandLine.appendArgument(presets.performance); + break; + case "battery": + console.log("Battery mode enabled"); + app.commandLine.appendArgument(presets.battery); + break; + default: + console.log("No performance modes set"); + } + if ((await getConfig("windowStyle")) == "transparent" && process.platform === "win32") { + transparency = true; + } +} diff --git a/src/common/lang.ts b/src/common/lang.ts new file mode 100644 index 0000000..1db80cd --- /dev/null +++ b/src/common/lang.ts @@ -0,0 +1,67 @@ +import {app} from "electron"; +import path from "path"; +import fs from "fs"; +export async function setLang(language: string): Promise { + const langConfigFile = `${path.join(app.getPath("userData"), "/storage/")}lang.json`; + if (!fs.existsSync(langConfigFile)) { + fs.writeFileSync(langConfigFile, "{}", "utf-8"); + } + let rawdata = fs.readFileSync(langConfigFile, "utf-8"); + let parsed = JSON.parse(rawdata); + parsed.lang = language; + let toSave = JSON.stringify(parsed, null, 4); + fs.writeFileSync(langConfigFile, toSave, "utf-8"); +} +let language: string; +export async function getLang(object: string): Promise { + if (language == undefined) { + try { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + const langConfigFile = `${storagePath}lang.json`; + let rawdata = fs.readFileSync(langConfigFile, "utf-8"); + let parsed = JSON.parse(rawdata); + language = parsed.lang; + } catch (_e) { + console.log("Language config file doesn't exist. Fallback to English."); + language = "en-US"; + } + } + if (language.length == 2) { + language = `${language}-${language.toUpperCase()}`; + } + let langPath = path.join(__dirname, "../", `/assets/lang/${language}.json`); + if (!fs.existsSync(langPath)) { + langPath = path.join(__dirname, "../", "/assets/lang/en-US.json"); + } + let rawdata = fs.readFileSync(langPath, "utf-8"); + let parsed = JSON.parse(rawdata); + if (parsed[object] == undefined) { + console.log(`${object} is undefined in ${language}`); + langPath = path.join(__dirname, "../", "/assets/lang/en-US.json"); + rawdata = fs.readFileSync(langPath, "utf-8"); + parsed = JSON.parse(rawdata); + return parsed[object]; + } else { + return parsed[object]; + } +} +export async function getLangName(): Promise { + if (language == undefined) { + try { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + const langConfigFile = `${storagePath}lang.json`; + let rawdata = fs.readFileSync(langConfigFile, "utf-8"); + let parsed = JSON.parse(rawdata); + language = parsed.lang; + } catch (_e) { + console.log("Language config file doesn't exist. Fallback to English."); + language = "en-US"; + } + } + if (language.length == 2) { + language = `${language}-${language.toUpperCase()}`; + } + return language; +} diff --git a/src/common/sleep.ts b/src/common/sleep.ts new file mode 100644 index 0000000..ff47479 --- /dev/null +++ b/src/common/sleep.ts @@ -0,0 +1,3 @@ +export async function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/src/common/version.ts b/src/common/version.ts new file mode 100644 index 0000000..1fb97d4 --- /dev/null +++ b/src/common/version.ts @@ -0,0 +1,19 @@ +import {app} from "electron"; + +export const packageVersion = require("../package.json").version; + +export function getVersion(): string { + return packageVersion; +} +export function getDisplayVersion(): string { + //Checks if the app version # has 4 sections (3.1.0.0) instead of 3 (3.1.0) / Shitty way to check if Kernel Mod is installed + if ((app.getVersion() == packageVersion) == false) { + if ((app.getVersion() == process.versions.electron) == true) { + return `Dev Build (${packageVersion})`; + } else { + return `${packageVersion} [Modified]`; + } + } else { + return packageVersion; + } +} diff --git a/src/common/windowState.ts b/src/common/windowState.ts new file mode 100644 index 0000000..efc9847 --- /dev/null +++ b/src/common/windowState.ts @@ -0,0 +1,34 @@ +import {app} from "electron"; +import path from "path"; +import fs from "fs"; +export interface WindowState { + width: number; + height: number; + x: number; + y: number; + isMaximized: boolean; +} +export function getWindowStateLocation() { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + return `${storagePath}window.json`; +} +export async function setWindowState(object: WindowState): Promise { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + const saveFile = `${storagePath}window.json`; + let toSave = JSON.stringify(object, null, 4); + fs.writeFileSync(saveFile, toSave, "utf-8"); +} +export async function getWindowState(object: K): Promise { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + const settingsFile = `${storagePath}window.json`; + if (!fs.existsSync(settingsFile)) { + fs.writeFileSync(settingsFile, "{}", "utf-8"); + } + let rawdata = fs.readFileSync(settingsFile, "utf-8"); + let returndata = JSON.parse(rawdata); + console.log(`[Window state manager] ${returndata}`); + return returndata[object]; +} diff --git a/src/content/css/discord.css b/src/discord/content/css/discord.css similarity index 100% rename from src/content/css/discord.css rename to src/discord/content/css/discord.css diff --git a/src/content/css/inAppSettings.css b/src/discord/content/css/inAppSettings.css similarity index 100% rename from src/content/css/inAppSettings.css rename to src/discord/content/css/inAppSettings.css diff --git a/src/content/css/logos.css b/src/discord/content/css/logos.css similarity index 100% rename from src/content/css/logos.css rename to src/discord/content/css/logos.css diff --git a/src/content/css/mobile.css b/src/discord/content/css/mobile.css similarity index 100% rename from src/content/css/mobile.css rename to src/discord/content/css/mobile.css diff --git a/src/content/css/screenshare.css b/src/discord/content/css/screenshare.css similarity index 100% rename from src/content/css/screenshare.css rename to src/discord/content/css/screenshare.css diff --git a/src/content/css/settings.css b/src/discord/content/css/settings.css similarity index 100% rename from src/content/css/settings.css rename to src/discord/content/css/settings.css diff --git a/src/content/css/settingsEng.css b/src/discord/content/css/settingsEng.css similarity index 100% rename from src/content/css/settingsEng.css rename to src/discord/content/css/settingsEng.css diff --git a/src/content/css/setup.css b/src/discord/content/css/setup.css similarity index 100% rename from src/content/css/setup.css rename to src/discord/content/css/setup.css diff --git a/src/content/css/splash.css b/src/discord/content/css/splash.css similarity index 100% rename from src/content/css/splash.css rename to src/discord/content/css/splash.css diff --git a/src/content/css/titlebar.css b/src/discord/content/css/titlebar.css similarity index 100% rename from src/content/css/titlebar.css rename to src/discord/content/css/titlebar.css diff --git a/src/content/js/disableAutogain.js b/src/discord/content/js/disableAutogain.js similarity index 100% rename from src/content/js/disableAutogain.js rename to src/discord/content/js/disableAutogain.js diff --git a/src/content/js/rpc.js b/src/discord/content/js/rpc.js similarity index 100% rename from src/content/js/rpc.js rename to src/discord/content/js/rpc.js diff --git a/src/extensions/mods.ts b/src/discord/extensions/csp.ts similarity index 95% rename from src/extensions/mods.ts rename to src/discord/extensions/csp.ts index 251e507..08ff28d 100644 --- a/src/extensions/mods.ts +++ b/src/discord/extensions/csp.ts @@ -1,5 +1,5 @@ import electron from "electron"; -import {getConfig} from "../utils"; +import {getConfig} from "../../common/config"; const unstrictCSP = (): void => { console.log("Setting up CSP unstricter..."); diff --git a/src/discord/extensions/mods.ts b/src/discord/extensions/mods.ts new file mode 100644 index 0000000..1c76380 --- /dev/null +++ b/src/discord/extensions/mods.ts @@ -0,0 +1,124 @@ +import {app, dialog} from "electron"; +import extract from "extract-zip"; +import path from "path"; +import {getConfig} from "../../common/config"; +import fs from "fs"; +import util from "util"; +const streamPipeline = util.promisify(require("stream").pipeline); +async function updateModBundle(): Promise { + if ((await getConfig("noBundleUpdates")) == undefined ?? false) { + try { + console.log("Downloading mod bundle"); + const distFolder = `${app.getPath("userData")}/plugins/loader/dist/`; + while (!fs.existsSync(distFolder)) { + //waiting + } + let name: string = await getConfig("mods"); + if (name == "custom") { + // aspy fix + let bundle: string = await (await fetch(await getConfig("customJsBundle"))).text(); + fs.writeFileSync(`${distFolder}bundle.js`, bundle, "utf-8"); + let css: string = await (await fetch(await getConfig("customCssBundle"))).text(); + fs.writeFileSync(`${distFolder}bundle.css`, css, "utf-8"); + } else { + const clientMods = { + vencord: "https://github.com/Vendicated/Vencord/releases/download/devbuild/browser.js", + shelter: "https://raw.githubusercontent.com/uwu/shelter-builds/main/shelter.js" + }; + const clientModsCss = { + vencord: "https://github.com/Vendicated/Vencord/releases/download/devbuild/browser.css", + shelter: "https://armcord.app/placeholder.css" + }; + console.log(clientMods[name as keyof typeof clientMods]); + let bundle: string = await (await fetch(clientMods[name as keyof typeof clientMods])).text(); + fs.writeFileSync(`${distFolder}bundle.js`, bundle, "utf-8"); + let css: string = await (await fetch(clientModsCss[name as keyof typeof clientModsCss])).text(); + fs.writeFileSync(`${distFolder}bundle.css`, css, "utf-8"); + } + } catch (e) { + console.log("[Mod loader] Failed to install mods"); + console.error(e); + dialog.showErrorBox( + "Oops, something went wrong.", + "ArmCord couldn't install mods, please check if you have stable internet connection and restart the app. If this issue persists, report it on the support server/Github issues." + ); + } + } else { + console.log("[Mod loader] Skipping mod bundle update"); + } +} + +export let modInstallState: string; +export function updateModInstallState() { + modInstallState = "modDownload"; + + updateModBundle(); + import("./plugin"); + + modInstallState = "done"; +} + +export async function installModLoader(): Promise { + if ((await getConfig("mods")) == "none") { + modInstallState = "none"; + fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true}); + + import("./plugin"); + console.log("[Mod loader] Skipping"); + + return; + } + + const pluginFolder = `${app.getPath("userData")}/plugins/`; + if (fs.existsSync(`${pluginFolder}loader`) && fs.existsSync(`${pluginFolder}loader/dist/bundle.css`)) { + updateModInstallState(); + return; + } + + try { + fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true}); + modInstallState = "installing"; + + let zipPath = `${app.getPath("temp")}/loader.zip`; + + if (!fs.existsSync(pluginFolder)) { + fs.mkdirSync(pluginFolder); + console.log("[Mod loader] Created missing plugin folder"); + } + + // Add more of these later if needed! + let URLs = [ + "https://armcord.app/loader.zip", + "https://armcord.vercel.app/loader.zip", + "https://raw.githubusercontent.com/ArmCord/website/new/public/loader.zip" + ]; + let loaderZip: any; + + while (true) { + if (URLs.length <= 0) throw new Error(`unexpected response ${loaderZip.statusText}`); + + try { + loaderZip = await fetch(URLs[0]); + } catch (err) { + console.log("[Mod loader] Failed to download. Links left to try: " + (URLs.length - 1)); + URLs.splice(0, 1); + + continue; + } + + break; + } + + await streamPipeline(loaderZip.body, fs.createWriteStream(zipPath)); + await extract(zipPath, {dir: path.join(app.getPath("userData"), "plugins")}); + + updateModInstallState(); + } catch (e) { + console.log("[Mod loader] Failed to install modloader"); + console.error(e); + dialog.showErrorBox( + "Oops, something went wrong.", + "ArmCord couldn't install internal mod loader, please check if you have stable internet connection and restart the app. If this issue persists, report it on the support server/Github issues." + ); + } +} diff --git a/src/extensions/plugin.ts b/src/discord/extensions/plugin.ts similarity index 100% rename from src/extensions/plugin.ts rename to src/discord/extensions/plugin.ts diff --git a/src/ipc.ts b/src/discord/ipc.ts similarity index 91% rename from src/ipc.ts rename to src/discord/ipc.ts index 53ed8f2..e37aefa 100644 --- a/src/ipc.ts +++ b/src/discord/ipc.ts @@ -1,28 +1,20 @@ //ipc stuff import {app, clipboard, desktopCapturer, ipcMain, nativeImage, shell} from "electron"; import {mainWindow} from "./window"; -import { - Settings, - getConfig, - getConfigLocation, - getDisplayVersion, - getLang, - getLangName, - getVersion, - modInstallState, - packageVersion, - setConfigBulk, - setLang, - sleep -} from "./utils"; -import {customTitlebar} from "./main"; -import {createSettingsWindow} from "./settings/main"; + import os from "os"; import fs from "fs"; import path from "path"; -import {createTManagerWindow} from "./themeManager/main"; -import {splashWindow} from "./splash/main"; -import {createKeybindWindow} from "./keybindMaker/main"; +import {getConfig, setConfigBulk, getConfigLocation, Settings} from "../common/config"; +import {setLang, getLang, getLangName} from "../common/lang"; +import {sleep} from "../common/sleep"; +import {getVersion, getDisplayVersion, packageVersion} from "../common/version"; +import {customTitlebar} from "../main"; +import {createSettingsWindow} from "../settings/main"; +import {splashWindow} from "../splash/main"; +import {createTManagerWindow} from "../themeManager/main"; +import {modInstallState} from "./extensions/mods"; + const userDataPath = app.getPath("userData"); const storagePath = path.join(userDataPath, "/storage/"); const themesPath = path.join(userDataPath, "/themes/"); @@ -136,9 +128,6 @@ export function registerIpc(): void { ipcMain.on("openManagerWindow", () => { createTManagerWindow(); }); - ipcMain.on("openKeybindWindow", () => { - createKeybindWindow(); - }); ipcMain.on("setting-armcordCSP", async (event) => { if (await getConfig("armcordCSP")) { event.returnValue = true; diff --git a/src/menu.ts b/src/discord/menu.ts similarity index 98% rename from src/menu.ts rename to src/discord/menu.ts index bc1e96c..214f478 100644 --- a/src/menu.ts +++ b/src/discord/menu.ts @@ -1,6 +1,6 @@ import {BrowserWindow, Menu, app, clipboard} from "electron"; import {mainWindow} from "./window"; -import {createSettingsWindow} from "./settings/main"; +import {createSettingsWindow} from "../settings/main"; function paste(contents: any): void { const contentTypes = clipboard.availableFormats().toString(); diff --git a/src/preload/bridge.ts b/src/discord/preload/bridge.ts similarity index 100% rename from src/preload/bridge.ts rename to src/discord/preload/bridge.ts diff --git a/src/preload/capturer.ts b/src/discord/preload/capturer.ts similarity index 97% rename from src/preload/capturer.ts rename to src/discord/preload/capturer.ts index 04852d6..eca5dd2 100644 --- a/src/preload/capturer.ts +++ b/src/discord/preload/capturer.ts @@ -1,8 +1,8 @@ //Fixed context isolation version https://github.com/getferdi/ferdi/blob/develop/src/webview/screenshare.ts //original https://github.com/electron/electron/issues/16513#issuecomment-602070250 -import {addScript, addStyle} from "../utils"; import fs from "fs"; import path from "path"; +import {addScript, addStyle} from "../../common/dom"; const CANCEL_ID = "desktop-capturer-selection__cancel"; diff --git a/src/preload/mobile.ts b/src/discord/preload/mobile.ts similarity index 92% rename from src/preload/mobile.ts rename to src/discord/preload/mobile.ts index f9d8c03..20964d3 100644 --- a/src/preload/mobile.ts +++ b/src/discord/preload/mobile.ts @@ -1,4 +1,4 @@ -import {addStyle} from "../utils"; +import {addStyle} from "../../common/dom"; import * as fs from "fs"; import * as path from "path"; export function injectMobileStuff(): void { diff --git a/src/preload/optimizer.ts b/src/discord/preload/optimizer.ts similarity index 100% rename from src/preload/optimizer.ts rename to src/discord/preload/optimizer.ts diff --git a/src/preload/preload.ts b/src/discord/preload/preload.ts similarity index 87% rename from src/preload/preload.ts rename to src/discord/preload/preload.ts index 10aa8b0..83b9830 100644 --- a/src/preload/preload.ts +++ b/src/discord/preload/preload.ts @@ -4,10 +4,11 @@ import "./settings"; import {ipcRenderer} from "electron"; import * as fs from "fs"; import * as path from "path"; -import {addScript, addStyle, sleep} from "../utils"; import {injectMobileStuff} from "./mobile"; import {fixTitlebar, injectTitlebar} from "./titlebar"; import {injectSettings} from "./settings"; +import {addStyle, addScript} from "../../common/dom"; +import {sleep} from "../../common/sleep"; window.localStorage.setItem("hideNag", "true"); @@ -56,10 +57,10 @@ sleep(5000).then(async () => { })(); `); if (ipcRenderer.sendSync("disableAutogain")) { - addScript(fs.readFileSync(path.join(__dirname, "../", "/content/js/disableAutogain.js"), "utf8")); + addScript(fs.readFileSync(path.join(__dirname, "../", "../", "/content/js/disableAutogain.js"), "utf8")); } - addScript(fs.readFileSync(path.join(__dirname, "../", "/content/js/rpc.js"), "utf8")); - const cssPath = path.join(__dirname, "../", "/content/css/discord.css"); + addScript(fs.readFileSync(path.join(__dirname, "../", "../", "/content/js/rpc.js"), "utf8")); + const cssPath = path.join(__dirname, "../", "../", "/content/css/discord.css"); addStyle(fs.readFileSync(cssPath, "utf8")); await updateLang(); }); @@ -107,21 +108,16 @@ setInterval(() => { const acSettings = advanced.cloneNode(true) as HTMLElement; const tManager = advanced.cloneNode(true) as HTMLElement; const fQuit = advanced.cloneNode(true) as HTMLElement; - const keybindMaker = advanced.cloneNode(true) as HTMLElement; acSettings.textContent = "ArmCord Settings"; acSettings.id = "acSettings"; acSettings.onclick = () => injectSettings(); tManager.textContent = "Themes"; tManager.id = "acThemes"; tManager.onclick = () => ipcRenderer.send("openManagerWindow"); - keybindMaker.textContent = "Global keybinds"; - keybindMaker.id = "acKeybinds"; - keybindMaker.onclick = () => ipcRenderer.send("openKeybindWindow"); fQuit.textContent = "Force Quit"; fQuit.id = "acForceQuit"; fQuit.onclick = () => ipcRenderer.send("win-quit"); advanced.insertAdjacentElement("afterend", acSettings); advanced.insertAdjacentElement("afterend", tManager); - advanced.insertAdjacentElement("afterend", keybindMaker); advanced.insertAdjacentElement("afterend", fQuit); }, 1000); diff --git a/src/preload/settings.ts b/src/discord/preload/settings.ts similarity index 75% rename from src/preload/settings.ts rename to src/discord/preload/settings.ts index 6060600..846cbd1 100644 --- a/src/preload/settings.ts +++ b/src/discord/preload/settings.ts @@ -1,14 +1,15 @@ import * as path from "path"; import * as fs from "fs"; -import {addStyle} from "../utils"; +import {addStyle} from "../../common/dom"; import {WebviewTag} from "electron"; -var webview = ``; + "../", + "/settings/settings.html" +)}" preload="${path.join("file://", __dirname, "../", "../", "/settings/preload.js")}" id="inAppSettings">`; export function injectSettings() { document.getElementById("webviewSettingsContainer")!.innerHTML = webview; diff --git a/src/preload/titlebar.ts b/src/discord/preload/titlebar.ts similarity index 94% rename from src/preload/titlebar.ts rename to src/discord/preload/titlebar.ts index ce76ae4..cd14cc6 100644 --- a/src/preload/titlebar.ts +++ b/src/discord/preload/titlebar.ts @@ -1,5 +1,5 @@ import {ipcRenderer} from "electron"; -import {addStyle} from "../utils"; +import {addStyle} from "../../common/dom"; import * as fs from "fs"; import * as path from "path"; import os from "os"; @@ -21,8 +21,8 @@ export function injectTitlebar(): void { } else { document.getElementById("app-mount")!.prepend(elem); } - const titlebarcssPath = path.join(__dirname, "../", "/content/css/titlebar.css"); - const wordmarkcssPath = path.join(__dirname, "../", "/content/css/logos.css"); + const titlebarcssPath = path.join(__dirname, "../", "../", "/content/css/titlebar.css"); + const wordmarkcssPath = path.join(__dirname, "../", "../", "/content/css/logos.css"); addStyle(fs.readFileSync(titlebarcssPath, "utf8")); addStyle(fs.readFileSync(wordmarkcssPath, "utf8")); document.body.setAttribute("customTitlebar", ""); diff --git a/src/screenshare/main.ts b/src/discord/screenshare/main.ts similarity index 98% rename from src/screenshare/main.ts rename to src/discord/screenshare/main.ts index 155fccc..68de431 100644 --- a/src/screenshare/main.ts +++ b/src/discord/screenshare/main.ts @@ -1,6 +1,6 @@ import {BrowserWindow, MessageBoxOptions, desktopCapturer, dialog, ipcMain, session} from "electron"; import path from "path"; -import {iconPath} from "../main"; +import {iconPath} from "../../main"; let capturerWindow: BrowserWindow; function showAudioDialog(): boolean { const options: MessageBoxOptions = { diff --git a/src/screenshare/picker.html b/src/discord/screenshare/picker.html similarity index 100% rename from src/screenshare/picker.html rename to src/discord/screenshare/picker.html diff --git a/src/screenshare/preload.ts b/src/discord/screenshare/preload.ts similarity index 100% rename from src/screenshare/preload.ts rename to src/discord/screenshare/preload.ts diff --git a/src/window.ts b/src/discord/window.ts similarity index 97% rename from src/window.ts rename to src/discord/window.ts index 9eba9a8..ee2477f 100644 --- a/src/window.ts +++ b/src/discord/window.ts @@ -4,22 +4,15 @@ // I'm sorry for this mess but I'm not sure how to fix it. import {BrowserWindow, MessageBoxOptions, app, dialog, nativeImage, shell} from "electron"; import path from "path"; -import { - contentPath, - firstRun, - getConfig, - getWindowState, - registerGlobalKeybinds, - setConfig, - setWindowState -} from "./utils"; import {registerIpc} from "./ipc"; import {setMenu} from "./menu"; import * as fs from "fs"; import contextMenu from "electron-context-menu"; import os from "os"; -import {tray} from "./tray"; -import {iconPath} from "./main"; +import {tray} from "../tray"; +import {iconPath} from "../main"; +import {getConfig, setConfig, firstRun} from "../common/config"; +import {getWindowState, setWindowState} from "../common/windowState"; export let mainWindow: BrowserWindow; export let inviteWindow: BrowserWindow; let forceQuit = false; @@ -196,7 +189,6 @@ async function doAfterDefiningTheWindow(): Promise { if (!fs.existsSync(`${userDataPath}/disabled.txt`)) { fs.writeFileSync(path.join(userDataPath, "/disabled.txt"), ""); } - registerGlobalKeybinds(); mainWindow.webContents.on("did-finish-load", () => { fs.readdirSync(themesFolder).forEach((file) => { try { @@ -265,7 +257,6 @@ async function doAfterDefiningTheWindow(): Promise { mainWindow.on("unmaximize", () => { mainWindow.webContents.executeJavaScript(`document.body.removeAttribute("isMaximized");`); }); - console.log(contentPath); if ((await getConfig("inviteWebsocket")) == true) { require("arrpc"); //await startServer(); @@ -274,7 +265,7 @@ async function doAfterDefiningTheWindow(): Promise { mainWindow.close(); } //loadURL broke for no good reason after E28 - mainWindow.loadFile(`${__dirname}/splash/redirect.html`); + mainWindow.loadFile(`${__dirname}/../splash/redirect.html`); if (await getConfig("skipSplash")) { mainWindow.show(); diff --git a/src/keybindMaker/main.ts b/src/keybindMaker/main.ts deleted file mode 100644 index 21e1405..0000000 --- a/src/keybindMaker/main.ts +++ /dev/null @@ -1,66 +0,0 @@ -import {BrowserWindow, globalShortcut, ipcMain, shell} from "electron"; -import path from "path"; -import {getConfig, registerGlobalKeybinds, setConfig} from "../utils"; -let keybindWindow: BrowserWindow; -let instance = 0; - -export function createKeybindWindow(): void { - console.log("Creating keybind maker window."); - instance += 1; - if (instance > 1) { - if (keybindWindow) { - keybindWindow.show(); - keybindWindow.restore(); - } - } else { - keybindWindow = new BrowserWindow({ - width: 720, - height: 670, - title: `ArmCord Global Keybinds Maker`, - darkTheme: true, - frame: true, - backgroundColor: "#2f3136", - autoHideMenuBar: true, - webPreferences: { - sandbox: false, - preload: path.join(__dirname, "preload.js") - } - }); - async function makerLoadPage(): Promise { - globalShortcut.unregisterAll(); - keybindWindow.loadURL(`file://${__dirname}/maker.html`); - } - keybindWindow.webContents.setWindowOpenHandler(({url}) => { - shell.openExternal(url); - return {action: "deny"}; - }); - ipcMain.on("addKeybind", async (_event, keybind) => { - var keybinds = await getConfig("keybinds"); - keybind.replace(" ", "Space"); - if (keybinds.includes(keybind)) return; - keybinds.push(keybind); - await setConfig("keybinds", keybinds); - keybindWindow.webContents.reload(); - }); - ipcMain.on("removeKeybind", async (_event, keybind) => { - var keybinds = await getConfig("keybinds"); - const index = keybinds.indexOf(keybind); - keybinds.splice(index, 1); - await setConfig("keybinds", keybinds); - keybindWindow.webContents.reload(); - }); - keybindWindow.webContents.on("did-finish-load", async () => { - for (const keybind of await getConfig("keybinds")) { - console.log(keybind); - keybindWindow.webContents.send("keybindCombo", keybind); - } - }); - keybindWindow.on("close", () => { - registerGlobalKeybinds(); - }); - makerLoadPage(); - keybindWindow.on("close", () => { - instance = 0; - }); - } -} diff --git a/src/keybindMaker/maker.html b/src/keybindMaker/maker.html deleted file mode 100644 index 325c0fe..0000000 --- a/src/keybindMaker/maker.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - - - - -

Global keybinds are disabled while this window is open.

- -
-
- - - diff --git a/src/keybindMaker/preload.ts b/src/keybindMaker/preload.ts deleted file mode 100644 index 523b529..0000000 --- a/src/keybindMaker/preload.ts +++ /dev/null @@ -1,36 +0,0 @@ -import {contextBridge, ipcRenderer} from "electron"; -import {sleep} from "../utils"; -contextBridge.exposeInMainWorld("manager", { - add: (keybindName: string) => ipcRenderer.send("addKeybind", keybindName), - remove: (keybindName: string) => ipcRenderer.send("removeKeybind", keybindName) -}); -ipcRenderer.on("keybindCombo", (_event, keybindName) => { - sleep(1000); - console.log(keybindName); - let e = document.getElementById("cardBox"); - var keys = keybindName.split("+"); - var id = keybindName.replace("+", ""); - var html = ""; - for (var key in keys) { - html += `${keys[key]}`; - } - e?.insertAdjacentHTML( - "beforeend", - ` -
-
- ${html} - - -
-
- ` - ); - (document.getElementById(id) as HTMLInputElement)!.checked = true; - (document.getElementById(id) as HTMLInputElement)!.addEventListener("input", function (evt) { - ipcRenderer.send("removeKeybind", keybindName); - }); -}); -sleep(3000).then(() => { - document.getElementById("warning")!.style.display = "none"; -}); diff --git a/src/main.ts b/src/main.ts index 0f4f279..50068c6 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,27 +1,28 @@ // Modules to control application life and create native browser window import {BrowserWindow, app, crashReporter, session} from "electron"; import "v8-compile-cache"; -import { - Settings, - checkForDataFolder, - checkIfConfigExists, - firstRun, - checkIfConfigIsBroken, - getConfig, - getConfigSync, - injectElectronFlags, - installModLoader, - setConfig, - setLang -} from "./utils"; -import "./extensions/mods"; +import "./discord/extensions/csp"; import "./tray"; -import {createCustomWindow, createNativeWindow, createTransparentWindow} from "./window"; +import fs from "fs"; +import {createCustomWindow, createNativeWindow, createTransparentWindow} from "./discord/window"; import path from "path"; import {createTManagerWindow} from "./themeManager/main"; import {createSplashWindow} from "./splash/main"; import {createSetupWindow} from "./setup/main"; -import {createKeybindWindow} from "./keybindMaker/main"; +import { + setConfig, + getConfigSync, + checkForDataFolder, + checkIfConfigExists, + checkIfConfigIsBroken, + getConfig, + firstRun, + Settings, + getConfigLocation +} from "./common/config"; +import {injectElectronFlags} from "./common/flags"; +import {setLang} from "./common/lang"; +import {installModLoader} from "./discord/extensions/mods"; export let iconPath: string; export let settings: any; export let customTitlebar: boolean; @@ -47,10 +48,6 @@ async function args(): Promise { app.whenReady().then(async () => { createTManagerWindow(); }); - } else if (args == "keybinds") { - app.whenReady().then(async () => { - createKeybindWindow(); - }); } } args(); // i want my top level awaits @@ -84,6 +81,7 @@ if (!app.requestSingleInstanceLock() && getConfigSync("multiInstance") == (false checkIfConfigExists(); checkIfConfigIsBroken(); injectElectronFlags(); + console.log("[Config Manager] Current config: " + fs.readFileSync(getConfigLocation(), "utf-8")); app.whenReady().then(async () => { if ((await getConfig("customIcon")) !== undefined ?? null) { iconPath = await getConfig("customIcon"); diff --git a/src/settings/main.ts b/src/settings/main.ts index d91994d..78cc5b8 100644 --- a/src/settings/main.ts +++ b/src/settings/main.ts @@ -1,7 +1,7 @@ import {BrowserWindow, app, shell} from "electron"; -import {getDisplayVersion} from "../utils"; import path from "path"; import fs from "fs"; +import {getDisplayVersion} from "../common/version"; let settingsWindow: BrowserWindow; let instance = 0; diff --git a/src/setup/main.ts b/src/setup/main.ts index f57935e..4f98583 100644 --- a/src/setup/main.ts +++ b/src/setup/main.ts @@ -2,7 +2,8 @@ import {BrowserWindow, app, ipcMain} from "electron"; import path from "path"; import * as fs from "fs"; import {iconPath} from "../main"; -import {Settings, getConfigLocation, setConfigBulk} from "../utils"; +import {setConfigBulk, getConfigLocation, Settings} from "../common/config"; + let setupWindow: BrowserWindow; export function createSetupWindow(): void { setupWindow = new BrowserWindow({ diff --git a/src/setup/preload.ts b/src/setup/preload.ts index 96f1174..d7b8313 100644 --- a/src/setup/preload.ts +++ b/src/setup/preload.ts @@ -1,5 +1,6 @@ import {contextBridge, ipcRenderer} from "electron"; -import {injectTitlebar} from "../preload/titlebar"; +import {injectTitlebar} from "../discord/preload/titlebar"; + injectTitlebar(); contextBridge.exposeInMainWorld("armcordinternal", { restart: () => ipcRenderer.send("restart"), diff --git a/src/splash/main.ts b/src/splash/main.ts index 948e0b3..b86609e 100644 --- a/src/splash/main.ts +++ b/src/splash/main.ts @@ -19,5 +19,5 @@ export async function createSplashWindow(): Promise { preload: path.join(__dirname, "preload.js") } }); - splashWindow.loadURL(`file://${__dirname}/splash.html`); + splashWindow.loadFile(path.join(__dirname, "splash.html")); } diff --git a/src/themeManager/main.ts b/src/themeManager/main.ts index b672e9d..e88eb28 100644 --- a/src/themeManager/main.ts +++ b/src/themeManager/main.ts @@ -1,8 +1,8 @@ import {BrowserWindow, app, dialog, ipcMain, shell} from "electron"; -import {sleep} from "../utils"; import path from "path"; import fs from "fs"; -import {createInviteWindow, mainWindow} from "../window"; +import {sleep} from "../common/sleep"; +import {createInviteWindow, mainWindow} from "../discord/window"; let themeWindow: BrowserWindow; let instance = 0; interface ThemeManifest { diff --git a/src/themeManager/preload.ts b/src/themeManager/preload.ts index 2750486..3c4ca31 100644 --- a/src/themeManager/preload.ts +++ b/src/themeManager/preload.ts @@ -1,5 +1,5 @@ import {ipcRenderer, contextBridge} from "electron"; -import {sleep} from "../utils"; +import {sleep} from "../common/sleep"; contextBridge.exposeInMainWorld("themes", { install: (url: string) => ipcRenderer.send("installBDTheme", url), uninstall: (id: string) => ipcRenderer.send("uninstallTheme", id) diff --git a/src/tray.ts b/src/tray.ts index c47a75c..81ef4b2 100644 --- a/src/tray.ts +++ b/src/tray.ts @@ -1,9 +1,10 @@ import * as fs from "fs"; import {Menu, MessageBoxOptions, Tray, app, dialog, nativeImage} from "electron"; -import {createInviteWindow, mainWindow} from "./window"; -import {getConfig, getConfigLocation, getDisplayVersion, setConfig} from "./utils"; +import {createInviteWindow, mainWindow} from "./discord/window"; import * as path from "path"; import {createSettingsWindow} from "./settings/main"; +import {getConfig, getConfigLocation, setConfig} from "./common/config"; +import {getDisplayVersion} from "./common/version"; export let tray: any = null; let trayIcon = "ac_plug_colored"; app.whenReady().then(async () => { diff --git a/src/utils.ts b/src/utils.ts deleted file mode 100644 index 637648d..0000000 --- a/src/utils.ts +++ /dev/null @@ -1,478 +0,0 @@ -import * as fs from "fs"; -import {app, dialog, globalShortcut} from "electron"; -import path from "path"; -import fetch from "cross-fetch"; -import extract from "extract-zip"; -import util from "util"; -const streamPipeline = util.promisify(require("stream").pipeline); -export let firstRun: boolean; -export let contentPath: string; -export let transparency: boolean; -//utility functions that are used all over the codebase or just too obscure to be put in the file used in -export function addStyle(styleString: string): void { - const style = document.createElement("style"); - style.textContent = styleString; - document.head.append(style); -} - -export function addScript(scriptString: string): void { - let script = document.createElement("script"); - script.textContent = scriptString; - document.body.append(script); -} - -export async function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -export async function checkIfConfigIsBroken(): Promise { - try { - let settingsData = fs.readFileSync(getConfigLocation(), "utf-8"); - JSON.parse(settingsData); - console.log("Config is fine"); - } catch (e) { - console.error(e); - console.log("Detected a corrupted config"); - setup(); - dialog.showErrorBox( - "Oops, something went wrong.", - "ArmCord has detected that your configuration file is corrupted, please restart the app and set your settings again. If this issue persists, report it on the support server/Github issues." - ); - } - try { - let windowData = fs.readFileSync(getWindowStateLocation(), "utf-8"); - JSON.parse(windowData); - console.log("Window config is fine"); - } catch (e) { - console.error(e); - fs.writeFileSync(getWindowStateLocation(), "{}", "utf-8"); - console.log("Detected a corrupted window config"); - } -} - -export function setup(): void { - console.log("Setting up temporary ArmCord settings."); - const defaults: Settings = { - windowStyle: "default", - channel: "stable", - armcordCSP: true, - minimizeToTray: true, - keybinds: [], - multiInstance: false, - mods: "none", - spellcheck: true, - performanceMode: "none", - skipSplash: false, - inviteWebsocket: true, - startMinimized: false, - dynamicIcon: false, - tray: true, - customJsBundle: "https://armcord.app/placeholder.js", - customCssBundle: "https://armcord.app/placeholder.css", - disableAutogain: false, - useLegacyCapturer: false, - mobileMode: false, - trayIcon: "default", - doneSetup: false, - clientName: "ArmCord", - customIcon: path.join(__dirname, "../", "/assets/desktop.png") - }; - setConfigBulk({ - ...defaults - }); -} - -//Get the version value from the "package.json" file -export const packageVersion = require("../package.json").version; - -export function getVersion(): string { - return packageVersion; -} -export function getDisplayVersion(): string { - //Checks if the app version # has 4 sections (3.1.0.0) instead of 3 (3.1.0) / Shitty way to check if Kernel Mod is installed - if ((app.getVersion() == packageVersion) == false) { - if ((app.getVersion() == process.versions.electron) == true) { - return `Dev Build (${packageVersion})`; - } else { - return `${packageVersion} [Modified]`; - } - } else { - return packageVersion; - } -} -export async function injectJS(inject: string): Promise { - const js = await (await fetch(`${inject}`)).text(); - - const el = document.createElement("script"); - - el.appendChild(document.createTextNode(js)); - - document.body.appendChild(el); -} -export async function injectElectronFlags(): Promise { - // MIT License - - // Copyright (c) 2022 GooseNest - - // Permission is hereby granted, free of charge, to any person obtaining a copy - // of this software and associated documentation files (the "Software"), to deal - // in the Software without restriction, including without limitation the rights - // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - // copies of the Software, and to permit persons to whom the Software is - // furnished to do so, subject to the following conditions: - - // The above copyright notice and this permission notice shall be included in all - // copies or substantial portions of the Software. - - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - // SOFTWARE. - const presets = { - performance: `--enable-gpu-rasterization --enable-zero-copy --ignore-gpu-blocklist --enable-hardware-overlays=single-fullscreen,single-on-top,underlay --enable-features=EnableDrDc,CanvasOopRasterization,BackForwardCache:TimeToLiveInBackForwardCacheInSeconds/300/should_ignore_blocklists/true/enable_same_site/true,ThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes,UseSkiaRenderer,WebAssemblyLazyCompilation --disable-features=Vulkan --force_high_performance_gpu`, // Performance - battery: "--enable-features=TurnOffStreamingMediaCachingOnBattery --force_low_power_gpu", // Known to have better battery life for Chromium? - vaapi: "--ignore-gpu-blocklist --enable-features=VaapiVideoDecoder --enable-gpu-rasterization --enable-zero-copy --force_high_performance_gpu --use-gl=desktop --disable-features=UseChromeOSDirectVideoDecoder" - }; - switch (await getConfig("performanceMode")) { - case "performance": - console.log("Performance mode enabled"); - app.commandLine.appendArgument(presets.performance); - break; - case "battery": - console.log("Battery mode enabled"); - app.commandLine.appendArgument(presets.battery); - break; - default: - console.log("No performance modes set"); - } - if ((await getConfig("windowStyle")) == "transparent" && process.platform === "win32") { - transparency = true; - } -} -export async function setLang(language: string): Promise { - const langConfigFile = `${path.join(app.getPath("userData"), "/storage/")}lang.json`; - if (!fs.existsSync(langConfigFile)) { - fs.writeFileSync(langConfigFile, "{}", "utf-8"); - } - let rawdata = fs.readFileSync(langConfigFile, "utf-8"); - let parsed = JSON.parse(rawdata); - parsed.lang = language; - let toSave = JSON.stringify(parsed, null, 4); - fs.writeFileSync(langConfigFile, toSave, "utf-8"); -} -let language: string; -export async function getLang(object: string): Promise { - if (language == undefined) { - try { - const userDataPath = app.getPath("userData"); - const storagePath = path.join(userDataPath, "/storage/"); - const langConfigFile = `${storagePath}lang.json`; - let rawdata = fs.readFileSync(langConfigFile, "utf-8"); - let parsed = JSON.parse(rawdata); - language = parsed.lang; - } catch (_e) { - console.log("Language config file doesn't exist. Fallback to English."); - language = "en-US"; - } - } - if (language.length == 2) { - language = `${language}-${language.toUpperCase()}`; - } - let langPath = path.join(__dirname, "../", `/assets/lang/${language}.json`); - if (!fs.existsSync(langPath)) { - langPath = path.join(__dirname, "../", "/assets/lang/en-US.json"); - } - let rawdata = fs.readFileSync(langPath, "utf-8"); - let parsed = JSON.parse(rawdata); - if (parsed[object] == undefined) { - console.log(`${object} is undefined in ${language}`); - langPath = path.join(__dirname, "../", "/assets/lang/en-US.json"); - rawdata = fs.readFileSync(langPath, "utf-8"); - parsed = JSON.parse(rawdata); - return parsed[object]; - } else { - return parsed[object]; - } -} -export async function getLangName(): Promise { - if (language == undefined) { - try { - const userDataPath = app.getPath("userData"); - const storagePath = path.join(userDataPath, "/storage/"); - const langConfigFile = `${storagePath}lang.json`; - let rawdata = fs.readFileSync(langConfigFile, "utf-8"); - let parsed = JSON.parse(rawdata); - language = parsed.lang; - } catch (_e) { - console.log("Language config file doesn't exist. Fallback to English."); - language = "en-US"; - } - } - if (language.length == 2) { - language = `${language}-${language.toUpperCase()}`; - } - return language; -} -//ArmCord Window State manager -export interface WindowState { - width: number; - height: number; - x: number; - y: number; - isMaximized: boolean; -} -function getWindowStateLocation() { - const userDataPath = app.getPath("userData"); - const storagePath = path.join(userDataPath, "/storage/"); - return `${storagePath}window.json`; -} -export async function setWindowState(object: WindowState): Promise { - const userDataPath = app.getPath("userData"); - const storagePath = path.join(userDataPath, "/storage/"); - const saveFile = `${storagePath}window.json`; - let toSave = JSON.stringify(object, null, 4); - fs.writeFileSync(saveFile, toSave, "utf-8"); -} -export async function getWindowState(object: K): Promise { - const userDataPath = app.getPath("userData"); - const storagePath = path.join(userDataPath, "/storage/"); - const settingsFile = `${storagePath}window.json`; - if (!fs.existsSync(settingsFile)) { - fs.writeFileSync(settingsFile, "{}", "utf-8"); - } - let rawdata = fs.readFileSync(settingsFile, "utf-8"); - let returndata = JSON.parse(rawdata); - console.log(`[Window state manager] ${returndata}`); - return returndata[object]; -} -//ArmCord Settings/Storage manager - -export function checkForDataFolder(): void { - const dataPath = path.join(path.dirname(app.getPath("exe")), "armcord-data"); - if (fs.existsSync(dataPath) && fs.statSync(dataPath).isDirectory()) { - console.log("Found armcord-data folder. Running in portable mode."); - app.setPath("userData", dataPath); - } -} - -export interface Settings { - // Referenced for detecting a broken config. - "0"?: string; - // Referenced once for disabling mod updating. - noBundleUpdates?: boolean; - // Only used for external url warning dialog. - ignoreProtocolWarning?: boolean; - customIcon: string; - windowStyle: string; - channel: string; - armcordCSP: boolean; - minimizeToTray: boolean; - multiInstance: boolean; - spellcheck: boolean; - mods: string; - dynamicIcon: boolean; - mobileMode: boolean; - skipSplash: boolean; - performanceMode: string; - customJsBundle: RequestInfo | URL; - customCssBundle: RequestInfo | URL; - startMinimized: boolean; - useLegacyCapturer: boolean; - tray: boolean; - keybinds: Array; - inviteWebsocket: boolean; - disableAutogain: boolean; - trayIcon: string; - doneSetup: boolean; - clientName: string; -} -export function getConfigLocation(): string { - const userDataPath = app.getPath("userData"); - const storagePath = path.join(userDataPath, "/storage/"); - return `${storagePath}settings.json`; -} -export async function getConfig(object: K): Promise { - let rawdata = fs.readFileSync(getConfigLocation(), "utf-8"); - let returndata = JSON.parse(rawdata); - console.log(`[Config manager] ${object}: ${returndata[object]}`); - return returndata[object]; -} -export function getConfigSync(object: K) { - let rawdata = fs.readFileSync(getConfigLocation(), "utf-8"); - let returndata = JSON.parse(rawdata); - console.log(`[Config manager] ${object}: ${returndata[object]}`); - return returndata[object]; -} -export async function setConfig(object: K, toSet: Settings[K]): Promise { - let rawdata = fs.readFileSync(getConfigLocation(), "utf-8"); - let parsed = JSON.parse(rawdata); - parsed[object] = toSet; - let toSave = JSON.stringify(parsed, null, 4); - fs.writeFileSync(getConfigLocation(), toSave, "utf-8"); -} -export async function setConfigBulk(object: Settings): Promise { - let existingData = {}; - try { - const existingDataBuffer = fs.readFileSync(getConfigLocation(), "utf-8"); - existingData = JSON.parse(existingDataBuffer.toString()); - } catch (error) { - // Ignore errors when the file doesn't exist or parsing fails - } - // Merge the existing data with the new data - const mergedData = {...existingData, ...object}; - // Write the merged data back to the file - const toSave = JSON.stringify(mergedData, null, 4); - fs.writeFileSync(getConfigLocation(), toSave, "utf-8"); -} -export async function checkIfConfigExists(): Promise { - const userDataPath = app.getPath("userData"); - const storagePath = path.join(userDataPath, "/storage/"); - const settingsFile = `${storagePath}settings.json`; - - if (!fs.existsSync(settingsFile)) { - if (!fs.existsSync(storagePath)) { - fs.mkdirSync(storagePath); - console.log("Created missing storage folder"); - } - console.log("First run of the ArmCord. Starting setup."); - setup(); - firstRun = true; - } else if ((await getConfig("doneSetup")) == false) { - console.log("First run of the ArmCord. Starting setup."); - setup(); - firstRun = true; - } else { - console.log("ArmCord has been run before. Skipping setup."); - } -} - -// Mods -async function updateModBundle(): Promise { - if ((await getConfig("noBundleUpdates")) == undefined ?? false) { - try { - console.log("Downloading mod bundle"); - const distFolder = `${app.getPath("userData")}/plugins/loader/dist/`; - while (!fs.existsSync(distFolder)) { - //waiting - } - let name: string = await getConfig("mods"); - if (name == "custom") { - // aspy fix - let bundle: string = await (await fetch(await getConfig("customJsBundle"))).text(); - fs.writeFileSync(`${distFolder}bundle.js`, bundle, "utf-8"); - let css: string = await (await fetch(await getConfig("customCssBundle"))).text(); - fs.writeFileSync(`${distFolder}bundle.css`, css, "utf-8"); - } else { - const clientMods = { - vencord: "https://github.com/Vendicated/Vencord/releases/download/devbuild/browser.js", - shelter: "https://raw.githubusercontent.com/uwu/shelter-builds/main/shelter.js" - }; - const clientModsCss = { - vencord: "https://github.com/Vendicated/Vencord/releases/download/devbuild/browser.css", - shelter: "https://armcord.app/placeholder.css" - }; - console.log(clientMods[name as keyof typeof clientMods]); - let bundle: string = await (await fetch(clientMods[name as keyof typeof clientMods])).text(); - fs.writeFileSync(`${distFolder}bundle.js`, bundle, "utf-8"); - let css: string = await (await fetch(clientModsCss[name as keyof typeof clientModsCss])).text(); - fs.writeFileSync(`${distFolder}bundle.css`, css, "utf-8"); - } - } catch (e) { - console.log("[Mod loader] Failed to install mods"); - console.error(e); - dialog.showErrorBox( - "Oops, something went wrong.", - "ArmCord couldn't install mods, please check if you have stable internet connection and restart the app. If this issue persists, report it on the support server/Github issues." - ); - } - } else { - console.log("[Mod loader] Skipping mod bundle update"); - } -} - -export let modInstallState: string; -export function updateModInstallState() { - modInstallState = "modDownload"; - - updateModBundle(); - import("./extensions/plugin"); - - modInstallState = "done"; -} - -export async function installModLoader(): Promise { - if ((await getConfig("mods")) == "none") { - modInstallState = "none"; - fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true}); - - import("./extensions/plugin"); - console.log("[Mod loader] Skipping"); - - return; - } - - const pluginFolder = `${app.getPath("userData")}/plugins/`; - if (fs.existsSync(`${pluginFolder}loader`) && fs.existsSync(`${pluginFolder}loader/dist/bundle.css`)) { - updateModInstallState(); - return; - } - - try { - fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true}); - modInstallState = "installing"; - - let zipPath = `${app.getPath("temp")}/loader.zip`; - - if (!fs.existsSync(pluginFolder)) { - fs.mkdirSync(pluginFolder); - console.log("[Mod loader] Created missing plugin folder"); - } - - // Add more of these later if needed! - let URLs = [ - "https://armcord.app/loader.zip", - "https://armcord.vercel.app/loader.zip", - "https://raw.githubusercontent.com/ArmCord/website/new/public/loader.zip" - ]; - let loaderZip: any; - - while (true) { - if (URLs.length <= 0) throw new Error(`unexpected response ${loaderZip.statusText}`); - - try { - loaderZip = await fetch(URLs[0]); - } catch (err) { - console.log("[Mod loader] Failed to download. Links left to try: " + (URLs.length - 1)); - URLs.splice(0, 1); - - continue; - } - - break; - } - - await streamPipeline(loaderZip.body, fs.createWriteStream(zipPath)); - await extract(zipPath, {dir: path.join(app.getPath("userData"), "plugins")}); - - updateModInstallState(); - } catch (e) { - console.log("[Mod loader] Failed to install modloader"); - console.error(e); - dialog.showErrorBox( - "Oops, something went wrong.", - "ArmCord couldn't install internal mod loader, please check if you have stable internet connection and restart the app. If this issue persists, report it on the support server/Github issues." - ); - } -} - -export async function registerGlobalKeybinds(): Promise { - const keybinds = await getConfig("keybinds"); - keybinds.forEach((keybind) => { - globalShortcut.register(keybind, () => { - console.log(keybind); - }); - }); -} diff --git a/tsconfig.json b/tsconfig.json index 8d5bd25..9a5836c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ -// Reference: https://www.typescriptlang.org/tsconfig { + // Reference: https://www.typescriptlang.org/tsconfig "include": ["src/**/*"], // This makes it so that the compiler won't compile anything outside of "src". //"exclude": ["src/**/*.test.ts"], // Exclude .test.ts files since they're for Jest only. "compilerOptions": { From 0487507bc4f8a60b336e4c7bc7416d596259eb80 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 15 May 2024 20:14:18 +0200 Subject: [PATCH 002/896] feat: rewrite to esm --- package.json | 11 +- pnpm-lock.yaml | 75 +- prettier.config.js => prettier.config.cjs | 0 src/arrpc/LICENSE | 21 - src/arrpc/README.md | 82 - src/arrpc/changelog.md | 31 - src/arrpc/package.json | 22 - src/arrpc/src/index.js | 17 - src/arrpc/src/process/detectable.json | 50043 ---------------- src/arrpc/src/process/index.js | 118 - src/arrpc/src/process/native/index.js | 3 - src/arrpc/src/process/native/linux.js | 18 - src/arrpc/src/process/native/win32.js | 20 - src/arrpc/src/server.js | 173 - src/arrpc/src/transports/ipc.js | 271 - src/arrpc/src/transports/websocket.js | 135 - src/common/config.ts | 2 +- src/common/lang.ts | 6 +- src/common/version.ts | 2 +- src/discord/extensions/mods.ts | 8 +- src/discord/ipc.ts | 2 +- src/discord/preload/{bridge.ts => bridge.mts} | 2 +- .../preload/{capturer.ts => capturer.mts} | 4 +- src/discord/preload/{mobile.ts => mobile.mts} | 4 +- .../preload/{optimizer.ts => optimizer.mts} | 0 .../preload/{preload.ts => preload.mts} | 24 +- .../preload/{settings.ts => settings.mts} | 14 +- .../preload/{titlebar.ts => titlebar.mts} | 6 +- src/discord/screenshare/main.ts | 6 +- src/discord/window.ts | 19 +- src/main.ts | 2 +- src/settings/main.ts | 4 +- src/settings/{preload.ts => preload.mts} | 0 .../content/css => settings}/settings.css | 0 src/settings/settings.html | 2 +- src/setup/main.ts | 4 +- src/setup/preload.ts | 2 +- src/{discord/content/css => setup}/setup.css | 0 src/setup/setup.html | 2 +- src/splash/main.ts | 4 +- src/splash/{preload.ts => preload.mts} | 0 .../content/css => splash}/splash.css | 0 src/splash/splash.html | 2 +- src/themeManager/main.ts | 4 +- src/themeManager/{preload.ts => preload.mts} | 0 src/tray.ts | 2 +- src/types/arrpc.d.ts | 1 + tsconfig.json | 7 +- 48 files changed, 121 insertions(+), 51054 deletions(-) rename prettier.config.js => prettier.config.cjs (100%) delete mode 100644 src/arrpc/LICENSE delete mode 100644 src/arrpc/README.md delete mode 100644 src/arrpc/changelog.md delete mode 100644 src/arrpc/package.json delete mode 100644 src/arrpc/src/index.js delete mode 100644 src/arrpc/src/process/detectable.json delete mode 100644 src/arrpc/src/process/index.js delete mode 100644 src/arrpc/src/process/native/index.js delete mode 100644 src/arrpc/src/process/native/linux.js delete mode 100644 src/arrpc/src/process/native/win32.js delete mode 100644 src/arrpc/src/server.js delete mode 100644 src/arrpc/src/transports/ipc.js delete mode 100644 src/arrpc/src/transports/websocket.js rename src/discord/preload/{bridge.ts => bridge.mts} (98%) rename src/discord/preload/{capturer.ts => capturer.mts} (91%) rename src/discord/preload/{mobile.ts => mobile.mts} (77%) rename src/discord/preload/{optimizer.ts => optimizer.mts} (100%) rename src/discord/preload/{preload.ts => preload.mts} (86%) rename src/discord/preload/{settings.ts => settings.mts} (68%) rename src/discord/preload/{titlebar.ts => titlebar.mts} (94%) rename src/settings/{preload.ts => preload.mts} (100%) rename src/{discord/content/css => settings}/settings.css (100%) rename src/{discord/content/css => setup}/setup.css (100%) rename src/splash/{preload.ts => preload.mts} (100%) rename src/{discord/content/css => splash}/splash.css (100%) rename src/themeManager/{preload.ts => preload.mts} (100%) create mode 100644 src/types/arrpc.d.ts diff --git a/package.json b/package.json index 0dd2619..d9825bd 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "node": ">=18.0.0" }, "scripts": { - "build": "tsc && copyfiles -u 1 src/**/*.html src/**/**/*.css src/**/**/*.js ts-out/ && copyfiles package.json ts-out/ && copyfiles assets/**/** ts-out/", + "build": "tsc && copyfiles -u 1 src/**/*.html src/**/**/*.css src/**/**/*.js ts-out/ && copyfiles package.json ts-out/ && copyfiles assets/**/** ts-out/ && npm run fixEsmImportPath", "watch": "tsc -w", "start": "npm run build && electron ./ts-out/main.js", "startThemeManager": "npm run build && electron ./ts-out/main.js themes", @@ -16,6 +16,7 @@ "package": "npm run build && electron-builder", "packageQuick": "npm run build && electron-builder --dir", "format": "prettier --write src *.json", + "fixEsmImportPath": "fix-esm-import-path ts-out/main.js", "lint": "eslint src --ext .js,.jsx,.ts,.tsx --ignore-path .gitignore", "CIbuild": "npm run build && electron-builder --linux zip && electron-builder --windows zip && electron-builder --macos zip", "prepare": "git config --local core.hooksPath .hooks/" @@ -26,27 +27,29 @@ }, "author": "smartfrigde", "license": "OSL-3.0", + "type": "module", "bugs": { "url": "https://github.com/armcord/armcord/issues" }, "homepage": "https://github.com/armcord/armcord#readme", "devDependencies": { - "@types/node": "^18.11.9", + "@types/node": "^20.11.1", "@types/ws": "^8.5.3", "@typescript-eslint/eslint-plugin": "^5.59.2", "@typescript-eslint/parser": "^5.59.2", "copyfiles": "^2.4.1", - "electron": "30.0.4", + "electron": "30.0.5", "electron-builder": "^24.13.3", "eslint": "^8.40.0", "eslint-config-dmitmel": "github:dmitmel/eslint-config-dmitmel", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^4.2.1", + "fix-esm-import-path": "github:smartfrigde/fix-esm-import-path", "prettier": "^2.7.1", "typescript": "^4.9.3" }, "dependencies": { - "arrpc": "file:src/arrpc", + "arrpc": "github:OpenAsar/arrpc", "cross-fetch": "^3.1.5", "electron-context-menu": "github:ArmCord/electron-context-menu", "extract-zip": "^2.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2c82ea9..dad50b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: arrpc: - specifier: file:src/arrpc - version: file:src/arrpc + specifier: github:OpenAsar/arrpc + version: github.com/OpenAsar/arrpc/c62ec6a04c8d870530aa6944257fe745f6c59a24 cross-fetch: specifier: ^3.1.5 version: 3.1.5 @@ -26,8 +26,8 @@ dependencies: devDependencies: '@types/node': - specifier: ^18.11.9 - version: 18.11.9 + specifier: ^20.11.1 + version: 20.11.28 '@types/ws': specifier: ^8.5.3 version: 8.5.3 @@ -41,8 +41,8 @@ devDependencies: specifier: ^2.4.1 version: 2.4.1 electron: - specifier: 30.0.4 - version: 30.0.4 + specifier: 30.0.5 + version: 30.0.5 electron-builder: specifier: ^24.13.3 version: 24.13.3(electron-builder-squirrel-windows@24.13.3) @@ -58,6 +58,9 @@ devDependencies: eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.40.0)(prettier@2.7.1) + fix-esm-import-path: + specifier: github:smartfrigde/fix-esm-import-path + version: github.com/smartfrigde/fix-esm-import-path/71f374903884f2da21aad60b8c6a34c144523bbf prettier: specifier: ^2.7.1 version: 2.7.1 @@ -267,7 +270,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.15.11 + '@types/node': 20.11.28 '@types/responselike': 1.0.0 dev: true @@ -280,7 +283,7 @@ packages: /@types/fs-extra@9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 18.15.11 + '@types/node': 20.11.28 dev: true /@types/http-cache-semantics@4.0.1: @@ -294,31 +297,23 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.15.11 + '@types/node': 20.11.28 dev: true /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node@18.11.9: - resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} - dev: true - - /@types/node@18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} - /@types/node@20.11.28: resolution: {integrity: sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==} dependencies: undici-types: 5.26.5 - dev: true /@types/plist@3.0.2: resolution: {integrity: sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==} requiresBuild: true dependencies: - '@types/node': 18.15.11 + '@types/node': 20.11.28 xmlbuilder: 15.1.1 dev: true optional: true @@ -326,7 +321,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.15.11 + '@types/node': 20.11.28 dev: true /@types/semver@7.3.13: @@ -342,14 +337,14 @@ packages: /@types/ws@8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: - '@types/node': 18.11.9 + '@types/node': 20.11.28 dev: true /@types/yauzl@2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 18.15.11 + '@types/node': 20.11.28 optional: true /@typescript-eslint/eslint-plugin@5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.40.0)(typescript@4.9.3): @@ -1128,8 +1123,8 @@ packages: - supports-color dev: true - /electron@30.0.4: - resolution: {integrity: sha512-z8tGQeiVM6CHj0t8PKWVhAB4FZTRNN0vSrd1jA4edX1aOjBztddk4d0Gyw91pQb4arIVf2RGPu0hYbHG2+vDcA==} + /electron@30.0.5: + resolution: {integrity: sha512-+a7PjcAq2HrfF1l+Ez8n0W9YeZIam7E9ERHEGs+L2dqKu7qxk8GNSEFoBEPCpLI00p/fc0d76L9IcLCQJdNFqA==} engines: {node: '>= 12.20.55'} hasBin: true requiresBuild: true @@ -2644,7 +2639,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -2824,16 +2818,6 @@ packages: readable-stream: 3.6.2 dev: true - file:src/arrpc: - resolution: {directory: src/arrpc, type: directory} - name: arrpc - dependencies: - ws: 8.11.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - github.com/ArmCord/electron-context-menu/280c81398c02a063f46e3285a9708d8db1a7ce32: resolution: {tarball: https://codeload.github.com/ArmCord/electron-context-menu/tar.gz/280c81398c02a063f46e3285a9708d8db1a7ce32} name: electron-context-menu @@ -2844,6 +2828,18 @@ packages: electron-is-dev: 2.0.0 dev: false + github.com/OpenAsar/arrpc/c62ec6a04c8d870530aa6944257fe745f6c59a24: + resolution: {tarball: https://codeload.github.com/OpenAsar/arrpc/tar.gz/c62ec6a04c8d870530aa6944257fe745f6c59a24} + name: arrpc + version: 3.4.0 + hasBin: true + dependencies: + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd(eslint@8.40.0): resolution: {tarball: https://codeload.github.com/dmitmel/eslint-config-dmitmel/tar.gz/d97129ec35235415c6ae6a42299f55cdbb5d75fd} id: github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd @@ -2855,3 +2851,14 @@ packages: dependencies: eslint: 8.40.0 dev: true + + github.com/smartfrigde/fix-esm-import-path/71f374903884f2da21aad60b8c6a34c144523bbf: + resolution: {tarball: https://codeload.github.com/smartfrigde/fix-esm-import-path/tar.gz/71f374903884f2da21aad60b8c6a34c144523bbf} + name: fix-esm-import-path + version: 1.5.0 + hasBin: true + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true diff --git a/prettier.config.js b/prettier.config.cjs similarity index 100% rename from prettier.config.js rename to prettier.config.cjs diff --git a/src/arrpc/LICENSE b/src/arrpc/LICENSE deleted file mode 100644 index f5617f1..0000000 --- a/src/arrpc/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 OpenAsar - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/src/arrpc/README.md b/src/arrpc/README.md deleted file mode 100644 index bc6de27..0000000 --- a/src/arrpc/README.md +++ /dev/null @@ -1,82 +0,0 @@ -
- - - arRPC -
- License: MIT - GitHub Sponsors -

An open implementation of Discord's local RPC servers

-

Allowing RPC where it was otherwise impossible, like Discord Web and custom clients

-
- -
- -arRPC is an open source implementation of Discord's half-documented local RPC servers for their desktop client. This open source implementation purely in NodeJS allows it to be used in many places where it is otherwise impossible to do: Discord web and alternative clients like ArmCord/etc. It opens a simple bridge WebSocket server which messages the JSON of exactly what to dispatch with in the client with no extra processing needed, allowing small and simple mods or plugins. **arRPC is experimental and a work in progress, so expect bugs, etc.** - -
- -Rich Presence (RPC) is the name for how some apps can talk to Discord desktop on your PC via localhost servers to display detailed info about the app's state. This usually works via parts of Discord desktop natively doing things + parts of Discord web interpreting that and setting it as your status. arRPC is an open source implementation of the local RPC servers on your PC, allowing apps to talk to it thinking it was just normal Discord. It can then send that info to apps which usually don't get RPC, like Discord Web, ArmCord, etc. which can then set that as your status. This would otherwise not be possible, as web apps/browsers/etc can't just use Discord's already existing code and version. - -- App with Discord RPC -- ~~Discord Desktop's native server~~ arRPC -- ~~Discord Web's setting~~ mod/plugin - -
- -## Usage - -### Server (**REQUIRED**) - -1. Have latest (>=18) Node installed -2. Clone GitHub repo -3. `npm install` -4. Run server with `node src` - -### Web - -#### No Mods - -1. Get [the arRPC server running](#server-required) -2. With Discord open, run the content of [`examples/bridge_mod.js`](examples/bridge_mod.js) in Console (Ctrl+Shift+I). - -#### Vencord - -1. Get [the arRPC server running](#server-required) -2. Just enable the `WebRichPresence (arRPC)` Vencord plugin! - -### Custom Clients - -#### ArmCord - -ArmCord has arRPC specially integrated, just enable the option in it's settings (server not required)! - -#### Webcord - -1. Get [the arRPC server running](#server-required) -2. Disable the `Use built-in Content Security Policy` option in Advanced settings: ![image](https://user-images.githubusercontent.com/19228318/202926723-93b772fc-f37d-47d4-81fd-b11c5d4051e8.png) -3. With Webcord open, run the content of [`examples/bridge_mod.js`](examples/bridge_mod.js) in the DevTools Console (Ctrl+Shift+I). - ---- - -Then just use apps with Discord RPC like normal and they _should_ work! - -
- -## Supported - -### Transports - -- [x] WebSocket Server - - [x] JSON - - [ ] Erlpack -- [ ] HTTP Server -- [x] IPC -- [x] Process Scanning - -### Commands - -- [x] DISPATCH -- [x] SET_ACTIVITY -- [x] INVITE_BROWSER -- [x] GUILD_TEMPLATE_BROWSER -- [x] DEEP_LINK diff --git a/src/arrpc/changelog.md b/src/arrpc/changelog.md deleted file mode 100644 index 9e0376c..0000000 --- a/src/arrpc/changelog.md +++ /dev/null @@ -1,31 +0,0 @@ -# arRPC Changelog - -## v3.0.0 [26-11-2022] - -- **Added Process Scanning.** Now scans for detectable/verified games and tells Discord the app, allowing process detection whilst maintaining privacy (Discord does not see any/all processes, just the name and app ID). -- **Fixed RPC not fully working with more apps/libraries.** Now responds with a mock/fake arRPC user and the proper config, replies with confirmation, and supports blank activites fully. -- **Fixed a few minor Bridge bugs.** Fixed catchup not working with several apps. - -## v2.2.1 [24-11-2022] - -- IPC: Fix version given as string not being accepted -- IPC: Fix socket closing - -## v2.2.0 [20-11-2022] - -- Server: Move all looking up/fetching to client - -## v2.1.0 [20-11-2022] - -- Server: Stop activites when app disconnects -- Server: Added support for several apps shown at once (added `socketId`) -- Bridge: Catchup newly connected clients with last message by socket id -- Transports: Rewrote internal API to use handlers object -- API: Added parsing for GUILD_TEMPLATE_BROWSER -- API: Added parsing for DEEP_LINK - -## v2.0.0 [20-11-2022] - -- feat (breaking): moved asset lookup to client -- feat: add examples -- feat: add changelog diff --git a/src/arrpc/package.json b/src/arrpc/package.json deleted file mode 100644 index d0a88a5..0000000 --- a/src/arrpc/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "arrpc", - "version": "3.0.0", - "description": "Open Discord RPC server for atypical setups", - "main": "src/index.js", - "scripts": { - "start": "node src" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/OpenAsar/arrpc.git" - }, - "author": "OpenAsar", - "license": "MIT", - "bugs": { - "url": "https://github.com/OpenAsar/arrpc/issues" - }, - "homepage": "https://github.com/OpenAsar/arrpc#readme", - "dependencies": { - "ws": "^8.11.0" - } -} diff --git a/src/arrpc/src/index.js b/src/arrpc/src/index.js deleted file mode 100644 index c5608c4..0000000 --- a/src/arrpc/src/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const rgb = (r, g, b, msg) => `\x1b[38;2;${r};${g};${b}m${msg}\x1b[0m`; -const log = (...args) => console.log(`[${rgb(88, 101, 242, "arRPC")}]`, ...args); - -log("arRPC v3.4.0 ArmCord"); -const RPCServer = require("./server.js"); -const {mainWindow} = require("../../../ts-out/window.js"); - -async function run() { - const server = await new RPCServer(); - server.on("activity", (data) => mainWindow.webContents.send("rpc", data)); - server.on("invite", (code) => { - console.log(code); - const {createInviteWindow} = require("../../../ts-out/window.js"); - createInviteWindow(code); - }); -} -run(); diff --git a/src/arrpc/src/process/detectable.json b/src/arrpc/src/process/detectable.json deleted file mode 100644 index 4fd5622..0000000 --- a/src/arrpc/src/process/detectable.json +++ /dev/null @@ -1,50043 +0,0 @@ -[ - { - "executables": [{"is_launcher": false, "name": "speedrunners.exe", "os": "win32"}], - "hook": true, - "id": "259392830932254721", - "name": "SpeedRunners" - }, - { - "executables": [ - {"is_launcher": false, "name": "move or die/love/win/love.exe", "os": "win32"}, - {"is_launcher": false, "name": "move or die/love/linux32/love", "os": "linux"}, - {"is_launcher": false, "name": "move or die/love/osx32/love.app/contents/macos/love", "os": "darwin"} - ], - "hook": true, - "id": "343232907390746625", - "name": "Move or Die" - }, - { - "executables": [{"is_launcher": false, "name": "holodrive.exe", "os": "win32"}], - "hook": true, - "id": "346729383693778944", - "name": "Holodrive" - }, - { - "executables": [{"is_launcher": false, "name": "win64/grip-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "348146938681622538", - "name": "GRIP" - }, - { - "executables": [{"is_launcher": false, "name": "hellion.exe", "os": "win32"}], - "hook": true, - "id": "349114016968474626", - "name": "Hellion" - }, - { - "aliases": ["Divinity - Original Sin 2", "Divinity Original Sin 2", "Divinity: Original Sin 2"], - "executables": [ - {"is_launcher": false, "name": "bin/supporttool.exe", "os": "win32"}, - {"is_launcher": false, "name": "divinity original sin 2/bin/eocapp.exe", "os": "win32"} - ], - "hook": true, - "id": "349134787773988865", - "name": "Divinity Original Sin 2" - }, - { - "executables": [{"is_launcher": false, "name": "war-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "349947310375043074", - "name": "Foxhole" - }, - { - "executables": [ - {"is_launcher": false, "name": "unturned.exe", "os": "win32"}, - {"is_launcher": false, "name": "unturned_be.exe", "os": "win32"} - ], - "hook": true, - "id": "351821143981817856", - "name": "Unturned", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Battlerite "], - "executables": [{"is_launcher": false, "name": "battlerite.exe", "os": "win32"}], - "hook": true, - "id": "352378924317147156", - "name": "Battlerite", - "overlay": true - }, - { - "aliases": ["League of Legends (TW)"], - "executables": [ - {"is_launcher": false, "name": "garenalolth/gamedata/apps/lolth/lolex.exe", "os": "win32"}, - {"is_launcher": false, "name": "league of legends.exe", "os": "win32"}, - {"is_launcher": false, "name": "lollauncher.app", "os": "darwin"}, - {"is_launcher": true, "name": "leagueclientux.exe", "os": "win32"}, - {"is_launcher": false, "name": "garenaloltw/gamedata/apps/loltw/lol.exe", "os": "win32"} - ], - "hook": true, - "id": "356869127241072640", - "name": "League of Legends", - "overlay": true - }, - { - "aliases": ["PUBG"], - "executables": [ - {"is_launcher": false, "name": "tslgame.exe", "os": "win32"}, - {"is_launcher": false, "name": "tslgame_be.exe", "os": "win32"} - ], - "hook": true, - "id": "356873622985506820", - "name": "PLAYERUNKNOWN'S BATTLEGROUNDS", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Counter-Strike Global Offensive"], - "executables": [ - {"is_launcher": false, "name": "csgo_osx64", "os": "darwin"}, - {"is_launcher": false, "name": "csgo_linux64", "os": "linux"}, - {"is_launcher": false, "name": "csgo.exe", "os": "win32"} - ], - "hook": true, - "id": "356875057940791296", - "name": "Counter-Strike: Global Offensive", - "overlay": true, - "overlay_methods": 1 - }, - { - "executables": [{"is_launcher": false, "name": "overwatch.exe", "os": "win32"}], - "hook": true, - "id": "356875221078245376", - "name": "Overwatch 2", - "overlay": true - }, - { - "aliases": ["Minecraft Windows 10 Edition"], - "executables": [ - {"arguments": "net.minecraft.client.main.Main", "is_launcher": false, "name": ">java", "os": "darwin"}, - {"arguments": "net.minecraft.client.main.Main", "is_launcher": false, "name": ">javaw.exe", "os": "win32"}, - {"is_launcher": false, "name": "minecraft.windows.exe", "os": "win32"}, - {"is_launcher": false, "name": "minecraft/runtime/jre-x64/1.8.0_25/bin/javaw.exe", "os": "win32"} - ], - "hook": true, - "id": "356875570916753438", - "name": "Minecraft" - }, - { - "aliases": ["World of Warcraft\u2122"], - "executables": [ - {"is_launcher": false, "name": "_beta_/wow-64.exe", "os": "win32"}, - {"is_launcher": false, "name": "_beta_/wow.exe", "os": "win32"}, - {"is_launcher": false, "name": "_ptr_/wow.exe", "os": "win32"}, - {"is_launcher": false, "name": "_retail_/wow.exe", "os": "win32"}, - {"is_launcher": false, "name": "_retail_/wow-64.exe", "os": "win32"}, - {"is_launcher": false, "name": "_ptr_/wow-64.exe", "os": "win32"}, - {"is_launcher": false, "name": "world of warcraft.app", "os": "darwin"} - ], - "hook": true, - "id": "356875762940379136", - "name": "World of Warcraft", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "hearthstone.exe", "os": "win32"}, - {"is_launcher": false, "name": "hearthstone.app", "os": "darwin"} - ], - "hook": true, - "id": "356875890958925834", - "name": "Hearthstone", - "overlay": true - }, - { - "aliases": ["DOTA 2"], - "executables": [ - {"is_launcher": false, "name": "dota2.exe", "os": "win32"}, - {"is_launcher": false, "name": "dota_osx.app", "os": "darwin"} - ], - "hook": true, - "id": "356875988589740042", - "name": "Dota 2", - "overlay": true - }, - { - "aliases": ["Grand Theft Auto V"], - "executables": [ - {"is_launcher": false, "name": "lspdfr/lspdfr configurator.exe", "os": "win32"}, - {"is_launcher": false, "name": "subprocess/fivem_gtaprocess.exe", "os": "win32"}, - {"is_launcher": false, "name": "subprocess/fivem_dumpserver", "os": "win32"}, - {"is_launcher": false, "name": "grand theft auto v/fivem.exe", "os": "win32"}, - {"is_launcher": false, "name": "installers/social-club-setup.exe", "os": "win32"}, - {"is_launcher": false, "name": "gta5.exe", "os": "win32"}, - {"is_launcher": false, "name": "grand theft auto v/ragepluginhook.exe", "os": "win32"} - ], - "hook": true, - "id": "356876176465199104", - "name": "Grand Theft Auto V", - "overlay": true - }, - { - "aliases": ["Tom Clancy's Rainbow Six Siege", "Tom Clancy's Rainbow Six? Siege"], - "executables": [ - {"is_launcher": false, "name": "tom clancy's rainbow six siege/rainbowsix.exe", "os": "win32"}, - {"is_launcher": false, "name": "tom clancy's rainbow six siege/rainbowsix_vulkan.exe", "os": "win32"}, - {"is_launcher": false, "name": "rainbowsixgame.exe", "os": "win32"}, - {"is_launcher": false, "name": "rainbowsix.exe", "os": "win32"}, - {"is_launcher": false, "name": "rainbowsix_be.exe", "os": "win32"} - ], - "hook": true, - "id": "356876590342340608", - "name": "Tom Clancy's Rainbow Six Siege", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Rocket League"], - "executables": [ - {"is_launcher": false, "name": "rocketleague.exe", "os": "win32"}, - {"is_launcher": false, "name": "bakkesmod/plugininstaller.exe", "os": "win32"} - ], - "hook": true, - "id": "356877880938070016", - "name": "Rocket League", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "heroesofthestorm_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "heroes of the storm.exe", "os": "win32"}, - {"is_launcher": false, "name": "heroes.app", "os": "darwin"}, - {"is_launcher": false, "name": "heroesofthestorm.exe", "os": "win32"} - ], - "hook": true, - "id": "356878860190613504", - "name": "Heroes of the Storm", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Garry's Mod"], - "executables": [ - {"arguments": "-game garrysmod", "is_launcher": false, "name": "hl2.exe", "os": "win32"}, - {"arguments": "-game garrysmod", "is_launcher": false, "name": ">hl2_osx", "os": "darwin"}, - {"arguments": "-game garrysmod", "is_launcher": false, "name": ">hl2.exe", "os": "win32"}, - {"arguments": "-game garrysmod", "is_launcher": false, "name": "garrysmod/hl2.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/gmod.exe", "os": "win32"}, - {"is_launcher": false, "name": "bin/gmad.exe", "os": "win32"} - ], - "hook": true, - "id": "356879032584896512", - "name": "Garry's Mod", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "h1z1 king of the kill/h1z1.exe", "os": "win32"}], - "hook": true, - "id": "356881342321000448", - "name": "H1Z1: King of the Kill" - }, - { - "aliases": ["ARK: Survival Evolved"], - "executables": [ - {"is_launcher": false, "name": "shootergame_be.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/shootergameserver.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/shootergame_be.exe", "os": "win32"}, - {"is_launcher": false, "name": "shootergame.exe", "os": "win32"} - ], - "hook": true, - "id": "356887282982191114", - "name": "ARK: Survival Evolved", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [ - {"is_launcher": false, "name": "pathofexilesteam.exe", "os": "win32"}, - {"is_launcher": false, "name": "pathofexile.exe", "os": "win32"}, - {"is_launcher": false, "name": "pathofexile_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "pathofexile_x64steam.exe", "os": "win32"} - ], - "hook": true, - "id": "356888453796986880", - "name": "Path of Exile", - "overlay": true - }, - { - "executables": [ - {"arguments": "-game tf", "is_launcher": false, "name": ">hl2.exe", "os": "win32"}, - {"arguments": "-game tf", "is_launcher": false, "name": "hl2tf.exe", "os": "win32"}, - {"arguments": "-game tf", "is_launcher": false, "name": ">hl2_osx", "os": "darwin"} - ], - "hook": true, - "id": "356888577310851072", - "name": "Team Fortress 2", - "overlay": true - }, - { - "aliases": ["Rust"], - "executables": [ - {"is_launcher": false, "name": "rust.exe", "os": "win32"}, - {"is_launcher": false, "name": "rustclient.exe", "os": "win32"} - ], - "hook": true, - "id": "356888738724446208", - "name": "Rust", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "worldoftanks.exe", "os": "win32"}], - "hook": true, - "id": "356888961353908224", - "name": "World of Tanks" - }, - { - "aliases": ["FINAL FANTASY XIV - A Realm Reborn"], - "executables": [ - {"is_launcher": false, "name": "ffxiv_dx11.exe", "os": "win32"}, - {"is_launcher": false, "name": "ffxiv.exe", "os": "win32"}, - {"is_launcher": false, "name": "final fantasy xiv.app", "os": "darwin"} - ], - "hook": true, - "id": "356889262362329098", - "name": "FINAL FANTASY XIV", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Geometry Dash"], - "executables": [ - {"is_launcher": false, "name": "geometrydash.exe", "os": "win32"}, - {"is_launcher": false, "name": "geometry dash/geometrydash.exe", "os": "win32"} - ], - "hook": true, - "id": "356942674672091136", - "name": "Geometry Dash" - }, - { - "executables": [{"is_launcher": false, "name": "dolphin.exe", "os": "win32"}], - "hook": true, - "id": "356943187589201930", - "name": "Dolphin" - }, - { - "aliases": ["Terraria"], - "executables": [ - {"is_launcher": false, "name": "terraria.bin.x86", "os": "linux"}, - {"is_launcher": false, "name": "terraria/terraria.exe", "os": "win32"}, - {"is_launcher": false, "name": "terraria.exe", "os": "win32"}, - {"is_launcher": false, "name": "terraria.app", "os": "darwin"} - ], - "hook": true, - "id": "356943499456937984", - "name": "Terraria" - }, - { - "aliases": ["Brawlhalla"], - "executables": [ - {"is_launcher": false, "name": "brawlhalla.app", "os": "darwin"}, - {"is_launcher": false, "name": "brawlhalla/brawlhallagame.exe", "os": "win32"}, - {"is_launcher": false, "name": "brawlhalla.exe", "os": "win32"} - ], - "hook": true, - "id": "356944273133928458", - "name": "Brawlhalla", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "walkingdead101.exe", "os": "win32"}], - "hook": true, - "id": "356953358952562688", - "name": "The Walking Dead" - }, - { - "executables": [{"is_launcher": false, "name": "sonicmania.exe", "os": "win32"}], - "hook": true, - "id": "356953520278339584", - "name": "Sonic Mania" - }, - { - "executables": [{"is_launcher": false, "name": "golf with your friends.exe", "os": "win32"}], - "hook": true, - "id": "356954034701205504", - "name": "Golf With Your Friends" - }, - { - "executables": [{"is_launcher": false, "name": "cities.exe", "os": "win32"}], - "hook": true, - "id": "356954111901433856", - "name": "Cities: Skylines", - "overlay": true - }, - { - "aliases": ["Arma 3"], - "executables": [ - {"is_launcher": false, "name": "arma 3/arma3_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "arma3.exe", "os": "win32"} - ], - "hook": true, - "id": "356954176338788352", - "name": "Arma 3", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Left 4 Dead 2"], - "executables": [ - { - "arguments": "-game left4dead2", - "is_launcher": false, - "name": "left 4 dead 2/left4dead2.exe", - "os": "win32" - }, - {"arguments": "-game left4dead2", "is_launcher": false, "name": "left4dead2.exe", "os": "win32"}, - {"arguments": "-game left4dead2", "is_launcher": false, "name": ">hl2_osx", "os": "darwin"}, - {"is_launcher": false, "name": "bin/l4d2_workshop_manager.exe", "os": "win32"} - ], - "hook": true, - "id": "356954277803065354", - "name": "Left 4 Dead 2", - "overlay": true - }, - { - "aliases": ["Project64 1.6", "Project64 version 2.3.2.202"], - "executables": [{"is_launcher": false, "name": "project64.exe", "os": "win32"}], - "hook": true, - "id": "357606193918771210", - "name": "Project 64" - }, - { - "aliases": ["Old School RuneScape", "RuneScape 3", "RuneScape Launcher 2.2.4"], - "executables": [ - {"is_launcher": false, "name": "osbuddy64.exe", "os": "win32"}, - {"is_launcher": false, "name": "runescape.exe", "os": "win32"}, - {"is_launcher": false, "name": "osbuddy.exe", "os": "win32"}, - {"is_launcher": false, "name": "runescape.app", "os": "darwin"}, - {"is_launcher": false, "name": "swiftkit-rs.exe", "os": "win32"}, - {"is_launcher": false, "name": "jagexcache/jagexlauncher/bin/jagexlauncher.exe", "os": "win32"} - ], - "hook": true, - "id": "357606832899883008", - "name": "RuneScape" - }, - { - "aliases": ["Dead by Daylight"], - "executables": [ - {"is_launcher": false, "name": "deadbydaylight.exe", "os": "win32"}, - {"is_launcher": false, "name": "deadbydaylight-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "dead by daylight/deadbydaylight.exe", "os": "win32"} - ], - "hook": true, - "id": "357607133254254632", - "name": "Dead by Daylight", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "aces.exe", "os": "win32"}], - "hook": true, - "id": "357607478105604096", - "name": "War Thunder", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "worldofwarships.exe", "os": "win32"}], - "hook": true, - "id": "357607617046249482", - "name": "World of Warships" - }, - { - "executables": [{"is_launcher": false, "name": "duelyst.exe", "os": "win32"}], - "hook": true, - "id": "357706468843061258", - "name": "Duelyst", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Battlefield\u2122 1"], - "executables": [{"is_launcher": false, "name": "bf1.exe", "os": "win32"}], - "hook": true, - "id": "358417041981571082", - "name": "Battlefield 1", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["The Binding of Isaac: Rebirth"], - "executables": [ - {"is_launcher": false, "name": "the binding of isaac rebirth.app", "os": "darwin"}, - {"is_launcher": false, "name": "isaacanimationeditor/isaacanimationeditor.exe", "os": "win32"}, - {"is_launcher": false, "name": "isaac-ng.exe", "os": "win32"}, - {"is_launcher": false, "name": "roomeditor/roomeditor.exe", "os": "win32"}, - {"is_launcher": false, "name": "isaacitempooleditor/itempooleditor.exe", "os": "win32"} - ], - "hook": true, - "id": "358420454764969994", - "name": "The Binding of Isaac: Rebirth", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "blackdesert32.exe", "os": "win32"}, - {"is_launcher": false, "name": "blackdesert64.exe", "os": "win32"} - ], - "hook": true, - "id": "358420844491440148", - "name": "Black Desert Online", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [ - { - "is_launcher": false, - "name": "steam/steamapps/common/black squad/binaries/win32/steamlauncher.exe", - "os": "win32" - } - ], - "hook": true, - "id": "358421399670358026", - "name": "Black Squad" - }, - { - "executables": [{"is_launcher": false, "name": "hiveswap-act1.exe", "os": "win32"}], - "hook": true, - "id": "358421573071536128", - "name": "HIVESWAP: ACT 1" - }, - { - "aliases": ["Hearts of Iron IV"], - "executables": [ - {"is_launcher": false, "name": "hearts of iron iv/hoi4.exe", "os": "win32"}, - {"is_launcher": false, "name": "hoi4.exe", "os": "win32"} - ], - "hook": true, - "id": "358421669603311616", - "name": "Hearts of Iron IV" - }, - { - "aliases": ["Monaco: What's Yours Is Mine"], - "executables": [{"is_launcher": false, "name": "monaco.exe", "os": "win32"}], - "hook": true, - "id": "358421725139959808", - "name": "Monaco" - }, - { - "executables": [ - {"is_launcher": false, "name": "playbns.exe", "os": "win32"}, - {"is_launcher": false, "name": "bns/bin64/client.exe", "os": "win32"} - ], - "hook": true, - "id": "358421781398421514", - "name": "Blade & Soul", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "civilizationv_dx11.exe", "os": "win32"}], - "hook": true, - "id": "358421904601776138", - "name": "Sid Meier's Civilization V" - }, - { - "executables": [ - {"is_launcher": false, "name": "smiteeac.exe", "os": "win32"}, - {"is_launcher": false, "name": "smite.exe", "os": "win32"} - ], - "hook": true, - "id": "358422012990849024", - "name": "SMITE", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "factorio.exe", "os": "win32"}], - "hook": true, - "id": "358422126602223616", - "name": "Factorio", - "overlay": true - }, - { - "aliases": ["Diablo 3", "\ub514\uc544\ube14\ub85c III"], - "executables": [ - {"is_launcher": false, "name": "diablo iii64.exe", "os": "win32"}, - {"is_launcher": false, "name": "diablo iii.exe", "os": "win32"}, - {"is_launcher": false, "name": "diablo iii.app", "os": "darwin"} - ], - "hook": true, - "id": "358425751197974528", - "name": "Diablo III", - "overlay": true - }, - { - "aliases": ["Starcraft 2", "Starcraft II"], - "executables": [ - {"is_launcher": false, "name": "sc2.exe", "os": "win32"}, - {"is_launcher": false, "name": "starcraft ii.exe", "os": "win32"}, - {"is_launcher": false, "name": "sc2_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "sc2.app", "os": "darwin"} - ], - "hook": true, - "id": "358425800766128128", - "name": "StarCraft II", - "overlay": true - }, - { - "aliases": ["Skyrim", "Skyrim - Legendary Edition"], - "executables": [ - {"is_launcher": false, "name": "tesv.exe", "os": "win32"}, - {"is_launcher": false, "name": "skyrimlauncher.exe", "os": "win32"}, - {"is_launcher": false, "name": "tesv_original.exe", "os": "win32"} - ], - "hook": true, - "id": "359507724196773888", - "name": "The Elder Scrolls V: Skyrim", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "thedivision.exe", "os": "win32"}, - {"is_launcher": false, "name": "the division.exe", "os": "win32"} - ], - "hook": true, - "id": "359507798930751488", - "name": "Tom Clancy's The Division" - }, - { - "executables": [ - {"is_launcher": false, "name": "don't starve together/bin/dontstarve.exe", "os": "win32"}, - {"is_launcher": false, "name": "don't starve together/bin/dontstarve_steam.exe", "os": "win32"} - ], - "hook": true, - "id": "359508004078616586", - "name": "Don't Starve Together" - }, - { - "executables": [{"is_launcher": false, "name": "shellshocklive.exe", "os": "win32"}], - "hook": true, - "id": "359508342571401216", - "name": "ShellShock Live" - }, - { - "executables": [{"is_launcher": false, "name": "spaceengineers.exe", "os": "win32"}], - "hook": true, - "id": "359508404034600990", - "name": "Space Engineers", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "eurotrucks2.exe", "os": "win32"}], - "hook": true, - "id": "359508713658253318", - "name": "Euro Truck Simulator 2", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "portal2.exe", "os": "win32"}], - "hook": true, - "id": "359508941782122496", - "name": "Portal 2", - "overlay": true - }, - { - "aliases": ["The Sims\u2122 4"], - "executables": [ - {"is_launcher": false, "name": "ts4_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "ts4.exe", "os": "win32"} - ], - "hook": true, - "id": "359509007423242240", - "name": "The Sims 4" - }, - { - "aliases": ["Call of Duty: Black Ops III"], - "executables": [ - {"is_launcher": false, "name": "call of duty black ops iii/boiii.exe", "os": "win32"}, - {"is_launcher": false, "name": "blackops3.exe", "os": "win32"} - ], - "hook": true, - "id": "359509332490059776", - "name": "Call of Duty: Black Ops III", - "overlay": true - }, - { - "aliases": ["Stardew Valley"], - "executables": [ - {"is_launcher": false, "name": "stardew valley/stardew valley.exe", "os": "win32"}, - {"is_launcher": false, "name": "stardew valley.exe", "os": "win32"} - ], - "hook": true, - "id": "359509387670192128", - "name": "Stardew Valley" - }, - { - "aliases": ["DARK SOULS III", "DARK SOULS\u2122 III", "Dark Souls III"], - "executables": [ - {"is_launcher": false, "name": "game/darksoulsiii.exe", "os": "win32"}, - {"is_launcher": false, "name": "darksoulsiii.exe", "os": "win32"} - ], - "hook": true, - "id": "359509500199436288", - "name": "DARK SOULS III" - }, - { - "executables": [{"is_launcher": false, "name": "counter-strike source/hl2.exe", "os": "win32"}], - "hook": true, - "id": "359509666876751872", - "name": "Counter-Strike: Source" - }, - { - "executables": [{"is_launcher": false, "name": "fallout4.exe", "os": "win32"}], - "hook": true, - "id": "359509759642042378", - "name": "Fallout 4" - }, - { - "aliases": ["Fallout New Vegas"], - "executables": [{"is_launcher": false, "name": "falloutnv.exe", "os": "win32"}], - "hook": true, - "id": "359509858728542208", - "name": "Fallout: New Vegas", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "maplestory.exe", "os": "win32"}], - "hook": true, - "id": "359510095811444736", - "name": "MapleStory", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["The Witcher 3", "The Witcher 3: Wild Hunt - Game of the Year Edition"], - "executables": [{"is_launcher": false, "name": "witcher3.exe", "os": "win32"}], - "hook": true, - "id": "359510249486417920", - "name": "The Witcher 3: Wild Hunt", - "overlay": true - }, - { - "executables": [ - {"arguments": "-game hl2", "is_launcher": false, "name": ">hl2.exe", "os": "win32"}, - {"arguments": "-game hl2", "is_launcher": false, "name": "hl2hl2.exe", "os": "win32"}, - {"arguments": "-game hl2", "is_launcher": false, "name": ">hl2_osx", "os": "darwin"} - ], - "hook": true, - "id": "359510373361254400", - "name": "Half-Life 2" - }, - { - "aliases": ["Battlefield 4\u2122", "Battlefield 4\u2122 (64 bit)", "Battlefiled 4 CTE"], - "executables": [ - {"is_launcher": false, "name": "bf4.exe", "os": "win32"}, - {"is_launcher": false, "name": "bf4cte.exe", "os": "win32"} - ], - "hook": true, - "id": "359510680459673610", - "name": "Battlefield 4" - }, - { - "executables": [{"is_launcher": false, "name": "xcom2.exe", "os": "win32"}], - "hook": true, - "id": "359510740878491658", - "name": "XCOM 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "gw2.app", "os": "darwin"}, - {"is_launcher": false, "name": "guild wars 2 64-bit.app", "os": "darwin"}, - {"is_launcher": false, "name": "gw2.exe", "os": "win32"}, - {"is_launcher": false, "name": "gw2-64.exe", "os": "win32"} - ], - "hook": true, - "id": "359511228445491200", - "name": "Guild Wars 2", - "overlay": true - }, - { - "aliases": ["The Elder Scrolls V Skyrim Special Edition", "The Elder Scrolls V: Skyrim Special Edition"], - "executables": [{"is_launcher": false, "name": "skyrim special edition/skyrimse.exe", "os": "win32"}], - "hook": true, - "id": "359801269008859136", - "name": "The Elder Scrolls V: Skyrim Special Edition" - }, - { - "aliases": ["Tooth & Tail"], - "executables": [{"is_launcher": false, "name": "toothandtail.exe", "os": "win32"}], - "hook": true, - "id": "360541292578471937", - "name": "Tooth and Tail", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "outlast.app", "os": "darwin"}, - {"is_launcher": false, "name": "olgame.exe", "os": "win32"} - ], - "hook": true, - "id": "363408634568376320", - "name": "Outlast" - }, - { - "executables": [{"is_launcher": false, "name": "depthgame.exe", "os": "win32"}], - "hook": true, - "id": "363408709495291934", - "name": "Depth" - }, - { - "executables": [{"is_launcher": false, "name": "tabletop simulator.exe", "os": "win32"}], - "hook": true, - "id": "363408834095742976", - "name": "Tabletop Simulator", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "stellaris.exe", "os": "win32"}], - "hook": true, - "id": "363408909962182683", - "name": "Stellaris" - }, - { - "executables": [ - {"is_launcher": false, "name": "trove.exe", "os": "win32"}, - {"is_launcher": false, "name": "trove/glyphclientapp.exe", "os": "win32"} - ], - "hook": true, - "id": "363409000399634432", - "name": "Trove" - }, - { - "executables": [{"is_launcher": false, "name": "gang beasts.exe", "os": "win32"}], - "hook": true, - "id": "363409129643180032", - "name": "Gang Beasts" - }, - { - "aliases": ["The Forest"], - "executables": [ - {"is_launcher": false, "name": "theforest.exe", "os": "win32"}, - {"is_launcher": false, "name": "the forest/theforestvr.exe", "os": "win32"} - ], - "hook": true, - "id": "363409179668512788", - "name": "The Forest" - }, - { - "executables": [ - {"is_launcher": false, "name": "insurgency_be.exe", "os": "win32"}, - {"is_launcher": false, "name": "insurgency.exe", "os": "win32"} - ], - "hook": true, - "id": "363409205740175360", - "name": "Insurgency", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Europa Universalis 4"], - "executables": [ - {"is_launcher": false, "name": "eu4.exe", "os": "win32"}, - {"is_launcher": false, "name": "eu4.app", "os": "darwin"} - ], - "hook": true, - "id": "363409417632481280", - "name": "Europa Universalis IV", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "townofsalem.exe", "os": "win32"}], - "hook": true, - "id": "363409453699170304", - "name": "Town of Salem" - }, - { - "executables": [ - {"is_launcher": false, "name": "robocraftclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "robocraft.exe", "os": "win32"} - ], - "hook": true, - "id": "363409532480913408", - "name": "Robocraft", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "golfit-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "363409575321403402", - "name": "Golf It!" - }, - { - "executables": [{"is_launcher": false, "name": "shadowverse.exe", "os": "win32"}], - "hook": true, - "id": "363409615620407316", - "name": "Shadowverse" - }, - { - "aliases": ["7 Days To Die"], - "executables": [ - {"is_launcher": false, "name": "7daystodie.exe", "os": "win32"}, - {"is_launcher": false, "name": "7daystodie_eac.exe", "os": "win32"} - ], - "hook": true, - "id": "363409643973771264", - "name": "7 Days to Die", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "kfgame.exe", "os": "win32"}], - "hook": true, - "id": "363409749175173120", - "name": "Killing Floor 2" - }, - { - "aliases": ["Starcraft"], - "executables": [{"is_launcher": false, "name": "starcraft.exe", "os": "win32"}], - "hook": true, - "id": "363409793119158272", - "name": "StarCraft", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "undertale.app", "os": "darwin"}, - {"is_launcher": false, "name": "undertale.exe", "os": "win32"} - ], - "hook": true, - "id": "363409849859571722", - "name": "Undertale" - }, - { - "executables": [{"is_launcher": false, "name": "duckgame.exe", "os": "win32"}], - "hook": true, - "id": "363410951518552064", - "name": "Duck Game", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "shootergame-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "363411048713420800", - "name": "Dirty Bomb", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Business Tour - Online Multiplayer Board Game"], - "executables": [ - {"is_launcher": false, "name": "business tour/businesstour.exe", "os": "win32"}, - {"is_launcher": false, "name": "businesstour.exe", "os": "win32"} - ], - "hook": true, - "id": "363411278527594516", - "name": "Business Tour - Online Multiplayer Board Game" - }, - { - "executables": [{"is_launcher": false, "name": "falloutshelter.exe", "os": "win32"}], - "hook": true, - "id": "363411364552638464", - "name": "Fallout Shelter" - }, - { - "executables": [{"is_launcher": false, "name": "slimerancher.exe", "os": "win32"}], - "hook": true, - "id": "363411395854991400", - "name": "Slime Rancher" - }, - { - "aliases": ["Last Man Standing"], - "executables": [ - {"is_launcher": false, "name": "lms.exe", "os": "win32"}, - {"is_launcher": false, "name": "2013/vcredist_x64.exe", "os": "win32"} - ], - "hook": true, - "id": "363411421553360896", - "name": "Last Man Standing" - }, - { - "aliases": ["Titanfall\u2122 2"], - "executables": [{"is_launcher": false, "name": "titanfall2.exe", "os": "win32"}], - "hook": true, - "id": "363411468441354240", - "name": "Titanfall 2" - }, - { - "aliases": ["STAR WARS Battlefront", "STAR WARS\u2122 Battlefront\u2122", "Star Wars Battlefront"], - "executables": [{"is_launcher": false, "name": "starwarsbattlefront.exe", "os": "win32"}], - "hook": true, - "id": "363412167934083072", - "name": "STAR WARS\u2122 Battlefront\u2122" - }, - { - "aliases": ["Mount & Blade: Warband"], - "executables": [ - {"is_launcher": false, "name": "wse/wseloader.exe", "os": "win32"}, - {"is_launcher": false, "name": "mountblade warband/battlesizer.exe", "os": "win32"}, - {"is_launcher": false, "name": "mountblade warband/mb_warband_old.exe", "os": "win32"}, - {"is_launcher": false, "name": "mountblade warband/mb_warband.exe", "os": "win32"}, - {"is_launcher": false, "name": "mountblade warband/binkplay.exe", "os": "win32"} - ], - "hook": true, - "id": "363412302998929418", - "name": "Mount & Blade: Warband" - }, - { - "aliases": ["STAR WARS\u2122: The Old Republic\u2122", "Star Wars: The Old Republic"], - "executables": [{"is_launcher": false, "name": "swtor.exe", "os": "win32"}], - "hook": true, - "id": "363412489599188992", - "name": "STAR WARS: The Old Republic", - "overlay": true - }, - { - "aliases": ["Planetside 2"], - "executables": [ - {"is_launcher": false, "name": "planetside2_x86.exe", "os": "win32"}, - {"is_launcher": false, "name": "planetside2_x64.exe", "os": "win32"} - ], - "hook": true, - "id": "363412528308682752", - "name": "PlanetSide 2", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "clicker heroes.exe", "os": "win32"}], - "hook": true, - "id": "363412660680785940", - "name": "Clicker Heroes", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "psychonauts.exe", "os": "win32"}], - "hook": true, - "id": "363412675650125825", - "name": "Psychonauts" - }, - { - "executables": [{"is_launcher": false, "name": "amtrucks.exe", "os": "win32"}], - "hook": true, - "id": "363412692083671040", - "name": "American Truck Simulator" - }, - { - "aliases": ["Call of Duty: World at War"], - "executables": [ - {"is_launcher": false, "name": "codwawmp.exe", "os": "win32"}, - {"is_launcher": false, "name": "codwaw.exe", "os": "win32"}, - {"is_launcher": false, "name": "installers/pbsvc.exe", "os": "win32"} - ], - "hook": true, - "id": "363412728888557568", - "name": "Call of Duty: World at War" - }, - { - "executables": [ - {"is_launcher": false, "name": "crossout-d3d9.exe", "os": "win32"}, - {"is_launcher": false, "name": "crossout.exe", "os": "win32"} - ], - "hook": true, - "id": "363412799117852672", - "name": "Crossout" - }, - { - "executables": [{"is_launcher": false, "name": "dofus.exe", "os": "win32"}], - "hook": true, - "id": "363412841862266880", - "name": "Dofus", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "comedy night.exe", "os": "win32"}], - "hook": true, - "id": "363413176605212682", - "name": "Comedy Night" - }, - { - "executables": [{"is_launcher": false, "name": "enter the gungeon/etg.exe", "os": "win32"}], - "hook": true, - "id": "363413202090065920", - "name": "Enter the Gungeon" - }, - { - "executables": [ - {"is_launcher": false, "name": "elitedangerous64.exe", "os": "win32"}, - {"is_launcher": false, "name": "elitedangerous32.exe", "os": "win32"}, - {"is_launcher": false, "name": "elitedangerous.exe", "os": "win32"} - ], - "hook": true, - "id": "363413225578037248", - "name": "Elite Dangerous" - }, - { - "executables": [ - {"is_launcher": false, "name": "wizardgraphicalclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "wizard101.exe", "os": "win32"} - ], - "hook": true, - "id": "363413310474813450", - "name": "Wizard101", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "adventure-capitalist.exe", "os": "win32"}], - "hook": true, - "id": "363413365667921930", - "name": "AdVenture Capitalist" - }, - { - "aliases": ["Age of Empires II", "Age of Empires II: The Conquerors"], - "executables": [ - {"is_launcher": false, "name": "age2_x1.exe", "os": "win32"}, - {"is_launcher": false, "name": "aok hd.exe", "os": "win32"}, - {"is_launcher": false, "name": "empires2.exe", "os": "win32"} - ], - "hook": true, - "id": "363413389021675530", - "name": "Age of Empires II: HD Edition", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "exefile.exe", "os": "win32"}, - {"is_launcher": true, "name": "evelauncher.exe", "os": "win32"} - ], - "hook": true, - "id": "363413402300710912", - "name": "EVE Online" - }, - { - "executables": [{"is_launcher": false, "name": "heat_signature.exe", "os": "win32"}], - "hook": true, - "id": "363413452976553984", - "name": "Heat Signature" - }, - { - "executables": [ - {"is_launcher": false, "name": "rimworld914win.exe", "os": "win32"}, - {"is_launcher": false, "name": "rimworldwin.exe", "os": "win32"} - ], - "hook": true, - "id": "363413465584500737", - "name": "RimWorld", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "aces.exe", "os": "win32"}], - "hook": true, - "id": "363413661567680522", - "name": "WarThunder" - }, - { - "executables": [{"is_launcher": false, "name": "rivalsofaether.exe", "os": "win32"}], - "hook": true, - "id": "363413717267906560", - "name": "Rivals of Aether" - }, - { - "executables": [ - {"is_launcher": false, "name": "beamng.drive.exe", "os": "win32"}, - {"is_launcher": false, "name": "beamng.drive.x64.exe", "os": "win32"} - ], - "hook": true, - "id": "363413743335374859", - "name": "BeamNG.drive" - }, - { - "aliases": ["Subnautica-FullRelease"], - "executables": [{"is_launcher": false, "name": "subnautica.exe", "os": "win32"}], - "hook": true, - "id": "363413811518242816", - "name": "Subnautica" - }, - { - "executables": [{"is_launcher": false, "name": "civilizationvi.exe", "os": "win32"}], - "hook": true, - "id": "363413834301571072", - "name": "Sid Meier's Civilization VI" - }, - { - "executables": [ - {"is_launcher": false, "name": "game/client/eso.exe", "os": "win32"}, - {"is_launcher": false, "name": "game/client/eso64.exe", "os": "win32"} - ], - "hook": true, - "id": "363413894602948608", - "name": "The Elder Scrolls Online", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "doomx64.exe", "os": "win32"}], - "hook": true, - "id": "363413961967927306", - "name": "DOOM" - }, - { - "executables": [{"is_launcher": false, "name": "ftlgame.exe", "os": "win32"}], - "hook": true, - "id": "363414030188150801", - "name": "FTL: Faster Than Light", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "realm of the mad god.exe", "os": "win32"}], - "hook": true, - "id": "363414084542005258", - "name": "Realm of the Mad God" - }, - { - "executables": [{"is_launcher": false, "name": "justcause3.exe", "os": "win32"}], - "hook": true, - "id": "363414140502671360", - "name": "Just Cause 3", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "portal/hl2.exe", "os": "win32"}, - {"is_launcher": false, "name": "hl2p.exe", "os": "win32"} - ], - "hook": true, - "id": "363414173457186826", - "name": "Portal" - }, - { - "executables": [{"is_launcher": false, "name": "deadcells.exe", "os": "win32"}], - "hook": true, - "id": "363414360422612992", - "name": "Dead Cells" - }, - { - "executables": [{"is_launcher": false, "name": "fifa17.exe", "os": "win32"}], - "hook": true, - "id": "363414398129274890", - "name": "FIFA 17", - "overlay": true - }, - { - "aliases": ["DRAGON BALL XENOVERSE 2"], - "executables": [ - {"is_launcher": false, "name": "db xenoverse 2/xv2skilcreat.exe", "os": "win32"}, - {"is_launcher": false, "name": "xv2ins/xv2ins.exe", "os": "win32"}, - {"is_launcher": false, "name": "dbxv2.exe", "os": "win32"}, - {"is_launcher": false, "name": "db xenoverse 2/xv2ins.exe", "os": "win32"}, - {"is_launcher": false, "name": "db xenoverse 2/xv2characreat.exe", "os": "win32"}, - {"is_launcher": false, "name": "db xenoverse 2/start.exe", "os": "win32"} - ], - "hook": true, - "id": "363414443129831444", - "name": "DRAGON BALL XENOVERSE 2" - }, - { - "aliases": ["Friday the 13th"], - "executables": [{"is_launcher": false, "name": "summercamp.exe", "os": "win32"}], - "hook": true, - "id": "363414482615271434", - "name": "Friday the 13th: The Game" - }, - { - "executables": [{"is_launcher": false, "name": "prison architect.exe", "os": "win32"}], - "hook": true, - "id": "363414635812093962", - "name": "Prison Architect", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "tekkengame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "363414667797725184", - "name": "TEKKEN 7" - }, - { - "executables": [{"is_launcher": false, "name": "theescapists2.exe", "os": "win32"}], - "hook": true, - "id": "363414712186306560", - "name": "The Escapists 2" - }, - { - "executables": [{"is_launcher": false, "name": "ck2game.exe", "os": "win32"}], - "hook": true, - "id": "363414742661988352", - "name": "Crusader Kings II", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "microtransaction_simulator/microsimulator.exe", "os": "win32"}], - "hook": true, - "id": "363414852410015744", - "name": "Microtransaction Simulator" - }, - { - "aliases": ["Middle-earth\u2122: Shadow of Mordor\u2122"], - "executables": [{"is_launcher": false, "name": "shadowofmordor.exe", "os": "win32"}], - "hook": true, - "id": "363424997080956928", - "name": "Middle-earth: Shadow of Mordor" - }, - { - "aliases": ["Metal Gear Online 3", "Metal Gear Solid V: The Phantom Pain"], - "executables": [ - {"is_launcher": false, "name": "mgsvmgo.exe", "os": "win32"}, - {"is_launcher": false, "name": "mgsvtpp.exe", "os": "win32"} - ], - "hook": true, - "id": "363425113879609344", - "name": "METAL GEAR SOLID V: THE PHANTOM PAIN" - }, - { - "executables": [{"is_launcher": false, "name": "idledragons.exe", "os": "win32"}], - "hook": true, - "id": "363425133274333214", - "name": "Idle Champions of the Forgotten Realms" - }, - { - "executables": [ - {"is_launcher": false, "name": "huniepop.app", "os": "darwin"}, - {"is_launcher": false, "name": "huniepop.exe", "os": "win32"} - ], - "hook": true, - "id": "363425169051615262", - "name": "HuniePop" - }, - { - "executables": [{"is_launcher": false, "name": "ultimatechickenhorse.exe", "os": "win32"}], - "hook": true, - "id": "363425213905371146", - "name": "Ultimate Chicken Horse" - }, - { - "aliases": ["NieR:Automata\u2122"], - "executables": [ - {"is_launcher": false, "name": "nierautomata/naiom-gui.exe", "os": "win32"}, - {"is_launcher": false, "name": "nierautomata.exe", "os": "win32"} - ], - "hook": true, - "id": "363425276300099584", - "name": "NieR:Automata" - }, - { - "aliases": ["DARK SOULS\u2122 II: Scholar of the First Sin"], - "executables": [ - {"is_launcher": false, "name": "game/x360ce_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "darksoulsii.exe", "os": "win32"} - ], - "hook": true, - "id": "363426741269692416", - "name": "DARK SOULS II: Scholar of the First Sin" - }, - { - "executables": [{"is_launcher": false, "name": "warhammer2.exe", "os": "win32"}], - "hook": true, - "id": "363426802640617482", - "name": "Total War: WARHAMMER II" - }, - { - "executables": [{"is_launcher": false, "name": "skullgirls.exe", "os": "win32"}], - "hook": true, - "id": "363426862363574272", - "name": "Skullgirls" - }, - { - "executables": [{"is_launcher": false, "name": "farmingsimulator2017game.exe", "os": "win32"}], - "hook": true, - "id": "363426921612181504", - "name": "Farming Simulator 17" - }, - { - "aliases": ["100% Orange Juice"], - "executables": [{"is_launcher": false, "name": "100orange.exe", "os": "win32"}], - "hook": true, - "id": "363427044333191169", - "name": "100% Orange Juice" - }, - { - "executables": [{"is_launcher": false, "name": "necrodancer.exe", "os": "win32"}], - "hook": true, - "id": "363427101346627584", - "name": "Crypt of the NecroDancer" - }, - { - "aliases": ["Call of Duty: Black Ops II - Multiplayer"], - "executables": [ - {"is_launcher": false, "name": "t6sp.exe", "os": "win32"}, - {"is_launcher": false, "name": "t6mp.exe", "os": "win32"}, - {"is_launcher": false, "name": "call of duty black ops ii/t6mp.exe", "os": "win32"}, - {"is_launcher": false, "name": "t6zm.exe", "os": "win32"} - ], - "hook": true, - "id": "363427270024626176", - "name": "Call of Duty: Black Ops II" - }, - { - "aliases": ["Sonic Adventure\u2122 2"], - "executables": [ - {"is_launcher": false, "name": "sonic2app.exe", "os": "win32"}, - {"is_launcher": false, "name": "sonic adventure 2/sa2modmanager.exe", "os": "win32"} - ], - "hook": true, - "id": "363427419249442816", - "name": "Sonic Adventure 2" - }, - { - "aliases": ["Bloons TD Battles"], - "executables": [ - {"is_launcher": false, "name": "battles-win.exe", "os": "win32"}, - {"is_launcher": false, "name": "bloons td battles/battles-win.exe", "os": "win32"} - ], - "hook": true, - "id": "363427491995713536", - "name": "Bloons TD Battles" - }, - { - "executables": [{"is_launcher": false, "name": "dishonored.exe", "os": "win32"}], - "hook": true, - "id": "363427574707257354", - "name": "Dishonored" - }, - { - "executables": [{"is_launcher": false, "name": "svencoop.exe", "os": "win32"}], - "hook": true, - "id": "363427674309263360", - "name": "Sven Co-op" - }, - { - "executables": [{"is_launcher": false, "name": "tower-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "363427800088313856", - "name": "Tower Unite" - }, - { - "executables": [{"is_launcher": false, "name": "dyinglightgame.exe", "os": "win32"}], - "hook": true, - "id": "363427839137153024", - "name": "Dying Light", - "overlay": true - }, - { - "aliases": ["Chivalry: Medieval"], - "executables": [{"is_launcher": false, "name": "cmw.exe", "os": "win32"}], - "hook": true, - "id": "363427969324023808", - "name": "Chivalry: Medieval Warfare" - }, - { - "executables": [ - {"is_launcher": false, "name": "squad/squadgame/binaries/win64/squadgame.exe", "os": "win32"}, - {"is_launcher": true, "name": "squad/squad_launcher.exe", "os": "win32"} - ], - "hook": true, - "id": "363428011980357632", - "name": "Squad", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["ASTRONEER Early Access", "Astroneer"], - "executables": [{"is_launcher": false, "name": "astro-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "363428060604792832", - "name": "ASTRONEER" - }, - { - "executables": [{"is_launcher": false, "name": "creativerse.exe", "os": "win32"}], - "hook": true, - "id": "363428103919239168", - "name": "Creativerse" - }, - { - "executables": [{"is_launcher": false, "name": "oddworld abes oddysee/abewin.exe", "os": "win32"}], - "hook": true, - "id": "363428220617621504", - "name": "Oddworld: Abe's Oddysee" - }, - { - "aliases": [ - "Tom Clancy's Ghost Recon: Wildlands", - "Tom Clancy's Ghost Recon? Wildlands", - "Tom Clancy's Ghost Recon\u00ae Wildlands", - "Tom Clancys Ghost Recon: Wildlands", - "Tom Clancys Ghost Recon\u00ae Wildlands" - ], - "executables": [{"is_launcher": false, "name": "grw.exe", "os": "win32"}], - "hook": true, - "id": "363428336749379604", - "name": "Tom Clancy's Ghost Recon Wildlands", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Warhammer End Times Vermintide"], - "executables": [{"is_launcher": false, "name": "vermintide.exe", "os": "win32"}], - "hook": true, - "id": "363429268577058816", - "name": "Warhammer: End Times - Vermintide", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "battleblocktheater.exe", "os": "win32"}], - "hook": true, - "id": "363429294778744832", - "name": "BattleBlock Theater" - }, - { - "executables": [{"is_launcher": false, "name": "killingfloor.exe", "os": "win32"}], - "hook": true, - "id": "363429388156403712", - "name": "Killing Floor" - }, - { - "aliases": ["Kerbal Space Programme"], - "executables": [ - {"is_launcher": false, "name": "ksp.exe", "os": "win32"}, - {"is_launcher": false, "name": "ksp_x64.exe", "os": "win32"} - ], - "hook": true, - "id": "363429406376722442", - "name": "Kerbal Space Program", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "rottr.exe", "os": "win32"}], - "hook": true, - "id": "363429423728427008", - "name": "Rise of the Tomb Raider" - }, - { - "executables": [{"is_launcher": false, "name": "castlecrashers/castle.exe", "os": "win32"}], - "hook": true, - "id": "363429462076817408", - "name": "Castle Crashers" - }, - { - "executables": [{"is_launcher": false, "name": "thenewz.exe", "os": "win32"}], - "hook": true, - "id": "363429491034554368", - "name": "Infestation: The New Z" - }, - { - "executables": [{"is_launcher": false, "name": "tbl-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "363429532377677824", - "name": "Mirage: Arcane Warfare" - }, - { - "executables": [{"is_launcher": false, "name": "fistful of frags/sdk/hl2.exe", "os": "win32"}], - "hook": true, - "id": "363429654540845056", - "name": "Fistful of Frags" - }, - { - "aliases": ["STAR WARS Battlefront II", "STAR WARS\u2122 Battlefront\u2122 II", "Star Wars Battlefront II"], - "executables": [{"is_launcher": false, "name": "starwarsbattlefrontii.exe", "os": "win32"}], - "hook": true, - "id": "363429717698936852", - "name": "STAR WARS\u2122 Battlefront\u2122 II", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "cuphead.exe", "os": "win32"}], - "hook": true, - "id": "363430002181668864", - "name": "Cuphead" - }, - { - "aliases": ["NARUTO SHIPPUDEN: Ultimate Ninja STORM 4"], - "executables": [ - {"is_launcher": false, "name": "naruto shippuden ultimate ninja storm 4/x360ce.exe", "os": "win32"}, - {"is_launcher": false, "name": "naruto shippuden ultimate ninja storm 4/x360ce_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "nsuns4.exe", "os": "win32"} - ], - "hook": true, - "id": "363430045970071552", - "name": "NARUTO SHIPPUDEN: Ultimate Ninja STORM 4" - }, - { - "executables": [{"is_launcher": false, "name": "tera.exe", "os": "win32"}], - "hook": true, - "id": "363430088521547786", - "name": "TERA" - }, - { - "executables": [{"is_launcher": false, "name": "saintsrowiv.exe", "os": "win32"}], - "hook": true, - "id": "363430103306338304", - "name": "Saints Row IV" - }, - { - "executables": [{"is_launcher": false, "name": "absolver-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "363430239134547978", - "name": "Absolver" - }, - { - "executables": [{"is_launcher": false, "name": "total war warhammer/launcher/launcher.exe", "os": "win32"}], - "hook": true, - "id": "363430260810973194", - "name": "Total War: WARHAMMER" - }, - { - "executables": [{"is_launcher": false, "name": "scrapmechanic.exe", "os": "win32"}], - "hook": true, - "id": "363430304746176512", - "name": "Scrap Mechanic" - }, - { - "executables": [{"is_launcher": false, "name": "oxygennotincluded.exe", "os": "win32"}], - "hook": true, - "id": "363430471322828800", - "name": "Oxygen Not Included" - }, - { - "executables": [{"is_launcher": false, "name": "hl.exe", "os": "win32"}], - "hook": true, - "id": "363430548028522496", - "name": "Half-Life" - }, - { - "executables": [{"is_launcher": false, "name": "nuclearthrone.exe", "os": "win32"}], - "hook": true, - "id": "363430560942653440", - "name": "Nuclear Throne" - }, - { - "executables": [{"is_launcher": false, "name": "no more room in hell/sdk/hl2.exe", "os": "win32"}], - "hook": true, - "id": "363430673694064640", - "name": "No More Room in Hell" - }, - { - "aliases": ["The Sims(TM) 3"], - "executables": [ - {"is_launcher": false, "name": "ts3.exe", "os": "win32"}, - {"is_launcher": false, "name": "ts3w.exe", "os": "win32"} - ], - "hook": true, - "id": "363430739456425994", - "name": "The Sims 3" - }, - { - "aliases": ["Divinity - Original Sin"], - "executables": [{"is_launcher": false, "name": "divinity original sin/bin/eocapp.exe", "os": "win32"}], - "hook": true, - "id": "363430797257998356", - "name": "Divinity: Original Sin Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "ravenfield.exe", "os": "win32"}], - "hook": true, - "id": "363430881811234816", - "name": "Ravenfield" - }, - { - "aliases": ["Life Is Strange", "Life is Strange\u2122"], - "executables": [{"is_launcher": false, "name": "lifeisstrange.exe", "os": "win32"}], - "hook": true, - "id": "363430904867192832", - "name": "Life is Strange" - }, - { - "executables": [{"is_launcher": false, "name": "hollow_knight.exe", "os": "win32"}], - "hook": true, - "id": "363431029484027904", - "name": "Hollow Knight" - }, - { - "aliases": ["Saints Row the Third"], - "executables": [ - {"is_launcher": false, "name": "saintsrowthethird.exe", "os": "win32"}, - {"is_launcher": false, "name": "saintsrowthethird_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "363431107527704576", - "name": "Saints Row: The Third" - }, - { - "executables": [{"is_launcher": false, "name": "planetcoaster.exe", "os": "win32"}], - "hook": true, - "id": "363431197960962049", - "name": "Planet Coaster" - }, - { - "executables": [{"is_launcher": false, "name": "dishonored2.exe", "os": "win32"}], - "hook": true, - "id": "363431216000532480", - "name": "Dishonored 2" - }, - { - "executables": [{"is_launcher": false, "name": "clustertruck.exe", "os": "win32"}], - "hook": true, - "id": "363431307629559808", - "name": "Clustertruck" - }, - { - "executables": [{"is_launcher": false, "name": "crushcrush.exe", "os": "win32"}], - "hook": true, - "id": "363431341599096842", - "name": "Crush Crush" - }, - { - "aliases": ["Battlefield 3: Venice Unleashed", "Battlefield 3\u2122"], - "executables": [{"is_launcher": false, "name": "bf3.exe", "os": "win32"}], - "hook": true, - "id": "363431403469144064", - "name": "Battlefield 3", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "wwiionline/ww2.exe", "os": "win32"}], - "hook": true, - "id": "363431447119527956", - "name": "World War II Online" - }, - { - "executables": [{"is_launcher": false, "name": "reliccoh2.exe", "os": "win32"}], - "hook": true, - "id": "363431541336047616", - "name": "Company of Heroes 2", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "realmgrinderdesktop.exe", "os": "win32"}], - "hook": true, - "id": "363431556301193216", - "name": "Realm Grinder" - }, - { - "aliases": ["Project Cars"], - "executables": [ - {"is_launcher": false, "name": "pcars.exe", "os": "win32"}, - {"is_launcher": false, "name": "pcars64.exe", "os": "win32"} - ], - "hook": true, - "id": "363431703504748544", - "name": "Project CARS" - }, - { - "executables": [{"is_launcher": false, "name": "half_life_caged/hl.exe", "os": "win32"}], - "hook": true, - "id": "363431787214536704", - "name": "Half-Life: C.A.G.E.D." - }, - { - "executables": [{"is_launcher": false, "name": "gh3.exe", "os": "win32"}], - "hook": true, - "id": "363431817312731136", - "name": "Guitar Hero III: Legends of Rock" - }, - { - "aliases": ["Roblox"], - "executables": [ - {"is_launcher": false, "name": "roblox.exe", "os": "win32"}, - {"is_launcher": false, "name": "roblox.app", "os": "darwin"}, - {"is_launcher": false, "name": "robloxplayerbeta.exe", "os": "win32"} - ], - "hook": true, - "id": "363445589247131668", - "name": "Roblox", - "overlay_methods": 1 - }, - { - "executables": [ - {"is_launcher": false, "name": "gta-sa.exe", "os": "win32"}, - {"is_launcher": false, "name": "gta_sa.exe", "os": "win32"} - ], - "hook": true, - "id": "363447565905166336", - "name": "Grand Theft Auto San Andreas" - }, - { - "aliases": ["PAYDAY 2"], - "executables": [ - {"is_launcher": false, "name": "payday2_win32_release.exe", "os": "win32"}, - {"is_launcher": false, "name": "payday 2/payday2_win32_release_vr.exe", "os": "win32"} - ], - "hook": true, - "id": "364785249202208768", - "name": "PAYDAY 2", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "ballisticoverkill.exe", "os": "win32"}], - "hook": true, - "id": "365200071941292033", - "name": "Ballistic Overkill" - }, - { - "aliases": ["Call of Duty: WWII", "Call of Duty: WWII - Multiplayer"], - "executables": [ - {"is_launcher": false, "name": "call of duty wwii/s2_mp64_ship.exe", "os": "win32"}, - {"is_launcher": false, "name": "call of duty wwii/s2_sp64_ship.exe", "os": "win32"} - ], - "hook": true, - "id": "365569601993572352", - "name": "Call of Duty\u00ae: WWII" - }, - { - "executables": [ - {"is_launcher": false, "name": "osu!.app", "os": "darwin"}, - {"is_launcher": false, "name": "osu!.exe", "os": "win32"} - ], - "hook": true, - "id": "367827983903490050", - "name": "osu!", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "destiny2.exe", "os": "win32"}], - "hook": true, - "id": "372438022647578634", - "name": "Destiny 2" - }, - { - "executables": [{"is_launcher": false, "name": "hob.exe", "os": "win32"}], - "hook": true, - "id": "372440317493903380", - "name": "Hob" - }, - { - "executables": [{"is_launcher": false, "name": "falloutw.exe", "os": "win32"}], - "hook": true, - "id": "372825995084038144", - "name": "Fallout" - }, - { - "aliases": ["Middle-earth\u2122: Shadow of War\u2122"], - "executables": [{"is_launcher": false, "name": "shadowofwar.exe", "os": "win32"}], - "hook": true, - "id": "372826898465685519", - "name": "Middle-earth: Shadow of War" - }, - { - "executables": [{"is_launcher": false, "name": "descenders.exe", "os": "win32"}], - "hook": true, - "id": "375540160571637760", - "name": "Descenders" - }, - { - "executables": [{"is_launcher": false, "name": "wolfneworder_x64.exe", "os": "win32"}], - "hook": true, - "id": "376171871873400832", - "name": "Wolfenstein: The New Order" - }, - { - "executables": [ - {"is_launcher": false, "name": "dayofinfamy_be.exe", "os": "win32"}, - {"is_launcher": false, "name": "dayofinfamy.exe", "os": "win32"} - ], - "hook": true, - "id": "376180187806695462", - "name": "Day of Infamy" - }, - { - "executables": [{"is_launcher": false, "name": "deceit.exe", "os": "win32"}], - "hook": true, - "id": "376180386801123358", - "name": "Deceit" - }, - { - "aliases": ["Darkest Dungeon\u00ae", "DarkestDungeon"], - "executables": [ - {"is_launcher": false, "name": "_windows/darkest.exe", "os": "win32"}, - {"is_launcher": false, "name": "darkest.exe", "os": "win32"} - ], - "hook": true, - "id": "376180518749995028", - "name": "Darkest Dungeon", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "batim.exe", "os": "win32"}], - "hook": true, - "id": "376180724291731472", - "name": "Bendy and the Ink Machine" - }, - { - "aliases": ["A Hat in Time"], - "executables": [ - {"is_launcher": false, "name": "binaries/modmanager.exe", "os": "win32"}, - {"is_launcher": false, "name": "hatintimegame.exe", "os": "win32"} - ], - "hook": true, - "id": "376180889010307072", - "name": "A Hat in Time" - }, - { - "executables": [{"is_launcher": false, "name": "besiege.exe", "os": "win32"}], - "hook": true, - "id": "376181155868966912", - "name": "Besiege" - }, - { - "executables": [{"is_launcher": false, "name": "life is strange - before the storm.exe", "os": "win32"}], - "hook": true, - "id": "376181248596508672", - "name": "Life is Strange: Before the Storm" - }, - { - "executables": [{"is_launcher": false, "name": "guns up.exe", "os": "win32"}], - "hook": true, - "id": "376181312890863616", - "name": "GUNS UP!" - }, - {"hook": true, "id": "379732021385232385", "name": "AT SUNDOWN: SitD"}, - {"hook": true, "id": "383379166323539969", "name": "Warframe Dev"}, - { - "aliases": ["H1Z1 LaunchPad", "H1Z1 Launcher"], - "executables": [ - {"is_launcher": false, "name": "h1z1/h1z1.exe", "os": "win32"}, - {"is_launcher": false, "name": "h1z1/h1z1_be.exe", "os": "win32"} - ], - "hook": true, - "id": "385537545276096522", - "name": "H1Z1", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "yu-gi-oh! duel links/dlpc.exe", "os": "win32"}], - "hook": true, - "id": "385537699366305792", - "name": "Yu-Gi-Oh! Duel Links" - }, - { - "executables": [{"is_launcher": false, "name": "fifa18.exe", "os": "win32"}], - "hook": true, - "id": "385537854320934922", - "name": "FIFA 18" - }, - { - "executables": [{"is_launcher": false, "name": "sanctumgame-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "385537957806866432", - "name": "Sanctum 2" - }, - { - "executables": [{"is_launcher": false, "name": "human.exe", "os": "win32"}], - "hook": true, - "id": "385538103831429120", - "name": "Human: Fall Flat" - }, - { - "aliases": ["Watch_Dogs"], - "executables": [{"is_launcher": false, "name": "watch_dogs.exe", "os": "win32"}], - "hook": true, - "id": "385538279090683924", - "name": "Watch Dogs" - }, - { - "aliases": ["Assassin's Creed: Origins", "Assassins Creed Origins"], - "executables": [{"is_launcher": false, "name": "acorigins.exe", "os": "win32"}], - "hook": true, - "id": "385538388419280896", - "name": "Assassin's Creed Origins" - }, - { - "executables": [{"is_launcher": false, "name": "cs2d.exe", "os": "win32"}], - "hook": true, - "id": "385538625221165056", - "name": "CS2D" - }, - { - "executables": [{"is_launcher": false, "name": "newcolossus_x64vk.exe", "os": "win32"}], - "hook": true, - "id": "385538682184269834", - "name": "Wolfenstein II: The New Colossus" - }, - { - "aliases": ["DayZ"], - "executables": [ - {"is_launcher": false, "name": "dayz.exe", "os": "win32"}, - {"is_launcher": false, "name": "dayz_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "dayz/dayzuninstaller.exe", "os": "win32"} - ], - "hook": true, - "id": "385538724592746496", - "name": "DayZ", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Br\u00fctal Legend"], - "executables": [{"is_launcher": false, "name": "brutallegend.exe", "os": "win32"}], - "hook": true, - "id": "385538840162467860", - "name": "Brutal Legend" - }, - { - "executables": [{"is_launcher": false, "name": "zombidle.exe", "os": "win32"}], - "hook": true, - "id": "387375748262002710", - "name": "Zombidle" - }, - { - "executables": [{"is_launcher": false, "name": "srhk.exe", "os": "win32"}], - "hook": true, - "id": "387376045269057564", - "name": "Shadowrun: Hong Kong" - }, - { - "executables": [{"is_launcher": false, "name": "vngame.exe", "os": "win32"}], - "hook": true, - "id": "387402304158040074", - "name": "Rising Storm 2: Vietnam" - }, - { - "executables": [{"is_launcher": false, "name": "thebureau.exe", "os": "win32"}], - "hook": true, - "id": "387402716965634066", - "name": "The Bureau: XCOM Declassified" - }, - { - "aliases": ["Elsword"], - "executables": [ - {"is_launcher": false, "name": "data/x2.exe", "os": "win32"}, - {"is_launcher": false, "name": "elsword.exe", "os": "win32"} - ], - "hook": true, - "id": "387402920238383122", - "name": "Elsword", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Total War: ROME 2"], - "executables": [{"is_launcher": false, "name": "rome2.exe", "os": "win32"}], - "hook": true, - "id": "387403734080159763", - "name": "Total War: Rome 2", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "freddy fazbear's pizzeria simulator/pizzeria simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "389964632527339534", - "name": "Freddy Fazbear's Pizzeria Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "gettingoverit.exe", "os": "win32"}], - "hook": true, - "id": "389968138688659466", - "name": "Getting Over It with Bennett Foddy" - }, - { - "aliases": ["Guns of Icarus - Online"], - "executables": [ - {"is_launcher": false, "name": "gunsoficarusonline.app", "os": "darwin"}, - {"is_launcher": false, "name": "gunsoficarusonline.exe", "os": "win32"} - ], - "hook": true, - "id": "390293569832878098", - "name": "Guns of Icarus Online" - }, - { - "executables": [{"is_launcher": false, "name": "gunsoficarusonline.exe", "os": "win32"}], - "hook": true, - "id": "390293932199772160", - "name": "Guns of Icarus Alliance" - }, - { - "executables": [{"is_launcher": false, "name": "zombidle.exe", "os": "win32"}], - "hook": true, - "id": "393178973129015328", - "name": "Zombidle: REMONSTERED" - }, - { - "executables": [{"is_launcher": false, "name": "gunsnboxes.exe", "os": "win32"}], - "hook": true, - "id": "393511930838515742", - "name": "Guns N' Boxes" - }, - { - "executables": [ - {"is_launcher": false, "name": "vrchat/start_protected_game.exe", "os": "win32"}, - {"is_launcher": false, "name": "vrchat/vrchat.exe", "os": "win32"}, - {"is_launcher": true, "name": "vrchat/launch.exe", "os": "win32"} - ], - "hook": true, - "id": "398632010442211348", - "name": "VRChat" - }, - { - "executables": [{"is_launcher": false, "name": "red crucible firestorm/red crucible.exe", "os": "win32"}], - "hook": true, - "id": "403373728290963478", - "name": "Red Crucible: Firestorm" - }, - { - "aliases": ["Assassin's Creed IV: Black Flag"], - "executables": [ - {"is_launcher": false, "name": "ac4bfmp.exe", "os": "win32"}, - {"is_launcher": false, "name": "ac4bfsp.exe", "os": "win32"} - ], - "hook": true, - "id": "406637677199360030", - "name": "Assassin's Creed IV Black Flag" - }, - { - "aliases": ["Escape From Tarkov"], - "executables": [{"is_launcher": false, "name": "escapefromtarkov.exe", "os": "win32"}], - "hook": true, - "id": "406637848297472017", - "name": "Escape from Tarkov", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "scpsl.exe", "os": "win32"}], - "hook": true, - "id": "406637935417622558", - "name": "SCP: Secret Laboratory" - }, - { - "executables": [{"is_launcher": false, "name": "theyarebillions.exe", "os": "win32"}], - "hook": true, - "id": "406638043894775819", - "name": "They Are Billions" - }, - { - "aliases": ["TheLongDark"], - "executables": [{"is_launcher": false, "name": "tld.exe", "os": "win32"}], - "hook": true, - "id": "406638150857785344", - "name": "The Long Dark" - }, - { - "aliases": ["Pokemon Trading Card Game Online"], - "executables": [{"is_launcher": false, "name": "pokemon trading card game online.exe", "os": "win32"}], - "hook": true, - "id": "406638244835622912", - "name": "Pok\u00e9mon Trading Card Game Online", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "kingdom.exe", "os": "win32"}], - "hook": true, - "id": "406638362196312074", - "name": "Kingdom: Classic" - }, - { - "executables": [ - {"is_launcher": false, "name": "dontstarve.exe", "os": "win32"}, - {"is_launcher": false, "name": "dontstarve_steam.exe", "os": "win32"} - ], - "hook": true, - "id": "406643893007024149", - "name": "Don't Starve" - }, - { - "aliases": ["GWENT: The Witcher Card Game "], - "executables": [{"is_launcher": false, "name": "gwent.exe", "os": "win32"}], - "hook": true, - "id": "406643974183452681", - "name": "GWENT: The Witcher Card Game ", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "long live santa.exe", "os": "win32"}], - "hook": true, - "id": "406644036963663890", - "name": "Long Live Santa!" - }, - { - "executables": [{"is_launcher": false, "name": "slaythespire.exe", "os": "win32"}], - "hook": true, - "id": "406644123832156160", - "name": "Slay the Spire" - }, - { - "executables": [{"is_launcher": false, "name": "kingdomsandcastles.exe", "os": "win32"}], - "hook": true, - "id": "406645058599780368", - "name": "Kingdoms and Castles" - }, - { - "executables": [{"is_launcher": false, "name": "northgard.exe", "os": "win32"}], - "hook": true, - "id": "406645134445248530", - "name": "Northgard" - }, - { - "executables": [{"is_launcher": false, "name": "broforce_beta.exe", "os": "win32"}], - "hook": true, - "id": "406645260987662366", - "name": "Broforce" - }, - { - "executables": [{"is_launcher": false, "name": "crossfire br/crossfire.exe", "os": "win32"}], - "hook": true, - "id": "406645350506561547", - "name": "CrossFire BR" - }, - { - "aliases": ["Neverwinter", "Neverwinter Online"], - "executables": [ - {"is_launcher": false, "name": "neverwinter.exe", "os": "win32"}, - {"is_launcher": false, "name": "neverwinter/live/gameclient.exe", "os": "win32"} - ], - "hook": true, - "id": "406645401437863936", - "name": "Neverwinter" - }, - { - "executables": [ - {"is_launcher": false, "name": "tibia/bin/client.exe", "os": "win32"}, - {"is_launcher": false, "name": "tibia.exe", "os": "win32"} - ], - "hook": true, - "id": "406645450863804416", - "name": "Tibia" - }, - { - "executables": [{"is_launcher": false, "name": "papersplease.exe", "os": "win32"}], - "hook": true, - "id": "406645580375392256", - "name": "Papers, Please" - }, - { - "aliases": ["CLOSERS", "Closers Dimension Conflict"], - "executables": [{"is_launcher": false, "name": "closers/cw.exe", "os": "win32"}], - "hook": true, - "id": "406645631864537088", - "name": "Closers", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "sporeapp.exe", "os": "win32"}], - "hook": true, - "id": "406645798680657920", - "name": "Spore" - }, - { - "aliases": ["Plague Inc."], - "executables": [{"is_launcher": false, "name": "plagueincevolved.exe", "os": "win32"}], - "hook": true, - "id": "406645878980476928", - "name": "Plague Inc: Evolved" - }, - { - "aliases": ["Borderlands: the Pre-Sequel"], - "executables": [{"is_launcher": false, "name": "borderlandspresequel.exe", "os": "win32"}], - "hook": true, - "id": "406645950782636041", - "name": "Borderlands: The Pre-Sequel" - }, - { - "executables": [{"is_launcher": false, "name": "hotlinemiami.exe", "os": "win32"}], - "hook": true, - "id": "406646037571436544", - "name": "Hotline Miami" - }, - { - "executables": [{"is_launcher": false, "name": "homefront.exe", "os": "win32"}], - "hook": true, - "id": "406646102297804826", - "name": "Homefront" - }, - { - "executables": [{"is_launcher": false, "name": "thehuntercotw_f.exe", "os": "win32"}], - "hook": true, - "id": "406646161563189258", - "name": "theHunter\u2122: Call of the Wild" - }, - { - "aliases": ["Tomb Raider (2013)"], - "executables": [{"is_launcher": false, "name": "tombraider.exe", "os": "win32"}], - "hook": true, - "id": "406646264093212682", - "name": "Tomb Raider" - }, - { - "executables": [ - {"is_launcher": false, "name": "isaac.app", "os": "darwin"}, - {"is_launcher": false, "name": "isaac.exe", "os": "win32"}, - {"is_launcher": false, "name": "binding_of_isaac.exe", "os": "win32"} - ], - "hook": true, - "id": "406646308309434378", - "name": "The Binding of Isaac" - }, - { - "executables": [{"is_launcher": false, "name": "we were here.exe", "os": "win32"}], - "hook": true, - "id": "406646387875250186", - "name": "We Were Here" - }, - { - "executables": [{"is_launcher": false, "name": "this war of mine.exe", "os": "win32"}], - "hook": true, - "id": "406646471098892298", - "name": "This War of Mine" - }, - { - "executables": [{"is_launcher": false, "name": "hotlinemiami2.exe", "os": "win32"}], - "hook": true, - "id": "406646550731816960", - "name": "Hotline Miami 2: Wrong Number" - }, - { - "executables": [{"is_launcher": false, "name": "wulverblade.exe", "os": "win32"}], - "hook": true, - "id": "410909667334684672", - "name": "Wulverblade" - }, - { - "executables": [{"is_launcher": false, "name": "hand simulator.exe", "os": "win32"}], - "hook": true, - "id": "418232964783144980", - "name": "Hand Simulator" - }, - { - "aliases": ["Kingdom Come Deliverance", "KingdomComeDeliverance"], - "executables": [{"is_launcher": false, "name": "kingdomcome.exe", "os": "win32"}], - "hook": true, - "id": "419267878014025728", - "name": "Kingdom Come: Deliverance" - }, - { - "aliases": ["DRAGON BALL FighterZ"], - "executables": [ - {"is_launcher": false, "name": "win64/red-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "dbfighterz.exe", "os": "win32"} - ], - "hook": true, - "id": "419268865667629056", - "name": "DRAGON BALL FighterZ" - }, - { - "aliases": ["BATTALION: Legacy"], - "executables": [ - {"is_launcher": false, "name": "battalion.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/battalionclient-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "419271532087607296", - "name": "BATTALION 1944" - }, - { - "executables": [{"is_launcher": false, "name": "wotblitz.exe", "os": "win32"}], - "hook": true, - "id": "419272031960432651", - "name": "World of Tanks Blitz" - }, - { - "aliases": ["Dungeon & Fighter"], - "executables": [{"is_launcher": false, "name": "dnf.exe", "os": "win32"}], - "hook": true, - "id": "421150671836938240", - "name": "\ub358\uc804\uc564\ud30c\uc774\ud130" - }, - { - "aliases": ["Dark Souls: Prepare to Die Edition"], - "executables": [ - {"is_launcher": false, "name": "dark souls prepare to die edition/data/darksouls.exe ", "os": "win32"} - ], - "hook": true, - "id": "421150676710588416", - "name": "DARK SOULS\u2122: Prepare To Die Edition" - }, - { - "aliases": ["Total War: Arena"], - "executables": [{"is_launcher": false, "name": "total_war_arena/arena.exe", "os": "win32"}], - "hook": true, - "id": "421150683329462272", - "name": "Total War Arena", - "overlay": true - }, - { - "executables": [ - {"is_launcher": false, "name": "ddlc.exe", "os": "win32"}, - {"is_launcher": false, "name": "doki doki literature club.app", "os": "darwin"} - ], - "hook": true, - "id": "421150694683312138", - "name": "Doki Doki Literature Club" - }, - { - "executables": [{"is_launcher": false, "name": "borderlands2.exe", "os": "win32"}], - "hook": true, - "id": "421150698168909834", - "name": "Borderlands 2", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "selkis_x64.exe", "os": "win32"}], - "hook": true, - "id": "421798336694059018", - "name": "Forsaken Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "soulworker.exe", "os": "win32"}], - "hook": true, - "id": "421858437039783936", - "name": "SoulWorker" - }, - { - "aliases": ["Hunt: Showdown"], - "executables": [ - {"is_launcher": false, "name": "win_x64/huntgame.exe", "os": "win32"}, - {"is_launcher": false, "name": "hunt showdown/hunt.exe", "os": "win32"} - ], - "hook": true, - "id": "422169383972896768", - "name": "Hunt: Showdown" - }, - { - "aliases": ["Warframe Launcher"], - "executables": [ - {"is_launcher": false, "name": "warframe.exe", "os": "win32"}, - {"is_launcher": false, "name": "warframe.x64.exe", "os": "win32"} - ], - "hook": true, - "id": "422772752647323649", - "name": "Warframe", - "overlay": true - }, - { - "aliases": ["Warcraft 3"], - "executables": [ - {"is_launcher": false, "name": "warcraft iii.exe", "os": "win32"}, - {"is_launcher": false, "name": "warcraft iii/frozen throne.exe", "os": "win32"}, - {"is_launcher": false, "name": "warcraft iii.app", "os": "darwin"}, - {"is_launcher": false, "name": "war3.exe", "os": "win32"}, - {"is_launcher": false, "name": "wc3.exe", "os": "win32"} - ], - "hook": true, - "id": "424719708785344525", - "name": "Warcraft III" - }, - { - "executables": [{"is_launcher": false, "name": "bastion.exe", "os": "win32"}], - "hook": true, - "id": "425404251292958736", - "name": "Bastion" - }, - { - "aliases": ["Assassin?s Creed? Chronicles: China"], - "executables": [{"is_launcher": false, "name": "accgame-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425433703041335346", - "name": "Assassin's Creed Chronicles China" - }, - { - "aliases": ["Assassins Creed"], - "executables": [{"is_launcher": false, "name": "assassinscreed_dx10.exe", "os": "win32"}], - "hook": true, - "id": "425434240784662551", - "name": "Assassin's Creed" - }, - { - "aliases": ["Assassin's Creed 2"], - "executables": [{"is_launcher": false, "name": "assassinscreediigame.exe", "os": "win32"}], - "hook": true, - "id": "425434695908458519", - "name": "Assassin's Creed II" - }, - { - "executables": [ - {"is_launcher": false, "name": "ac3mp.exe", "os": "win32"}, - {"is_launcher": false, "name": "ac3sp.exe", "os": "win32"} - ], - "hook": true, - "id": "425434783695503360", - "name": "Assassin's Creed III" - }, - { - "executables": [{"is_launcher": false, "name": "acc.exe", "os": "win32"}], - "hook": true, - "id": "425434983080001556", - "name": "Assassin's Creed Rogue" - }, - { - "executables": [{"is_launcher": false, "name": "assassin's creed unity/acu.exe", "os": "win32"}], - "hook": true, - "id": "425435152634609664", - "name": "Assassin's Creed Unity" - }, - { - "aliases": ["Assassin's Creed: Brotherhood"], - "executables": [ - {"is_launcher": false, "name": "acbsp.exe", "os": "win32"}, - {"is_launcher": false, "name": "acbmp.exe", "os": "win32"} - ], - "hook": true, - "id": "425435232788021258", - "name": "Assassin's Creed Brotherhood" - }, - { - "aliases": ["Assassin's Creed: Revelations"], - "executables": [{"is_launcher": false, "name": "acrsp.exe", "os": "win32"}], - "hook": true, - "id": "425436928041680931", - "name": "Assassin's Creed Revelations" - }, - { - "aliases": ["Batman Arkham Knight", "Batman\u2122: Arkham Knight"], - "executables": [{"is_launcher": false, "name": "batmanak.exe", "os": "win32"}], - "hook": true, - "id": "425437076188561408", - "name": "Batman: Arkham Knight" - }, - { - "aliases": ["Batman\u2122: Arkham Origins"], - "executables": [{"is_launcher": false, "name": "batmanorigins.exe", "os": "win32"}], - "hook": true, - "id": "425437243822571550", - "name": "Batman: Arkham Origins" - }, - { - "aliases": ["Batman\u2122: Arkham VR"], - "executables": [{"is_launcher": false, "name": "arkhamvr.exe", "os": "win32"}], - "hook": true, - "id": "425437344758366216", - "name": "Batman: Arkham VR" - }, - { - "aliases": ["Beyond Good & Evil"], - "executables": [{"is_launcher": false, "name": "bge.exe", "os": "win32"}], - "hook": true, - "id": "425437404854222858", - "name": "Beyond Good and Evil" - }, - { - "aliases": ["F.E.A.R."], - "executables": [ - {"is_launcher": false, "name": "fearxp2/fearxp2.exe", "os": "win32"}, - {"is_launcher": false, "name": "fearxp.exe", "os": "win32"}, - {"is_launcher": false, "name": "fear.exe", "os": "win32"} - ], - "hook": true, - "id": "425437484735004682", - "name": "F.E.A.R." - }, - { - "executables": [{"is_launcher": false, "name": "fear2.exe", "os": "win32"}], - "hook": true, - "id": "425437598836719616", - "name": "F.E.A.R. 2: Project Origin" - }, - { - "executables": [{"is_launcher": false, "name": "f.e.a.r. 3.exe", "os": "win32"}], - "hook": true, - "id": "425437856169721856", - "name": "F.E.A.R. 3" - }, - { - "executables": [{"is_launcher": false, "name": "farcry.exe", "os": "win32"}], - "hook": true, - "id": "425437906363219968", - "name": "Far Cry" - }, - { - "executables": [{"is_launcher": false, "name": "farcry2.exe", "os": "win32"}], - "hook": true, - "id": "425437961669181477", - "name": "Far Cry 2" - }, - { - "executables": [{"is_launcher": false, "name": "farcry4.exe", "os": "win32"}], - "hook": true, - "id": "425438134709518336", - "name": "Far Cry 4" - }, - { - "executables": [{"is_launcher": false, "name": "fcprimal.exe", "os": "win32"}], - "hook": true, - "id": "425438207631556608", - "name": "Far Cry Primal" - }, - { - "aliases": ["For Honor", "ForHonor"], - "executables": [ - {"is_launcher": false, "name": "forhonor.exe", "os": "win32"}, - {"is_launcher": false, "name": "for honor/forhonor.exe", "os": "win32"} - ], - "hook": true, - "id": "425438403819995145", - "name": "For Honor", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "injustice.exe", "os": "win32"}], - "hook": true, - "id": "425438526491066388", - "name": "Injustice: Gods Among Us Ultimate Edition" - }, - { - "executables": [{"is_launcher": false, "name": "jd2017.exe", "os": "win32"}], - "hook": true, - "id": "425438596883939328", - "name": "Just Dance 2017" - }, - { - "aliases": ["LEGO - The Hobbit", "LEGO? The Hobbit?"], - "executables": [{"is_launcher": false, "name": "legohobbit.exe", "os": "win32"}], - "hook": true, - "id": "425439134551900190", - "name": "LEGO\u00ae The Hobbit\u2122" - }, - { - "aliases": ["LEGO Worlds", "LEGO? Worlds"], - "executables": [{"is_launcher": false, "name": "lego_worlds_dx11.exe", "os": "win32"}], - "hook": true, - "id": "425439198733008896", - "name": "LEGO\u00ae Worlds" - }, - { - "executables": [{"is_launcher": false, "name": "madmax.exe", "os": "win32"}], - "hook": true, - "id": "425439256001904650", - "name": "Mad Max" - }, - { - "executables": [{"is_launcher": false, "name": "mkke.exe", "os": "win32"}], - "hook": true, - "id": "425439413972238366", - "name": "Mortal Kombat Komplete Edition" - }, - { - "executables": [{"is_launcher": false, "name": "mk10.exe", "os": "win32"}], - "hook": true, - "id": "425439470075117573", - "name": "Mortal Kombat X" - }, - { - "executables": [{"is_launcher": false, "name": "rayman legends.exe", "os": "win32"}], - "hook": true, - "id": "425439545983500288", - "name": "Rayman Legends" - }, - { - "executables": [{"is_launcher": false, "name": "rayman origins.exe", "os": "win32"}], - "hook": true, - "id": "425439593882714133", - "name": "Rayman Origins" - }, - { - "aliases": ["Rocksmith2014"], - "executables": [{"is_launcher": false, "name": "rocksmith2014.exe", "os": "win32"}], - "hook": true, - "id": "425439633917214720", - "name": "Rocksmith 2014" - }, - { - "executables": [{"is_launcher": false, "name": "scribblenauts/scribble.exe", "os": "win32"}], - "hook": true, - "id": "425439683938353162", - "name": "Scribblenauts Unlimited" - }, - { - "executables": [{"is_launcher": false, "name": "steep.exe", "os": "win32"}], - "hook": true, - "id": "425439790746566666", - "name": "Steep" - }, - { - "executables": [{"is_launcher": false, "name": "thecrew.exe", "os": "win32"}], - "hook": true, - "id": "425439876939382804", - "name": "The Crew" - }, - { - "aliases": ["The LEGO? Movie - Videogame\t"], - "executables": [{"is_launcher": false, "name": "legoemmet.exe", "os": "win32"}], - "hook": true, - "id": "425439950553481216", - "name": "The LEGO\u00ae Movie - Videogame" - }, - { - "aliases": ["Tom Clancy's Ghost Recon: Future Solider"], - "executables": [ - {"is_launcher": false, "name": "future soldier.exe", "os": "win32"}, - {"is_launcher": false, "name": "future soldier dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "425440004983226378", - "name": "Tom Clancy's Ghost Recon Future Soldier" - }, - { - "executables": [{"is_launcher": false, "name": "splintercell.exe", "os": "win32"}], - "hook": true, - "id": "425440094263050250", - "name": "Tom Clancy's Splinter Cell" - }, - { - "aliases": ["Tom Clancy's Splinter Cell: Blacklist"], - "executables": [{"is_launcher": false, "name": "blacklist_dx11_game.exe", "os": "win32"}], - "hook": true, - "id": "425440144829448192", - "name": "Tom Clancy's Splinter Cell Blacklist" - }, - { - "executables": [{"is_launcher": false, "name": "trackmaniaturbo.exe", "os": "win32"}], - "hook": true, - "id": "425440195966664704", - "name": "Trackmania Turbo" - }, - { - "executables": [{"is_launcher": false, "name": "trials_fusion.exe", "os": "win32"}], - "hook": true, - "id": "425440259539599390", - "name": "Trials Fusion" - }, - { - "aliases": ["Watch Dogs"], - "executables": [{"is_launcher": false, "name": "watch_dogs.exe", "os": "win32"}], - "hook": true, - "id": "425440319509626881", - "name": "Watch_Dogs", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["Watch Dogs 2"], - "executables": [{"is_launcher": false, "name": "watchdogs2.exe", "os": "win32"}], - "hook": true, - "id": "425440363688493066", - "name": "Watch_Dogs 2" - }, - { - "aliases": ["Darksiders"], - "executables": [ - {"is_launcher": false, "name": "darksiderspc.exe", "os": "win32"}, - {"is_launcher": false, "name": "darksiders1.exe", "os": "win32"} - ], - "hook": true, - "id": "425440430772060160", - "name": "Darksiders Warmastered Edition" - }, - { - "aliases": ["Elex"], - "executables": [{"is_launcher": false, "name": "elex.exe", "os": "win32"}], - "hook": true, - "id": "425440477882351626", - "name": "ELEX" - }, - { - "aliases": ["Fade to silence"], - "executables": [{"is_launcher": false, "name": "whitesilence-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425440525286637577", - "name": "Fade to Silence" - }, - { - "executables": [{"is_launcher": false, "name": "impossible creatures/ic.exe", "os": "win32"}], - "hook": true, - "id": "425440563337232394", - "name": "Impossible Creatures" - }, - { - "aliases": ["Ori And The Blind Forest: Definitive Edition", "Ori and the Blind Forest"], - "executables": [ - {"is_launcher": false, "name": "ori.exe", "os": "win32"}, - {"is_launcher": false, "name": "oride.exe", "os": "win32"} - ], - "hook": true, - "id": "425440642173239296", - "name": "Ori and the Blind Forest: Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "redfaction.exe", "os": "win32"}], - "hook": true, - "id": "425440700335915028", - "name": "Red Faction" - }, - { - "executables": [{"is_launcher": false, "name": "spellforce2.exe", "os": "win32"}], - "hook": true, - "id": "425440739166650368", - "name": "SpellForce 2 - Anniversary Edition" - }, - { - "executables": [{"is_launcher": false, "name": "guild3.exe", "os": "win32"}], - "hook": true, - "id": "425440832238387200", - "name": "The Guild 3" - }, - { - "executables": [{"is_launcher": false, "name": "firewatch.exe", "os": "win32"}], - "hook": true, - "id": "425440941793345536", - "name": "Firewatch" - }, - { - "aliases": ["Witness"], - "executables": [{"is_launcher": false, "name": "witness64_d3d11.exe", "os": "win32"}], - "hook": true, - "id": "425441014292152320", - "name": "The Witness" - }, - { - "aliases": ["Principle"], - "executables": [{"is_launcher": false, "name": "talos.exe", "os": "win32"}], - "hook": true, - "id": "425441094482919464", - "name": "The Talos Principle" - }, - { - "executables": [{"is_launcher": false, "name": "thesurge.exe", "os": "win32"}], - "hook": true, - "id": "425441321512075264", - "name": "The Surge" - }, - { - "executables": [ - {"is_launcher": false, "name": "rebelgalaxysteam.exe", "os": "win32"}, - {"is_launcher": false, "name": "rebelgalaxygog.exe", "os": "win32"} - ], - "hook": true, - "id": "425441408242155530", - "name": "Rebel Galaxy" - }, - { - "aliases": ["Fractured Space ?"], - "executables": [ - {"is_launcher": false, "name": "spacegame-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "fractured space.exe", "os": "win32"} - ], - "hook": true, - "id": "425441448410873866", - "name": "Fractured Space" - }, - { - "executables": [{"is_launcher": false, "name": "pa.exe", "os": "win32"}], - "hook": true, - "id": "425441516354273280", - "name": "Planetary Annihilation: TITANS" - }, - { - "aliases": ["HyperLightDrifter"], - "executables": [{"is_launcher": false, "name": "hyperlightdrifter.exe", "os": "win32"}], - "hook": true, - "id": "425441571656433664", - "name": "Hyper Light Drifter" - }, - { - "executables": [{"is_launcher": false, "name": "stonehearth.exe", "os": "win32"}], - "hook": true, - "id": "425441650878316564", - "name": "Stonehearth" - }, - { - "executables": [{"is_launcher": false, "name": "obduction-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425441688152965142", - "name": "Obduction" - }, - { - "aliases": ["Shovel knight"], - "executables": [ - {"is_launcher": false, "name": "shovelknight.app", "os": "darwin"}, - {"is_launcher": false, "name": "shovelknight.exe", "os": "win32"} - ], - "hook": true, - "id": "425441726736629760", - "name": "Shovel Knight" - }, - { - "aliases": ["Battle Chasers Nightwar", "Battle Chasers: Night War"], - "executables": [{"is_launcher": false, "name": "battle chasers nightwar/bc.exe", "os": "win32"}], - "hook": true, - "id": "425441774450901002", - "name": "Battle Chasers: Nightwar" - }, - { - "executables": [{"is_launcher": false, "name": "wolcen.exe", "os": "win32"}], - "hook": true, - "id": "425441823754813455", - "name": "Wolcen: Lords of Mayhem" - }, - { - "executables": [{"is_launcher": false, "name": "planetnomads.exe", "os": "win32"}], - "hook": true, - "id": "425441961877700618", - "name": "Planet Nomads" - }, - { - "aliases": ["Agents Of Mayhem\t"], - "executables": [{"is_launcher": false, "name": "aom_release_final.exe", "os": "win32"}], - "hook": true, - "id": "425442005766766592", - "name": "Agents of Mayhem" - }, - { - "aliases": ["Dead Island"], - "executables": [{"is_launcher": false, "name": "deadislandgame.exe", "os": "win32"}], - "hook": true, - "id": "425442043616034816", - "name": "Dead Island Definitive Edition" - }, - { - "aliases": ["Dead Island Riptide"], - "executables": [ - {"is_launcher": false, "name": "deadislandgame_x86_rwdi.exe", "os": "win32"}, - {"is_launcher": false, "name": "deadislandriptidegame.exe", "os": "win32"} - ], - "hook": true, - "id": "425442091666243594", - "name": "Dead Island Riptide Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "dirt4.exe", "os": "win32"}], - "hook": true, - "id": "425442140731080704", - "name": "DiRT 4" - }, - { - "executables": [{"is_launcher": false, "name": "f1_2016.exe", "os": "win32"}], - "hook": true, - "id": "425442173559767040", - "name": "F1 2016" - }, - { - "executables": [{"is_launcher": false, "name": "f1_2017.exe", "os": "win32"}], - "hook": true, - "id": "425442216639725578", - "name": "F1 2017" - }, - { - "aliases": ["Homefront"], - "executables": [{"is_launcher": false, "name": "homefront.exe", "os": "win32"}], - "hook": true, - "id": "425442258020597760", - "name": "Homefront: The Revolution" - }, - { - "aliases": ["Metro 2033"], - "executables": [ - {"is_launcher": false, "name": "metro 2033 redux/metro.exe", "os": "win32"}, - {"is_launcher": false, "name": "metro2033.exe", "os": "win32"} - ], - "hook": true, - "id": "425442324495990784", - "name": "Metro 2033 Redux" - }, - { - "aliases": ["Metro Last Light", "Metro Last Light Redux"], - "executables": [ - {"is_launcher": false, "name": "metro last light redux/metro.exe", "os": "win32"}, - {"is_launcher": false, "name": "metroll.exe", "os": "win32"} - ], - "hook": true, - "id": "425442388270645248", - "name": "Metro: Last Light Redux" - }, - { - "executables": [{"is_launcher": false, "name": "micromachines.exe", "os": "win32"}], - "hook": true, - "id": "425442430922391552", - "name": "Micro Machines World Series" - }, - { - "aliases": ["Mighty Number 9"], - "executables": [{"is_launcher": false, "name": "mn9game.exe", "os": "win32"}], - "hook": true, - "id": "425442465244250132", - "name": "Mighty No. 9" - }, - { - "executables": [{"is_launcher": false, "name": "risen.exe", "os": "win32"}], - "hook": true, - "id": "425442503198769152", - "name": "Risen" - }, - { - "executables": [{"is_launcher": false, "name": "ryse.exe", "os": "win32"}], - "hook": true, - "id": "425442538288185344", - "name": "Ryse: Son of Rome" - }, - { - "aliases": ["Saints Row II"], - "executables": [{"is_launcher": false, "name": "sr2_pc.exe", "os": "win32"}], - "hook": true, - "id": "425442587508211712", - "name": "Saints Row 2" - }, - { - "executables": [{"is_launcher": false, "name": "bridgeconstructor.exe", "os": "win32"}], - "hook": true, - "id": "425442642680348692", - "name": "Bridge Constructor" - }, - { - "executables": [{"is_launcher": false, "name": "bridge_constructor_portal.exe", "os": "win32"}], - "hook": true, - "id": "425442712095948800", - "name": "Bridge Constructor Portal" - }, - { - "executables": [{"is_launcher": false, "name": "deadage.exe", "os": "win32"}], - "hook": true, - "id": "425442752562462720", - "name": "Dead Age" - }, - { - "executables": [{"is_launcher": false, "name": "seum.exe", "os": "win32"}], - "hook": true, - "id": "425442824134328320", - "name": "SEUM: Speedrunners from Hell" - }, - { - "aliases": ["BioShock II"], - "executables": [{"is_launcher": false, "name": "bioshock2.exe", "os": "win32"}], - "hook": true, - "id": "425442925967573002", - "name": "BioShock 2" - }, - { - "executables": [{"is_launcher": false, "name": "bioshock2hd.exe", "os": "win32"}], - "hook": true, - "id": "425442965255880704", - "name": "BioShock\u2122 2 Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "bioshockinfinite.exe", "os": "win32"}], - "hook": true, - "id": "425442995681230858", - "name": "BioShock Infinite" - }, - { - "executables": [ - {"is_launcher": false, "name": "bioshock.exe", "os": "win32"}, - {"is_launcher": false, "name": "bioshockhd.exe", "os": "win32"} - ], - "hook": true, - "id": "425443045417156618", - "name": "BioShock\u2122 Remastered" - }, - { - "executables": [ - {"is_launcher": false, "name": "binaries/borderlands.exe", "os": "win32"}, - {"is_launcher": false, "name": "borderlands/borderlands.exe", "os": "win32"} - ], - "hook": true, - "id": "425443081916252160", - "name": "Borderlands" - }, - { - "executables": [{"is_launcher": false, "name": "mafia/game.exe", "os": "win32"}], - "hook": true, - "id": "425443205195104277", - "name": "Mafia" - }, - { - "executables": [{"is_launcher": false, "name": "mafia2.exe", "os": "win32"}], - "hook": true, - "id": "425443244285886494", - "name": "Mafia II" - }, - { - "executables": [{"is_launcher": false, "name": "mafia3.exe", "os": "win32"}], - "hook": true, - "id": "425443292831023113", - "name": "Mafia III" - }, - { - "aliases": ["Civilization Beyond Earth"], - "executables": [ - {"is_launcher": false, "name": "civilizationbe_mantle.exe", "os": "win32"}, - {"is_launcher": false, "name": "civilizationbe_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "425443404277743616", - "name": "Sid Meier's Civilization: Beyond Earth" - }, - { - "aliases": ["wwe2k18"], - "executables": [{"is_launcher": false, "name": "wwe2k18_x64.exe", "os": "win32"}], - "hook": true, - "id": "425443442181537792", - "name": "WWE 2K18" - }, - { - "executables": [{"is_launcher": false, "name": "deponia.exe", "os": "win32"}], - "hook": true, - "id": "425443478525444106", - "name": "Deponia" - }, - { - "aliases": ["Shadow Tactics Blades of the Shogun"], - "executables": [{"is_launcher": false, "name": "shadow tactics.exe", "os": "win32"}], - "hook": true, - "id": "425443548079456285", - "name": "Shadow Tactics: Blades of the Shogun" - }, - { - "executables": [{"is_launcher": false, "name": "silence.exe", "os": "win32"}], - "hook": true, - "id": "425443601154048020", - "name": "Silence" - }, - { - "executables": [{"is_launcher": false, "name": "kingdom new lands/kingdom.exe", "os": "win32"}], - "hook": true, - "id": "425443637892218890", - "name": "Kingdom: New Lands" - }, - { - "executables": [{"is_launcher": false, "name": "gonner.exe", "os": "win32"}], - "hook": true, - "id": "425443673698861066", - "name": "GoNNER" - }, - { - "executables": [{"is_launcher": false, "name": "dungeoneering.exe", "os": "win32"}], - "hook": true, - "id": "425443709958488064", - "name": "Guild of Dungeoneering" - }, - { - "executables": [{"is_launcher": false, "name": "antihero.exe", "os": "win32"}], - "hook": true, - "id": "425443745866186752", - "name": "Antihero" - }, - { - "executables": [{"is_launcher": false, "name": "letthemcome.exe", "os": "win32"}], - "hook": true, - "id": "425443777621131264", - "name": "Let Them Come" - }, - { - "aliases": ["LEGO STAR WARS: The Force Awakens", "LEGO? STAR WARS?: The Force Awakens"], - "executables": [{"is_launcher": false, "name": "legoswtfa_dx11.exe", "os": "win32"}], - "hook": true, - "id": "425443938271363095", - "name": "LEGO\u00ae STAR WARS\u2122: The Force Awakens" - }, - { - "aliases": ["LEGO? MARVEL's Avengers"], - "executables": [ - {"is_launcher": false, "name": "legomarvelavengers_dx11.exe", "os": "win32"}, - {"is_launcher": false, "name": "legomarvelavengers.exe", "os": "win32"} - ], - "hook": true, - "id": "425449323346657290", - "name": "LEGO\u00ae MARVEL's Avengers" - }, - { - "aliases": ["LEGO? Jurassic World"], - "executables": [{"is_launcher": false, "name": "legojurassicworld_dx11.exe", "os": "win32"}], - "hook": true, - "id": "425450411391057950", - "name": "LEGO\u00ae Jurassic World" - }, - { - "executables": [{"is_launcher": false, "name": "from_dust.exe", "os": "win32"}], - "hook": true, - "id": "425450802316967956", - "name": "From Dust" - }, - { - "executables": [{"is_launcher": false, "name": "rocksmith.exe", "os": "win32"}], - "hook": true, - "id": "425450896877420565", - "name": "Rocksmith" - }, - { - "aliases": ["Tom Clancy's Ghost Recon\t"], - "executables": [{"is_launcher": false, "name": "ghostrecon.exe", "os": "win32"}], - "hook": true, - "id": "425451104117981184", - "name": "Tom Clancy's Ghost Recon" - }, - { - "executables": [{"is_launcher": false, "name": "arcania.exe", "os": "win32"}], - "hook": true, - "id": "425451163807383552", - "name": "ArcaniA" - }, - { - "executables": [{"is_launcher": false, "name": "mxvsatv.exe", "os": "win32"}], - "hook": true, - "id": "425451199756632084", - "name": "MX vs. ATV Unleashed" - }, - { - "executables": [{"is_launcher": false, "name": "dwarves.exe", "os": "win32"}], - "hook": true, - "id": "425451237387796490", - "name": "The Dwarves" - }, - { - "executables": [{"is_launcher": false, "name": "sunless skies.exe", "os": "win32"}], - "hook": true, - "id": "425451303985217536", - "name": "Sunless Skies" - }, - { - "aliases": ["Deadlight"], - "executables": [{"is_launcher": false, "name": "lotdgame.exe", "os": "win32"}], - "hook": true, - "id": "425451345865211904", - "name": "Deadlight: Director's Cut" - }, - { - "executables": [{"is_launcher": false, "name": "sacred3.exe", "os": "win32"}], - "hook": true, - "id": "425451387724234752", - "name": "Sacred 3" - }, - { - "executables": [{"is_launcher": false, "name": "trainz a new era/tane.exe", "os": "win32"}], - "hook": true, - "id": "425451439318630424", - "name": "Trainz: A New Era" - }, - { - "executables": [{"is_launcher": false, "name": "theinnerworld.exe", "os": "win32"}], - "hook": true, - "id": "425451474122833930", - "name": "The Inner World" - }, - { - "executables": [{"is_launcher": false, "name": "acfc.exe", "os": "win32"}], - "hook": true, - "id": "425453860392402964", - "name": "Assassin's Creed Freedom Cry" - }, - { - "executables": [{"is_launcher": false, "name": "assassin's creed syndicate/acs.exe", "os": "win32"}], - "hook": true, - "id": "425453938582487068", - "name": "Assassin's Creed Syndicate" - }, - { - "executables": [{"is_launcher": false, "name": "bgt.exe", "os": "win32"}], - "hook": true, - "id": "425453978114064424", - "name": "Bloody Good Time" - }, - { - "aliases": ["Far Cry? 3 Blood Dragon"], - "executables": [{"is_launcher": false, "name": "fc3_blooddragon_d3d11_b.exe", "os": "win32"}], - "hook": true, - "id": "425454019205529600", - "name": "Far Cry 3 Blood Dragon" - }, - { - "executables": [{"is_launcher": false, "name": "iamalive_game.exe", "os": "win32"}], - "hook": true, - "id": "425454053795823626", - "name": "I Am Alive" - }, - { - "executables": [ - {"is_launcher": false, "name": "prince of persia/launcher/launcher.exe", "os": "win32"}, - {"is_launcher": false, "name": "princeofpersia_launcher.exe", "os": "win32"} - ], - "hook": true, - "id": "425454114999369728", - "name": "Prince of Persia" - }, - { - "executables": [{"is_launcher": false, "name": "blackmirror.exe", "os": "win32"}], - "hook": true, - "id": "425454162705252372", - "name": "Black Mirror" - }, - { - "aliases": ["Darksiders 2", "Darksiders II Deathinitive Edition"], - "executables": [{"is_launcher": false, "name": "darksiders2.exe", "os": "win32"}], - "hook": true, - "id": "425454199371726858", - "name": "Darksiders II: Deathinitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "delta force land warrior/dflw.exe", "os": "win32"}], - "hook": true, - "id": "425454276719017994", - "name": "Delta Force: Land Warrior" - }, - { - "executables": [{"is_launcher": false, "name": "full spectrum warrior/launcher.exe", "os": "win32"}], - "hook": true, - "id": "425454306737520650", - "name": "Full Spectrum Warrior" - }, - { - "executables": [{"is_launcher": false, "name": "fsw2.exe", "os": "win32"}], - "hook": true, - "id": "425454342888488960", - "name": "Full Spectrum Warrior: Ten Hammers" - }, - { - "executables": [{"is_launcher": false, "name": "menofvalor.exe", "os": "win32"}], - "hook": true, - "id": "425454383820570664", - "name": "Men of Valor" - }, - { - "executables": [{"is_launcher": false, "name": "nexus the jupiter incident/nexus.exe", "os": "win32"}], - "hook": true, - "id": "425454420289912832", - "name": "Nexus: The Jupiter Incident" - }, - { - "executables": [{"is_launcher": false, "name": "sinemoraex.exe", "os": "win32"}], - "hook": true, - "id": "425454457434931200", - "name": "Sine Mora EX" - }, - { - "executables": [{"is_launcher": false, "name": "sphinxd_gl.exe", "os": "win32"}], - "hook": true, - "id": "425454500883595264", - "name": "Sphinx and the Cursed Mummy" - }, - { - "executables": [{"is_launcher": false, "name": "bout2.exe", "os": "win32"}], - "hook": true, - "id": "425454534907658240", - "name": "The Book of Unwritten Tales 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "europa1400gold.exe", "os": "win32"}, - {"is_launcher": false, "name": "europa1400gold_tl.exe", "os": "win32"} - ], - "hook": true, - "id": "425454572778291210", - "name": "The Guild Gold Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "homesick/binaries/win64/udk.exe", "os": "win32"}, - {"is_launcher": false, "name": "homesick/binaries/win32/udk.exe", "os": "win32"} - ], - "hook": true, - "id": "425454613827813376", - "name": "Homesick" - }, - { - "aliases": ["Shroud of the Avatar: Forsaken Virtues\t"], - "executables": [{"is_launcher": false, "name": "shroud of the avatar.exe", "os": "win32"}], - "hook": true, - "id": "425454648623628288", - "name": "Shroud of the Avatar" - }, - { - "aliases": ["Descent Underground"], - "executables": [{"is_launcher": false, "name": "descent.exe", "os": "win32"}], - "hook": true, - "id": "425454679854678036", - "name": "Descent: Underground" - }, - { - "executables": [{"is_launcher": false, "name": "escapedeadisland.exe", "os": "win32"}], - "hook": true, - "id": "425454719817875456", - "name": "Escape Dead Island" - }, - { - "executables": [{"is_launcher": false, "name": "bridge_constructor_medieval.exe", "os": "win32"}], - "hook": true, - "id": "425454757130272768", - "name": "Bridge Constructor Medieval" - }, - { - "executables": [{"is_launcher": false, "name": "bridgeconstructorplayground.exe", "os": "win32"}], - "hook": true, - "id": "425454789405704202", - "name": "Bridge Constructor Playground" - }, - { - "executables": [ - {"is_launcher": false, "name": "bridge_constructor_stunts.exe", "os": "win32"}, - {"is_launcher": false, "name": "bridge constructor stunts/wmv9codec.exe", "os": "win32"} - ], - "hook": true, - "id": "425454826042818590", - "name": "Bridge Constructor Stunts" - }, - { - "aliases": ["Deadly30"], - "executables": [{"is_launcher": false, "name": "deadly30.exe", "os": "win32"}], - "hook": true, - "id": "425454866014404618", - "name": "Deadly 30" - }, - { - "executables": [{"is_launcher": false, "name": "dubdash.exe", "os": "win32"}], - "hook": true, - "id": "425454898759598080", - "name": "Dub Dash" - }, - { - "executables": [{"is_launcher": false, "name": "looterkings.exe", "os": "win32"}], - "hook": true, - "id": "425454939452604436", - "name": "Looterkings" - }, - { - "executables": [{"is_launcher": false, "name": "pixel heroes - byte and magic.exe", "os": "win32"}], - "hook": true, - "id": "425454980489543680", - "name": "Pixel Heroes: Byte & Magic" - }, - { - "executables": [{"is_launcher": false, "name": "rockfest.exe", "os": "win32"}], - "hook": true, - "id": "425455011221471232", - "name": "Rockfest" - }, - { - "executables": [{"is_launcher": false, "name": "slime-san.exe", "os": "win32"}], - "hook": true, - "id": "425455040082345984", - "name": "Slime-san" - }, - { - "executables": [{"is_launcher": false, "name": "a new beginning/anb.exe", "os": "win32"}], - "hook": true, - "id": "425455073661812766", - "name": "A New Beginning - Final Cut" - }, - { - "aliases": ["AER: Memories of Old"], - "executables": [{"is_launcher": false, "name": "aer.exe", "os": "win32"}], - "hook": true, - "id": "425455104632815636", - "name": "AER Memories of Old" - }, - { - "executables": [{"is_launcher": false, "name": "anna's quest/anna.exe", "os": "win32"}], - "hook": true, - "id": "425455138459746304", - "name": "Anna's Quest" - }, - { - "executables": [{"is_launcher": false, "name": "blackguards.exe", "os": "win32"}], - "hook": true, - "id": "425455172714496015", - "name": "Blackguards" - }, - { - "executables": [{"is_launcher": false, "name": "blackguards 2.exe", "os": "win32"}], - "hook": true, - "id": "425455204218175498", - "name": "Blackguards 2" - }, - { - "executables": [{"is_launcher": false, "name": "cm3.exe", "os": "win32"}], - "hook": true, - "id": "425455241597681664", - "name": "Crazy Machines 3" - }, - { - "aliases": ["Edna and Harvey Harvey's New Eyes"], - "executables": [{"is_launcher": false, "name": "edna and harvey harvey's new eyes/harvey.exe", "os": "win32"}], - "hook": true, - "id": "425455277337214976", - "name": "Edna & Harvey: Harvey's New Eyes" - }, - { - "aliases": ["Edna & Harvey The Breakout"], - "executables": [{"is_launcher": false, "name": "edna.exe", "os": "win32"}], - "hook": true, - "id": "425455323646787584", - "name": "Edna & Harvey: The Breakout" - }, - { - "executables": [{"is_launcher": false, "name": "joar.exe", "os": "win32"}], - "hook": true, - "id": "425455356181872640", - "name": "Journey of a Roach" - }, - { - "executables": [{"is_launcher": false, "name": "the pillars of the earth/pillars.exe", "os": "win32"}], - "hook": true, - "id": "425455393401995264", - "name": "Ken Follett's The Pillars of the Earth" - }, - { - "executables": [{"is_launcher": false, "name": "memoria.exe", "os": "win32"}], - "hook": true, - "id": "425455438050623498", - "name": "Memoria" - }, - { - "executables": [{"is_launcher": false, "name": "munin.exe", "os": "win32"}], - "hook": true, - "id": "425455471172911104", - "name": "Munin" - }, - { - "aliases": ["Shooting Stars", "ShootingStars.exe"], - "executables": [{"is_launcher": false, "name": "shootingstars.exe", "os": "win32"}], - "hook": true, - "id": "425455505331191808", - "name": "Shooting Stars!" - }, - { - "executables": [{"is_launcher": false, "name": "satinav.exe", "os": "win32"}], - "hook": true, - "id": "425455537803755530", - "name": "The Dark Eye: Chains of Satinav" - }, - { - "executables": [{"is_launcher": false, "name": "tljh-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425455571869761536", - "name": "The Long Journey Home" - }, - { - "executables": [{"is_launcher": false, "name": "the night of the rabbit/rabbit.exe", "os": "win32"}], - "hook": true, - "id": "425455612508241920", - "name": "The Night of the Rabbit" - }, - { - "executables": [{"is_launcher": false, "name": "twwse.exe", "os": "win32"}], - "hook": true, - "id": "425455671052599296", - "name": "The Whispered World Special Edition" - }, - { - "executables": [{"is_launcher": false, "name": "kathyrain.exe", "os": "win32"}], - "hook": true, - "id": "425455715205906432", - "name": "Kathy Rain" - }, - { - "executables": [{"is_launcher": false, "name": "uurnog.exe", "os": "win32"}], - "hook": true, - "id": "425455750031081472", - "name": "Uurnog Uurnlimited" - }, - { - "executables": [{"is_launcher": false, "name": "dandara.exe", "os": "win32"}], - "hook": true, - "id": "425455780360355850", - "name": "Dandara" - }, - { - "executables": [{"is_launcher": false, "name": "armikrog.exe", "os": "win32"}], - "hook": true, - "id": "425455814497665034", - "name": "Armikrog" - }, - { - "executables": [{"is_launcher": false, "name": "toren.exe", "os": "win32"}], - "hook": true, - "id": "425455851243831296", - "name": "Toren" - }, - { - "aliases": ["Call of Juarez: Gunslinger"], - "executables": [{"is_launcher": false, "name": "cojgunslinger.exe", "os": "win32"}], - "hook": true, - "id": "425456506431995914", - "name": "Call of Juarez - Gunslinger" - }, - { - "executables": [{"is_launcher": false, "name": "trialsblooddragon.exe", "os": "win32"}], - "hook": true, - "id": "425456603765145656", - "name": "Trials of the Blood Dragon" - }, - { - "executables": [{"is_launcher": false, "name": "dftfd.exe", "os": "win32"}], - "hook": true, - "id": "425456638154113044", - "name": "Delta Force: Task Force Dagger" - }, - { - "executables": [{"is_launcher": false, "name": "locksquest.exe", "os": "win32"}], - "hook": true, - "id": "425456670362042368", - "name": "Lock's Quest" - }, - { - "executables": [{"is_launcher": false, "name": "rad-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425456700640985108", - "name": "Rad Rodgers" - }, - { - "aliases": ["Tachyon The Fringe"], - "executables": [{"is_launcher": false, "name": "tachyon the fringe/tachyon.exe", "os": "win32"}], - "hook": true, - "id": "425456735050924032", - "name": "Tachyon: The Fringe" - }, - { - "executables": [{"is_launcher": false, "name": "critterchronicles.exe", "os": "win32"}], - "hook": true, - "id": "425456762569621514", - "name": "The Book of Unwritten Tales: The Critter Chronicles" - }, - { - "aliases": ["INSIDE"], - "executables": [{"is_launcher": false, "name": "inside/inside.exe", "os": "win32"}], - "hook": true, - "id": "425456795683913750", - "name": "Inside" - }, - { - "executables": [{"is_launcher": false, "name": "the universim.exe", "os": "win32"}], - "hook": true, - "id": "425456822258892810", - "name": "The Universim" - }, - { - "executables": [{"is_launcher": false, "name": "lost horizon/autostarter.exe", "os": "win32"}], - "hook": true, - "id": "425456853070118922", - "name": "Lost Horizon" - }, - { - "executables": [{"is_launcher": false, "name": "grotesque tactics.exe", "os": "win32"}], - "hook": true, - "id": "425456981332197386", - "name": "Grotesque Tactics: Evil Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "in between.exe", "os": "win32"}], - "hook": true, - "id": "425457045098070026", - "name": "In Between" - }, - { - "executables": [{"is_launcher": false, "name": "meridian - new world.exe", "os": "win32"}], - "hook": true, - "id": "425457072818094080", - "name": "Meridian: New World" - }, - { - "executables": [{"is_launcher": false, "name": "safetyfirst.exe", "os": "win32"}], - "hook": true, - "id": "425457108167950346", - "name": "Safety First!" - }, - { - "executables": [{"is_launcher": false, "name": "townsmen.exe", "os": "win32"}], - "hook": true, - "id": "425457401769099297", - "name": "Townsmen" - }, - { - "executables": [{"is_launcher": false, "name": "vikingrage.exe", "os": "win32"}], - "hook": true, - "id": "425457433565986838", - "name": "Viking Rage" - }, - { - "executables": [{"is_launcher": false, "name": "windscape.exe", "os": "win32"}], - "hook": true, - "id": "425457461731000320", - "name": "Windscape" - }, - { - "aliases": ["Assassin's Creed Liberation"], - "executables": [{"is_launcher": false, "name": "ac3lhd_32.exe", "os": "win32"}], - "hook": true, - "id": "425457838731690003", - "name": "Assassin's Creed Liberation HD" - }, - { - "aliases": ["Justice League VR"], - "executables": [ - { - "is_launcher": false, - "name": "justice_league_vr_the_complete_experience-1.0.1-htcvive-release.exe", - "os": "win32" - }, - { - "is_launcher": false, - "name": "justice_league_vr_the_complete_experience-1.0.0-htcvive-release.exe", - "os": "win32" - } - ], - "hook": true, - "id": "425457887339348005", - "name": "Justice League VR: The Complete Experience" - }, - { - "aliases": ["South Park: The Stick of Truth", "South Park\u2122: The Stick of Truth\u2122"], - "executables": [{"is_launcher": false, "name": "south park - the stick of truth.exe", "os": "win32"}], - "hook": true, - "id": "425457961574596608", - "name": "South Park The Stick of Truth" - }, - { - "executables": [{"is_launcher": false, "name": "battleworldskronos.exe", "os": "win32"}], - "hook": true, - "id": "425458030537211904", - "name": "Battle Worlds: Kronos" - }, - { - "executables": [{"is_launcher": false, "name": "overclocked/ocd.exe", "os": "win32"}], - "hook": true, - "id": "425458153262546944", - "name": "Overclocked: A History of Violence" - }, - { - "aliases": ["SuperPower 2 Steam Edition"], - "executables": [{"is_launcher": false, "name": "joshua.exe", "os": "win32"}], - "hook": true, - "id": "425458179539730462", - "name": "SuperPower 2" - }, - { - "aliases": ["This Is The Police", "This Is the Police"], - "executables": [{"is_launcher": false, "name": "this is the police/police.exe", "os": "win32"}], - "hook": true, - "id": "425458210175188992", - "name": "This is the Police" - }, - { - "aliases": ["SUPERHOT"], - "executables": [ - {"is_launcher": false, "name": "superhot/sh.exe", "os": "win32"}, - {"is_launcher": false, "name": "superhot.exe", "os": "win32"} - ], - "hook": true, - "id": "425458238595661854", - "name": "Superhot" - }, - { - "executables": [{"is_launcher": false, "name": "losthorizon2.exe", "os": "win32"}], - "hook": true, - "id": "425458269360750592", - "name": "Lost Horizon 2" - }, - { - "aliases": ["Metro Redux\t", "Metro: Redux"], - "executables": [{"is_launcher": false, "name": "metro 2033 redux/metro.exe", "os": "win32"}], - "hook": true, - "id": "425458328278401044", - "name": "Metro Redux" - }, - { - "executables": [{"is_launcher": false, "name": "secretfiles3/fsasgame.exe", "os": "win32"}], - "hook": true, - "id": "425458354756911104", - "name": "Secret Files 3" - }, - { - "executables": [{"is_launcher": false, "name": "cloudsandsheep2.exe", "os": "win32"}], - "hook": true, - "id": "425458381835206656", - "name": "Clouds & Sheep 2" - }, - { - "executables": [{"is_launcher": false, "name": "futurewars.exe", "os": "win32"}], - "hook": true, - "id": "425458408037285888", - "name": "Future Wars" - }, - { - "executables": [{"is_launcher": false, "name": "gameroyale2.exe", "os": "win32"}], - "hook": true, - "id": "425458432569638912", - "name": "Game Royale 2 - The Secret of Jannis Island" - }, - { - "aliases": ["Greed Black Border"], - "executables": [{"is_launcher": false, "name": "greed black border/greed.exe", "os": "win32"}], - "hook": true, - "id": "425458464714653696", - "name": "Greed: Black Border" - }, - { - "executables": [{"is_launcher": false, "name": "holyavatarvs.exe", "os": "win32"}], - "hook": true, - "id": "425458490878984192", - "name": "Holy Avatar vs. Maidens of the Dead" - }, - { - "executables": [{"is_launcher": false, "name": "squad22.exe", "os": "win32"}], - "hook": true, - "id": "425458524865298432", - "name": "Meridian: Squad 22" - }, - { - "executables": [{"is_launcher": false, "name": "raceabit.exe", "os": "win32"}], - "hook": true, - "id": "425458558620925982", - "name": "Race.a.bit" - }, - { - "executables": [{"is_launcher": false, "name": "shiny the firefly/shiny.exe", "os": "win32"}], - "hook": true, - "id": "425458574731509760", - "name": "Shiny The Firefly" - }, - { - "executables": [{"is_launcher": false, "name": "skilltree.exe", "os": "win32"}], - "hook": true, - "id": "425458587985379328", - "name": "Skilltree Saga" - }, - { - "aliases": ["Soulcraft"], - "executables": [{"is_launcher": false, "name": "soulcraft.exe", "os": "win32"}], - "hook": true, - "id": "425458618108739614", - "name": "SoulCraft" - }, - { - "executables": [{"is_launcher": false, "name": "stellarimpact.exe", "os": "win32"}], - "hook": true, - "id": "425458648006000640", - "name": "Stellar Impact" - }, - { - "executables": [{"is_launcher": false, "name": "submerge-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425458682566934538", - "name": "Subsiege" - }, - { - "executables": [{"is_launcher": false, "name": "super treasure arena.exe", "os": "win32"}], - "hook": true, - "id": "425458718537154560", - "name": "Super Treasure Arena" - }, - { - "executables": [{"is_launcher": false, "name": "trappeddeadlockdown.exe", "os": "win32"}], - "hook": true, - "id": "425458758504939540", - "name": "Trapped Dead: Lockdown" - }, - { - "executables": [{"is_launcher": false, "name": "tristoy.exe", "os": "win32"}], - "hook": true, - "id": "425458781451845632", - "name": "TRISTOY" - }, - { - "executables": [{"is_launcher": false, "name": "trulon.exe", "os": "win32"}], - "hook": true, - "id": "425458804868513802", - "name": "Trulon: The Shadow Engine" - }, - { - "executables": [{"is_launcher": false, "name": "twinsector_steam.exe", "os": "win32"}], - "hook": true, - "id": "425458819636920320", - "name": "Twin Sector" - }, - { - "aliases": ["Gotham City Impostors: Free To Play"], - "executables": [{"is_launcher": false, "name": "gotham city impostors f2p/engine.exe", "os": "win32"}], - "hook": true, - "id": "425459839494389780", - "name": "Gotham City Impostors Free to Play" - }, - { - "aliases": ["Heroes of Might & Magic III - HD Edition", "Heroes of Might and Magic III: Horn of the Abyss"], - "executables": [{"is_launcher": false, "name": "homm3 2.0.exe", "os": "win32"}], - "hook": true, - "id": "425459913200762889", - "name": "Heroes of Might and Magic III HD" - }, - { - "aliases": ["Heroes of Might & Magic V"], - "executables": [ - {"is_launcher": false, "name": "bina1/testapp.exe", "os": "win32"}, - {"is_launcher": false, "name": "h5_game.exe", "os": "win32"} - ], - "hook": true, - "id": "425460002761998347", - "name": "Might and Magic - Heroes V" - }, - { - "aliases": ["LEGO Batman 2"], - "executables": [{"is_launcher": false, "name": "legobatman2.exe", "os": "win32"}], - "hook": true, - "id": "425460322619490304", - "name": "LEGO\u00ae Batman 2 DC Super Heroes\u2122" - }, - { - "aliases": ["LEGO Batman: The Videogame"], - "executables": [{"is_launcher": false, "name": "legobatman.exe", "os": "win32"}], - "hook": true, - "id": "425460379624144925", - "name": "LEGO Batman" - }, - { - "aliases": ["Lego Harry Potter"], - "executables": [{"is_launcher": false, "name": "legoharrypotter.exe", "os": "win32"}], - "hook": true, - "id": "425460457558769674", - "name": "LEGO Harry Potter: Years 1-4" - }, - { - "aliases": ["Scribblenauts Unmasked"], - "executables": [{"is_launcher": false, "name": "scribblenauts unmasked/scribble.exe", "os": "win32"}], - "hook": true, - "id": "425460538110246912", - "name": "Scribblenauts Unmasked: A DC Comics Adventure" - }, - { - "aliases": ["Silent Hunter III"], - "executables": [{"is_launcher": false, "name": "sh3.exe", "os": "win32"}], - "hook": true, - "id": "425460595718881280", - "name": "Silent Hunter 3" - }, - { - "aliases": ["South Park The Fractured But Whole"], - "executables": [{"is_launcher": false, "name": "southpark_tfbw.exe", "os": "win32"}], - "hook": true, - "id": "425460666930036736", - "name": "South Park Fractured But Whole" - }, - { - "aliases": ["The Lord of the Rings: War in the North"], - "executables": [{"is_launcher": false, "name": "war in the north/witn.exe", "os": "win32"}], - "hook": true, - "id": "425460776195719168", - "name": "Lord of the Rings: War in the North" - }, - { - "aliases": ["Tom Clancy's Rainbow Six 3: Gold Edition"], - "executables": [{"is_launcher": false, "name": "ravenshield.exe", "os": "win32"}], - "hook": true, - "id": "425460908345524224", - "name": "Tom Clancy's Rainbow Six 3" - }, - { - "aliases": ["Tom Clancy's Rainbow Six: Vegas"], - "executables": [{"is_launcher": false, "name": "r6vegas_game.exe", "os": "win32"}], - "hook": true, - "id": "425460989602037770", - "name": "Tom Clancy's Rainbow Six Vegas" - }, - { - "aliases": ["Tom Clancy's Rainbow Six: Vegas 2"], - "executables": [{"is_launcher": false, "name": "r6vegas2_game.exe", "os": "win32"}], - "hook": true, - "id": "425470018130673664", - "name": "Tom Clancy's Rainbow Six Vegas II" - }, - { - "aliases": ["Tom Clancy's Splinter Cell: Chaos Theory"], - "executables": [{"is_launcher": false, "name": "splintercell3.exe", "os": "win32"}], - "hook": true, - "id": "425470107368554504", - "name": "Tom Clancy's Splinter Cell Chaos Theory" - }, - { - "aliases": ["The Guild II: Renaissance"], - "executables": [{"is_launcher": false, "name": "guildii.exe", "os": "win32"}], - "hook": true, - "id": "425470196439056391", - "name": "The Guild 2 Renaissance" - }, - { - "aliases": ["SOMA"], - "executables": [{"is_launcher": false, "name": "soma.exe", "os": "win32"}], - "hook": true, - "id": "425470408322449418", - "name": "Soma" - }, - { - "aliases": ["HellBlade", "Hellblade: Senua's Sacrifice"], - "executables": [{"is_launcher": false, "name": "hellbladegame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425470569698557962", - "name": "Hellblade" - }, - { - "aliases": ["Dirt Rally"], - "executables": [{"is_launcher": false, "name": "drt.exe", "os": "win32"}], - "hook": true, - "id": "425471119068364819", - "name": "DiRT Rally" - }, - { - "aliases": ["Killer is Dead"], - "executables": [{"is_launcher": false, "name": "kidgame.exe", "os": "win32"}], - "hook": true, - "id": "425471324073230336", - "name": "Killer Is Dead - Nightmare Edition" - }, - { - "aliases": ["Saints Row: Gat Out of Hell"], - "executables": [{"is_launcher": false, "name": "saintsrowgatoutofhell.exe", "os": "win32"}], - "hook": true, - "id": "425471448782733331", - "name": "Saints Row: Gat out of Hell" - }, - { - "aliases": ["Banner Saga"], - "executables": [{"is_launcher": false, "name": "the banner saga.exe", "os": "win32"}], - "hook": true, - "id": "425471698284970020", - "name": "The Banner Saga" - }, - { - "aliases": ["TrackMania United"], - "executables": [{"is_launcher": false, "name": "tmforever.exe", "os": "win32"}], - "hook": true, - "id": "425709280725958689", - "name": "Trackmania United Forever" - }, - { - "aliases": ["Trials Evolution Gold Edition"], - "executables": [{"is_launcher": false, "name": "trialsfmx.exe", "os": "win32"}], - "hook": true, - "id": "425709676965920788", - "name": "Trials Evolution" - }, - { - "aliases": ["Neighbours from Hell"], - "executables": [{"is_launcher": false, "name": "neighbours from hell/bin/game.exe", "os": "win32"}], - "hook": true, - "id": "425709808705077272", - "name": "Neighbours From Hell Compilation" - }, - { - "aliases": ["The Guild 2"], - "executables": [{"is_launcher": false, "name": "guildii.exe", "os": "win32"}], - "hook": true, - "id": "425710142252777508", - "name": "The Guild II" - }, - { - "executables": [{"is_launcher": false, "name": "rivergame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425713116903505930", - "name": "The Flame in the Flood" - }, - { - "aliases": ["Dreamfall Chapters"], - "executables": [{"is_launcher": false, "name": "dreamfall chapters.exe", "os": "win32"}], - "hook": true, - "id": "425713647222784010", - "name": "Dreamfall Chapters: The Longest Journey" - }, - { - "aliases": ["Risen 3: Titan Lords"], - "executables": [{"is_launcher": false, "name": "risen3.exe", "os": "win32"}], - "hook": true, - "id": "425714129152770048", - "name": "Risen 3 - Titan Lords" - }, - { - "aliases": ["Sacred 2"], - "executables": [{"is_launcher": false, "name": "sacred2.exe", "os": "win32"}], - "hook": true, - "id": "425714299877589002", - "name": "Sacred 2 Gold" - }, - { - "aliases": ["Deponia 1-3: The Complete Journey"], - "executables": [{"is_launcher": false, "name": "deponia.exe", "os": "win32"}], - "hook": true, - "id": "425714472997355560", - "name": "Deponia: The Complete Journey" - }, - { - "aliases": ["Deponia 2: Chaos on Deponia"], - "executables": [{"is_launcher": false, "name": "chaos on deponia/deponia2.exe", "os": "win32"}], - "hook": true, - "id": "425714655726665788", - "name": "Chaos on Deponia" - }, - { - "aliases": ["Banner Saga 2"], - "executables": [{"is_launcher": false, "name": "the banner saga 2.exe", "os": "win32"}], - "hook": true, - "id": "425722711180967946", - "name": "The Banner Saga 2" - }, - { - "aliases": ["Tormentor X Punisher"], - "executables": [ - {"is_launcher": false, "name": "tormentorxpunisher.exe", "os": "win32"}, - {"is_launcher": false, "name": "tormentorxpunishergit.exe", "os": "win32"} - ], - "hook": true, - "id": "425723123187449856", - "name": "Tormentor\u274cPunisher", - "overlay": true - }, - { - "aliases": ["Assassin's Creed Chronicles India", "Assassin?s Creed? Chronicles: India"], - "executables": [{"is_launcher": false, "name": "accgame-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425725558626844702", - "name": "Assassin\u2019s Creed\u00ae Chronicles: India" - }, - { - "aliases": ["Batman: Arkham Asylum Game of the Year Edition"], - "executables": [{"is_launcher": false, "name": "shippingpc-bmgame.exe", "os": "win32"}], - "hook": true, - "id": "425727574539370529", - "name": "Batman: Arkham Asylum GOTY Edition" - }, - { - "aliases": ["Brothers in Arms - Road to Hill 30"], - "executables": [{"is_launcher": false, "name": "bia.exe", "os": "win32"}], - "hook": true, - "id": "425727812490493972", - "name": "Brothers in Arms: Road to Hill 30" - }, - { - "executables": [{"is_launcher": false, "name": "cojbibgame_x86.exe", "os": "win32"}], - "hook": true, - "id": "425728267123949578", - "name": "Call of Juarez: Bound in Blood" - }, - { - "executables": [{"is_launcher": false, "name": "childoflight.exe", "os": "win32"}], - "hook": true, - "id": "425728327505018921", - "name": "Child of Light" - }, - { - "executables": [ - {"is_launcher": false, "name": "prince of persia the sands of time/princeofpersia.exe", "os": "win32"} - ], - "hook": true, - "id": "425728421788909568", - "name": "Prince of Persia: The Sands of Time" - }, - { - "executables": [ - {"is_launcher": false, "name": "prince of persia the warrior within/princeofpersia.exe", "os": "win32"} - ], - "hook": true, - "id": "425728459600429056", - "name": "Prince of Persia: Warrior Within" - }, - { - "executables": [{"is_launcher": false, "name": "sh5.exe", "os": "win32"}], - "hook": true, - "id": "425728548586913812", - "name": "Silent Hunter 5: Battle of the Atlantic" - }, - { - "executables": [{"is_launcher": false, "name": "silent hunters wolves of the pacific/sh4.exe", "os": "win32"}], - "hook": true, - "id": "425728586192912384", - "name": "Silent Hunter: Wolves of the Pacific" - }, - { - "executables": [{"is_launcher": false, "name": "witn.exe", "os": "win32"}], - "hook": true, - "id": "425728616450490368", - "name": "The Lord of the Rings: War in the North" - }, - { - "executables": [{"is_launcher": false, "name": "delta force black hawk down/dfbhd.exe", "os": "win32"}], - "hook": true, - "id": "425731190570483757", - "name": "Delta Force: Black Hawk Down" - }, - { - "executables": [{"is_launcher": false, "name": "painkiller.exe", "os": "win32"}], - "hook": true, - "id": "425731299936960512", - "name": "Painkiller: Black Edition" - }, - { - "executables": [{"is_launcher": false, "name": "spellforce.exe", "os": "win32"}], - "hook": true, - "id": "425731382820470824", - "name": "SpellForce: Platinum Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "the guild ii - pirates of the european seas/guildii.exe", "os": "win32"} - ], - "hook": true, - "id": "425731435929010195", - "name": "The Guild II - Pirates of the European Seas" - }, - { - "executables": [{"is_launcher": false, "name": "codename cure/cure.exe", "os": "win32"}], - "hook": true, - "id": "425748063416483870", - "name": "Codename CURE" - }, - { - "aliases": ["Dungeon Defenders 2"], - "executables": [ - {"is_launcher": false, "name": "dungeon defenders 2/dundef2/binaries/win64/dundefgame.exe", "os": "win32"}, - {"is_launcher": false, "name": "dungeon defenders 2/dundef2/binaries/win32/dundefgame.exe", "os": "win32"}, - { - "is_launcher": false, - "name": "dungeon defenders 2/dundef2/binaries/win32/dungeondefenders.exe", - "os": "win32" - }, - { - "is_launcher": false, - "name": "dungeon defenders 2/dundef2/binaries/win64/dungeondefenders.exe", - "os": "win32" - } - ], - "hook": true, - "id": "425748090889175050", - "name": "Dungeon Defenders II" - }, - { - "executables": [{"is_launcher": false, "name": "cof.exe", "os": "win32"}], - "hook": true, - "id": "425748259408183306", - "name": "Cry of Fear" - }, - { - "executables": [{"is_launcher": false, "name": "blackwake.exe", "os": "win32"}], - "hook": true, - "id": "425748296854667264", - "name": "Blackwake" - }, - { - "aliases": ["Age of Empires III"], - "executables": [ - {"is_launcher": false, "name": "age3.exe", "os": "win32"}, - {"is_launcher": false, "name": "age3y.exe", "os": "win32"} - ], - "hook": true, - "id": "425748312143167498", - "name": "Age of Empires\u00ae III: Complete Collection" - }, - { - "aliases": ["Far Cry 3"], - "executables": [ - {"is_launcher": false, "name": "farcry3_d3d11.exe", "os": "win32"}, - {"is_launcher": false, "name": "farcry3.exe", "os": "win32"} - ], - "hook": true, - "id": "425748544134053888", - "name": "Far Cry\u00ae 3" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2018/fm.exe", "os": "win32"}], - "hook": true, - "id": "425748782978826254", - "name": "Football Manager 2018" - }, - { - "aliases": ["Total War: Attila"], - "executables": [{"is_launcher": false, "name": "attila.exe", "os": "win32"}], - "hook": true, - "id": "425748853132754945", - "name": "Total War: ATTILA" - }, - { - "executables": [{"is_launcher": false, "name": "ffxv_s.exe", "os": "win32"}], - "hook": true, - "id": "425748942676819968", - "name": "FINAL FANTASY XV WINDOWS EDITION" - }, - { - "executables": [{"is_launcher": false, "name": "evolve.exe", "os": "win32"}], - "hook": true, - "id": "425748985517703188", - "name": "Evolve Stage 2" - }, - { - "aliases": ["Total War: SHOGUN 2", "Total War: Shogun 2"], - "executables": [ - {"is_launcher": false, "name": "benchmarks/benchmark_output.exe", "os": "win32"}, - {"is_launcher": false, "name": "total war shogun 2/modmanager.exe", "os": "win32"}, - {"is_launcher": false, "name": "redist/vcredist_x86-sp1.exe", "os": "win32"}, - {"is_launcher": false, "name": "shogun2.exe", "os": "win32"} - ], - "hook": true, - "id": "425749196403114024", - "name": "Total War: SHOGUN 2" - }, - { - "executables": [{"is_launcher": false, "name": "breach.exe", "os": "win32"}], - "hook": true, - "id": "425749372332933120", - "name": "Into the Breach" - }, - { - "executables": [{"is_launcher": false, "name": "reactivedrop.exe", "os": "win32"}], - "hook": true, - "id": "425749425168580608", - "name": "Alien Swarm: Reactive Drop" - }, - { - "aliases": ["Trackmania Nations Forever"], - "executables": [{"is_launcher": false, "name": "tmforever.exe", "os": "win32"}], - "hook": true, - "id": "425749438573707264", - "name": "TrackMania Nations Forever" - }, - { - "executables": [{"is_launcher": false, "name": "left4dead.exe", "os": "win32"}], - "hook": true, - "id": "425749516583698432", - "name": "Left 4 Dead" - }, - { - "executables": [{"is_launcher": false, "name": "amnesia.exe", "os": "win32"}], - "hook": true, - "id": "425749626671595520", - "name": "Amnesia: The Dark Descent" - }, - { - "executables": [{"is_launcher": false, "name": "game dev tycoon/nw.exe", "os": "win32"}], - "hook": true, - "id": "425749842451496961", - "name": "Game Dev Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "banished/application-steam-x64.exe", "os": "win32"}], - "hook": true, - "id": "425750064963780628", - "name": "Banished" - }, - { - "executables": [{"is_launcher": false, "name": "ogat.exe", "os": "win32"}], - "hook": true, - "id": "425750237534224394", - "name": "Of Guards And Thieves" - }, - { - "executables": [{"is_launcher": false, "name": "whosyourdaddy.exe", "os": "win32"}], - "hook": true, - "id": "425751000477990922", - "name": "Who's Your Daddy" - }, - { - "executables": [{"is_launcher": false, "name": "final fantasy xv playable demo/ffxv_s.exe", "os": "win32"}], - "hook": true, - "id": "425751261095264276", - "name": "FINAL FANTASY XV WINDOWS EDITION PLAYABLE DEMO" - }, - { - "executables": [ - {"is_launcher": false, "name": "iw4sp.exe", "os": "win32"}, - {"is_launcher": false, "name": "iw4mp.exe", "os": "win32"} - ], - "hook": true, - "id": "425777093628919828", - "name": "Call of Duty: Modern Warfare 2", - "overlay": true - }, - { - "aliases": ["Torchlight 2"], - "executables": [{"is_launcher": false, "name": "torchlight2.exe", "os": "win32"}], - "hook": true, - "id": "425777164361793547", - "name": "Torchlight II" - }, - { - "executables": [{"is_launcher": false, "name": "supermeatboy.exe", "os": "win32"}], - "hook": true, - "id": "425777385103949834", - "name": "Super Meat Boy" - }, - { - "aliases": ["Men Of War: Assault Squad 2"], - "executables": [ - {"is_launcher": false, "name": "mowas2.exe", "os": "win32"}, - {"is_launcher": false, "name": "mowas_2.exe", "os": "win32"} - ], - "hook": true, - "id": "425777482860331018", - "name": "Men of War: Assault Squad 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "the darwin project/darwin.exe", "os": "win32"}, - {"is_launcher": false, "name": "darwin-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "425777491068715018", - "name": "Darwin Project" - }, - { - "executables": [{"is_launcher": false, "name": "hyperuniverse.exe", "os": "win32"}], - "hook": true, - "id": "425777540263837706", - "name": "Hyper Universe" - }, - { - "executables": [{"is_launcher": false, "name": "grim dawn.exe", "os": "win32"}], - "hook": true, - "id": "425777682135908352", - "name": "Grim Dawn" - }, - { - "aliases": ["Rising Storm/Red Orchestra 2", "Rising Storm/Red Orchestra 2 Multiplayer"], - "executables": [ - {"is_launcher": false, "name": "rogame.exe", "os": "win32"}, - {"is_launcher": false, "name": "windows/pbsvc_hos.exe", "os": "win32"} - ], - "hook": true, - "id": "425777721159974922", - "name": "Rising Storm/Red Orchestra 2 Multiplayer" - }, - { - "executables": [{"is_launcher": false, "name": "fishingplanet.exe", "os": "win32"}], - "hook": true, - "id": "425777941499215872", - "name": "Fishing Planet" - }, - { - "aliases": ["Assetto Corsa"], - "executables": [ - {"is_launcher": false, "name": "server/acservermanager.exe", "os": "win32"}, - {"is_launcher": false, "name": "editor/kseditor.exe", "os": "win32"}, - {"is_launcher": false, "name": "assettocorsa.exe", "os": "win32"}, - {"is_launcher": false, "name": "assettocorsa/content manager.exe", "os": "win32"}, - {"is_launcher": false, "name": "assettocorsa/acshowroom.exe", "os": "win32"}, - {"is_launcher": false, "name": "assettocorsa/jsgme.exe", "os": "win32"}, - {"is_launcher": false, "name": "assettocorsa/acs.exe", "os": "win32"} - ], - "hook": true, - "id": "425778010222886912", - "name": "Assetto Corsa" - }, - { - "executables": [{"is_launcher": false, "name": "aim hero.exe", "os": "win32"}], - "hook": true, - "id": "425778246941016064", - "name": "Aim Hero" - }, - { - "executables": [{"is_launcher": false, "name": "sfm.exe", "os": "win32"}], - "hook": true, - "id": "425778288661757952", - "name": "Source Filmmaker" - }, - { - "executables": [{"is_launcher": false, "name": "polybridge.exe", "os": "win32"}], - "hook": true, - "id": "425778516320059392", - "name": "Poly Bridge" - }, - { - "executables": [{"is_launcher": false, "name": "dirt3_game.exe", "os": "win32"}], - "hook": true, - "id": "425778620187803658", - "name": "DiRT 3 Complete Edition" - }, - { - "executables": [{"is_launcher": false, "name": "goatgame-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "425778678723510302", - "name": "Goat Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "risk of rain.exe", "os": "win32"}], - "hook": true, - "id": "425779272842608670", - "name": "Risk of Rain" - }, - { - "executables": [{"is_launcher": false, "name": "bombtag.exe", "os": "win32"}], - "hook": true, - "id": "425779854332657694", - "name": "BombTag" - }, - { - "executables": [{"is_launcher": false, "name": "miscreated.exe", "os": "win32"}], - "hook": true, - "id": "425779909835751424", - "name": "Miscreated" - }, - { - "executables": [{"is_launcher": false, "name": "thehunter.exe", "os": "win32"}], - "hook": true, - "id": "425781960317861888", - "name": "theHunter Classic" - }, - { - "executables": [{"is_launcher": false, "name": "cortex command.exe", "os": "win32"}], - "hook": true, - "id": "425787524737269770", - "name": "Cortex Command" - }, - { - "executables": [{"is_launcher": false, "name": "mgv.exe", "os": "win32"}], - "hook": true, - "id": "425800674568044575", - "name": "METAL GEAR SURVIVE BETA" - }, - { - "aliases": ["Block n Load"], - "executables": [{"is_launcher": false, "name": "blocknload.exe", "os": "win32"}], - "hook": true, - "id": "426524547177512960", - "name": "Block N Load" - }, - { - "executables": [ - {"is_launcher": false, "name": "lethalleague.app", "os": "darwin"}, - {"is_launcher": false, "name": "lethalleague.exe", "os": "win32"} - ], - "hook": true, - "id": "426524717919240202", - "name": "Lethal League" - }, - { - "aliases": ["Sniper Elite 4"], - "executables": [ - {"is_launcher": false, "name": "sniperelite4_dx12.exe", "os": "win32"}, - {"is_launcher": false, "name": "bin/sniperelite4_dx11.exe", "os": "win32"}, - {"is_launcher": false, "name": "sniperelite4.exe", "os": "win32"}, - {"is_launcher": false, "name": "sniperelite4_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "426524936060928011", - "name": "Sniper Elite 4" - }, - { - "executables": [{"is_launcher": false, "name": "endlessspace2.exe", "os": "win32"}], - "hook": true, - "id": "426524963583950868", - "name": "Endless Space 2" - }, - { - "executables": [{"is_launcher": false, "name": "deadmaze.exe", "os": "win32"}], - "hook": true, - "id": "426524991379603458", - "name": "Dead Maze" - }, - { - "aliases": ["World of Warcraft PTR"], - "executables": [{"is_launcher": false, "name": "wowt-64.exe", "os": "win32"}], - "hook": true, - "id": "426525131276550144", - "name": "World of Warcraft Public Test", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "sniperelite3_mantle.exe", "os": "win32"}], - "hook": true, - "id": "426525148892495882", - "name": "Sniper Elite 3" - }, - { - "executables": [{"is_launcher": false, "name": "magicka.exe", "os": "win32"}], - "hook": true, - "id": "426525158627606568", - "name": "Magicka" - }, - { - "executables": [ - {"is_launcher": false, "name": "streetfighterv.exe", "os": "win32"}, - {"is_launcher": false, "name": "streetfightervbeta-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "426525250549973022", - "name": "Street Fighter V" - }, - { - "aliases": ["Dead Space"], - "executables": [{"is_launcher": false, "name": "dead space.exe", "os": "win32"}], - "hook": true, - "id": "426525408666583050", - "name": "Dead Space\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "superflight.exe", "os": "win32"}], - "hook": true, - "id": "426525741702709258", - "name": "Superflight" - }, - { - "aliases": ["The Witcher 2: Assassins of Kings", "The Witcher 2: Assassins of Kings Enhanced Edition"], - "executables": [ - {"is_launcher": false, "name": "bin/configurator.exe", "os": "win32"}, - {"is_launcher": false, "name": "witcher2.exe", "os": "win32"} - ], - "hook": true, - "id": "426525754092814346", - "name": "The Witcher 2: Assassins of Kings Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "spintires.exe", "os": "win32"}], - "hook": true, - "id": "426525833281404928", - "name": "Spintires" - }, - { - "executables": [{"is_launcher": false, "name": "bloodandbacon.exe", "os": "win32"}], - "hook": true, - "id": "426526253294551046", - "name": "Blood and Bacon" - }, - { - "executables": [{"is_launcher": false, "name": "cms2018.exe", "os": "win32"}], - "hook": true, - "id": "426526355564265479", - "name": "Car Mechanic Simulator 2018" - }, - { - "executables": [{"is_launcher": false, "name": "ddda.exe", "os": "win32"}], - "hook": true, - "id": "426526490042302464", - "name": "Dragon's Dogma: Dark Arisen" - }, - { - "executables": [ - {"is_launcher": false, "name": "projectzomboid32.exe", "os": "win32"}, - {"is_launcher": false, "name": "projectzomboid64.exe", "os": "win32"} - ], - "hook": true, - "id": "426526722322726912", - "name": "Project Zomboid" - }, - { - "executables": [{"is_launcher": false, "name": "hero_siege.exe", "os": "win32"}], - "hook": true, - "id": "426526773694431233", - "name": "Hero Siege" - }, - { - "aliases": ["POSTAL 2"], - "executables": [ - {"is_launcher": false, "name": "system/paradiselost.exe", "os": "win32"}, - {"is_launcher": false, "name": "postal2.exe", "os": "win32"} - ], - "hook": true, - "id": "426527481122521098", - "name": "POSTAL 2" - }, - { - "executables": [{"is_launcher": false, "name": "playsnow.exe", "os": "win32"}], - "hook": true, - "id": "426527534268809226", - "name": "SNOW" - }, - { - "executables": [{"is_launcher": false, "name": "poolians.exe", "os": "win32"}], - "hook": true, - "id": "426528563919978496", - "name": "Real Pool 3D - Poolians" - }, - { - "executables": [{"is_launcher": false, "name": "btd5-win.exe", "os": "win32"}], - "hook": true, - "id": "426528712348139520", - "name": "Bloons TD5" - }, - { - "executables": [{"is_launcher": false, "name": "dxmd.exe", "os": "win32"}], - "hook": true, - "id": "426529450910547968", - "name": "Deus Ex: Mankind Divided\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "ktane.exe", "os": "win32"}], - "hook": true, - "id": "426531471520563211", - "name": "Keep Talking and Nobody Explodes" - }, - { - "aliases": ["Age of Mythology: Extended Edition"], - "executables": [ - {"is_launcher": false, "name": "age of mythology/aomx.exe", "os": "win32"}, - {"is_launcher": false, "name": "aomx.exe", "os": "win32"} - ], - "hook": true, - "id": "427033332065370132", - "name": "Age of Mythology: Extended Edition" - }, - { - "executables": [{"is_launcher": false, "name": "f1_2015.exe", "os": "win32"}], - "hook": true, - "id": "427304691903365120", - "name": "F1 2015" - }, - { - "executables": [{"is_launcher": false, "name": "overcooked.exe", "os": "win32"}], - "hook": true, - "id": "428052640740540416", - "name": "Overcooked" - }, - { - "aliases": ["The Witcher: Enhanced Edition"], - "executables": [ - {"is_launcher": false, "name": "witcher.exe", "os": "win32"}, - {"is_launcher": false, "name": "the witcher enhanced edition/benioku.exe", "os": "win32"} - ], - "hook": true, - "id": "428052689641930752", - "name": "The Witcher: Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "pickcrafter.exe", "os": "win32"}], - "hook": true, - "id": "428052738140798976", - "name": "PickCrafter" - }, - { - "aliases": [ - "Need for Speed: Most Wanted", - "Need for Speed: Most Wanted (2005)", - "Need for Speed: Most Wanted (2012)" - ], - "executables": [ - {"is_launcher": false, "name": "need for speed - most wanted/speed.exe", "os": "win32"}, - {"is_launcher": false, "name": "nfs13.exe", "os": "win32"} - ], - "hook": true, - "id": "428052828242706433", - "name": "Need for Speed\u2122 Most Wanted" - }, - { - "aliases": ["Just Survive LaunchPad", "Just Survive Launcher"], - "executables": [ - {"is_launcher": false, "name": "just survive/h1z1.exe", "os": "win32"}, - {"is_launcher": false, "name": "just survive/h1z1_be.exe", "os": "win32"} - ], - "hook": true, - "id": "428053249120010241", - "name": "Just Survive", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "one finger death punch.exe", "os": "win32"}], - "hook": true, - "id": "428053322000367616", - "name": "One Finger Death Punch" - }, - { - "aliases": ["Elder Scrolls Legends"], - "executables": [{"is_launcher": false, "name": "the elder scrolls legends.exe", "os": "win32"}], - "hook": true, - "id": "428053383178354688", - "name": "The Elder Scrolls: Legends" - }, - { - "executables": [{"is_launcher": false, "name": "pitpeople.exe", "os": "win32"}], - "hook": true, - "id": "428053560304074752", - "name": "Pit People" - }, - { - "executables": [{"is_launcher": false, "name": "magicduels.exe", "os": "win32"}], - "hook": true, - "id": "428053651932577792", - "name": "Magic Duels" - }, - { - "aliases": ["Star Wars Knights Of The Old Republic II: The Sith Lords"], - "executables": [{"is_launcher": false, "name": "swkotor2.exe", "os": "win32"}], - "hook": true, - "id": "428053722300416010", - "name": "STAR WARS\u2122 Knights of the Old Republic\u2122 II: The Sith Lords\u2122" - }, - { - "aliases": ["Tree of Savior", "Tree of Savior (English Ver.)"], - "executables": [ - {"is_launcher": false, "name": "patch/updater_downloader.exe", "os": "win32"}, - {"is_launcher": false, "name": "release/client_tos_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "client_tos.exe", "os": "win32"} - ], - "hook": true, - "id": "428053768630960128", - "name": "Tree of Savior (English Ver.)" - }, - { - "executables": [{"is_launcher": false, "name": "toribash.exe", "os": "win32"}], - "hook": true, - "id": "428054001502650368", - "name": "Toribash" - }, - { - "aliases": ["STAR WARS\u2122 Jedi Knight: Jedi Academy\u2122", "Star Wars Jedi Knight"], - "executables": [ - {"is_launcher": false, "name": "jediacademy.exe", "os": "win32"}, - {"is_launcher": false, "name": "jamp.exe", "os": "win32"}, - {"is_launcher": false, "name": "gamedata/movieduels.x86.exe", "os": "win32"}, - {"is_launcher": false, "name": "jasp.exe", "os": "win32"} - ], - "hook": true, - "id": "428054061502300160", - "name": "STAR WARS\u2122 Jedi Knight: Jedi Academy\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "fsd-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "428054228511227914", - "name": "Deep Rock Galactic" - }, - { - "executables": [{"is_launcher": false, "name": "stranded_deep_x64.exe", "os": "win32"}], - "hook": true, - "id": "428054462892867614", - "name": "Stranded Deep" - }, - { - "executables": [{"is_launcher": false, "name": "hunt.exe", "os": "win32"}], - "hook": true, - "id": "428054629146951691", - "name": "Hunt: Showdown (Test Server)" - }, - { - "executables": [{"is_launcher": false, "name": "eco.exe", "os": "win32"}], - "hook": true, - "id": "428055174905331712", - "name": "Eco" - }, - { - "executables": [{"is_launcher": false, "name": "hideandshriek-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "428055329004191744", - "name": "Hide and Shriek" - }, - { - "aliases": ["APB Reloaded"], - "executables": [ - {"is_launcher": false, "name": "apb.exe", "os": "win32"}, - {"is_launcher": false, "name": "2012/vcredist_x86.exe", "os": "win32"} - ], - "hook": true, - "id": "428055627030331402", - "name": "APB Reloaded" - }, - { - "executables": [ - {"is_launcher": false, "name": "t6sp.exe", "os": "win32"}, - {"is_launcher": false, "name": "blackopsmp.exe", "os": "win32"}, - {"is_launcher": false, "name": "blackops.exe", "os": "win32"} - ], - "hook": true, - "id": "428055652162732032", - "name": "Call of Duty: Black Ops" - }, - { - "executables": [{"is_launcher": false, "name": "prey.exe", "os": "win32"}], - "hook": true, - "id": "428055981650608128", - "name": "Prey" - }, - { - "executables": [{"is_launcher": false, "name": "metroconflict.exe", "os": "win32"}], - "hook": true, - "id": "428056164698423296", - "name": "Metro Conflict: The Origin" - }, - { - "executables": [{"is_launcher": false, "name": "spelunky.exe", "os": "win32"}], - "hook": true, - "id": "428056413806395392", - "name": "Spelunky" - }, - { - "aliases": ["Total War: MEDIEVAL II - Definitive Edition"], - "executables": [ - {"is_launcher": false, "name": "ss6.3/ss_setup.exe", "os": "win32"}, - {"is_launcher": false, "name": "divide_and_conquer/large address aware.exe", "os": "win32"}, - {"is_launcher": false, "name": "medieval2.exe", "os": "win32"} - ], - "hook": true, - "id": "428057046701572106", - "name": "Medieval II: Total War" - }, - { - "executables": [{"is_launcher": false, "name": "magicka2.exe", "os": "win32"}], - "hook": true, - "id": "428057934983987200", - "name": "Magicka 2" - }, - { - "executables": [{"is_launcher": false, "name": "uno.exe", "os": "win32"}], - "hook": true, - "id": "428058887334264832", - "name": "UNO" - }, - { - "executables": [{"is_launcher": false, "name": "nioh.exe", "os": "win32"}], - "hook": true, - "id": "428059098882506752", - "name": "Nioh: Complete Edition" - }, - { - "executables": [{"is_launcher": false, "name": "relicdow3.exe", "os": "win32"}], - "hook": true, - "id": "428060042248454144", - "name": "Warhammer 40,000: Dawn of War III" - }, - { - "aliases": ["Epic Games Launcher"], - "executables": [ - {"is_launcher": false, "name": "fortniteclient-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "fortniteclient-mac-shipping.app", "os": "darwin"} - ], - "hook": true, - "id": "432980957394370572", - "name": "Fortnite", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "unleash.exe", "os": "win32"}], - "hook": true, - "id": "437391104804126720", - "name": "Unleash" - }, - { - "executables": [{"is_launcher": false, "name": "insulam-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "443136903814971445", - "name": "Estranged: The Departure" - }, - { - "aliases": ["ArcheAge"], - "executables": [{"is_launcher": false, "name": "archeage.exe", "os": "win32"}], - "hook": true, - "id": "443155983670312969", - "name": "Archeage" - }, - { - "aliases": ["Wakfu"], - "executables": [ - {"is_launcher": false, "name": "wakfu.exe", "os": "win32"}, - {"is_launcher": false, "name": "wakfu.app", "os": "darwin"} - ], - "hook": true, - "id": "443155990414622730", - "name": "WAKFU" - }, - { - "aliases": ["Microsoft Flight Simulator X"], - "executables": [{"is_launcher": false, "name": "fsx.exe", "os": "win32"}], - "hook": true, - "id": "443156007544160276", - "name": "Microsoft Flight Simulator X: Steam Edition" - }, - { - "executables": [{"is_launcher": false, "name": "darwin.exe", "os": "win32"}], - "hook": true, - "id": "443156037130780692", - "name": "Darwin Project" - }, - { - "executables": [{"is_launcher": false, "name": "mitosis.exe", "os": "win32"}], - "hook": true, - "id": "443156048992403456", - "name": "Mitos.is: The Game" - }, - { - "executables": [{"is_launcher": false, "name": "genitaljousting.exe", "os": "win32"}], - "hook": true, - "id": "443156066562473993", - "name": "Genital Jousting" - }, - { - "aliases": ["Universe Sandbox 2"], - "executables": [{"is_launcher": false, "name": "universe sandbox x64.exe", "os": "win32"}], - "hook": true, - "id": "443156067434889236", - "name": "Universe Sandbox" - }, - { - "executables": [ - {"is_launcher": false, "name": "aura kingdom/_launcher.exe", "os": "win32"}, - {"is_launcher": false, "name": "aura kingdom/launcher.exe", "os": "win32"} - ], - "hook": true, - "id": "443156075399872522", - "name": "Aura Kingdom" - }, - { - "aliases": ["Far Cry 5"], - "executables": [ - {"is_launcher": false, "name": "farcry5.exe", "os": "win32"}, - {"is_launcher": false, "name": "gamelauncher/uplayinstaller.exe", "os": "win32"} - ], - "hook": true, - "id": "443156340454457344", - "name": "Far Cry 5" - }, - { - "executables": [{"is_launcher": false, "name": "darknessii.exe", "os": "win32"}], - "hook": true, - "id": "443156342115663882", - "name": "The Darkness II" - }, - { - "aliases": ["Star Wars: Empire at War"], - "executables": [ - {"is_launcher": false, "name": "starwarsg.exe", "os": "win32"}, - {"is_launcher": false, "name": "sweaw.exe", "os": "win32"} - ], - "hook": true, - "id": "443156343227023370", - "name": "STAR WARS\u2122 Empire at War: Gold Pack" - }, - { - "executables": [{"is_launcher": false, "name": "blockade3d/main.exe", "os": "win32"}], - "hook": true, - "id": "443156392874868767", - "name": "BLOCKADE 3D" - }, - { - "executables": [{"is_launcher": false, "name": "mindnight.exe", "os": "win32"}], - "hook": true, - "id": "443156444351561738", - "name": "MINDNIGHT" - }, - { - "executables": [{"is_launcher": false, "name": "zombie panic source/zps.exe", "os": "win32"}], - "hook": true, - "id": "443156570847838218", - "name": "Zombie Panic! Source" - }, - { - "executables": [{"is_launcher": false, "name": "just cause 3 multiplayer mod/playjcmp.exe", "os": "win32"}], - "hook": true, - "id": "443156876931235840", - "name": "Just Cause\u2122 3: Multiplayer Mod" - }, - { - "aliases": ["SimCity"], - "executables": [{"is_launcher": false, "name": "simcity.exe", "os": "win32"}], - "hook": true, - "id": "443157047157194772", - "name": "SimCity\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "frostpunk.exe", "os": "win32"}], - "hook": true, - "id": "443157248710148117", - "name": "Frostpunk" - }, - { - "executables": [ - {"is_launcher": false, "name": "hurtworldclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "hurtworld.exe", "os": "win32"} - ], - "hook": true, - "id": "443157375260688395", - "name": "Hurtworld" - }, - { - "executables": [{"is_launcher": false, "name": "moderncombatversus.exe", "os": "win32"}], - "hook": true, - "id": "443157946357252116", - "name": "Modern Combat Versus" - }, - { - "executables": [{"is_launcher": false, "name": "quantumbreak.exe", "os": "win32"}], - "hook": true, - "id": "443158005798928384", - "name": "Quantum Break" - }, - { - "executables": [{"is_launcher": false, "name": "the jackbox party pack 3.exe", "os": "win32"}], - "hook": true, - "id": "443158085247303690", - "name": "The Jackbox Party Pack 3" - }, - { - "executables": [{"is_launcher": false, "name": "tropico 5/appdata.exe", "os": "win32"}], - "hook": true, - "id": "443158178083897375", - "name": "Tropico 5" - }, - { - "executables": [{"is_launcher": false, "name": "radicalheights.exe", "os": "win32"}], - "hook": true, - "id": "443158281624617000", - "name": "Radical Heights" - }, - { - "executables": [{"is_launcher": false, "name": "mysummercar.exe", "os": "win32"}], - "hook": true, - "id": "443158342026788884", - "name": "My Summer Car" - }, - { - "executables": [{"is_launcher": false, "name": "specopstheline.exe", "os": "win32"}], - "hook": true, - "id": "443158504719646739", - "name": "Spec Ops: The Line" - }, - { - "executables": [{"is_launcher": false, "name": "friday the 13th killer puzzle/f13.exe", "os": "win32"}], - "hook": true, - "id": "443158817983692820", - "name": "Friday the 13th: Killer Puzzle" - }, - { - "executables": [ - {"is_launcher": false, "name": "verdun.exe", "os": "win32"}, - {"is_launcher": false, "name": "1914-1918 series.exe", "os": "win32"} - ], - "hook": true, - "id": "443159293538205697", - "name": "Verdun" - }, - { - "executables": [{"is_launcher": false, "name": "wog/disasm.exe", "os": "win32"}], - "hook": true, - "id": "443159499512086539", - "name": "World of Guns: Gun Disassembly" - }, - { - "executables": [{"is_launcher": false, "name": "nms.exe", "os": "win32"}], - "hook": true, - "id": "443159611479031808", - "name": "No Man's Sky" - }, - { - "executables": [{"is_launcher": false, "name": "ylands.exe", "os": "win32"}], - "hook": true, - "id": "443159628185075722", - "name": "Ylands" - }, - { - "executables": [{"is_launcher": false, "name": "re7.exe", "os": "win32"}], - "hook": true, - "id": "443160369192632330", - "name": "RESIDENT EVIL 7 biohazard / BIOHAZARD 7 resident evil" - }, - { - "executables": [{"is_launcher": false, "name": "battletech.exe", "os": "win32"}], - "hook": true, - "id": "443160562088673285", - "name": "BATTLETECH" - }, - { - "executables": [{"is_launcher": false, "name": "superhexagon.exe", "os": "win32"}], - "hook": true, - "id": "443161212969156608", - "name": "Super Hexagon" - }, - { - "executables": [{"is_launcher": false, "name": "pixark.exe", "os": "win32"}], - "hook": true, - "id": "443165450424156160", - "name": "PixARK" - }, - { - "executables": [{"is_launcher": false, "name": "spiral knights/java_vm/bin/javaw.exe", "os": "win32"}], - "hook": true, - "id": "443168429990477844", - "name": "Spiral Knights" - }, - { - "executables": [{"is_launcher": false, "name": "satellitereignwindows.exe", "os": "win32"}], - "hook": true, - "id": "443198577687134218", - "name": "Satellite Reign" - }, - { - "executables": [{"is_launcher": false, "name": "pillarsofeternity.exe", "os": "win32"}], - "hook": true, - "id": "443198850119892992", - "name": "Pillars of Eternity" - }, - { - "executables": [ - {"is_launcher": false, "name": "conansandbox.exe", "os": "win32"}, - {"is_launcher": false, "name": "conansandbox_be.exe", "os": "win32"} - ], - "hook": true, - "id": "443524051999260672", - "name": "Conan Exiles" - }, - { - "executables": [{"is_launcher": false, "name": "maniaplanet_tmstadium/maniaplanet.exe", "os": "win32"}], - "hook": true, - "id": "444200321179451412", - "name": "TrackMania\u00b2 Stadium" - }, - { - "aliases": ["Need For Speed 2016"], - "executables": [{"is_launcher": false, "name": "nfs16.exe", "os": "win32"}], - "hook": true, - "id": "444540143890726940", - "name": "Need for Speed\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "day of defeat source/hl2.exe", "os": "win32"}], - "hook": true, - "id": "444720426934075393", - "name": "Day of Defeat: Source" - }, - { - "executables": [{"is_launcher": false, "name": "dungeonoftheendless.exe", "os": "win32"}], - "hook": true, - "id": "444853958977126400", - "name": "Dungeon of the Endless", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "endlesslegend.exe", "os": "win32"}], - "hook": true, - "id": "445329750819602433", - "name": "Endless Legend", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "deep space waifu.exe", "os": "win32"}], - "hook": true, - "id": "445783564257067008", - "name": "DEEP SPACE WAIFU" - }, - { - "executables": [{"is_launcher": false, "name": "marssteam.exe", "os": "win32"}], - "hook": true, - "id": "445996079352250368", - "name": "Surviving Mars" - }, - { - "aliases": ["Dragon Age: Inquisition"], - "executables": [{"is_launcher": false, "name": "dragonageinquisition.exe", "os": "win32"}], - "hook": true, - "id": "446061700496621578", - "name": "Dragon Age\u2122: Inquisition" - }, - { - "aliases": ["Mass Effect: Andromeda"], - "executables": [{"is_launcher": false, "name": "masseffectandromeda.exe", "os": "win32"}], - "hook": true, - "id": "446061836807307301", - "name": "Mass Effect\u2122: Andromeda" - }, - { - "executables": [{"is_launcher": false, "name": "crossfire.exe", "os": "win32"}], - "hook": true, - "id": "446061929283321856", - "name": "CrossFire" - }, - { - "executables": [{"is_launcher": false, "name": "toontown rewritten/ttrengine.exe", "os": "win32"}], - "hook": true, - "id": "446062074842447909", - "name": "Toontown Rewritten" - }, - { - "aliases": ["Survarium-Steam"], - "executables": [{"is_launcher": false, "name": "survarium.exe", "os": "win32"}], - "hook": true, - "id": "446062275925770270", - "name": "Survarium" - }, - { - "aliases": ["Plants vs Zombies Garden Warfare 2"], - "executables": [{"is_launcher": false, "name": "gw2.main_win64_retail.exe", "os": "win32"}], - "hook": true, - "id": "446063035057045534", - "name": "Plants vs Zombies GW2" - }, - { - "aliases": ["Project64 version 2.3.0.210"], - "executables": [{"is_launcher": false, "name": "project64.exe", "os": "win32"}], - "hook": true, - "id": "446063198198693898", - "name": "Project64" - }, - { - "aliases": ["Armored Warfare MyCom"], - "executables": [{"is_launcher": false, "name": "armoredwarfare.exe", "os": "win32"}], - "hook": true, - "id": "446063355594145823", - "name": "Armored Warfare", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "expendabros.exe", "os": "win32"}], - "hook": true, - "id": "446069736250277888", - "name": "The Expendabros" - }, - { - "executables": [{"is_launcher": false, "name": "mountyourfriends.exe", "os": "win32"}], - "hook": true, - "id": "446105070057029663", - "name": "Mount Your Friends" - }, - { - "executables": [{"is_launcher": false, "name": "pcars2avx.exe", "os": "win32"}], - "hook": true, - "id": "446380370733039616", - "name": "Project CARS 2" - }, - { - "aliases": ["Shakes and Fidget"], - "executables": [ - {"is_launcher": false, "name": "shakes and fidget.exe", "os": "win32"}, - {"is_launcher": false, "name": "shakes & fidget/shakesandfidget.exe", "os": "win32"} - ], - "hook": true, - "id": "447038538383622145", - "name": "Shakes and Fidget" - }, - { - "executables": [{"is_launcher": false, "name": "sas4-win.exe", "os": "win32"}], - "hook": true, - "id": "447184346252836864", - "name": "SAS: Zombie Assault 4" - }, - { - "executables": [{"is_launcher": false, "name": "awesomenauts.exe", "os": "win32"}], - "hook": true, - "id": "447488337519968257", - "name": "Awesomenauts" - }, - { - "executables": [{"is_launcher": false, "name": "yumenikki/rpg_rt.exe", "os": "win32"}], - "hook": true, - "id": "447509870510473216", - "name": "Yume Nikki" - }, - { - "executables": [{"is_launcher": false, "name": "holdfast naw.exe", "os": "win32"}], - "hook": true, - "id": "447728433037049876", - "name": "Holdfast: Nations At War" - }, - { - "executables": [{"is_launcher": false, "name": "learn to fly 3.exe", "os": "win32"}], - "hook": true, - "id": "447743861549432833", - "name": "Learn to Fly 3" - }, - { - "executables": [{"is_launcher": false, "name": "stories.exe", "os": "win32"}], - "hook": true, - "id": "448044587580260363", - "name": "Stories: The Path of Destinies" - }, - { - "executables": [{"is_launcher": false, "name": "layers of fear.exe", "os": "win32"}], - "hook": true, - "id": "448120144775086080", - "name": "Layers of Fear" - }, - { - "executables": [ - {"is_launcher": false, "name": "star trek online/live/gameclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "star trek online/live/x64/gameclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "star trek online/live/x86/gameclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "star trek online.exe", "os": "win32"} - ], - "hook": true, - "id": "448384255131779073", - "name": "Star Trek Online" - }, - { - "executables": [{"is_launcher": false, "name": "minionmasters.exe", "os": "win32"}], - "hook": true, - "id": "448417850466762753", - "name": "Minion Masters" - }, - { - "aliases": ["Warhammer 40,000: Dawn of War - Soulstorm", "Warhammer 40K: Dawn of War Soulstorm"], - "executables": [ - {"is_launcher": false, "name": "dawn of war soulstorm/dow mod manager v2.1.5.exe", "os": "win32"}, - {"is_launcher": false, "name": "unification_bugfix/unification_configurator_1.0.0.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/dow mod manager v2.3.2.2.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/dow mod manager v2.1.9.exe", "os": "win32"}, - {"is_launcher": false, "name": "soulstorm.exe", "os": "win32"}, - {"is_launcher": false, "name": "unification_bugfix/unification configurator 1.0.2.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/dow mod manager v1.52.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/dow mod manager 1.3.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/dow mod manager v2.1.3.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/tyranid_mod_0.5b3_installer.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/graphicsconfig.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/tyranidsuninstall.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/dow mod manager v1.4.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/4gb_patch.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/dow mod manager v2.1.6.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war soulstorm/dow mod manager v2.3.1.0.exe", "os": "win32"} - ], - "hook": true, - "id": "448448339386695690", - "name": "Warhammer 40,000: Dawn of War - Soulstorm", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "ultimate epic battle simulator/uebs.exe", "os": "win32"}], - "hook": true, - "id": "448537306345898014", - "name": "Ultimate Epic Battle Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "terratechwin32.exe", "os": "win32"}], - "hook": true, - "id": "448560544778289152", - "name": "TerraTech" - }, - { - "executables": [{"is_launcher": false, "name": "airmech.exe", "os": "win32"}], - "hook": true, - "id": "448622851386376202", - "name": "AirMech Strike" - }, - { - "executables": [{"is_launcher": false, "name": "mudrunner.exe", "os": "win32"}], - "hook": true, - "id": "448910307969204236", - "name": "Spintires: MudRunner" - }, - { - "executables": [{"is_launcher": false, "name": "alien swarm/swarm.exe", "os": "win32"}], - "hook": true, - "id": "449531408730423296", - "name": "Alien Swarm" - }, - { - "executables": [{"is_launcher": false, "name": "hacknet.exe", "os": "win32"}], - "hook": true, - "id": "449639683740270612", - "name": "Hacknet" - }, - { - "executables": [{"is_launcher": false, "name": "quakechampions.exe", "os": "win32"}], - "hook": true, - "id": "449682899596214283", - "name": "Quake Champions", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "ironsnout.exe", "os": "win32"}], - "hook": true, - "id": "449684687011708928", - "name": "Iron Snout" - }, - { - "aliases": ["DARK SOULS\u2122: REMASTERED", "Dark Souls"], - "executables": [ - {"is_launcher": false, "name": "dark souls remastered/darksoulsitemrandomizer.exe", "os": "win32"}, - {"is_launcher": false, "name": "dark souls remastered/enemyrandomizer.exe", "os": "win32"}, - {"is_launcher": false, "name": "darksoulsremastered.exe", "os": "win32"}, - {"is_launcher": false, "name": "darksouls.exe", "os": "win32"} - ], - "hook": true, - "id": "449738622619353088", - "name": "DARK SOULS\u2122: REMASTERED" - }, - { - "executables": [{"is_launcher": false, "name": "raft.exe", "os": "win32"}], - "hook": true, - "id": "449806905901056012", - "name": "Raft" - }, - { - "executables": [{"is_launcher": false, "name": "dungreed.exe", "os": "win32"}], - "hook": true, - "id": "449885746799575040", - "name": "Dungreed" - }, - { - "aliases": ["Grand Theft Auto 4", "Grand Theft Auto IV: The Complete Edition"], - "executables": [ - {"is_launcher": false, "name": "gtaiv/playgtaiv.exe", "os": "win32"}, - {"is_launcher": false, "name": "gtaiv.exe", "os": "win32"} - ], - "hook": true, - "id": "450005834672373760", - "name": "Grand Theft Auto IV" - }, - { - "executables": [{"is_launcher": false, "name": "synergy.exe", "os": "win32"}], - "hook": true, - "id": "450021409700446208", - "name": "Synergy" - }, - { - "executables": [{"is_launcher": false, "name": "wizardoflegend.exe", "os": "win32"}], - "hook": true, - "id": "450024058348634112", - "name": "Wizard of Legend" - }, - { - "aliases": ["KRITIKA"], - "executables": [{"is_launcher": false, "name": "kritika_client.exe", "os": "win32"}], - "hook": true, - "id": "450129940051001354", - "name": "Kritika Online" - }, - { - "aliases": ["Mirror's Edge"], - "executables": [ - {"is_launcher": false, "name": "physx/physx_systemsoftware.exe", "os": "win32"}, - {"is_launcher": false, "name": "mirrorsedge.exe", "os": "win32"} - ], - "hook": true, - "id": "450145899063017492", - "name": "Mirror's Edge" - }, - { - "executables": [{"is_launcher": false, "name": "cms2015.exe", "os": "win32"}], - "hook": true, - "id": "450273108859813888", - "name": "Car Mechanic Simulator 2015" - }, - { - "executables": [{"is_launcher": false, "name": "double action/hl2.exe", "os": "win32"}], - "hook": true, - "id": "450292948911915008", - "name": "Double Action: Boogaloo" - }, - { - "aliases": ["Star Wars Knights Of The Old Republic"], - "executables": [{"is_launcher": false, "name": "swkotor.exe", "os": "win32"}], - "hook": true, - "id": "450293931301666826", - "name": "STAR WARS\u2122: Knights of the Old Republic\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "the stanley parable/stanley.exe", "os": "win32"}], - "hook": true, - "id": "450401603669721089", - "name": "The Stanley Parable" - }, - { - "executables": [{"is_launcher": false, "name": "tyranny.exe", "os": "win32"}], - "hook": true, - "id": "450668558465368074", - "name": "Tyranny" - }, - { - "executables": [{"is_launcher": false, "name": "empyrion - galactic survival/empyrion.exe", "os": "win32"}], - "hook": true, - "id": "450804667748843520", - "name": "Empyrion - Galactic Survival" - }, - { - "executables": [{"is_launcher": false, "name": "bless online/binaries/win64/bless.exe", "os": "win32"}], - "hook": true, - "id": "451132630390538270", - "name": "Bless Online" - }, - { - "executables": [{"is_launcher": false, "name": "60seconds.exe", "os": "win32"}], - "hook": true, - "id": "451336909831012383", - "name": "60 Seconds!" - }, - { - "aliases": ["The Escapists"], - "executables": [ - {"is_launcher": false, "name": "the escapists/theescapists_eur.exe", "os": "win32"}, - {"is_launcher": false, "name": "theescapists.exe", "os": "win32"} - ], - "hook": true, - "id": "451429730416197669", - "name": "The Escapists" - }, - { - "executables": [{"is_launcher": false, "name": "dauntless-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "451468933057347603", - "name": "Dauntless" - }, - { - "aliases": ["Dragon Age: Origins - Ultimate Edition"], - "executables": [ - {"is_launcher": false, "name": "bin_ship/daoriginsconfig.exe", "os": "win32"}, - {"is_launcher": false, "name": "redist/dauservicesetup_steam.exe", "os": "win32"}, - {"is_launcher": false, "name": "bin_ship/daupdater.exe", "os": "win32"}, - {"is_launcher": false, "name": "daorigins.exe", "os": "win32"} - ], - "hook": true, - "id": "451538960305618952", - "name": "Dragon Age: Origins - Ultimate Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "total war saga thrones of britannia/thrones.exe", "os": "win32"} - ], - "hook": true, - "id": "451539017381576704", - "name": "Total War Saga: Thrones of Britannia" - }, - { - "executables": [{"is_launcher": false, "name": "okami.exe", "os": "win32"}], - "hook": true, - "id": "451539083966283776", - "name": "OKAMI HD / \u5927\u795e \u7d76\u666f\u7248" - }, - { - "executables": [{"is_launcher": false, "name": "adventure-communist.exe", "os": "win32"}], - "hook": true, - "id": "451539129973604352", - "name": "AdVenture Communist" - }, - { - "executables": [{"is_launcher": false, "name": "gop3.exe", "os": "win32"}], - "hook": true, - "id": "451539151678865409", - "name": "Governor of Poker 3" - }, - { - "executables": [{"is_launcher": false, "name": "wormsrevolution.exe", "os": "win32"}], - "hook": true, - "id": "451539172763762688", - "name": "Worms Revolution" - }, - { - "executables": [{"is_launcher": false, "name": "lanoire.exe", "os": "win32"}], - "hook": true, - "id": "451539180682739732", - "name": "L.A. Noire" - }, - { - "aliases": ["Morrowind Launcher", "The Elder Scrolls III: Morrowind"], - "executables": [ - {"is_launcher": false, "name": "morrowind/morrowind code patch.exe", "os": "win32"}, - {"is_launcher": false, "name": "morrowind/mgexegui.exe", "os": "win32"}, - {"is_launcher": false, "name": "mlox/mlox.exe", "os": "win32"}, - {"is_launcher": false, "name": "morrowind/moinstaller.exe", "os": "win32"}, - {"is_launcher": false, "name": "morrowind.exe", "os": "win32"} - ], - "hook": true, - "id": "451539197044719616", - "name": "The Elder Scrolls III: Morrowind", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "armello.exe", "os": "win32"}], - "hook": true, - "id": "451539293173841949", - "name": "Armello" - }, - { - "executables": [{"is_launcher": false, "name": "nba2k18.exe", "os": "win32"}], - "hook": true, - "id": "451539322965852185", - "name": "NBA 2K18" - }, - { - "executables": [ - {"is_launcher": false, "name": "mwoclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "mechwarrioronline.exe", "os": "win32"} - ], - "hook": true, - "id": "451539349142634496", - "name": "MechWarrior Online" - }, - { - "aliases": ["Resident Evil 5"], - "executables": [{"is_launcher": false, "name": "re5dx9.exe", "os": "win32"}], - "hook": true, - "id": "451539402896703490", - "name": "Resident Evil 5 / Biohazard 5" - }, - { - "executables": [{"is_launcher": false, "name": "houseflipper.exe", "os": "win32"}], - "hook": true, - "id": "451539472610492426", - "name": "House Flipper" - }, - { - "aliases": ["Sleeping Dogs: Definitive Edition"], - "executables": [{"is_launcher": false, "name": "sdhdship.exe", "os": "win32"}], - "hook": true, - "id": "451539490574434315", - "name": "Sleeping Dogs: Definitive Edition" - }, - { - "aliases": ["Final Fantasy VII"], - "executables": [{"is_launcher": false, "name": "ff7_en.exe", "os": "win32"}], - "hook": true, - "id": "451539606207463424", - "name": "FINAL FANTASY VII" - }, - { - "executables": [{"is_launcher": false, "name": "hwr.exe", "os": "win32"}], - "hook": true, - "id": "451539639811964928", - "name": "Heroes of Hammerwatch" - }, - { - "executables": [{"is_launcher": false, "name": "youtuberslife.exe", "os": "win32"}], - "hook": true, - "id": "451539649656127488", - "name": "Youtubers Life" - }, - { - "aliases": ["Resident Evil 4 HD"], - "executables": [{"is_launcher": false, "name": "bio4.exe", "os": "win32"}], - "hook": true, - "id": "451539772037398560", - "name": "resident evil 4 / biohazard 4" - }, - { - "executables": [{"is_launcher": false, "name": "stateofdecay.exe", "os": "win32"}], - "hook": true, - "id": "451539805860528128", - "name": "State of Decay: Year-One" - }, - { - "executables": [{"is_launcher": false, "name": "argobattleye.exe", "os": "win32"}], - "hook": true, - "id": "451539926417408000", - "name": "Argo" - }, - { - "executables": [ - {"is_launcher": false, "name": "eseaclientsteam.exe", "os": "win32"}, - {"is_launcher": false, "name": "eseaclient.exe", "os": "win32"} - ], - "hook": true, - "id": "451539971283877888", - "name": "ESEA" - }, - { - "executables": [{"is_launcher": false, "name": "zat.exe", "os": "win32"}], - "hook": true, - "id": "451539976908439552", - "name": "Zombie Army Trilogy" - }, - { - "executables": [ - {"is_launcher": false, "name": "iw5sp.exe", "os": "win32"}, - {"is_launcher": false, "name": "iw5mp.exe", "os": "win32"} - ], - "hook": true, - "id": "451539986144296969", - "name": "Call of Duty: Modern Warfare 3" - }, - { - "executables": [{"is_launcher": false, "name": "horizon source/gameclient.exe", "os": "win32"}], - "hook": true, - "id": "451540115437912064", - "name": "Horizon Source" - }, - { - "executables": [{"is_launcher": false, "name": "yetanotherzombiedefense.exe", "os": "win32"}], - "hook": true, - "id": "451540166037995532", - "name": "Yet Another Zombie Defense" - }, - { - "executables": [{"is_launcher": false, "name": "cpucores/cpucores.exe", "os": "win32"}], - "hook": true, - "id": "451540177131798541", - "name": "CPUCores :: Maximize Your FPS" - }, - { - "executables": [{"is_launcher": false, "name": "wargame3.exe", "os": "win32"}], - "hook": true, - "id": "451540284006858772", - "name": "Wargame: Red Dragon" - }, - { - "aliases": ["Resident Evil 6"], - "executables": [{"is_launcher": false, "name": "bh6.exe", "os": "win32"}], - "hook": true, - "id": "451540292458512394", - "name": "Resident Evil 6 / Biohazard 6" - }, - { - "executables": [{"is_launcher": false, "name": "castleminerz.exe", "os": "win32"}], - "hook": true, - "id": "451540363941904385", - "name": "CastleMiner Z" - }, - { - "aliases": ["Lord of the Rings Online"], - "executables": [{"is_launcher": false, "name": "lotroclient.exe", "os": "win32"}], - "hook": true, - "id": "451540469470593024", - "name": "The Lord of the Rings Online\u2122", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "ftk.exe", "os": "win32"}], - "hook": true, - "id": "451540626270584833", - "name": "For The King" - }, - { - "executables": [{"is_launcher": false, "name": "justcause2.exe", "os": "win32"}], - "hook": true, - "id": "451540656494477312", - "name": "Just Cause 2" - }, - { - "executables": [{"is_launcher": false, "name": "rxgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "451540746592321536", - "name": "Gigantic" - }, - { - "executables": [{"is_launcher": false, "name": "dow2.exe", "os": "win32"}], - "hook": true, - "id": "451540774530711572", - "name": "Dawn of War II - Retribution" - }, - { - "executables": [{"is_launcher": false, "name": "paintthetownred.exe", "os": "win32"}], - "hook": true, - "id": "451540782785101834", - "name": "Paint the Town Red" - }, - { - "executables": [{"is_launcher": false, "name": "black mesa/bms.exe", "os": "win32"}], - "hook": true, - "id": "451540911172747284", - "name": "Black Mesa" - }, - { - "executables": [{"is_launcher": false, "name": "vindictus.exe", "os": "win32"}], - "hook": true, - "id": "451541058497675294", - "name": "Vindictus" - }, - { - "aliases": ["Batman: Arkham City", "Batman: Arkham City GOTY"], - "executables": [ - {"is_launcher": false, "name": "batmanac.exe", "os": "win32"}, - {"is_launcher": false, "name": "setup/vcredist_x86.exe", "os": "win32"} - ], - "hook": true, - "id": "451541064545861632", - "name": "Batman: Arkham City GOTY" - }, - { - "executables": [{"is_launcher": false, "name": "night in the woods.exe", "os": "win32"}], - "hook": true, - "id": "451541089912881162", - "name": "Night in the Woods" - }, - { - "executables": [{"is_launcher": false, "name": "doorkickers.exe", "os": "win32"}], - "hook": true, - "id": "451541104643538944", - "name": "Door Kickers" - }, - { - "executables": [{"is_launcher": false, "name": "warmode/warmode.exe", "os": "win32"}], - "hook": true, - "id": "451541174877159430", - "name": "WARMODE" - }, - { - "executables": [{"is_launcher": false, "name": "sniperghostwarrior2.exe", "os": "win32"}], - "hook": true, - "id": "451541277935140874", - "name": "Sniper Ghost Warrior 2" - }, - { - "aliases": ["Battlefield: Bad Company\u2122 2"], - "executables": [ - {"is_launcher": false, "name": "punkbuster/pbsvc_bc2.exe", "os": "win32"}, - {"is_launcher": false, "name": "bfbc2game.exe", "os": "win32"} - ], - "hook": true, - "id": "451541573742755850", - "name": "Battlefield: Bad Company 2" - }, - { - "aliases": ["Limbo"], - "executables": [{"is_launcher": false, "name": "limbo.exe", "os": "win32"}], - "hook": true, - "id": "451541581778911262", - "name": "LIMBO" - }, - { - "aliases": ["HELLDIVERS"], - "executables": [{"is_launcher": false, "name": "helldivers.exe", "os": "win32"}], - "hook": true, - "id": "451541695771967508", - "name": "HELLDIVERS\u2122" - }, - { - "executables": [ - {"is_launcher": false, "name": "teeworlds.app", "os": "darwin"}, - {"is_launcher": false, "name": "teeworlds.exe", "os": "win32"} - ], - "hook": true, - "id": "451541853418815498", - "name": "Teeworlds" - }, - { - "aliases": ["Moonbase Alpha"], - "executables": [ - {"is_launcher": false, "name": "physx/physx_8.10.29_systemsoftware.exe", "os": "win32"}, - {"is_launcher": false, "name": "moonbasealphagame.exe", "os": "win32"} - ], - "hook": true, - "id": "451541936872882186", - "name": "Moonbase Alpha" - }, - { - "executables": [{"is_launcher": false, "name": "mcosu/mcengine.exe", "os": "win32"}], - "hook": true, - "id": "451541958268157952", - "name": "McOsu" - }, - { - "executables": [{"is_launcher": false, "name": "loading screen simulator/lss.exe", "os": "win32"}], - "hook": true, - "id": "451542208257064961", - "name": "Loading Screen Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "swrepubliccommando.exe", "os": "win32"}], - "hook": true, - "id": "451542291635503124", - "name": "STAR WARS\u2122 Republic Commando" - }, - { - "aliases": ["The Lab"], - "executables": [ - {"is_launcher": false, "name": "thelab.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/secretshop.exe", "os": "win32"} - ], - "hook": true, - "id": "451542394857455638", - "name": "The Lab" - }, - { - "executables": [ - {"is_launcher": false, "name": "citra-qt.app", "os": "darwin"}, - {"is_launcher": false, "name": "citra-qt.exe", "os": "win32"} - ], - "hook": true, - "id": "451542523219935272", - "name": "Citra" - }, - { - "executables": [{"is_launcher": false, "name": "saofb-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "451542793513598996", - "name": "Sword Art Online: Fatal Bullet" - }, - { - "executables": [{"is_launcher": false, "name": "bit heroes.exe", "os": "win32"}], - "hook": true, - "id": "451542845703061524", - "name": "Bit Heroes" - }, - { - "aliases": ["Orcs Must Die! 2"], - "executables": [ - {"is_launcher": false, "name": "installer/vcredist_x86.exe", "os": "win32"}, - {"is_launcher": false, "name": "orcsmustdie2.exe", "os": "win32"} - ], - "hook": true, - "id": "451543160057888778", - "name": "Orcs Must Die! 2" - }, - { - "aliases": ["DC Universe Online Live"], - "executables": [{"is_launcher": false, "name": "dcgame.exe", "os": "win32"}], - "hook": true, - "id": "451543277385023488", - "name": "DC Universe Online" - }, - { - "aliases": ["Guilty Gear Xrd -REVELATOR-"], - "executables": [ - {"is_launcher": false, "name": "guiltygearxrd.exe", "os": "win32"}, - {"is_launcher": false, "name": "guilty gear xrd -revelator-/binaries/win32/bootggxrd.exe", "os": "win32"} - ], - "hook": true, - "id": "451543838847139850", - "name": "GUILTY GEAR Xrd -REVELATOR-" - }, - { - "executables": [{"is_launcher": false, "name": "battleroyaletrainer-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "451543838989746186", - "name": "Battle Royale Trainer" - }, - { - "aliases": ["Rise of Nations Extended", "Rise of Nations: Extended Edition"], - "executables": [ - {"is_launcher": false, "name": "rise of nations/patriots.exe", "os": "win32"}, - {"is_launcher": false, "name": "rise of nations/riseofnations.exe", "os": "win32"} - ], - "hook": true, - "id": "451543839665160232", - "name": "Rise of Nations: Extended Edition" - }, - { - "executables": [{"is_launcher": false, "name": "the jackbox party pack 2.exe", "os": "win32"}], - "hook": true, - "id": "451543877111775247", - "name": "The Jackbox Party Pack 2" - }, - { - "executables": [{"is_launcher": false, "name": "aion.bin", "os": "win32"}], - "hook": true, - "id": "451543892358201393", - "name": "Aion" - }, - { - "executables": [{"is_launcher": false, "name": "alien isolation/ai.exe", "os": "win32"}], - "hook": true, - "id": "451543893050261504", - "name": "Alien: Isolation" - }, - { - "executables": [{"is_launcher": false, "name": "sins of a solar empire rebellion.exe", "os": "win32"}], - "hook": true, - "id": "451543958611427328", - "name": "Sins of a Solar Empire: Rebellion" - }, - { - "aliases": ["Dragon Ball XenoVerse"], - "executables": [{"is_launcher": false, "name": "dbxv.exe", "os": "win32"}], - "hook": true, - "id": "451543960167514112", - "name": "DRAGON BALL XENOVERSE" - }, - { - "executables": [{"is_launcher": false, "name": "supremecommander.exe", "os": "win32"}], - "hook": true, - "id": "451543961207701534", - "name": "Supreme Commander: Forged Alliance" - }, - { - "executables": [{"is_launcher": false, "name": "spellsworn-win64-test.exe", "os": "win32"}], - "hook": true, - "id": "451544008737423360", - "name": "Spellsworn" - }, - { - "aliases": ["Mass Effect 3"], - "executables": [{"is_launcher": false, "name": "masseffect3.exe", "os": "win32"}], - "hook": true, - "id": "451544148617592832", - "name": "Mass Effect\u2122 3" - }, - { - "executables": [{"is_launcher": false, "name": "superhotvr.exe", "os": "win32"}], - "hook": true, - "id": "451544150756556810", - "name": "SUPERHOT VR" - }, - { - "aliases": ["Grand Theft Auto: Vice City"], - "executables": [ - {"is_launcher": false, "name": "gta--vc.exe", "os": "win32"}, - {"is_launcher": false, "name": "grand theft auto vice city/testapp.exe", "os": "win32"}, - {"is_launcher": false, "name": "gta-vc.exe", "os": "win32"} - ], - "hook": true, - "id": "451544294432702474", - "name": "Grand Theft Auto: Vice City" - }, - { - "aliases": ["Digimon Masters Online"], - "executables": [ - {"is_launcher": false, "name": "digimon masters online - steam/updatemanager.exe", "os": "win32"}, - {"is_launcher": false, "name": "digimon masters online - steam/gdmo.exe", "os": "win32"}, - {"is_launcher": false, "name": "dmlauncher.exe", "os": "win32"} - ], - "hook": true, - "id": "451544305509859328", - "name": "Digimon Masters Online" - }, - { - "aliases": ["Mirror's Edge: Catalyst"], - "executables": [{"is_launcher": false, "name": "mirrorsedgecatalyst.exe", "os": "win32"}], - "hook": true, - "id": "451544331287789568", - "name": "Mirror's Edge\u2122 Catalyst" - }, - { - "aliases": ["Anno 2070"], - "executables": [{"is_launcher": false, "name": "anno5.exe", "os": "win32"}], - "hook": true, - "id": "451544339416481828", - "name": "ANNO 2070" - }, - { - "aliases": ["Life is Feudal"], - "executables": [{"is_launcher": false, "name": "life is feudal mmo/game/eu/cm_client.exe", "os": "win32"}], - "hook": true, - "id": "451544345699549194", - "name": "Life is Feudal: MMO" - }, - { - "executables": [{"is_launcher": false, "name": "faeria.exe", "os": "win32"}], - "hook": true, - "id": "451544379908423680", - "name": "Faeria" - }, - { - "executables": [ - {"is_launcher": false, "name": "everlasting summer.exe", "os": "win32"}, - {"is_launcher": false, "name": "everlasting summer.app", "os": "darwin"} - ], - "hook": true, - "id": "451544422711033856", - "name": "Everlasting Summer" - }, - { - "executables": [{"is_launcher": false, "name": "dnl.exe", "os": "win32"}], - "hook": true, - "id": "451544430025900062", - "name": "Dark and Light" - }, - { - "executables": [{"is_launcher": false, "name": "steeldivision.exe", "os": "win32"}], - "hook": true, - "id": "451544463941304350", - "name": "Steel Division: Normandy 44" - }, - { - "executables": [{"is_launcher": false, "name": "machine for pigs/aamfp.exe", "os": "win32"}], - "hook": true, - "id": "451544639674253322", - "name": "Amnesia: A Machine for Pigs" - }, - { - "executables": [{"is_launcher": false, "name": "rwby-ge.exe", "os": "win32"}], - "hook": true, - "id": "451544645852332032", - "name": "RWBY: Grimm Eclipse" - }, - { - "executables": [{"is_launcher": false, "name": "dmc-devilmaycry.exe", "os": "win32"}], - "hook": true, - "id": "451544650009018368", - "name": "DmC Devil May Cry" - }, - { - "executables": [{"is_launcher": false, "name": "supremecommander2.exe", "os": "win32"}], - "hook": true, - "id": "451544676458037258", - "name": "Supreme Commander 2" - }, - { - "aliases": ["Deus Ex: Human Revolution"], - "executables": [ - {"is_launcher": false, "name": "dxhr.exe", "os": "win32"}, - {"is_launcher": false, "name": "dxhrdc.exe", "os": "win32"} - ], - "hook": true, - "id": "451544688713793536", - "name": "Deus Ex: Human Revolution - Director's Cut" - }, - { - "aliases": ["FreeStyle 2: Street Basketball", "Freestyle 2: Street Basketball"], - "executables": [ - {"is_launcher": false, "name": "freestyle2.exe", "os": "win32"}, - {"is_launcher": false, "name": "freestyle2/changebin.exe", "os": "win32"} - ], - "hook": true, - "id": "451544694267183104", - "name": "FreeStyle 2: Street Basketball" - }, - { - "executables": [{"is_launcher": false, "name": "furi.exe", "os": "win32"}], - "hook": true, - "id": "451544694598533120", - "name": "Furi" - }, - { - "executables": [{"is_launcher": false, "name": "ssfiv.exe", "os": "win32"}], - "hook": true, - "id": "451544694917169162", - "name": "Ultra Street Fighter IV" - }, - { - "aliases": ["Rift"], - "executables": [ - {"is_launcher": false, "name": "rift.exe", "os": "win32"}, - {"is_launcher": false, "name": "rift_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "rift/glyphclientapp.exe", "os": "win32"} - ], - "hook": true, - "id": "451544729763446784", - "name": "RIFT" - }, - { - "executables": [{"is_launcher": false, "name": "oneshot.exe", "os": "win32"}], - "hook": true, - "id": "451544770876145664", - "name": "OneShot" - }, - { - "executables": [{"is_launcher": false, "name": "highoctanedrift.exe", "os": "win32"}], - "hook": true, - "id": "451544776895103006", - "name": "High Octane Drift" - }, - { - "executables": [{"is_launcher": false, "name": "ruiner-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "451544819555237888", - "name": "RUINER" - }, - { - "aliases": ["Phantasy Star Online 2", "Phantasy Star Online 2 New Genesis"], - "executables": [ - {"is_launcher": false, "name": "pso2.exe", "os": "win32"}, - {"is_launcher": false, "name": "pso2_bin/gameguard.des", "os": "win32"} - ], - "hook": true, - "id": "451544889331679242", - "name": "PHANTASY STAR ONLINE 2" - }, - { - "executables": [{"is_launcher": false, "name": "swordwithsauce-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "451544945984012288", - "name": "Sword With Sauce: Alpha" - }, - { - "aliases": ["Mass Effect"], - "executables": [{"is_launcher": false, "name": "masseffect.exe", "os": "win32"}], - "hook": true, - "id": "451544965542182942", - "name": "Mass Effect\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "turmoil_pc_full.exe", "os": "win32"}], - "hook": true, - "id": "451545009938759710", - "name": "Turmoil" - }, - { - "executables": [{"is_launcher": false, "name": "wa.exe", "os": "win32"}], - "hook": true, - "id": "451545039139766272", - "name": "Worms Armageddon" - }, - { - "executables": [{"is_launcher": false, "name": "pillarsofeternityii.exe", "os": "win32"}], - "hook": true, - "id": "451545069326041099", - "name": "Pillars of Eternity II: Deadfire" - }, - { - "executables": [{"is_launcher": false, "name": "pc building simulator/pcbs.exe", "os": "win32"}], - "hook": true, - "id": "451545070739652608", - "name": "PC Building Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "streetsofrogue.exe", "os": "win32"}], - "hook": true, - "id": "451545147361067008", - "name": "Streets of Rogue" - }, - { - "executables": [{"is_launcher": false, "name": "hma.exe", "os": "win32"}], - "hook": true, - "id": "451545240264769547", - "name": "Hitman: Absolution", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2017/fm.exe", "os": "win32"}], - "hook": true, - "id": "451545279154487306", - "name": "Football Manager 2017" - }, - { - "executables": [{"is_launcher": false, "name": "atlas reactor/glyphclientapp.exe", "os": "win32"}], - "hook": true, - "id": "451545283784998934", - "name": "Atlas Reactor" - }, - { - "executables": [{"is_launcher": false, "name": "maxpayne3.exe", "os": "win32"}], - "hook": true, - "id": "451545305201246208", - "name": "Max Payne 3" - }, - { - "executables": [{"is_launcher": false, "name": "stalker shadow of chernobyl/bin/xr_3da.exe", "os": "win32"}], - "hook": true, - "id": "451545336218124289", - "name": "S.T.A.L.K.E.R.: Shadow of Chernobyl" - }, - { - "aliases": ["Rec Room"], - "executables": [ - {"is_launcher": false, "name": "recroom/recroom.exe", "os": "win32"}, - {"is_launcher": false, "name": "recroom_release.exe", "os": "win32"} - ], - "hook": true, - "id": "451545342987468800", - "name": "Rec Room" - }, - { - "executables": [{"is_launcher": false, "name": "portia.exe", "os": "win32"}], - "hook": true, - "id": "451545373740367881", - "name": "My Time At Portia" - }, - { - "executables": [{"is_launcher": false, "name": "lost_castle.exe", "os": "win32"}], - "hook": true, - "id": "451545409253408768", - "name": "Lost Castle" - }, - { - "executables": [{"is_launcher": false, "name": "soda dungeon/dungeon.exe", "os": "win32"}], - "hook": true, - "id": "451545721036996619", - "name": "Soda Dungeon" - }, - { - "aliases": ["Fallout 3 - Game of the Year Edition", "Fallout 3 GOTY edition"], - "executables": [ - {"is_launcher": false, "name": "fallout 3 goty/games for windows live disabler.exe", "os": "win32"}, - {"is_launcher": false, "name": "fallout 3 goty/fose_loader.exe", "os": "win32"}, - {"is_launcher": false, "name": "fallout 3 goty/fallout3 - garden of eden creation kit.exe", "os": "win32"}, - {"is_launcher": false, "name": "fallout 3 goty/4gb_patch.exe", "os": "win32"}, - {"is_launcher": false, "name": "fallout3.exe", "os": "win32"} - ], - "hook": true, - "id": "451545729253638144", - "name": "Fallout 3" - }, - { - "aliases": ["RUNNING WITH RIFLES", "Running with Rifles"], - "executables": [ - {"is_launcher": false, "name": "runningwithrifles/rwr_config.exe", "os": "win32"}, - {"is_launcher": false, "name": "rwr_game.exe", "os": "win32"} - ], - "hook": true, - "id": "451545786946289664", - "name": "RUNNING WITH RIFLES" - }, - { - "executables": [{"is_launcher": false, "name": "emily is away.exe", "os": "win32"}], - "hook": true, - "id": "451545806806319104", - "name": "Emily is Away" - }, - { - "executables": [{"is_launcher": false, "name": "tactical monsters.exe", "os": "win32"}], - "hook": true, - "id": "451545859830710272", - "name": "Tactical Monsters Rumble Arena" - }, - { - "executables": [{"is_launcher": false, "name": "payday_win32_release.exe", "os": "win32"}], - "hook": true, - "id": "451546040382914567", - "name": "PAYDAY: The Heist" - }, - { - "executables": [{"is_launcher": false, "name": "brickrigs-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "451546081243824131", - "name": "Brick Rigs" - }, - { - "executables": [{"is_launcher": false, "name": "star conflict/game.exe", "os": "win32"}], - "hook": true, - "id": "451546138999390208", - "name": "Star Conflict" - }, - { - "executables": [{"is_launcher": false, "name": "aq3d.exe", "os": "win32"}], - "hook": true, - "id": "451546156024201217", - "name": "AdventureQuest 3D" - }, - { - "executables": [{"is_launcher": false, "name": "bayonetta.exe", "os": "win32"}], - "hook": true, - "id": "451546169685049344", - "name": "Bayonetta" - }, - { - "executables": [{"is_launcher": false, "name": "boringmangame.exe", "os": "win32"}], - "hook": true, - "id": "451546227696205844", - "name": "Boring Man - Online Tactical Stickman Combat" - }, - { - "aliases": ["Mass Effect 2"], - "executables": [ - {"is_launcher": false, "name": "mass effect 2/binaries/me2game.exe", "os": "win32"}, - {"is_launcher": false, "name": "masseffect2.exe", "os": "win32"} - ], - "hook": true, - "id": "451546229252554752", - "name": "Mass Effect\u2122 2" - }, - { - "executables": [{"is_launcher": false, "name": "shadowwarrior2.exe", "os": "win32"}], - "hook": true, - "id": "451546331639709706", - "name": "Shadow Warrior 2" - }, - { - "aliases": ["Dark Souls II"], - "executables": [{"is_launcher": false, "name": "darksoulsii.exe", "os": "win32"}], - "hook": true, - "id": "451546403764830218", - "name": "DARK SOULS\u2122 II", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "empire.exe", "os": "win32"}], - "hook": true, - "id": "451546468763959326", - "name": "Empire: Total War" - }, - { - "executables": [{"is_launcher": false, "name": "burnoutparadise.exe", "os": "win32"}], - "hook": true, - "id": "451546473801187348", - "name": "Burnout Paradise: The Ultimate Box" - }, - { - "executables": [ - {"is_launcher": false, "name": "supraball/binaries/win64/udk.exe", "os": "win32"}, - {"is_launcher": false, "name": "supraball/binaries/win32/udk.exe", "os": "win32"} - ], - "hook": true, - "id": "451546491866316800", - "name": "Supraball" - }, - { - "executables": [{"is_launcher": false, "name": "desolate/binaries/win64/sh-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "451546514775474195", - "name": "Desolate" - }, - { - "aliases": ["Arma 2: Operation Arrowhead"], - "executables": [ - {"is_launcher": false, "name": "arma 2 operation arrowhead/arma2oa.exe", "os": "win32"}, - {"is_launcher": false, "name": "pmc/datacachepreprocessor.exe", "os": "win32"}, - {"is_launcher": false, "name": "baf/datacachepreprocessor.exe", "os": "win32"}, - {"is_launcher": false, "name": "arma2oa_be.exe", "os": "win32"} - ], - "hook": true, - "id": "451546514943377438", - "name": "Arma 2: Operation Arrowhead" - }, - { - "aliases": ["MU LEGEND GLOBAL"], - "executables": [{"is_launcher": false, "name": "mulegend.exe", "os": "win32"}], - "hook": true, - "id": "451546558706614292", - "name": "MU Legend" - }, - { - "executables": [{"is_launcher": false, "name": "houseparty.exe", "os": "win32"}], - "hook": true, - "id": "451546699177918464", - "name": "House Party" - }, - { - "executables": [{"is_launcher": false, "name": "relichunterszero.exe", "os": "win32"}], - "hook": true, - "id": "451546725606359050", - "name": "Relic Hunters Zero" - }, - { - "executables": [ - {"is_launcher": false, "name": "eqclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "eqgame.exe", "os": "win32"} - ], - "hook": true, - "id": "451546783668109322", - "name": "EverQuest" - }, - { - "executables": [ - {"is_launcher": false, "name": "wildstar64.exe", "os": "win32"}, - {"is_launcher": false, "name": "wildstar.exe", "os": "win32"} - ], - "hook": true, - "id": "451546896167731220", - "name": "WildStar" - }, - { - "executables": [{"is_launcher": false, "name": "spooky's house of jump scares/spooky.exe", "os": "win32"}], - "hook": true, - "id": "451546955513069594", - "name": "Spooky's Jump Scare Mansion" - }, - { - "executables": [ - {"is_launcher": false, "name": "stalker call of pripyat/stalker-cop.exe", "os": "win32"}, - {"is_launcher": false, "name": "stalker call of pripyat/bin/xrengine.exe", "os": "win32"} - ], - "hook": true, - "id": "451547035104051200", - "name": "S.T.A.L.K.E.R.: Call of Pripyat" - }, - { - "executables": [{"is_launcher": false, "name": "forts.exe", "os": "win32"}], - "hook": true, - "id": "451547094121971712", - "name": "Forts" - }, - { - "executables": [{"is_launcher": false, "name": "hon.exe", "os": "win32"}], - "hook": true, - "id": "451547098916192284", - "name": "Heroes of Newerth" - }, - { - "executables": [{"is_launcher": false, "name": "osirisnewdawn.exe", "os": "win32"}], - "hook": true, - "id": "451547204340023296", - "name": "Osiris: New Dawn" - }, - { - "executables": [{"is_launcher": false, "name": "dx11/sw.x64.exe", "os": "win32"}], - "hook": true, - "id": "451547262418419712", - "name": "Shadow Warrior" - }, - { - "aliases": ["America's Army: Proving Grounds"], - "executables": [ - {"is_launcher": false, "name": "binaries/pbsvc_pg.exe", "os": "win32"}, - {"is_launcher": false, "name": "aagame.exe", "os": "win32"} - ], - "hook": true, - "id": "451547323596537866", - "name": "America's Army: Proving Grounds" - }, - { - "executables": [{"is_launcher": false, "name": "aion.bin", "os": "win32"}], - "hook": true, - "id": "451547384975982602", - "name": "AION Free-to-Play" - }, - { - "executables": [{"is_launcher": false, "name": "crusader2.exe", "os": "win32"}], - "hook": true, - "id": "451547401594077184", - "name": "Stronghold Crusader 2" - }, - { - "executables": [{"is_launcher": false, "name": "owlboy.exe", "os": "win32"}], - "hook": true, - "id": "451547470967865345", - "name": "Owlboy" - }, - { - "executables": [{"is_launcher": false, "name": "reigns.exe", "os": "win32"}], - "hook": true, - "id": "451547889982898176", - "name": "Reigns" - }, - { - "executables": [{"is_launcher": false, "name": "zula_launcher.exe", "os": "win32"}], - "hook": true, - "id": "451547924531249152", - "name": "Zula Online" - }, - { - "executables": [{"is_launcher": false, "name": "tales of berseria.exe", "os": "win32"}], - "hook": true, - "id": "451548231223214080", - "name": "Tales of Berseria" - }, - { - "executables": [{"is_launcher": false, "name": "shootyskies.exe", "os": "win32"}], - "hook": true, - "id": "451548290740387850", - "name": "Shooty Skies" - }, - { - "executables": [{"is_launcher": false, "name": "huniecamstudio.exe", "os": "win32"}], - "hook": true, - "id": "451548751010725888", - "name": "HunieCam Studio" - }, - { - "executables": [{"is_launcher": false, "name": "bombercrew.exe", "os": "win32"}], - "hook": true, - "id": "451548752046587915", - "name": "Bomber Crew" - }, - { - "aliases": ["Line of Sight"], - "executables": [ - {"is_launcher": false, "name": "lsgame_be.exe", "os": "win32"}, - {"is_launcher": false, "name": "win32/lsgame.exe", "os": "win32"} - ], - "hook": true, - "id": "451548957361831946", - "name": "Line of Sight" - }, - { - "aliases": ["S.K.I.L.L. - Special Force 2 ", "Special Force 2 SEA"], - "executables": [ - {"is_launcher": false, "name": "s.k.i.l.l/binaries/win32/sf2.exe", "os": "win32"}, - {"is_launcher": false, "name": "games/specialforce2/binaries/win32/sf2.exe", "os": "win32"}, - {"is_launcher": false, "name": "skill/dfufg.exe", "os": "win32"}, - {"is_launcher": false, "name": "skill/dfubg.exe", "os": "win32"} - ], - "hook": true, - "id": "451549001511075860", - "name": "S.K.I.L.L. - Special Force 2" - }, - { - "executables": [{"is_launcher": false, "name": "minimetro.exe", "os": "win32"}], - "hook": true, - "id": "451549165361823769", - "name": "Mini Metro" - }, - { - "executables": [{"is_launcher": false, "name": "dinohordegame.exe", "os": "win32"}], - "hook": true, - "id": "451549177885753345", - "name": "ORION: Prelude" - }, - { - "executables": [{"is_launcher": false, "name": "trickytowers.exe", "os": "win32"}], - "hook": true, - "id": "451549293946470400", - "name": "Tricky Towers" - }, - { - "aliases": ["Surgeon Simulator"], - "executables": [ - {"is_launcher": false, "name": "surgeon simulator 2013/ss2013.exe", "os": "win32"}, - {"is_launcher": false, "name": "surgeon simulator/ss2013.exe", "os": "win32"} - ], - "hook": true, - "id": "451549334320971776", - "name": "Surgeon Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "the jackbox party pack 4.exe", "os": "win32"}], - "hook": true, - "id": "451549336996806676", - "name": "The Jackbox Party Pack 4" - }, - { - "executables": [{"is_launcher": false, "name": "contagion.exe", "os": "win32"}], - "hook": true, - "id": "451549440734658560", - "name": "Contagion" - }, - { - "executables": [{"is_launcher": false, "name": "simpleplanes.exe", "os": "win32"}], - "hook": true, - "id": "451549534993252362", - "name": "SimplePlanes" - }, - { - "executables": [{"is_launcher": false, "name": "rpgmv.exe", "os": "win32"}], - "hook": true, - "id": "451549964422873088", - "name": "RPG Maker MV" - }, - { - "executables": [{"is_launcher": false, "name": "fez.exe", "os": "win32"}], - "hook": true, - "id": "451550717673472030", - "name": "FEZ" - }, - { - "executables": [{"is_launcher": false, "name": "fivenightsatfreddys.exe", "os": "win32"}], - "hook": true, - "id": "451550771193053194", - "name": "Five Nights at Freddy's" - }, - { - "aliases": ["Injustice\u2122 2"], - "executables": [ - {"is_launcher": false, "name": "injustice2.exe", "os": "win32"}, - {"is_launcher": false, "name": "retail/injustice2.exe", "os": "win32"} - ], - "hook": true, - "id": "451551201604141056", - "name": "Injustice\u2122 2" - }, - { - "executables": [{"is_launcher": false, "name": "eternal card game/eternal.exe", "os": "win32"}], - "hook": true, - "id": "451551225968853012", - "name": "Eternal Card Game" - }, - { - "executables": [ - {"is_launcher": false, "name": "carx drift racing online/drift racing online.exe", "os": "win32"} - ], - "hook": true, - "id": "451551359393595412", - "name": "CarX Drift Racing Online" - }, - { - "executables": [{"is_launcher": false, "name": "tew2.exe", "os": "win32"}], - "hook": true, - "id": "451551873581711360", - "name": "The Evil Within 2" - }, - { - "executables": [{"is_launcher": false, "name": "deathroadtocanada/prog.exe", "os": "win32"}], - "hook": true, - "id": "451551950937260032", - "name": "Death Road to Canada" - }, - { - "executables": [{"is_launcher": false, "name": "totally accurate battle zombielator/game.exe", "os": "win32"}], - "hook": true, - "id": "451551980108906496", - "name": "Totally Accurate Battle Zombielator" - }, - { - "executables": [{"is_launcher": false, "name": "mb_wfas.exe", "os": "win32"}], - "hook": true, - "id": "451552014883880980", - "name": "Mount & Blade: With Fire and Sword" - }, - { - "executables": [ - {"is_launcher": false, "name": "secretworldlegends.exe", "os": "win32"}, - {"is_launcher": false, "name": "secretworldlegendsdx11.exe", "os": "win32"} - ], - "hook": true, - "id": "451552107825201152", - "name": "Secret World Legends" - }, - { - "aliases": ["Victoria II"], - "executables": [ - {"is_launcher": false, "name": "victoria 2/vcredist_x86.exe", "os": "win32"}, - {"is_launcher": false, "name": "victoria 2/v2game.exe", "os": "win32"}, - {"is_launcher": false, "name": "movies/binkplay.exe", "os": "win32"}, - {"is_launcher": false, "name": "victoria2.exe", "os": "win32"} - ], - "hook": true, - "id": "451552374423552000", - "name": "Victoria II" - }, - { - "executables": [{"is_launcher": false, "name": "call_to_arms.exe", "os": "win32"}], - "hook": true, - "id": "451552458083270676", - "name": "Call to Arms" - }, - { - "executables": [{"is_launcher": false, "name": "mirror/game.exe", "os": "win32"}], - "hook": true, - "id": "451552550446170113", - "name": "Mirror" - }, - { - "executables": [{"is_launcher": false, "name": "legostarwarssaga.exe", "os": "win32"}], - "hook": true, - "id": "451552771045457920", - "name": "LEGO\u00ae Star Wars\u2122: The Complete Saga" - }, - { - "executables": [{"is_launcher": false, "name": "justfishing.exe", "os": "win32"}], - "hook": true, - "id": "451553376803487744", - "name": "Just Fishing" - }, - { - "executables": [{"is_launcher": false, "name": "domina.exe", "os": "win32"}], - "hook": true, - "id": "451553701404999700", - "name": "Domina" - }, - { - "executables": [ - {"is_launcher": false, "name": "quakelive_steam.exe", "os": "win32"}, - {"is_launcher": false, "name": "quakelive.exe", "os": "win32"} - ], - "hook": true, - "id": "451553710275821568", - "name": "Quake Live" - }, - { - "aliases": ["Orcs Must Die! Unchained"], - "executables": [ - {"is_launcher": false, "name": "win64/spitfiregame.exe", "os": "win32"}, - {"is_launcher": false, "name": "spitfiredashboard.exe", "os": "win32"} - ], - "hook": true, - "id": "451554260262322176", - "name": "Orcs Must Die!" - }, - { - "executables": [{"is_launcher": false, "name": "loadout.exe", "os": "win32"}], - "hook": true, - "id": "451555691836997643", - "name": "Loadout" - }, - { - "executables": [{"is_launcher": false, "name": "farmingsimulator2015game.exe", "os": "win32"}], - "hook": true, - "id": "451556128992657418", - "name": "Farming Simulator 15" - }, - { - "executables": [{"is_launcher": false, "name": "rometw.exe", "os": "win32"}], - "hook": true, - "id": "451557091279372298", - "name": "Rome: Total War" - }, - { - "executables": [{"is_launcher": false, "name": "fallout4vr.exe", "os": "win32"}], - "hook": true, - "id": "451557388504530945", - "name": "Fallout 4 VR" - }, - { - "executables": [{"is_launcher": false, "name": "magicite.exe", "os": "win32"}], - "hook": true, - "id": "451559209893363712", - "name": "Magicite" - }, - { - "executables": [{"is_launcher": false, "name": "bully scholarship edition/bully.exe", "os": "win32"}], - "hook": true, - "id": "451560105008431124", - "name": "Bully: Scholarship Edition" - }, - { - "executables": [{"is_launcher": false, "name": "nidhogg.exe", "os": "win32"}], - "hook": true, - "id": "451561653570502656", - "name": "Nidhogg" - }, - { - "executables": [{"is_launcher": false, "name": "blacksurvival.exe", "os": "win32"}], - "hook": true, - "id": "451561708461359124", - "name": "Black Survival" - }, - { - "executables": [{"is_launcher": false, "name": "fortify.exe", "os": "win32"}], - "hook": true, - "id": "451563408794320906", - "name": "FORTIFY" - }, - { - "executables": [{"is_launcher": false, "name": "bin/avorion.exe", "os": "win32"}], - "hook": true, - "id": "451563448015519744", - "name": "Avorion" - }, - { - "executables": [{"is_launcher": false, "name": "sam3.exe", "os": "win32"}], - "hook": true, - "id": "451564621422395392", - "name": "Serious Sam 3: BFE" - }, - { - "executables": [{"is_launcher": false, "name": "goldrushthegame.exe", "os": "win32"}], - "hook": true, - "id": "451564928868941824", - "name": "Gold Rush: The Game" - }, - { - "executables": [{"is_launcher": false, "name": "the red solstice/bin/game.exe", "os": "win32"}], - "hook": true, - "id": "451565617162747904", - "name": "The Red Solstice" - }, - { - "executables": [{"is_launcher": false, "name": "nino2.exe", "os": "win32"}], - "hook": true, - "id": "451572281584648202", - "name": "Ni no Kuni\u2122 II: Revenant Kingdom" - }, - { - "executables": [{"is_launcher": false, "name": "roa2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "451584845898842112", - "name": "Rock of Ages 2" - }, - { - "executables": [{"is_launcher": false, "name": "skyforge.exe", "os": "win32"}], - "hook": true, - "id": "451598719498846218", - "name": "Skyforge", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "meteor60seconds.exe", "os": "win32"}], - "hook": true, - "id": "451604801248034836", - "name": "Meteor 60 Seconds!" - }, - { - "executables": [{"is_launcher": false, "name": "yu-gi-oh! legacy of the duelist/yugioh.exe", "os": "win32"}], - "hook": true, - "id": "451686854597672970", - "name": "Yu-Gi-Oh! Legacy of the Duelist" - }, - { - "executables": [{"is_launcher": false, "name": "beat saber.exe", "os": "win32"}], - "hook": true, - "id": "451991967149195264", - "name": "Beat Saber" - }, - { - "executables": [{"is_launcher": false, "name": "sf3clientfinal.exe", "os": "win32"}], - "hook": true, - "id": "452001740431163402", - "name": "SpellForce 3" - }, - { - "executables": [{"is_launcher": false, "name": "tq.exe", "os": "win32"}], - "hook": true, - "id": "452029545843785730", - "name": "Titan Quest Anniversary Edition" - }, - { - "executables": [{"is_launcher": false, "name": "sega classics/segagameroom.exe", "os": "win32"}], - "hook": true, - "id": "452099265230274571", - "name": "SEGA Mega Drive & Genesis Classics" - }, - { - "executables": [{"is_launcher": false, "name": "execpubg.exe", "os": "win32"}], - "hook": true, - "id": "452140668265955339", - "name": "PUBG: Test Server" - }, - { - "executables": [{"is_launcher": false, "name": "overgrowth.exe", "os": "win32"}], - "hook": true, - "id": "452205639347994656", - "name": "Overgrowth" - }, - { - "executables": [{"is_launcher": false, "name": "dream daddy/ddadds.exe", "os": "win32"}], - "hook": true, - "id": "452206598283198504", - "name": "Dream Daddy: A Dad Dating Simulator" - }, - { - "aliases": ["Kingdoms of Amalur: Reckoning"], - "executables": [{"is_launcher": false, "name": "reckoning.exe", "os": "win32"}], - "hook": true, - "id": "452276290385346589", - "name": "Kingdoms of Amalur: Reckoning\u2122" - }, - { - "aliases": ["Star Citizen Launcher"], - "executables": [{"is_launcher": false, "name": "starcitizen.exe", "os": "win32"}], - "hook": true, - "id": "452295596917784577", - "name": "Star Citizen" - }, - { - "aliases": ["Need for Speed(TM) Hot Pursuit", "Need for Speed: Hot Pursuit"], - "executables": [ - {"is_launcher": false, "name": "nfs11.exe", "os": "win32"}, - {"is_launcher": false, "name": "need for speed hot pursuit/configtool.exe", "os": "win32"} - ], - "hook": true, - "id": "452295877978095646", - "name": "Need for Speed: Hot Pursuit" - }, - { - "aliases": ["Battlefield Hardline"], - "executables": [{"is_launcher": false, "name": "bfh.exe", "os": "win32"}], - "hook": true, - "id": "452296074762256393", - "name": "Battlefield\u2122 Hardline" - }, - { - "aliases": ["World_of_Warplanes_EU"], - "executables": [{"is_launcher": false, "name": "worldofwarplanes.exe", "os": "win32"}], - "hook": true, - "id": "452296290940878848", - "name": "World of Warplanes" - }, - { - "aliases": ["Train Simulator"], - "executables": [ - {"is_launcher": false, "name": "install/physx_9.10.0513_systemsoftware.exe", "os": "win32"}, - {"is_launcher": false, "name": "railworks/utilities.exe", "os": "win32"}, - {"is_launcher": false, "name": "install/vcredist_x86.exe", "os": "win32"}, - {"is_launcher": false, "name": "railworks.exe", "os": "win32"} - ], - "hook": true, - "id": "452313101539475456", - "name": "Train Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "tiger knight/bin/frontend.exe", "os": "win32"}], - "hook": true, - "id": "452944801952694282", - "name": "Tiger Knight" - }, - { - "executables": [{"is_launcher": false, "name": "ball 3d.exe", "os": "win32"}], - "hook": true, - "id": "453374517864169477", - "name": "Ball 3D: Soccer Online" - }, - { - "executables": [{"is_launcher": false, "name": "passpartout.exe", "os": "win32"}], - "hook": true, - "id": "453677781511831572", - "name": "Passpartout: The Starving Artist" - }, - { - "executables": [{"is_launcher": false, "name": "monsterprom.exe", "os": "win32"}], - "hook": true, - "id": "453680460304875531", - "name": "Monster Prom" - }, - { - "executables": [{"is_launcher": false, "name": "totallyaccuratebattlegrounds.exe", "os": "win32"}], - "hook": true, - "id": "453818237508124692", - "name": "Totally Accurate Battlegrounds" - }, - { - "executables": [{"is_launcher": false, "name": "avgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "454123972343365652", - "name": "Vampyr" - }, - { - "executables": [{"is_launcher": false, "name": "outlast2.exe", "os": "win32"}], - "hook": true, - "id": "454411001492668417", - "name": "Outlast 2" - }, - { - "executables": [{"is_launcher": false, "name": "portal_knights_x64.exe", "os": "win32"}], - "hook": true, - "id": "454600052904820736", - "name": "Portal Knights" - }, - { - "executables": [{"is_launcher": false, "name": "fenris-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "454713992322220032", - "name": "Fortified" - }, - { - "executables": [{"is_launcher": false, "name": "toxikk.exe", "os": "win32"}], - "hook": true, - "id": "454731115027103759", - "name": "TOXIKK" - }, - { - "executables": [{"is_launcher": false, "name": "release/bc.exe", "os": "win32"}], - "hook": true, - "id": "454759028187463700", - "name": "Battle Carnival" - }, - { - "aliases": ["iRacing.com Race Simulation"], - "executables": [ - {"is_launcher": false, "name": "iracingsim.exe", "os": "win32"}, - {"is_launcher": false, "name": "iracingsim64.exe", "os": "win32"} - ], - "hook": true, - "id": "454810317705314334", - "name": "iRacing", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [{"is_launcher": false, "name": "farcry4.exe", "os": "win32"}], - "hook": true, - "id": "454811906230845440", - "name": "FarCry 4" - }, - { - "executables": [{"is_launcher": false, "name": "celeste.exe", "os": "win32"}], - "hook": true, - "id": "454814894596816907", - "name": "Celeste" - }, - { - "executables": [{"is_launcher": false, "name": "audiosurf.exe", "os": "win32"}], - "hook": true, - "id": "455442346558095370", - "name": "Audiosurf" - }, - { - "executables": [{"is_launcher": false, "name": "baldur's gate enhanced edition/baldur.exe", "os": "win32"}], - "hook": true, - "id": "455494486089269258", - "name": "Baldur's Gate: Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "conquests/civ3conquests.exe", "os": "win32"}], - "hook": true, - "id": "455584343792943104", - "name": "Sid Meier's Civilization III: Complete" - }, - { - "executables": [{"is_launcher": false, "name": "warhammer_x64_11.exe", "os": "win32"}], - "hook": true, - "id": "455692385268269056", - "name": "Warhammer 40,000: Inquisitor - Martyr" - }, - { - "executables": [{"is_launcher": false, "name": "monmusu/game.exe", "os": "win32"}], - "hook": true, - "id": "455713051794997249", - "name": "MONMUSU" - }, - { - "executables": [{"is_launcher": false, "name": "littlenightmares.exe", "os": "win32"}], - "hook": true, - "id": "455788266860445696", - "name": "Little Nightmares" - }, - { - "executables": [{"is_launcher": false, "name": "rct.exe", "os": "win32"}], - "hook": true, - "id": "455864514185920523", - "name": "RollerCoaster Tycoon: Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "halowarsde/xgamefinal.exe", "os": "win32"}], - "hook": true, - "id": "456022848214138884", - "name": "Halo Wars: Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "jwe.exe", "os": "win32"}], - "hook": true, - "id": "456144990930862086", - "name": "Jurassic World Evolution" - }, - { - "executables": [ - {"is_launcher": false, "name": "defiance.exe", "os": "win32"}, - {"is_launcher": false, "name": "defiance/glyphclientapp.exe", "os": "win32"} - ], - "hook": true, - "id": "456294192616964096", - "name": "Defiance" - }, - { - "executables": [{"is_launcher": false, "name": "shipping-thiefgame.exe", "os": "win32"}], - "hook": true, - "id": "456834047730122752", - "name": "Thief" - }, - { - "executables": [{"is_launcher": false, "name": "from_the_depths.exe", "os": "win32"}], - "hook": true, - "id": "456965807780397076", - "name": "From The Depths" - }, - { - "executables": [{"is_launcher": false, "name": "asamu-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "457095132119040020", - "name": "A Story About My Uncle" - }, - { - "executables": [{"is_launcher": false, "name": "moonlighter.exe", "os": "win32"}], - "hook": true, - "id": "457269337137348613", - "name": "Moonlighter" - }, - { - "executables": [ - {"is_launcher": false, "name": "pirate101.exe", "os": "win32"}, - {"is_launcher": false, "name": "pirate.exe", "os": "win32"} - ], - "hook": true, - "id": "457283942475759662", - "name": "Pirate101" - }, - { - "executables": [{"is_launcher": false, "name": "dreadgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "457284340330659864", - "name": "Dreadnought" - }, - { - "executables": [{"is_launcher": false, "name": "napoleon.exe", "os": "win32"}], - "hook": true, - "id": "457284624977100800", - "name": "Napoleon: Total War" - }, - { - "executables": [{"is_launcher": false, "name": "ava.exe", "os": "win32"}], - "hook": true, - "id": "457284796658352128", - "name": "Alliance of Valiant Arms", - "overlay": true - }, - { - "aliases": ["Arpiel"], - "executables": [{"is_launcher": false, "name": "arpiel.exe", "os": "win32"}], - "hook": true, - "id": "457299794772230154", - "name": "Arpiel Online" - }, - { - "executables": [{"is_launcher": false, "name": "maniaplanet.exe", "os": "win32"}], - "hook": true, - "id": "457300140470960128", - "name": "ManiaPlanet" - }, - { - "aliases": ["Mabinogi Heroes (Vindictus)"], - "executables": [{"is_launcher": false, "name": "heroes.exe", "os": "win32"}], - "hook": true, - "id": "457300488199733265", - "name": "\ub9c8\ube44\ub178\uae30 \uc601\uc6c5\uc804" - }, - { - "aliases": ["LineageII"], - "executables": [ - {"is_launcher": false, "name": "l2.exe", "os": "win32"}, - {"is_launcher": false, "name": "lineageii.exe", "os": "win32"} - ], - "hook": true, - "id": "457300834393391104", - "name": "Lineage II", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["\uba54\uc774\ud50c\uc2a4\ud1a0\ub9ac2"], - "executables": [{"is_launcher": false, "name": "maplestory2.exe", "os": "win32"}], - "hook": true, - "id": "457301027453009947", - "name": "MapleStory 2", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "aliases": ["PPSSPP version 1.5.4"], - "executables": [ - {"is_launcher": false, "name": "ppssppwindows64.exe", "os": "win32"}, - {"is_launcher": false, "name": "ppssppwindows.exe", "os": "win32"} - ], - "hook": true, - "id": "457301373592141836", - "name": "PPSSPP" - }, - { - "aliases": ["Command & Conquer Generals: Zero Hour"], - "executables": [{"is_launcher": false, "name": "generals.exe", "os": "win32"}], - "hook": true, - "id": "457301510515195924", - "name": "Command & Conquer\u2122: Generals and Zero Hour" - }, - { - "executables": [{"is_launcher": false, "name": "nox.exe", "os": "win32"}], - "hook": true, - "id": "457301824110723113", - "name": "NoxPlayer" - }, - { - "aliases": ["Tribes Ascend"], - "executables": [{"is_launcher": false, "name": "tribesascend.exe", "os": "win32"}], - "hook": true, - "id": "457549567538495489", - "name": "Tribes: Ascend" - }, - { - "executables": [{"is_launcher": false, "name": "medievalengineers.exe", "os": "win32"}], - "hook": true, - "id": "457619737535447060", - "name": "Medieval Engineers" - }, - { - "aliases": ["Cuisine Royale"], - "executables": [{"is_launcher": false, "name": "cuisine royale/win64/enlisted.exe", "os": "win32"}], - "hook": true, - "id": "457888043668340737", - "name": "Cuisine Royale" - }, - { - "executables": [{"is_launcher": false, "name": "propwitchhuntmodule-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "458081878394667009", - "name": "Witch It" - }, - { - "aliases": ["Grid 2"], - "executables": [ - {"is_launcher": false, "name": "grid2_avx.exe", "os": "win32"}, - {"is_launcher": false, "name": "grid2.exe", "os": "win32"} - ], - "hook": true, - "id": "458309189974884363", - "name": "GRID 2" - }, - { - "executables": [{"is_launcher": false, "name": "mark_of_the_ninja/bin/game.exe", "os": "win32"}], - "hook": true, - "id": "458503484153528322", - "name": "Mark of the Ninja" - }, - { - "executables": [{"is_launcher": false, "name": "nomad.exe", "os": "win32"}], - "hook": true, - "id": "458780333601587200", - "name": "Nomad" - }, - { - "executables": [{"is_launcher": false, "name": "gorn.exe", "os": "win32"}], - "hook": true, - "id": "459465853600268289", - "name": "GORN" - }, - { - "aliases": ["Unreal"], - "executables": [{"is_launcher": false, "name": "unreal.exe", "os": "win32"}], - "hook": true, - "id": "459581070438825994", - "name": "Unreal Gold" - }, - { - "executables": [{"is_launcher": false, "name": "shadowrun.exe", "os": "win32"}], - "hook": true, - "id": "459713656339562503", - "name": "Shadowrun Returns" - }, - { - "executables": [{"is_launcher": false, "name": "spacehulkgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "459764260935958538", - "name": "Space Hulk: Deathwing - Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "colony survival/colonyclient.exe", "os": "win32"}], - "hook": true, - "id": "459774120226455562", - "name": "Colony Survival" - }, - { - "executables": [{"is_launcher": false, "name": "murder miners.exe", "os": "win32"}], - "hook": true, - "id": "459807786151182346", - "name": "Murder Miners" - }, - { - "executables": [{"is_launcher": false, "name": "ge2rb.exe", "os": "win32"}], - "hook": true, - "id": "459968630935781376", - "name": "GOD EATER 2 Rage Burst" - }, - { - "executables": [{"is_launcher": false, "name": "aimtastic.exe", "os": "win32"}], - "hook": true, - "id": "460092747580309504", - "name": "Aimtastic" - }, - { - "executables": [{"is_launcher": false, "name": "thedivision.exe", "os": "win32"}], - "hook": true, - "id": "460199128522293258", - "name": "Tom Clancy's The Division Trial" - }, - { - "executables": [{"is_launcher": false, "name": "iw7_ship.exe", "os": "win32"}], - "hook": true, - "id": "460217112250810368", - "name": "Call of Duty: Infinite Warfare" - }, - { - "executables": [{"is_launcher": false, "name": "transistor.exe", "os": "win32"}], - "hook": true, - "id": "460299285049901056", - "name": "Transistor" - }, - { - "executables": [{"is_launcher": false, "name": "lego marvel super heroes/legomarvel.exe", "os": "win32"}], - "hook": true, - "id": "460450424940396544", - "name": "LEGO\u00ae MARVEL Super Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "salt and sanctuary/salt.exe", "os": "win32"}], - "hook": true, - "id": "460472377566822400", - "name": "Salt and Sanctuary" - }, - { - "executables": [{"is_launcher": false, "name": "transportfever.exe", "os": "win32"}], - "hook": true, - "id": "460542812124086272", - "name": "Transport Fever" - }, - { - "executables": [{"is_launcher": false, "name": "edf41.exe", "os": "win32"}], - "hook": true, - "id": "460598317173309452", - "name": "EARTH DEFENSE FORCE 4.1 The Shadow of New Despair" - }, - { - "executables": [{"is_launcher": false, "name": "thecrew2.exe", "os": "win32"}], - "hook": true, - "id": "460639482547273749", - "name": "The Crew 2" - }, - { - "executables": [{"is_launcher": false, "name": "titan souls/titan.exe", "os": "win32"}], - "hook": true, - "id": "460691329752629248", - "name": "Titan Souls" - }, - { - "aliases": ["Metal Gear Rising: Revengeance"], - "executables": [{"is_launcher": false, "name": "metal gear rising revengeance.exe", "os": "win32"}], - "hook": true, - "id": "460788999880179722", - "name": "METAL GEAR RISING: REVENGEANCE" - }, - { - "executables": [{"is_launcher": false, "name": "next day survival/nextday_game.exe", "os": "win32"}], - "hook": true, - "id": "460831278799912960", - "name": "Next Day: Survival" - }, - { - "executables": [{"is_launcher": false, "name": "disco dodgeball.exe", "os": "win32"}], - "hook": true, - "id": "460909130140614656", - "name": "Robot Roller-Derby Disco Dodgeball" - }, - {"hook": true, "id": "460940655984771072", "name": "King of the Hat"}, - { - "executables": [{"is_launcher": false, "name": "life is feudal your own/yo_cm_client.exe", "os": "win32"}], - "hook": true, - "id": "460951106357297172", - "name": "Life is Feudal: Your Own" - }, - { - "executables": [{"is_launcher": false, "name": "bloodbowl2_dx_32.exe", "os": "win32"}], - "hook": true, - "id": "460987469756629005", - "name": "Blood Bowl 2" - }, - { - "executables": [{"is_launcher": false, "name": "pokernight2.exe", "os": "win32"}], - "hook": true, - "id": "461039002796032000", - "name": "Poker Night 2" - }, - { - "executables": [{"is_launcher": false, "name": "fivenightsatfreddys2.exe", "os": "win32"}], - "hook": true, - "id": "461050695198572554", - "name": "Five Nights at Freddy's 2" - }, - { - "executables": [{"is_launcher": false, "name": "captainspirit-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "461256067003973633", - "name": "The Awesome Adventures of Captain Spirit" - }, - { - "executables": [{"is_launcher": false, "name": "freeman guerrilla warfare.exe", "os": "win32"}], - "hook": true, - "id": "461302775284891648", - "name": "Freeman: Guerrilla Warfare" - }, - { - "executables": [{"is_launcher": false, "name": "hammerwatch.exe", "os": "win32"}], - "hook": true, - "id": "461404096751206420", - "name": "Hammerwatch" - }, - { - "executables": [{"is_launcher": false, "name": "rct3plus.exe", "os": "win32"}], - "hook": true, - "id": "461439083894407178", - "name": "RollerCoaster Tycoon 3: Platinum!" - }, - { - "executables": [{"is_launcher": false, "name": "jalopy.exe", "os": "win32"}], - "hook": true, - "id": "461561181598121984", - "name": "Jalopy" - }, - { - "executables": [{"is_launcher": false, "name": "ultimate custom night.exe", "os": "win32"}], - "hook": true, - "id": "461673633798946816", - "name": "Ultimate Custom Night" - }, - { - "executables": [{"is_launcher": false, "name": "fable anniversary.exe", "os": "win32"}], - "hook": true, - "id": "461711977727918080", - "name": "Fable Anniversary" - }, - { - "executables": [{"is_launcher": false, "name": "pavlov-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "461758710088466432", - "name": "Pavlov VR" - }, - { - "executables": [{"is_launcher": false, "name": "styx2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "462296460512198656", - "name": "Styx: Shards of Darkness" - }, - { - "executables": [{"is_launcher": false, "name": "audiosurf2.exe", "os": "win32"}], - "hook": true, - "id": "462407650941075456", - "name": "Audiosurf 2" - }, - { - "executables": [{"is_launcher": false, "name": "slap city.exe", "os": "win32"}], - "hook": true, - "id": "462788623675162634", - "name": "Slap City" - }, - { - "executables": [{"is_launcher": false, "name": "ns2.exe", "os": "win32"}], - "hook": true, - "id": "462817604202004480", - "name": "Natural Selection 2" - }, - { - "executables": [{"is_launcher": false, "name": "to the moon.exe", "os": "win32"}], - "hook": true, - "id": "462829880615370762", - "name": "To the Moon" - }, - { - "aliases": ["Devil May Cry 4"], - "executables": [ - {"is_launcher": false, "name": "devilmaycry4_dx10.exe", "os": "win32"}, - {"is_launcher": false, "name": "devilmaycry4specialedition.exe", "os": "win32"}, - {"is_launcher": false, "name": "devilmaycry4_dx9.exe", "os": "win32"}, - {"is_launcher": false, "name": "devimaycry4.exe", "os": "win32"} - ], - "hook": true, - "id": "463227448167890944", - "name": "Devil May Cry\u00ae 4 Special Edition" - }, - { - "executables": [{"is_launcher": false, "name": "evilwithin.exe", "os": "win32"}], - "hook": true, - "id": "463274972958425098", - "name": "The Evil Within" - }, - { - "aliases": ["Lords of the Fallen"], - "executables": [{"is_launcher": false, "name": "lordsofthefallen.exe", "os": "win32"}], - "hook": true, - "id": "463425384893906944", - "name": "Lords Of The Fallen" - }, - { - "executables": [ - {"is_launcher": false, "name": "five nights at freddy's sister location/sisterlocation.exe", "os": "win32"} - ], - "hook": true, - "id": "463603236880908297", - "name": "Five Nights at Freddy's: Sister Location" - }, - { - "aliases": ["The LEGO? NINJAGO? Movie Video Game\t"], - "executables": [{"is_launcher": false, "name": "legoninjago_dx11.exe", "os": "win32"}], - "hook": true, - "id": "463761561685721088", - "name": "fin-dev" - }, - { - "aliases": ["Jackbox Party Pack"], - "executables": [{"is_launcher": false, "name": "tjpp.exe", "os": "win32"}], - "hook": true, - "id": "463963734507782144", - "name": "The Jackbox Party Pack" - }, - { - "aliases": ["Nekopara Vol. 1"], - "executables": [{"is_launcher": false, "name": "nekopara_vol1.exe", "os": "win32"}], - "hook": true, - "id": "464273275904589834", - "name": "NEKOPARA Vol. 1" - }, - { - "executables": [{"is_launcher": false, "name": "gta3.exe", "os": "win32"}], - "hook": true, - "id": "464434670646460427", - "name": "Grand Theft Auto III" - }, - { - "executables": [{"is_launcher": false, "name": "worldsadrift.exe", "os": "win32"}], - "hook": true, - "id": "464507152111763457", - "name": "Worlds Adrift" - }, - { - "executables": [{"is_launcher": false, "name": "we were here too.exe", "os": "win32"}], - "hook": true, - "id": "464823241098395674", - "name": "We Were Here Too" - }, - { - "executables": [{"is_launcher": false, "name": "farmtogether.exe", "os": "win32"}], - "hook": true, - "id": "464830344558805002", - "name": "Farm Together" - }, - { - "executables": [{"is_launcher": false, "name": "vampire.exe", "os": "win32"}], - "hook": true, - "id": "464956888656773150", - "name": "Vampire: The Masquerade - Bloodlines" - }, - { - "executables": [{"is_launcher": false, "name": "stoneshard.exe", "os": "win32"}], - "hook": true, - "id": "465087252574371850", - "name": "Stoneshard: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "csd2.exe", "os": "win32"}], - "hook": true, - "id": "465247704155553792", - "name": "Cook, Serve, Delicious! 2!!" - }, - { - "aliases": ["Warhammer 40,000: Dawn of War - Dark Crusade"], - "executables": [ - {"is_launcher": false, "name": "dawn of war dark crusade/graphicsconfig.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war dark crusade/darkcrusade.exe", "os": "win32"} - ], - "hook": true, - "id": "465536900560584714", - "name": "Warhammer 40,000: Dawn of War - Dark Crusade" - }, - { - "aliases": ["Final Fantasy X | X-2 HD Remaster"], - "executables": [{"is_launcher": false, "name": "ffx.exe", "os": "win32"}], - "hook": true, - "id": "465985864095367178", - "name": "FINAL FANTASY X/X-2 HD Remaster" - }, - {"hook": true, "id": "466240509682384896", "name": "Longshot [Dev]"}, - { - "executables": [{"is_launcher": false, "name": "heavy metal machines/hmm.exe", "os": "win32"}], - "hook": true, - "id": "466296927944835082", - "name": "Heavy Metal Machines" - }, - { - "executables": [{"is_launcher": false, "name": "sos-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "466334957183303710", - "name": "SOS" - }, - { - "executables": [{"is_launcher": false, "name": "wreckfest_x64.exe", "os": "win32"}], - "hook": true, - "id": "466457842401148948", - "name": "Wreckfest" - }, - { - "executables": [ - {"is_launcher": false, "name": "cardhunter.exe", "os": "win32"}, - {"is_launcher": false, "name": "cardhunter.app", "os": "darwin"} - ], - "hook": true, - "id": "466640524670009354", - "name": "Card Hunter" - }, - { - "executables": [{"is_launcher": false, "name": "traktor.amalgam.app.exe", "os": "win32"}], - "hook": true, - "id": "466685661806592000", - "name": "Gear Up" - }, - { - "executables": [{"is_launcher": false, "name": "amorous.game.windows.exe", "os": "win32"}], - "hook": true, - "id": "466691613138354196", - "name": "Amorous" - }, - { - "executables": [{"is_launcher": false, "name": "pixelworlds.exe", "os": "win32"}], - "hook": true, - "id": "466733503720062996", - "name": "Pixel Worlds" - }, - { - "executables": [ - {"is_launcher": false, "name": "starbound.app", "os": "darwin"}, - {"is_launcher": false, "name": "starbound.exe", "os": "win32"}, - {"is_launcher": false, "name": "starbound_opengl.exe", "os": "win32"} - ], - "hook": true, - "id": "467102538278109224", - "name": "Starbound", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "montaro/nw.exe", "os": "win32"}], - "hook": true, - "id": "467286012104671232", - "name": "Montaro" - }, - { - "executables": [{"is_launcher": false, "name": "lawbreakers.exe", "os": "win32"}], - "hook": true, - "id": "467724362674470912", - "name": "LawBreakers" - }, - { - "executables": [{"is_launcher": false, "name": "h3vr.exe", "os": "win32"}], - "hook": true, - "id": "467788345565511690", - "name": "Hot Dogs, Horseshoes & Hand Grenades" - }, - { - "aliases": ["RollerCoaster Tycoon 2"], - "executables": [ - {"is_launcher": false, "name": "rct2.exe", "os": "win32"}, - {"is_launcher": false, "name": "openrct2.exe", "os": "win32"} - ], - "hook": true, - "id": "467979045179752448", - "name": "RollerCoaster Tycoon 2: Triple Thrill Pack" - }, - { - "executables": [{"is_launcher": false, "name": "crashbandicootnsanetrilogy.exe", "os": "win32"}], - "hook": true, - "id": "468099355962900480", - "name": "Crash Bandicoot\u2122 N. Sane Trilogy" - }, - { - "executables": [ - {"is_launcher": false, "name": "ionbranch_be.exe", "os": "win32"}, - {"is_launcher": false, "name": "ionbranch.exe", "os": "win32"} - ], - "hook": true, - "id": "468254179987685406", - "name": "Islands of Nyne: Battle Royale" - }, - { - "executables": [{"is_launcher": false, "name": "rules of survival/ros.exe", "os": "win32"}], - "hook": true, - "id": "468577647392456714", - "name": "Rules Of Survival" - }, - { - "executables": [{"is_launcher": false, "name": "aow3.exe", "os": "win32"}], - "hook": true, - "id": "468606521433915404", - "name": "Age of Wonders III" - }, - {"hook": true, "id": "468611186330566677", "name": "SINNER"}, - { - "aliases": ["S.T.A.L.K.E.R Clear Sky"], - "executables": [ - {"is_launcher": false, "name": "stalker clear sky/xrengine.exe", "os": "win32"}, - {"is_launcher": false, "name": "stalker clear sky/bin/xrengine.exe", "os": "win32"} - ], - "hook": true, - "id": "469153997027016714", - "name": "S.T.A.L.K.E.R.: Clear Sky" - }, - { - "executables": [{"is_launcher": false, "name": "russianfishing4/rf4_x64.exe", "os": "win32"}], - "hook": true, - "id": "469213224215248896", - "name": "Russian Fishing 4" - }, - { - "executables": [{"is_launcher": false, "name": "omensight.exe", "os": "win32"}], - "hook": true, - "id": "469278650936721428", - "name": "Omensight" - }, - { - "executables": [{"is_launcher": false, "name": "sundered.exe", "os": "win32"}], - "hook": true, - "id": "469280323109257228", - "name": "Sundered" - }, - { - "executables": [{"is_launcher": false, "name": "project highrise/game.exe", "os": "win32"}], - "hook": true, - "id": "469288321814757402", - "name": "Project Highrise" - }, - { - "executables": [{"is_launcher": false, "name": "crookz.exe", "os": "win32"}], - "hook": true, - "id": "469288750019641365", - "name": "Crookz - The Big Heist" - }, - { - "aliases": ["System Shock"], - "executables": [ - {"is_launcher": false, "name": "sshock.exe", "os": "win32"}, - {"is_launcher": false, "name": "system shock.exe", "os": "win32"} - ], - "hook": true, - "id": "469292352893222942", - "name": "System Shock: Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "metronomicon.exe", "os": "win32"}], - "hook": true, - "id": "469292858701119508", - "name": "The Metronomicon: Slay The Dance Floor" - }, - { - "executables": [{"is_launcher": false, "name": "dungeons2.exe", "os": "win32"}], - "hook": true, - "id": "469293209214910504", - "name": "Dungeons 2" - }, - { - "executables": [{"is_launcher": false, "name": "tropico4.exe", "os": "win32"}], - "hook": true, - "id": "469293612207833089", - "name": "Tropico 4" - }, - { - "executables": [{"is_launcher": false, "name": "rfg.exe", "os": "win32"}], - "hook": true, - "id": "469429746007015426", - "name": "Red Faction Guerrilla Re-Mars-tered" - }, - { - "executables": [{"is_launcher": false, "name": "hellbound-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "469564278853206025", - "name": "Hellbound: Survival Mode" - }, - { - "executables": [{"is_launcher": false, "name": "madmachines.exe", "os": "win32"}], - "hook": true, - "id": "469807750084296716", - "name": "MAD MACHINES" - }, - { - "aliases": ["Metal Gear Solid V: Ground Zeroes"], - "executables": [{"is_launcher": false, "name": "mgsgroundzeroes.exe", "os": "win32"}], - "hook": true, - "id": "469944923928657939", - "name": "METAL GEAR SOLID V: GROUND ZEROES" - }, - { - "executables": [{"is_launcher": false, "name": "bloody trapland.exe", "os": "win32"}], - "hook": true, - "id": "469959314183028736", - "name": "Bloody Trapland" - }, - { - "executables": [{"is_launcher": false, "name": "wormis.exe", "os": "win32"}], - "hook": true, - "id": "469989584277602304", - "name": "Worm.is: The Game" - }, - { - "executables": [{"is_launcher": false, "name": "cossacks 3/cossacks.exe", "os": "win32"}], - "hook": true, - "id": "470220034237530112", - "name": "Cossacks 3" - }, - { - "executables": [{"is_launcher": false, "name": "gw.exe", "os": "win32"}], - "hook": true, - "id": "470282452674412564", - "name": "Guild Wars" - }, - { - "aliases": ["The Sims 2 Ultimate Collection"], - "executables": [{"is_launcher": false, "name": "sims2ep9.exe", "os": "win32"}], - "hook": true, - "id": "470283475660963850", - "name": "The Sims 2: Ultimate Collection" - }, - { - "executables": [{"is_launcher": false, "name": "daorigins.exe", "os": "win32"}], - "hook": true, - "id": "470283661414105131", - "name": "Dragon Age: Origins" - }, - { - "executables": [{"is_launcher": false, "name": "project_rhombus.exe", "os": "win32"}], - "hook": true, - "id": "470399665154686986", - "name": "Project Rhombus" - }, - { - "executables": [{"is_launcher": false, "name": "climb/climb.exe", "os": "win32"}], - "hook": true, - "id": "470810047547572244", - "name": "Climb" - }, - { - "aliases": ["Command and Conquer Red Alert 3"], - "executables": [ - {"is_launcher": false, "name": "command and conquer red alert 3/ra3.exe", "os": "win32"}, - {"is_launcher": false, "name": "ra3ep1.exe", "os": "win32"} - ], - "hook": true, - "id": "470958640031989761", - "name": "Command and Conquer: Red Alert 3" - }, - { - "executables": [{"is_launcher": false, "name": "clone drone in the danger zone.exe", "os": "win32"}], - "hook": true, - "id": "471192232985231370", - "name": "Clone Drone in the Danger Zone" - }, - { - "executables": [{"is_launcher": false, "name": "police2.exe", "os": "win32"}], - "hook": true, - "id": "471357631697780774", - "name": "This Is the Police 2" - }, - { - "executables": [{"is_launcher": false, "name": "darksiders3.exe", "os": "win32"}], - "hook": true, - "id": "471358881348452352", - "name": "Darksiders III" - }, - { - "executables": [{"is_launcher": false, "name": "deadrising3.exe", "os": "win32"}], - "hook": true, - "id": "471760010016194570", - "name": "Dead Rising 3" - }, - { - "executables": [{"is_launcher": false, "name": "dinodday.exe", "os": "win32"}], - "hook": true, - "id": "472197780836974604", - "name": "Dino D-Day" - }, - { - "executables": [{"is_launcher": false, "name": "the banner saga 3.exe", "os": "win32"}], - "hook": true, - "id": "472228397020479488", - "name": "Banner Saga 3" - }, - { - "executables": [{"is_launcher": false, "name": "warrobots.exe", "os": "win32"}], - "hook": true, - "id": "472823716062167050", - "name": "War Robots" - }, - { - "executables": [{"is_launcher": false, "name": "mobiusff.exe", "os": "win32"}], - "hook": true, - "id": "472837297063067658", - "name": "MOBIUS FINAL FANTASY" - }, - { - "executables": [{"is_launcher": false, "name": "democracy3.exe", "os": "win32"}], - "hook": true, - "id": "473064732807528458", - "name": "Democracy 3" - }, - { - "executables": [ - {"is_launcher": false, "name": "poker night at the inventory/celebritypoker.exe", "os": "win32"} - ], - "hook": true, - "id": "473440891110162440", - "name": "Poker Night at the Inventory" - }, - { - "executables": [{"is_launcher": false, "name": "momodorarutm.exe", "os": "win32"}], - "hook": true, - "id": "473594880673972224", - "name": "Momodora: Reverie Under the Moonlight" - }, - { - "executables": [{"is_launcher": false, "name": "arizonasunshine.exe", "os": "win32"}], - "hook": true, - "id": "473969782085910558", - "name": "Arizona Sunshine" - }, - { - "executables": [{"is_launcher": false, "name": "deblob.exe", "os": "win32"}], - "hook": true, - "id": "474014437863587870", - "name": "de Blob" - }, - { - "executables": [{"is_launcher": false, "name": "deblob2.exe", "os": "win32"}], - "hook": true, - "id": "474015113964290048", - "name": "de Blob 2" - }, - { - "executables": [{"is_launcher": false, "name": "kenshi/kenshi_x64.exe", "os": "win32"}], - "hook": true, - "id": "474081029490081792", - "name": "Kenshi" - }, - { - "executables": [{"is_launcher": false, "name": "140/140.exe", "os": "win32"}], - "hook": true, - "id": "474298936228708372", - "name": "140" - }, - { - "executables": [{"is_launcher": false, "name": "rrre64.exe", "os": "win32"}], - "hook": true, - "id": "474431535291039754", - "name": "RaceRoom Racing Experience" - }, - { - "executables": [{"is_launcher": false, "name": "stronghold crusader.exe", "os": "win32"}], - "hook": true, - "id": "474975575409295380", - "name": "Stronghold Crusader HD" - }, - { - "executables": [{"is_launcher": false, "name": "sgw3.exe", "os": "win32"}], - "hook": true, - "id": "475006595814785024", - "name": "Sniper Ghost Warrior 3" - }, - { - "executables": [{"is_launcher": false, "name": "motorsport manager/mm.exe", "os": "win32"}], - "hook": true, - "id": "475034058066493441", - "name": "Motorsport Manager" - }, - { - "executables": [{"is_launcher": false, "name": "beholder.exe", "os": "win32"}], - "hook": true, - "id": "475039384358617098", - "name": "Beholder" - }, - { - "executables": [{"is_launcher": false, "name": "bbtag.exe", "os": "win32"}], - "hook": true, - "id": "475495343182577675", - "name": "BlazBlue Cross Tag Battle" - }, - { - "aliases": ["Warhammer 40,000: Dawn of War - Game of the Year Edition"], - "executables": [ - {"is_launcher": false, "name": "dawn of war gold/graphicsconfig.exe", "os": "win32"}, - {"is_launcher": false, "name": "dawn of war gold/w40k.exe", "os": "win32"} - ], - "hook": true, - "id": "475821838782693387", - "name": "Warhammer 40,000: Dawn of War - Game of the Year Edition" - }, - { - "executables": [{"is_launcher": false, "name": "feed and grow fish/feed and grow.exe", "os": "win32"}], - "hook": true, - "id": "475913332478443530", - "name": "Feed and Grow: Fish" - }, - { - "executables": [{"is_launcher": false, "name": "punch club.exe", "os": "win32"}], - "hook": true, - "id": "476271278836285440", - "name": "Punch Club" - }, - { - "executables": [{"is_launcher": false, "name": "halfdead.exe", "os": "win32"}], - "hook": true, - "id": "476349443474718730", - "name": "Half dead" - }, - { - "executables": [{"is_launcher": false, "name": "worms w.m.d.exe", "os": "win32"}], - "hook": true, - "id": "476482983675559946", - "name": "Worms W.M.D" - }, - { - "executables": [{"is_launcher": false, "name": "pyre.exe", "os": "win32"}], - "hook": true, - "id": "476907979069849620", - "name": "Pyre" - }, - { - "aliases": ["Monster Hunter: World"], - "executables": [ - {"is_launcher": false, "name": "monsterhunterworld.exe", "os": "win32"}, - {"is_launcher": false, "name": "monster hunter world/mhw_modmanager.exe", "os": "win32"} - ], - "hook": true, - "id": "477152881196269569", - "name": "MONSTER HUNTER: WORLD" - }, - { - "aliases": ["Among Us"], - "executables": [ - {"is_launcher": false, "name": "among us/among us.exe", "os": "win32"}, - {"is_launcher": false, "name": "among us - copy/among us.exe", "os": "win32"}, - {"is_launcher": false, "name": "among us - tou/among us.exe", "os": "win32"}, - {"is_launcher": false, "name": "among us - kopie/among us.exe", "os": "win32"} - ], - "hook": true, - "id": "477175586805252107", - "name": "Among Us", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "viridi.exe", "os": "win32"}], - "hook": true, - "id": "477520549833211915", - "name": "Viridi" - }, - { - "executables": [{"is_launcher": false, "name": "offworld.exe", "os": "win32"}], - "hook": true, - "id": "477657966095630346", - "name": "Offworld Trading Company" - }, - { - "executables": [{"is_launcher": false, "name": "west of loathing.exe", "os": "win32"}], - "hook": true, - "id": "478014121065840650", - "name": "West of Loathing" - }, - { - "executables": [{"is_launcher": false, "name": "ultimate doom/base/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "478613204323270666", - "name": "The Ultimate DOOM" - }, - { - "executables": [{"is_launcher": false, "name": "lastyear-win64-shippinggame.exe", "os": "win32"}], - "hook": true, - "id": "478637764565401630", - "name": "Last Year: The Nightmare", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "rampage_knights.exe", "os": "win32"}], - "hook": true, - "id": "478646014841061416", - "name": "Rampage Knights" - }, - { - "executables": [{"is_launcher": false, "name": "yakuza0.exe", "os": "win32"}], - "hook": true, - "id": "478764846951825418", - "name": "Yakuza 0" - }, - { - "executables": [{"is_launcher": false, "name": "otherlandsclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "478866361544605698", - "name": "Rend" - }, - { - "executables": [{"is_launcher": false, "name": "overcooked2.exe", "os": "win32"}], - "hook": true, - "id": "479169486583496704", - "name": "Overcooked! 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "fallout2.exe", "os": "win32"}, - {"is_launcher": false, "name": "fallout2hr.exe", "os": "win32"} - ], - "hook": true, - "id": "479334869462417409", - "name": "Fallout 2" - }, - { - "aliases": ["Deathgarden: BLOODHARVEST"], - "executables": [ - {"is_launcher": false, "name": "theexit-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/theexit_be.exe", "os": "win32"} - ], - "hook": true, - "id": "479694330441891840", - "name": "DEATHGARDEN" - }, - { - "executables": [{"is_launcher": false, "name": "rage.exe", "os": "win32"}], - "hook": true, - "id": "479735703140433940", - "name": "RAGE" - }, - { - "executables": [{"is_launcher": false, "name": "orwell.exe", "os": "win32"}], - "hook": true, - "id": "479821376975405066", - "name": "Orwell" - }, - { - "executables": [{"is_launcher": false, "name": "timeclickers.exe", "os": "win32"}], - "hook": true, - "id": "479894252726517760", - "name": "Time Clickers" - }, - { - "executables": [{"is_launcher": false, "name": "win64/prominence-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "480167738334248980", - "name": "Prominence Poker" - }, - { - "executables": [{"is_launcher": false, "name": "getwrecked.exe", "os": "win32"}], - "hook": true, - "id": "480316289307639808", - "name": "Wrecked" - }, - { - "executables": [{"is_launcher": false, "name": "paintball war.exe", "os": "win32"}], - "hook": true, - "id": "480363777574043658", - "name": "Paintball War" - }, - { - "executables": [{"is_launcher": false, "name": "postscriptum.exe", "os": "win32"}], - "hook": true, - "id": "480560735521341440", - "name": "Post Scriptum" - }, - { - "executables": [{"is_launcher": false, "name": "crawl.exe", "os": "win32"}], - "hook": true, - "id": "480573996509954078", - "name": "Crawl" - }, - { - "executables": [{"is_launcher": false, "name": "danganronpa.exe", "os": "win32"}], - "hook": true, - "id": "480963716934795264", - "name": "Danganronpa: Trigger Happy Havoc" - }, - { - "executables": [{"is_launcher": false, "name": "911 operator/911.exe", "os": "win32"}], - "hook": true, - "id": "481103865559908372", - "name": "911 Operator" - }, - { - "executables": [{"is_launcher": false, "name": "howtosurvive2.exe", "os": "win32"}], - "hook": true, - "id": "481505570747318292", - "name": "How to Survive 2" - }, - { - "executables": [{"is_launcher": false, "name": "deadrising2.exe", "os": "win32"}], - "hook": true, - "id": "481570202988052490", - "name": "Dead Rising 2" - }, - { - "executables": [{"is_launcher": false, "name": "graveyard keeper.exe", "os": "win32"}], - "hook": true, - "id": "481816401183506432", - "name": "Graveyard Keeper" - }, - { - "executables": [{"is_launcher": false, "name": "showerdad.exe", "os": "win32"}], - "hook": true, - "id": "481999402630774794", - "name": "Shower With Your Dad Simulator 2015: Do You Still Shower With Your Dad" - }, - { - "aliases": ["Valkyria Chronicles"], - "executables": [{"is_launcher": false, "name": "valkyria.exe", "os": "win32"}], - "hook": true, - "id": "482176854938353674", - "name": "Valkyria Chronicles\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "hotlava.exe", "os": "win32"}], - "hook": true, - "id": "482730443037212673", - "name": "Hot Lava" - }, - { - "executables": [{"is_launcher": false, "name": "simcity 4.exe", "os": "win32"}], - "hook": true, - "id": "482776230895288320", - "name": "SimCity 4 Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "brokeprotocol.exe", "os": "win32"}], - "hook": true, - "id": "483247042689368084", - "name": "BROKE PROTOCOL: Online City RPG" - }, - { - "executables": [{"is_launcher": false, "name": "weneedtogodeeper.exe", "os": "win32"}], - "hook": true, - "id": "483361121269710858", - "name": "We Need to Go Deeper" - }, - { - "executables": [{"is_launcher": false, "name": "roguelands.exe", "os": "win32"}], - "hook": true, - "id": "483421234391154698", - "name": "Roguelands" - }, - { - "executables": [{"is_launcher": false, "name": "uno demo/uno.exe", "os": "win32"}], - "hook": true, - "id": "484310169145180160", - "name": "UNO Demo" - }, - { - "executables": [{"is_launcher": false, "name": "scum.exe", "os": "win32"}], - "hook": true, - "id": "484425151631589378", - "name": "SCUM" - }, - { - "executables": [{"is_launcher": false, "name": "system/witcher.exe", "os": "win32"}], - "hook": true, - "id": "484451241825533962", - "name": "The Witcher Enhanced Edition Director's Cut" - }, - {"hook": true, "id": "484475041711521830", "name": "STAR WARS Rebellion"}, - { - "executables": [{"is_launcher": false, "name": "call of war.exe", "os": "win32"}], - "hook": true, - "id": "484486787952148485", - "name": "Call of War" - }, - { - "executables": [{"is_launcher": false, "name": "wesnoth.exe", "os": "win32"}], - "hook": true, - "id": "484526083686006810", - "name": "Battle for Wesnoth" - }, - { - "executables": [{"is_launcher": false, "name": "lisa.exe", "os": "win32"}], - "hook": true, - "id": "484572816977428490", - "name": "LISA" - }, - { - "aliases": ["Warhammer 40,000: Space Marine - Anniversary Edition"], - "executables": [ - {"is_launcher": false, "name": "warhammer 40,000 space marine/bssndrpt.exe", "os": "win32"}, - {"is_launcher": false, "name": "spacemarine.exe", "os": "win32"} - ], - "hook": true, - "id": "484789228761514004", - "name": "Warhammer 40,000: Space Marine" - }, - { - "aliases": ["Insurgency: Sandstorm"], - "executables": [ - {"is_launcher": false, "name": "insurgencyclient-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "sandstorm/insurgencyeac.exe", "os": "win32"} - ], - "hook": true, - "id": "484892481452769290", - "name": "Insurgency: Sandstorm" - }, - { - "aliases": ["Onward"], - "executables": [ - {"is_launcher": false, "name": "onward/onward.exe", "os": "win32"}, - {"is_launcher": false, "name": "onward.exe", "os": "win32"} - ], - "hook": true, - "id": "484938446268268564", - "name": "Onward" - }, - { - "executables": [{"is_launcher": false, "name": "tph.exe", "os": "win32"}], - "hook": true, - "id": "485224436187004928", - "name": "Two Point Hospital" - }, - { - "executables": [{"is_launcher": false, "name": "talisman.exe", "os": "win32"}], - "hook": true, - "id": "485857105278926848", - "name": "Talisman: Digital Edition" - }, - { - "executables": [{"is_launcher": false, "name": "gunpoint.exe", "os": "win32"}], - "hook": true, - "id": "486705198576828416", - "name": "Gunpoint" - }, - { - "executables": [ - {"is_launcher": false, "name": "iw3mp.exe", "os": "win32"}, - {"is_launcher": false, "name": "iw3sp.exe", "os": "win32"} - ], - "hook": true, - "id": "486763816944795658", - "name": "Call of Duty 4: Modern Warfare", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "deadfrontier2.exe", "os": "win32"}], - "hook": true, - "id": "487074862565818378", - "name": "Dead Frontier 2" - }, - { - "aliases": ["Stronghold Crusader Extreme HD"], - "executables": [ - { - "is_launcher": false, - "name": "stronghold crusader extreme/stronghold_crusader_extreme.exe", - "os": "win32" - }, - {"is_launcher": false, "name": "stronghold crusader extreme/stronghold crusader.exe", "os": "win32"} - ], - "hook": true, - "id": "487328146438356992", - "name": "Stronghold Crusader Extreme HD" - }, - { - "executables": [ - {"is_launcher": false, "name": "throneoflies.x86 ", "os": "linux"}, - {"is_launcher": false, "name": "throneoflies.exe", "os": "win32"} - ], - "hook": true, - "id": "487330866830376960", - "name": "Throne of Lies" - }, - { - "executables": [{"is_launcher": false, "name": "badnorth.exe", "os": "win32"}], - "hook": true, - "id": "487564993236172802", - "name": "Bad North" - }, - { - "executables": [{"is_launcher": false, "name": "hungerdungeon.exe", "os": "win32"}], - "hook": true, - "id": "487652330989158410", - "name": "Hunger Dungeon" - }, - { - "executables": [{"is_launcher": false, "name": "the dig.exe", "os": "win32"}], - "hook": true, - "id": "487683851519393822", - "name": "The Dig\u00ae" - }, - { - "aliases": ["Deus Ex"], - "executables": [{"is_launcher": false, "name": "deusex.exe", "os": "win32"}], - "hook": true, - "id": "488014835389300736", - "name": "Deus Ex: Game of the Year Edition" - }, - { - "executables": [{"is_launcher": false, "name": "gc2twilightofthearnor.exe", "os": "win32"}], - "hook": true, - "id": "488380884337295360", - "name": "Galactic Civilizations II: Ultimate Edition" - }, - { - "executables": [{"is_launcher": false, "name": "stickfight.exe", "os": "win32"}], - "hook": true, - "id": "488693576314650634", - "name": "Stick Fight: The Game" - }, - { - "executables": [{"is_launcher": false, "name": "civilization4.exe", "os": "win32"}], - "hook": true, - "id": "488844250251788339", - "name": "Sid Meier's Civilization\u00ae IV Complete" - }, - { - "aliases": ["XCOM: Enemy Unknown"], - "executables": [ - {"is_launcher": false, "name": "xcomew.exe", "os": "win32"}, - {"is_launcher": false, "name": "win32/xcomgame.exe", "os": "win32"}, - {"is_launcher": false, "name": "xcomgame.exe", "os": "win32"} - ], - "hook": true, - "id": "488856269382483979", - "name": "XCOM Enemy Unknown" - }, - { - "executables": [{"is_launcher": false, "name": "dundefgame.exe", "os": "win32"}], - "hook": true, - "id": "488858705836900355", - "name": "Dungeon Defenders" - }, - { - "executables": [{"is_launcher": false, "name": "nba2k17.exe", "os": "win32"}], - "hook": true, - "id": "489276682566369290", - "name": "NBA 2K17" - }, - { - "executables": [{"is_launcher": false, "name": "neptuniarebirth1.exe", "os": "win32"}], - "hook": true, - "id": "489332841910632458", - "name": "Hyperdimension Neptunia Re;Birth1" - }, - { - "executables": [{"is_launcher": false, "name": "szoneonline.exe", "os": "win32"}], - "hook": true, - "id": "489441787778301992", - "name": "sZone-Online" - }, - { - "aliases": ["Resident Evil Revelations 2"], - "executables": [{"is_launcher": false, "name": "rerev2.exe", "os": "win32"}], - "hook": true, - "id": "489648352892289054", - "name": "Resident Evil Revelations 2 / Biohazard Revelations 2" - }, - { - "aliases": ["Trine"], - "executables": [ - {"is_launcher": false, "name": "trine.exe", "os": "win32"}, - {"is_launcher": false, "name": "trine.app", "os": "darwin"}, - {"is_launcher": false, "name": "trine/wmfdist11-windowsxp-x86-enu.exe", "os": "win32"}, - {"is_launcher": false, "name": "trine1_32bit.exe", "os": "win32"} - ], - "hook": true, - "id": "489705172453425173", - "name": "Trine Enchanted Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "trine3_32bit.exe", "os": "win32"}, - {"is_launcher": false, "name": "trine3_64bit.exe", "os": "win32"} - ], - "hook": true, - "id": "489715273683697674", - "name": "Trine 3: The Artifacts of Power" - }, - { - "executables": [ - {"is_launcher": false, "name": "trine2.app", "os": "darwin"}, - {"is_launcher": false, "name": "trine2_32bit.exe", "os": "win32"} - ], - "hook": true, - "id": "489715841789853697", - "name": "Trine 2: Complete Story", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "jobsimulator.exe", "os": "win32"}], - "hook": true, - "id": "489832887936483338", - "name": "Job Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "fifa16.exe", "os": "win32"}], - "hook": true, - "id": "489854965787918376", - "name": "FIFA 16" - }, - { - "aliases": ["Construction Simulator 2015"], - "executables": [{"is_launcher": false, "name": "consim2015.exe", "os": "win32"}], - "hook": true, - "id": "489879126925115392", - "name": "Construction-Simulator 2015" - }, - {"hook": true, "id": "489916817146511371", "name": "Seasons After Fall"}, - { - "aliases": ["Wasteland 2"], - "executables": [{"is_launcher": false, "name": "wl2.exe", "os": "win32"}], - "hook": true, - "id": "489917055282315274", - "name": "Wasteland 2: Director's Cut" - }, - {"hook": true, "id": "489917480274362368", "name": "Shadows: Heretic Kingdoms"}, - { - "executables": [ - {"is_launcher": false, "name": "system shock2.exe", "os": "win32"}, - {"is_launcher": false, "name": "shock2.exe", "os": "win32"}, - {"is_launcher": false, "name": "ss2/ss2.exe", "os": "win32"} - ], - "hook": true, - "id": "489917602412494878", - "name": "System Shock 2" - }, - { - "executables": [{"is_launcher": false, "name": "sottr.exe", "os": "win32"}], - "hook": true, - "id": "490260586899177491", - "name": "Shadow of the Tomb Raider" - }, - { - "executables": [{"is_launcher": false, "name": "onraid.exe", "os": "win32"}], - "hook": true, - "id": "490611188988772367", - "name": "ONRAID" - }, - { - "aliases": ["Call of Duty: Black Ops 4", "Call of Duty: Black Ops IIII"], - "executables": [{"is_launcher": false, "name": "blackops4.exe", "os": "win32"}], - "hook": true, - "id": "490913233667096576", - "name": "Call of Duty Black Ops 4", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "chess/chess.exe", "os": "win32"}], - "hook": true, - "id": "491048607072387072", - "name": "Simply Chess" - }, - { - "executables": [{"is_launcher": false, "name": "chaosrebornwin64.exe", "os": "win32"}], - "hook": true, - "id": "491200852149796865", - "name": "Chaos Reborn" - }, - { - "executables": [{"is_launcher": false, "name": "brokenage.exe", "os": "win32"}], - "hook": true, - "id": "491424584168505354", - "name": "Broken Age" - }, - { - "executables": [{"is_launcher": false, "name": "dangerous waters/steamrun.exe", "os": "win32"}], - "hook": true, - "id": "491425013468102657", - "name": "Dangerous Waters" - }, - { - "executables": [{"is_launcher": false, "name": "discipl2.exe", "os": "win32"}], - "hook": true, - "id": "491425405681664037", - "name": "Disciples II: Gallean's Return" - }, - { - "executables": [{"is_launcher": false, "name": "disciple.exe", "os": "win32"}], - "hook": true, - "id": "491425800059486208", - "name": "Disciples Sacred Lands Gold" - }, - { - "executables": [{"is_launcher": false, "name": "flatout2.exe", "os": "win32"}], - "hook": true, - "id": "491426078137647104", - "name": "FlatOut 2" - }, - { - "executables": [{"is_launcher": false, "name": "fouc.exe", "os": "win32"}], - "hook": true, - "id": "491426256789831690", - "name": "FlatOut: Ultimate Carnage" - }, - { - "executables": [{"is_launcher": false, "name": "fleet command/steamrun.exe", "os": "win32"}], - "hook": true, - "id": "491426408384561160", - "name": "Fleet Command" - }, - { - "executables": [{"is_launcher": false, "name": "se4.exe", "os": "win32"}], - "hook": true, - "id": "491426627394338846", - "name": "Space Empires IV Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "sub command/steamrun.exe", "os": "win32"}], - "hook": true, - "id": "491426844604760120", - "name": "Sub Command" - }, - { - "executables": [{"is_launcher": false, "name": "masters of anima.exe", "os": "win32"}], - "hook": true, - "id": "491427069734027273", - "name": "Masters of Anima" - }, - { - "executables": [{"is_launcher": false, "name": "ponyisland.exe", "os": "win32"}], - "hook": true, - "id": "491427187442974749", - "name": "Pony Island" - }, - { - "executables": [{"is_launcher": false, "name": "vvvvvv.exe", "os": "win32"}], - "hook": true, - "id": "491427544134975498", - "name": "VVVVVV" - }, - { - "executables": [{"is_launcher": false, "name": "drinkbox_game4/game.exe", "os": "win32"}], - "hook": true, - "id": "491427940135993364", - "name": "Guacamelee! Super Turbo Championship Edition" - }, - { - "executables": [{"is_launcher": false, "name": "theendisnigh.exe", "os": "win32"}], - "hook": true, - "id": "491739802870349883", - "name": "The End Is Nigh" - }, - { - "executables": [{"is_launcher": false, "name": "towerfall.exe", "os": "win32"}], - "hook": true, - "id": "491740193116782595", - "name": "TowerFall Ascension" - }, - { - "executables": [{"is_launcher": false, "name": "dragon quest xi.exe", "os": "win32"}], - "hook": true, - "id": "491806530576842762", - "name": "DRAGON QUEST\u00ae XI: Echoes of an Elusive Age\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "regularhumanbasketball.exe", "os": "win32"}], - "hook": true, - "id": "491853507507388427", - "name": "Regular Human Basketball" - }, - { - "executables": [{"is_launcher": false, "name": "f1_2018.exe", "os": "win32"}], - "hook": true, - "id": "491909189086740480", - "name": "F1 2018" - }, - { - "executables": [{"is_launcher": false, "name": "never split the party.exe", "os": "win32"}], - "hook": true, - "id": "492054902772727808", - "name": "Never Split the Party" - }, - { - "executables": [{"is_launcher": false, "name": "thewolfamongus.exe", "os": "win32"}], - "hook": true, - "id": "492110850342125591", - "name": "The Wolf Among Us" - }, - { - "executables": [{"is_launcher": false, "name": "brothers.exe", "os": "win32"}], - "hook": true, - "id": "492112259770875921", - "name": "Brothers - A Tale of Two Sons" - }, - { - "aliases": ["ABZ\u00db"], - "executables": [ - {"is_launcher": false, "name": "abzugame-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/abzugame-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "492113873508368403", - "name": "ABZU" - }, - { - "executables": [{"is_launcher": false, "name": "lastdayofjune.exe", "os": "win32"}], - "hook": true, - "id": "492114663211925536", - "name": "Last Day of June" - }, - { - "executables": [{"is_launcher": false, "name": "cities in motion.exe", "os": "win32"}], - "hook": true, - "id": "492115461824184320", - "name": "Cities in Motion" - }, - { - "executables": [ - {"is_launcher": false, "name": "darkest hourkr.exe", "os": "win32"}, - {"is_launcher": false, "name": "darkest hour.exe", "os": "win32"}, - {"is_launcher": false, "name": "darkest houren.exe", "os": "win32"} - ], - "hook": true, - "id": "492116330909138974", - "name": "Darkest Hour: A Hearts of Iron Game" - }, - { - "executables": [ - {"is_launcher": false, "name": "eu3.exe", "os": "win32"}, - {"is_launcher": false, "name": "eu3game.exe", "os": "win32"} - ], - "hook": true, - "id": "492117546728816640", - "name": "Europa Universalis III" - }, - { - "executables": [ - {"is_launcher": false, "name": "hoi3.exe", "os": "win32"}, - {"is_launcher": false, "name": "hoi3game.exe", "os": "win32"}, - {"is_launcher": false, "name": "hoi3_tfh.exe", "os": "win32"}, - {"is_launcher": false, "name": "hoi3_tfh_kor.exe", "os": "win32"} - ], - "hook": true, - "id": "492118503508279316", - "name": "Hearts of Iron III" - }, - { - "aliases": ["Majesty: The Fantasy Kingdom Sim"], - "executables": [{"is_launcher": false, "name": "majestyhd.exe", "os": "win32"}], - "hook": true, - "id": "492120134937346049", - "name": "Majesty Gold HD" - }, - { - "executables": [{"is_launcher": false, "name": "dragonfall.exe", "os": "win32"}], - "hook": true, - "id": "492120767111233566", - "name": "Shadowrun: Dragonfall - Director's Cut" - }, - { - "executables": [{"is_launcher": false, "name": "torchlight.exe", "os": "win32"}], - "hook": true, - "id": "492121941155643402", - "name": "Torchlight" - }, - { - "executables": [{"is_launcher": false, "name": "swrepubliccommando.exe", "os": "win32"}], - "hook": true, - "id": "492129256772599837", - "name": "STAR WARS\u2122 Republic Commando\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "stranger.exe", "os": "win32"}], - "hook": true, - "id": "492129658536591400", - "name": "Oddworld: Stranger's Wrath" - }, - { - "executables": [{"is_launcher": false, "name": "vegas - make it big/casino.exe", "os": "win32"}], - "hook": true, - "id": "492130126012743710", - "name": "Vegas: Make It Big" - }, - { - "executables": [ - {"is_launcher": false, "name": "swgbg.exe", "os": "win32"}, - {"is_launcher": false, "name": "battlegrounds_x2.exe", "os": "win32"}, - {"is_launcher": false, "name": "battlegrounds.exe", "os": "win32"}, - {"is_launcher": false, "name": "battlegrounds_cc.exe", "os": "win32"}, - {"is_launcher": false, "name": "swgbwide_x1.exe", "os": "win32"}, - {"is_launcher": false, "name": "battlegrounds_x1.exe", "os": "win32"} - ], - "hook": true, - "id": "492131222135373834", - "name": "STAR WARS\u2122 Galactic Battlegrounds Saga" - }, - { - "executables": [{"is_launcher": false, "name": "walkingdead4.exe", "os": "win32"}], - "hook": true, - "id": "492133608493023232", - "name": "The Walking Dead: The Final Season" - }, - { - "executables": [ - {"is_launcher": false, "name": "jediknight.exe", "os": "win32"}, - {"is_launcher": false, "name": "jk.exe", "os": "win32"}, - {"is_launcher": false, "name": "jedi.exe", "os": "win32"} - ], - "hook": true, - "id": "492134139647098881", - "name": "STAR WARS\u2122 Jedi Knight: Dark Forces II" - }, - { - "executables": [{"is_launcher": false, "name": "yookalaylee64.exe", "os": "win32"}], - "hook": true, - "id": "492134695711014912", - "name": "Yooka-Laylee" - }, - { - "executables": [ - {"is_launcher": false, "name": "mise.exe", "os": "win32"}, - {"is_launcher": false, "name": "misec.exe", "os": "win32"} - ], - "hook": true, - "id": "492134756914429975", - "name": "The Secret of Monkey Island\u2122 Special Edition" - }, - { - "aliases": ["Star Wars Jedi Knight II"], - "executables": [ - {"is_launcher": false, "name": "jk2mp.exe", "os": "win32"}, - {"is_launcher": false, "name": "jk2sp.exe", "os": "win32"}, - {"is_launcher": false, "name": "jk2mvmp_x86.exe", "os": "win32"}, - {"is_launcher": false, "name": "jk2mvmp_x64.exe", "os": "win32"} - ], - "hook": true, - "id": "492135944179286068", - "name": "STAR WARS\u2122 Jedi Knight II: Jedi Outcast\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "swkotor.exe", "os": "win32"}], - "hook": true, - "id": "492136872714305566", - "name": "STAR WARS\u2122 Knights of the Old Republic" - }, - { - "executables": [{"is_launcher": false, "name": "dark forces/dosbox/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "492137508633706517", - "name": "Star Wars: Dark Forces" - }, - { - "executables": [ - {"is_launcher": false, "name": "ascension.exe", "os": "win32"}, - {"is_launcher": false, "name": "ascensiongame.exe", "os": "win32"} - ], - "hook": true, - "id": "492140628717731846", - "name": "Ascension: Deckbuilding Game" - }, - { - "executables": [{"is_launcher": false, "name": "ashesescalation_dx11.exe", "os": "win32"}], - "hook": true, - "id": "492141568816447488", - "name": "Ashes of the Singularity: Escalation" - }, - { - "executables": [{"is_launcher": false, "name": "ticket to ride.exe", "os": "win32"}], - "hook": true, - "id": "492142885077123082", - "name": "Ticket to Ride" - }, - { - "executables": [ - {"is_launcher": false, "name": "killer queen black.exe", "os": "win32"}, - {"is_launcher": false, "name": "killer queen black/killerqueenx.exe", "os": "win32"} - ], - "hook": true, - "id": "492144146040094722", - "name": "Killer Queen Black" - }, - { - "executables": [{"is_launcher": false, "name": "nnt.exe", "os": "win32"}], - "hook": true, - "id": "492146632511586313", - "name": "Oddworld: New 'n' Tasty" - }, - { - "executables": [{"is_launcher": false, "name": "ootp18.exe", "os": "win32"}], - "hook": true, - "id": "492147626872012800", - "name": "Out of the Park Baseball 18" - }, - { - "executables": [{"is_launcher": false, "name": "tropico3.exe", "os": "win32"}], - "hook": true, - "id": "492154985627385886", - "name": "Tropico 3" - }, - { - "executables": [{"is_launcher": false, "name": "hoi2.exe", "os": "win32"}], - "hook": true, - "id": "492158597673910281", - "name": "Hearts of Iron II" - }, - {"hook": true, "id": "492159419837186053", "name": "Europa Universalis II"}, - { - "executables": [{"is_launcher": false, "name": "ring of elysium/europa_client.exe", "os": "win32"}], - "hook": true, - "id": "492159553966702592", - "name": "Ring of Elysium" - }, - { - "executables": [{"is_launcher": false, "name": "victoria.exe", "os": "win32"}], - "hook": true, - "id": "492161312730775553", - "name": "Victoria I" - }, - { - "executables": [{"is_launcher": false, "name": "indiana jones and the fate of atlantis.exe", "os": "win32"}], - "hook": true, - "id": "492162663976140810", - "name": "Indiana Jones\u00ae and the Fate of Atlantis\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "monkey2.exe", "os": "win32"}], - "hook": true, - "id": "492164341840347156", - "name": "Monkey Island\u2122 2 Special Edition: LeChuck's Revenge\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "eurotrucks.exe", "os": "win32"}], - "hook": true, - "id": "492695172967301120", - "name": "Euro Truck Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "galciv3.exe", "os": "win32"}], - "hook": true, - "id": "492772865175715850", - "name": "Galactic Civilizations III" - }, - { - "executables": [{"is_launcher": false, "name": "theculling/victory/binaries/win64/victory.exe", "os": "win32"}], - "hook": true, - "id": "493430961313415188", - "name": "The Culling" - }, - { - "executables": [{"is_launcher": false, "name": "rpgvxace.exe", "os": "win32"}], - "hook": true, - "id": "493490198580035604", - "name": "RPG Maker VX Ace" - }, - { - "executables": [{"is_launcher": false, "name": "wildeight.exe", "os": "win32"}], - "hook": true, - "id": "493827668991803402", - "name": "The Wild Eight" - }, - {"hook": true, "id": "494178385807933445", "name": "Warframe Test"}, - { - "executables": [{"is_launcher": false, "name": "planetbase.exe", "os": "win32"}], - "hook": true, - "id": "494228479898812416", - "name": "Planetbase" - }, - { - "aliases": ["Alien Vs Predator"], - "executables": [ - {"is_launcher": false, "name": "avp_dx11.exe", "os": "win32"}, - {"is_launcher": false, "name": "avp3.exe", "os": "win32"} - ], - "hook": true, - "id": "494240845378355220", - "name": "Aliens vs. Predator" - }, - { - "executables": [{"is_launcher": false, "name": "blazblue centralfiction/bbcf.exe", "os": "win32"}], - "hook": true, - "id": "494341815940415488", - "name": "BlazBlue Centralfiction" - }, - { - "aliases": ["Blacklight: Retribution"], - "executables": [ - {"is_launcher": false, "name": "foxgame-win32-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "win32/foxgame-win32-shipping_be.exe", "os": "win32"} - ], - "hook": true, - "id": "495079795252527104", - "name": "Blacklight: Retribution" - }, - { - "aliases": ["20XX"], - "executables": [{"is_launcher": false, "name": "20xx.exe", "os": "win32"}], - "hook": true, - "id": "495310509382565890", - "name": "20XX" - }, - { - "executables": [{"is_launcher": false, "name": "dow2.exe", "os": "win32"}], - "hook": true, - "id": "495651148242616330", - "name": "Warhammer 40,000: Dawn of War II - Retribution" - }, - { - "executables": [{"is_launcher": false, "name": "legion td 2.exe", "os": "win32"}], - "hook": true, - "id": "495691276159549460", - "name": "Legion TD 2" - }, - { - "executables": [{"is_launcher": false, "name": "coloringpixels.exe", "os": "win32"}], - "hook": true, - "id": "495871643432910848", - "name": "Coloring Pixels" - }, - { - "executables": [{"is_launcher": false, "name": "artofwar/game/u1game.exe", "os": "win32"}], - "hook": true, - "id": "495889089703444481", - "name": "Art of War: Red Tides" - }, - { - "executables": [{"is_launcher": false, "name": "battleriteroyale.exe", "os": "win32"}], - "hook": true, - "id": "495912170190667776", - "name": "Battlerite Royale" - }, - { - "executables": [{"is_launcher": false, "name": "roguelegacy.exe", "os": "win32"}], - "hook": true, - "id": "495979053371752481", - "name": "Rogue Legacy" - }, - { - "executables": [{"is_launcher": false, "name": "mistsurv-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "496035345981243395", - "name": "Mist Survival" - }, - { - "executables": [{"is_launcher": false, "name": "rememberinghowwemet.exe", "os": "win32"}], - "hook": true, - "id": "496521775161671734", - "name": "A Kiss For The Petals - Remembering How We Met" - }, - { - "aliases": ["A Sky Full Of Stars"], - "executables": [{"is_launcher": false, "name": "a sky full of stars/advhd.exe", "os": "win32"}], - "hook": true, - "id": "496523213778583553", - "name": "A Sky Full of Stars" - }, - { - "aliases": ["A Study In Steampunk: Choice By Gaslight"], - "executables": [ - {"is_launcher": false, "name": "studyinsteampunk.exe", "os": "win32"}, - {"is_launcher": false, "name": "a study in steampunk choice by gaslight.app", "os": "darwin"} - ], - "hook": true, - "id": "496524367962832918", - "name": "A Study in Steampunk: Choice by Gaslight" - }, - { - "executables": [{"is_launcher": false, "name": "actionhenk.exe", "os": "win32"}], - "hook": true, - "id": "496524555360403476", - "name": "Action Henk" - }, - { - "executables": [{"is_launcher": false, "name": "aeon rivals.exe", "os": "win32"}], - "hook": true, - "id": "496524827050508316", - "name": "Aeon Rivals" - }, - { - "executables": [ - {"is_launcher": false, "name": "ageofconan.exe", "os": "win32"}, - {"is_launcher": false, "name": "ageofconandx10.exe", "os": "win32"} - ], - "hook": true, - "id": "496525141467987991", - "name": "Age of Conan" - }, - { - "executables": [{"is_launcher": false, "name": "aiwar.exe", "os": "win32"}], - "hook": true, - "id": "496525786468319232", - "name": "AI War: Fleet Command" - }, - { - "executables": [{"is_launcher": false, "name": "alan_wakes_american_nightmare.exe", "os": "win32"}], - "hook": true, - "id": "496526142673649724", - "name": "Alan Wake's American Nightmare" - }, - { - "executables": [ - {"is_launcher": false, "name": "albion-online.app", "os": "darwin"}, - {"is_launcher": false, "name": "albion-online.exe", "os": "win32"} - ], - "hook": true, - "id": "496526645671231488", - "name": "Albion Online", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "alienbreed2assault.exe", "os": "win32"}], - "hook": true, - "id": "496527138141503538", - "name": "Alien Breed 2: Assault" - }, - { - "executables": [{"is_launcher": false, "name": "altitude.exe", "os": "win32"}], - "hook": true, - "id": "496529186064826368", - "name": "Altitude" - }, - { - "executables": [ - {"is_launcher": false, "name": "anarchy.exe", "os": "win32"}, - {"is_launcher": false, "name": "anarchyonline.exe", "os": "win32"} - ], - "hook": true, - "id": "496529322039836681", - "name": "Anarchy Online" - }, - { - "aliases": ["Anno 1404"], - "executables": [{"is_launcher": false, "name": "anno4.exe", "os": "win32"}], - "hook": true, - "id": "496530041895911429", - "name": "ANNO 1404" - }, - { - "aliases": ["ANNO 2205"], - "executables": [{"is_launcher": false, "name": "anno2205.exe", "os": "win32"}], - "hook": true, - "id": "496530253905264659", - "name": "Anno 2205" - }, - { - "executables": [{"is_launcher": false, "name": "antichamber/binaries/win32/udk.exe", "os": "win32"}], - "hook": true, - "id": "496532716099993623", - "name": "Antichamber" - }, - { - "executables": [{"is_launcher": false, "name": "thespacegame.exe", "os": "win32"}], - "hook": true, - "id": "496533328833544227", - "name": "Ascent - The Space Game" - }, - { - "executables": [{"is_launcher": false, "name": "assault android cactus/cactus.exe", "os": "win32"}], - "hook": true, - "id": "496533560228970514", - "name": "Assault Android Cactus" - }, - { - "executables": [{"is_launcher": false, "name": "astebreed.exe", "os": "win32"}], - "hook": true, - "id": "496533728932134922", - "name": "Astebreed" - }, - { - "executables": [{"is_launcher": false, "name": "axiomverge.exe", "os": "win32"}], - "hook": true, - "id": "496534151642742804", - "name": "Axiom Verge" - }, - { - "executables": [{"is_launcher": false, "name": "rats.exe", "os": "win32"}], - "hook": true, - "id": "496534375740080128", - "name": "Bad Rats" - }, - { - "executables": [{"is_launcher": false, "name": "baremetal.exe", "os": "win32"}], - "hook": true, - "id": "496534611250118656", - "name": "Bare Metal" - }, - { - "executables": [{"is_launcher": false, "name": "battlesquares.exe", "os": "win32"}], - "hook": true, - "id": "496534796424708124", - "name": "Battle Squares" - }, - { - "executables": [{"is_launcher": false, "name": "bf2.exe", "os": "win32"}], - "hook": true, - "id": "496534962200248373", - "name": "Battlefield 2" - }, - { - "executables": [{"is_launcher": false, "name": "bf2142.exe", "os": "win32"}], - "hook": true, - "id": "496535501465976835", - "name": "Battlefield 2142" - }, - { - "executables": [{"is_launcher": false, "name": "beathazard.exe", "os": "win32"}], - "hook": true, - "id": "496535788427935764", - "name": "Beat Hazard" - }, - { - "executables": [{"is_launcher": false, "name": "bejeweled3.exe", "os": "win32"}], - "hook": true, - "id": "496536236769542154", - "name": "Bejeweled 3" - }, - { - "executables": [{"is_launcher": false, "name": "bejblitz.exe", "os": "win32"}], - "hook": true, - "id": "496537107708248064", - "name": "Bejeweled Blitz" - }, - { - "aliases": ["Blake Stone - Planet Strike"], - "executables": [{"is_launcher": false, "name": "blake stone - planet strike/dosbox/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "496538565451317259", - "name": "Blake Stone: Planet Strike" - }, - { - "executables": [ - {"is_launcher": false, "name": "blocksport.exe", "os": "win32"}, - {"is_launcher": false, "name": "heroblocks.exe", "os": "win32"} - ], - "hook": true, - "id": "496538914673262596", - "name": "Block Sport" - }, - { - "executables": [{"is_launcher": false, "name": "blockland.exe", "os": "win32"}], - "hook": true, - "id": "496539095888035861", - "name": "Blockland" - }, - { - "executables": [{"is_launcher": false, "name": "bloodlinechampions.exe", "os": "win32"}], - "hook": true, - "id": "496539230026334208", - "name": "Bloodline Champions" - }, - { - "executables": [{"is_launcher": false, "name": "boid.exe", "os": "win32"}], - "hook": true, - "id": "496539411308216320", - "name": "Boid" - }, - { - "executables": [{"is_launcher": false, "name": "braid.exe", "os": "win32"}], - "hook": true, - "id": "496540068442537984", - "name": "Braid" - }, - { - "executables": [{"is_launcher": false, "name": "shippingpc-stormgame.exe", "os": "win32"}], - "hook": true, - "id": "496540681913892864", - "name": "Bulletstorm" - }, - { - "executables": [{"is_launcher": false, "name": "c9/c9.exe", "os": "win32"}], - "hook": true, - "id": "496543199209193488", - "name": "C9" - }, - { - "aliases": ["Cabal Online"], - "executables": [ - {"is_launcher": false, "name": "cabal.exe", "os": "win32"}, - {"is_launcher": false, "name": "cabalmain.exe", "os": "win32"} - ], - "hook": true, - "id": "496544716997918750", - "name": "CABAL Online" - }, - { - "aliases": ["Call Of Duty 2"], - "executables": [ - {"is_launcher": false, "name": "cod2mp_s.exe", "os": "win32"}, - {"is_launcher": false, "name": "cod2sp_s.exe", "os": "win32"} - ], - "hook": true, - "id": "496546499346432010", - "name": "Call of Duty 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "coj.exe", "os": "win32"}, - {"is_launcher": false, "name": "coj_dx10.exe", "os": "win32"} - ], - "hook": true, - "id": "496547399599390730", - "name": "Call of Juarez" - }, - { - "executables": [ - {"is_launcher": false, "name": "cargocommander.exe", "os": "win32"}, - {"is_launcher": false, "name": "cargocommander.app", "os": "darwin"} - ], - "hook": true, - "id": "496547754680647690", - "name": "Cargo Commander" - }, - { - "executables": [{"is_launcher": false, "name": "chronicon.exe", "os": "win32"}], - "hook": true, - "id": "496548575061213184", - "name": "Chronicon" - }, - { - "executables": [{"is_launcher": false, "name": "clannad/realliveen.exe", "os": "win32"}], - "hook": true, - "id": "496550410685906954", - "name": "CLANNAD" - }, - { - "executables": [{"is_launcher": false, "name": "clannad side stories/realliveen.exe", "os": "win32"}], - "hook": true, - "id": "496550790572277770", - "name": "CLANNAD Side Stories" - }, - { - "executables": [{"is_launcher": false, "name": "undying.exe", "os": "win32"}], - "hook": true, - "id": "496552265977692181", - "name": "Clive Barker's Undying" - }, - { - "executables": [{"is_launcher": false, "name": "clonk.exe", "os": "win32"}], - "hook": true, - "id": "496552591111618565", - "name": "Clonk Rage" - }, - { - "executables": [{"is_launcher": false, "name": "cloudbuilt.exe", "os": "win32"}], - "hook": true, - "id": "496552729141837824", - "name": "Cloudbuilt" - }, - { - "executables": [ - {"is_launcher": false, "name": "combatarms.exe", "os": "win32"}, - {"is_launcher": false, "name": "combat arms/engine.exe", "os": "win32"} - ], - "hook": true, - "id": "496553014220554270", - "name": "Combat Arms" - }, - { - "aliases": ["Command & Conquer 3: Kane's Wrath"], - "executables": [{"is_launcher": false, "name": "cnc3ep1.exe", "os": "win32"}], - "hook": true, - "id": "496557233979654154", - "name": "Command and Conquer 3: Kane's Wrath" - }, - { - "executables": [{"is_launcher": false, "name": "reliccoh.exe", "os": "win32"}], - "hook": true, - "id": "496557687560077322", - "name": "Company of Heroes" - }, - { - "executables": [ - {"is_launcher": false, "name": "csdgogbuild.exe", "os": "win32"}, - {"is_launcher": false, "name": "csdsteambuild.exe", "os": "win32"} - ], - "hook": true, - "id": "496558661041127444", - "name": "Cook, Serve, Delicious!" - }, - { - "executables": [ - {"is_launcher": false, "name": "creationkit.exe", "os": "win32"}, - {"is_launcher": false, "name": "creationkit32.exe", "os": "win32"} - ], - "hook": true, - "id": "496560355615703060", - "name": "Creation Kit" - }, - { - "executables": [{"is_launcher": false, "name": "cw3.exe", "os": "win32"}], - "hook": true, - "id": "496560583521468426", - "name": "Creeper World 3: Arc Eternal" - }, - { - "executables": [{"is_launcher": false, "name": "crimsonland.exe", "os": "win32"}], - "hook": true, - "id": "496561007888433152", - "name": "Crimsonland" - }, - { - "executables": [{"is_launcher": false, "name": "crowfallclient.exe", "os": "win32"}], - "hook": true, - "id": "496561718668034078", - "name": "Crowfall" - }, - { - "executables": [{"is_launcher": false, "name": "cryptark.exe", "os": "win32"}], - "hook": true, - "id": "496562135447502882", - "name": "CRYPTARK" - }, - { - "aliases": ["CRYSIS"], - "executables": [ - {"is_launcher": false, "name": "crysis64.exe", "os": "win32"}, - {"is_launcher": false, "name": "crysis.exe", "os": "win32"} - ], - "hook": true, - "id": "496562734889041930", - "name": "Crysis" - }, - { - "executables": [{"is_launcher": false, "name": "crysis2.exe", "os": "win32"}], - "hook": true, - "id": "496564403345424431", - "name": "Crysis 2" - }, - { - "executables": [{"is_launcher": false, "name": "crysis3.exe", "os": "win32"}], - "hook": true, - "id": "496565168528949249", - "name": "Crysis 3" - }, - { - "executables": [{"is_launcher": false, "name": "cyphers.exe", "os": "win32"}], - "hook": true, - "id": "496565866721443840", - "name": "Cyphers", - "overlay": true - }, - { - "aliases": ["Darkstar One"], - "executables": [{"is_launcher": false, "name": "darkstarone.exe", "os": "win32"}], - "hook": true, - "id": "496566320213655552", - "name": "DarkStar One" - }, - { - "executables": [{"is_launcher": false, "name": "dcs.exe", "os": "win32"}], - "hook": true, - "id": "496568071713062928", - "name": "DCS World" - }, - { - "aliases": ["Dead Space\u2122 2"], - "executables": [{"is_launcher": false, "name": "deadspace2.exe", "os": "win32"}], - "hook": true, - "id": "496568659276201984", - "name": "Dead Space 2" - }, - { - "executables": [{"is_launcher": false, "name": "deadcore.exe", "os": "win32"}], - "hook": true, - "id": "496569001405841439", - "name": "DeadCore" - }, - { - "executables": [{"is_launcher": false, "name": "deathsmiles/default.exe", "os": "win32"}], - "hook": true, - "id": "496569185237860359", - "name": "Deathsmiles" - }, - { - "aliases": ["Debugger 3.16: Hack'n'Run "], - "executables": [{"is_launcher": false, "name": "debugger 316/debugger.exe", "os": "win32"}], - "hook": true, - "id": "496569333665759232", - "name": "Debugger 3.16: Hack'n'Run" - }, - { - "executables": [{"is_launcher": false, "name": "defensegrid2_release.exe", "os": "win32"}], - "hook": true, - "id": "496569474670133258", - "name": "Defense Grid 2" - }, - { - "executables": [{"is_launcher": false, "name": "depressionquest.exe", "os": "win32"}], - "hook": true, - "id": "496569655679385603", - "name": "Depression Quest" - }, - { - "executables": [{"is_launcher": false, "name": "devildaggers/dd.exe", "os": "win32"}], - "hook": true, - "id": "496571420579463168", - "name": "Devil Daggers" - }, - { - "executables": [ - {"is_launcher": false, "name": "devilian.exe", "os": "win32"}, - {"is_launcher": false, "name": "devilian/glyphclientapp.exe", "os": "win32"} - ], - "hook": true, - "id": "496571728089317437", - "name": "Devilian" - }, - { - "executables": [{"is_launcher": false, "name": "diablo.exe", "os": "win32"}], - "hook": true, - "id": "496571953147150354", - "name": "Diablo" - }, - { - "aliases": ["Diablo 2"], - "executables": [ - {"is_launcher": false, "name": "diablo ii/game.exe", "os": "win32"}, - {"is_launcher": false, "name": "diablo ii.exe", "os": "win32"} - ], - "hook": true, - "id": "496572658255790080", - "name": "Diablo II" - }, - { - "executables": [ - {"is_launcher": false, "name": "diadraempty154plus.exe", "os": "win32"}, - {"is_launcher": false, "name": "diadraempty.exe", "os": "win32"}, - {"is_launcher": false, "name": "diadraempty154lw.exe", "os": "win32"} - ], - "hook": true, - "id": "496573404002910227", - "name": "Diadra Empty" - }, - { - "executables": [{"is_launcher": false, "name": "dirt3_game.exe", "os": "win32"}], - "hook": true, - "id": "496574120436432915", - "name": "DiRT 3" - }, - { - "executables": [{"is_launcher": false, "name": "distance.exe", "os": "win32"}], - "hook": true, - "id": "496575580070871040", - "name": "Distance" - }, - { - "executables": [{"is_launcher": false, "name": "dominions4.exe", "os": "win32"}], - "hook": true, - "id": "496575805413916683", - "name": "Dominions 4" - }, - { - "aliases": ["Doom 3"], - "executables": [{"is_launcher": false, "name": "doom3.exe", "os": "win32"}], - "hook": true, - "id": "496575943431946250", - "name": "DOOM 3" - }, - { - "executables": [{"is_launcher": false, "name": "doubledragon.exe", "os": "win32"}], - "hook": true, - "id": "496576235934187539", - "name": "Double Dragon Neon" - }, - { - "executables": [{"is_launcher": false, "name": "downwell.exe", "os": "win32"}], - "hook": true, - "id": "496576457082929152", - "name": "Downwell" - }, - { - "executables": [{"is_launcher": false, "name": "dragonage2.exe", "os": "win32"}], - "hook": true, - "id": "496576882540806154", - "name": "Dragon Age II" - }, - { - "executables": [{"is_launcher": false, "name": "dragonfinsoup.exe", "os": "win32"}], - "hook": true, - "id": "496577154683895827", - "name": "Dragon Fin Soup" - }, - { - "executables": [{"is_launcher": false, "name": "dragonnest.exe", "os": "win32"}], - "hook": true, - "id": "496577285466357760", - "name": "Dragon Nest" - }, - { - "executables": [{"is_launcher": false, "name": "ddo.exe", "os": "win32"}], - "hook": true, - "id": "496578773647622187", - "name": "Dragon's Dogma Online" - }, - { - "executables": [ - {"is_launcher": false, "name": "dropzonesteamclient_x32_rel.exe", "os": "win32"}, - {"is_launcher": false, "name": "dropzone/bin/juggernautclient_x32_rel.exe", "os": "win32"} - ], - "hook": true, - "id": "496578915263971358", - "name": "Dropzone" - }, - { - "executables": [{"is_launcher": false, "name": "dukeforever.exe", "os": "win32"}], - "hook": true, - "id": "496579092418658363", - "name": "Duke Nukem Forever" - }, - { - "executables": [{"is_launcher": false, "name": "dfo.exe", "os": "win32"}], - "hook": true, - "id": "496579303631486976", - "name": "Dungeon Fighter Online" - }, - { - "executables": [{"is_launcher": false, "name": "dungeonland.exe", "os": "win32"}], - "hook": true, - "id": "496579621693816832", - "name": "Dungeonland" - }, - { - "aliases": ["Dungeons & Dragons Online"], - "executables": [ - {"is_launcher": false, "name": "dndclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "dndclient64.exe", "os": "win32"} - ], - "hook": true, - "id": "496579889063919616", - "name": "Dungeons & Dragons Online\u00ae" - }, - { - "executables": [{"is_launcher": false, "name": "dustaet.exe", "os": "win32"}], - "hook": true, - "id": "496580906916511764", - "name": "Dust: An Elysian Tail" - }, - { - "executables": [ - {"is_launcher": false, "name": "dustforce.exe", "os": "win32"}, - {"is_launcher": false, "name": "dustforce.app", "os": "darwin"} - ], - "hook": true, - "id": "496581169639587850", - "name": "Dustforce" - }, - { - "executables": [{"is_launcher": false, "name": "entropia.exe", "os": "win32"}], - "hook": true, - "id": "496581460438941716", - "name": "Entropia Universe" - }, - { - "executables": [{"is_launcher": false, "name": "everquest2.exe", "os": "win32"}], - "hook": true, - "id": "496582384863412249", - "name": "EverQuest II" - }, - { - "executables": [{"is_launcher": false, "name": "evoland2.exe", "os": "win32"}], - "hook": true, - "id": "496583339986387004", - "name": "Evoland 2" - }, - { - "executables": [{"is_launcher": false, "name": "evolve.exe", "os": "win32"}], - "hook": true, - "id": "496739105481293869", - "name": "Evolve" - }, - { - "executables": [{"is_launcher": false, "name": "fairyfencer.exe", "os": "win32"}], - "hook": true, - "id": "496739512446091284", - "name": "Fairy Fencer F" - }, - { - "executables": [{"is_launcher": false, "name": "fifa15.exe", "os": "win32"}], - "hook": true, - "id": "496740139633213490", - "name": "FIFA 15" - }, - { - "aliases": ["FINAL FANTASY III"], - "executables": [{"is_launcher": false, "name": "ff3_win32.exe", "os": "win32"}], - "hook": true, - "id": "496740365072728064", - "name": "Final Fantasy III" - }, - { - "aliases": ["Final Fantasy V"], - "executables": [{"is_launcher": false, "name": "ffv_game.exe", "os": "win32"}], - "hook": true, - "id": "496740745085059112", - "name": "FINAL FANTASY V" - }, - { - "executables": [{"is_launcher": false, "name": "ff6.exe", "os": "win32"}], - "hook": true, - "id": "496742764344639488", - "name": "FINAL FANTASY VI" - }, - { - "aliases": ["Final Fantasy VIII"], - "executables": [ - {"is_launcher": false, "name": "ff8_fr.exe", "os": "win32"}, - {"is_launcher": false, "name": "ff8_es.exe", "os": "win32"}, - {"is_launcher": false, "name": "ff8_en.exe", "os": "win32"} - ], - "hook": true, - "id": "496757203596869652", - "name": "FINAL FANTASY VIII" - }, - { - "aliases": ["Final Fantasy XIII"], - "executables": [{"is_launcher": false, "name": "ffxiiiimg.exe", "os": "win32"}], - "hook": true, - "id": "496757542479724554", - "name": "FINAL FANTASY XIII" - }, - { - "aliases": ["Final Fantasy XIII-2"], - "executables": [ - {"is_launcher": false, "name": "ffxiii2.exe", "os": "win32"}, - {"is_launcher": false, "name": "ffxiii2img.exe", "os": "win32"} - ], - "hook": true, - "id": "496757852069822504", - "name": "FINAL FANTASY XIII-2" - }, - { - "executables": [{"is_launcher": false, "name": "firefallclient.exe", "os": "win32"}], - "hook": true, - "id": "496758262797172736", - "name": "Firefall" - }, - { - "executables": [{"is_launcher": false, "name": "flamebreak.exe", "os": "win32"}], - "hook": true, - "id": "496758379583242291", - "name": "Flamebreak" - }, - { - "executables": [{"is_launcher": false, "name": "flyff/neuz.exe", "os": "win32"}], - "hook": true, - "id": "496758691064709120", - "name": "Flyff" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2014/fm.exe", "os": "win32"}], - "hook": true, - "id": "496758937039929370", - "name": "Football Manager 2014" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2016/fm.exe", "os": "win32"}], - "hook": true, - "id": "496760317875978256", - "name": "Football Manager 2016" - }, - { - "executables": [{"is_launcher": false, "name": "forza_x64_release_final.exe", "os": "win32"}], - "hook": true, - "id": "496760939052269583", - "name": "Forza Horizon 3" - }, - { - "executables": [{"is_launcher": false, "name": "forzamotorsport7.exe", "os": "win32"}], - "hook": true, - "id": "496761344603979796", - "name": "Forza Motorsport 7" - }, - { - "executables": [{"is_launcher": false, "name": "fran bow.exe", "os": "win32"}], - "hook": true, - "id": "496761451738955804", - "name": "Fran Bow" - }, - { - "aliases": ["Free To Play"], - "executables": [{"is_launcher": false, "name": "free to play/ftp.exe", "os": "win32"}], - "hook": true, - "id": "496761815548559360", - "name": "Free to Play" - }, - { - "executables": [{"is_launcher": false, "name": "freedom planet/fp.exe", "os": "win32"}], - "hook": true, - "id": "496761999708127232", - "name": "Freedom Planet" - }, - { - "executables": [ - {"is_launcher": false, "name": "frontier.exe", "os": "win32"}, - {"is_launcher": false, "name": "frontier/client.jar", "os": "win32"} - ], - "hook": true, - "id": "496762504291155998", - "name": "Frontier" - }, - { - "executables": [{"is_launcher": false, "name": "furcadia.exe", "os": "win32"}], - "hook": true, - "id": "496763066889797674", - "name": "Furcadia" - }, - { - "executables": [{"is_launcher": false, "name": "geargame.exe", "os": "win32"}], - "hook": true, - "id": "496763396558159892", - "name": "Gears of War 4" - }, - { - "executables": [{"is_launcher": false, "name": "ge.exe", "os": "win32"}], - "hook": true, - "id": "496771607386259456", - "name": "Granado Espada" - }, - { - "aliases": ["Grav"], - "executables": [ - {"is_launcher": false, "name": "caggameserver.exe", "os": "win32"}, - {"is_launcher": false, "name": "caggame-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "496771913280913424", - "name": "GRAV" - }, - { - "executables": [{"is_launcher": false, "name": "goog.exe", "os": "win32"}], - "hook": true, - "id": "496772084379418637", - "name": "Grey Goo" - }, - { - "executables": [{"is_launcher": false, "name": "scram.exe", "os": "win32"}], - "hook": true, - "id": "496772185864667146", - "name": "scram" - }, - { - "executables": [{"is_launcher": false, "name": "gcst.exe", "os": "win32"}], - "hook": true, - "id": "496772271088730112", - "name": "Groove Coaster" - }, - { - "executables": [{"is_launcher": false, "name": "growhome.exe", "os": "win32"}], - "hook": true, - "id": "496772402219319316", - "name": "Grow Home" - }, - { - "executables": [{"is_launcher": false, "name": "guardians of ember/client_x86.exe", "os": "win32"}], - "hook": true, - "id": "496772734744002580", - "name": "Guardians of Ember" - }, - { - "aliases": ["Guilty Gear XX Accent Core Plus R"], - "executables": [{"is_launcher": false, "name": "ggxxacpr_win.exe", "os": "win32"}], - "hook": true, - "id": "496773998517026816", - "name": "GUILTY GEAR XX ACCENT CORE PLUS R" - }, - { - "executables": [{"is_launcher": false, "name": "ghwt.exe", "os": "win32"}], - "hook": true, - "id": "496774309042192384", - "name": "Guitar Hero World Tour" - }, - { - "executables": [{"is_launcher": false, "name": "haloce.exe", "os": "win32"}], - "hook": true, - "id": "496775885249314885", - "name": "Halo Custom Edition" - }, - { - "executables": [{"is_launcher": false, "name": "halo.exe", "os": "win32"}], - "hook": true, - "id": "496776262136758277", - "name": "Halo: Combat Evolved" - }, - { - "executables": [{"is_launcher": false, "name": "hand of fate.exe", "os": "win32"}], - "hook": true, - "id": "496776430110113843", - "name": "Hand of Fate" - }, - { - "executables": [{"is_launcher": false, "name": "hardwest.exe", "os": "win32"}], - "hook": true, - "id": "496776675351330846", - "name": "Hard West" - }, - { - "executables": [ - {"is_launcher": false, "name": "hate plus.app", "os": "darwin"}, - {"is_launcher": false, "name": "hate plus.exe", "os": "win32"} - ], - "hook": true, - "id": "496776818855116811", - "name": "Hate Plus" - }, - { - "executables": [{"is_launcher": false, "name": "hatoful.exe", "os": "win32"}], - "hook": true, - "id": "496777244090302490", - "name": "Hatoful Boyfriend" - }, - { - "aliases": ["Hawken"], - "executables": [ - {"is_launcher": false, "name": "hawkengame-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "hawkengame-win32-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "496778224433627156", - "name": "HAWKEN" - }, - { - "aliases": ["Hex: Shards of Fate"], - "executables": [{"is_launcher": false, "name": "hex.exe", "os": "win32"}], - "hook": true, - "id": "496778870104653824", - "name": "HEX: Shards of Fate" - }, - { - "executables": [{"is_launcher": false, "name": "hitmanbloodmoney.exe", "os": "win32"}], - "hook": true, - "id": "496779049524265010", - "name": "Hitman: Blood Money", - "overlay": true, - "overlay_compatibility_hook": true - }, - { - "executables": [ - {"is_launcher": false, "name": "hoshimemo.exe", "os": "win32"}, - {"is_launcher": false, "name": "memoria.exe", "os": "win32"} - ], - "hook": true, - "id": "496779855950774272", - "name": "Hoshizora no Memoria -Wish upon a Shooting Star-" - }, - { - "executables": [{"is_launcher": false, "name": "ibbobb.exe", "os": "win32"}], - "hook": true, - "id": "496838264506941473", - "name": "ibb & obb" - }, - { - "executables": [{"is_launcher": false, "name": "indeath-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "496838571735384122", - "name": "In Death" - }, - { - "executables": [{"is_launcher": false, "name": "intruder.exe", "os": "win32"}], - "hook": true, - "id": "496838818813706270", - "name": "Intruder" - }, - { - "aliases": ["Jade Empire"], - "executables": [{"is_launcher": false, "name": "jadeempire.exe", "os": "win32"}], - "hook": true, - "id": "496839367621476352", - "name": "Jade Empire: Special Edition" - }, - { - "aliases": ["Jurassic Park The Game"], - "executables": [{"is_launcher": false, "name": "jurassicpark100.exe", "os": "win32"}], - "hook": true, - "id": "496839741812113408", - "name": "Jurassic Park: The Game" - }, - { - "executables": [{"is_launcher": false, "name": "kindredspirits.exe", "os": "win32"}], - "hook": true, - "id": "496845813461418005", - "name": "Kindred Spirits on the Roof" - }, - { - "executables": [{"is_launcher": false, "name": "kag.exe", "os": "win32"}], - "hook": true, - "id": "496845988154048541", - "name": "King Arthur's Gold" - }, - { - "executables": [ - {"is_launcher": false, "name": "krosmaster.exe", "os": "win32"}, - {"is_launcher": false, "name": "krosmaster arena.exe", "os": "win32"} - ], - "hook": true, - "id": "496846515382517770", - "name": "Krosmaster Arena" - }, - { - "executables": [ - {"is_launcher": false, "name": "landmark/launchpad.exe", "os": "win32"}, - {"is_launcher": false, "name": "landmark64.exe", "os": "win32"} - ], - "hook": true, - "id": "496846777023070218", - "name": "Landmark" - }, - { - "executables": [{"is_launcher": false, "name": "lcgol.exe", "os": "win32"}], - "hook": true, - "id": "496846884787191834", - "name": "Lara Croft and the Guardian of Light" - }, - { - "executables": [{"is_launcher": false, "name": "legendofdungeon.exe", "os": "win32"}], - "hook": true, - "id": "496847055793422336", - "name": "Legend of Dungeon" - }, - { - "aliases": ["Lightning Returns: Final Fantasy XIII"], - "executables": [{"is_launcher": false, "name": "lrff13.exe", "os": "win32"}], - "hook": true, - "id": "496847425680572455", - "name": "LIGHTNING RETURNS: FINAL FANTASY XIII" - }, - { - "executables": [{"is_launcher": false, "name": "lro.exe", "os": "win32"}], - "hook": true, - "id": "496847615456051220", - "name": "Limit Ragnarok Online" - }, - { - "executables": [{"is_launcher": false, "name": "lineage.exe", "os": "win32"}], - "hook": true, - "id": "496848201773482004", - "name": "Lineage" - }, - { - "aliases": ["Locomotion"], - "executables": [{"is_launcher": false, "name": "atari/locomotion/loco.exe", "os": "win32"}], - "hook": true, - "id": "496848465301733376", - "name": "Chris Sawyer's Locomotion" - }, - { - "aliases": ["Long Live the Queen"], - "executables": [{"is_launcher": false, "name": "longlivethequeen.exe", "os": "win32"}], - "hook": true, - "id": "496848705027178496", - "name": "Long Live The Queen" - }, - { - "executables": [{"is_launcher": false, "name": "lovelyplanet.exe", "os": "win32"}], - "hook": true, - "id": "496851684396630035", - "name": "Lovely Planet" - }, - { - "executables": [{"is_launcher": false, "name": "loversinadangerousspacetime.exe", "os": "win32"}], - "hook": true, - "id": "496851934339268622", - "name": "Lovers in a Dangerous Spacetime" - }, - { - "executables": [{"is_launcher": false, "name": "lumini_win64.exe", "os": "win32"}], - "hook": true, - "id": "496852060256337920", - "name": "Lumini" - }, - { - "executables": [{"is_launcher": false, "name": "lyne.exe", "os": "win32"}], - "hook": true, - "id": "496852270080851977", - "name": "LYNE" - }, - { - "executables": [{"is_launcher": false, "name": "mro-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "496852479615565834", - "name": "Magic Realm: Online" - }, - { - "executables": [ - {"is_launcher": false, "name": "marvelheroesomega.exe", "os": "win32"}, - {"is_launcher": false, "name": "marvelheroes2015.exe", "os": "win32"} - ], - "hook": true, - "id": "496852775406141450", - "name": "Marvel Heroes 2015" - }, - { - "executables": [ - {"is_launcher": false, "name": "marvelheroes2016.exe", "os": "win32"}, - {"is_launcher": false, "name": "marvelheroesomega.exe", "os": "win32"} - ], - "hook": true, - "id": "496853043103662080", - "name": "Marvel Heroes 2016" - }, - { - "executables": [{"is_launcher": false, "name": "massive.exe", "os": "win32"}], - "hook": true, - "id": "496853196346621982", - "name": "Massive" - }, - { - "executables": [{"is_launcher": false, "name": "masterreboot.exe", "os": "win32"}], - "hook": true, - "id": "496853347505012746", - "name": "Master Reboot" - }, - { - "executables": [{"is_launcher": false, "name": "nekojishi.exe", "os": "win32"}], - "hook": true, - "id": "497121061339529226", - "name": "Nekojishi" - }, - { - "executables": [{"is_launcher": false, "name": "howtosurvive.exe", "os": "win32"}], - "hook": true, - "id": "497169068466634792", - "name": "How to Survive" - }, - { - "executables": [{"is_launcher": false, "name": "kingmaker.exe", "os": "win32"}], - "hook": true, - "id": "497389403832844298", - "name": "Pathfinder: Kingmaker" - }, - { - "aliases": ["Nekopara Vol. 0"], - "executables": [{"is_launcher": false, "name": "nekopara_vol0.exe", "os": "win32"}], - "hook": true, - "id": "497660949260664832", - "name": "NEKOPARA Vol. 0" - }, - { - "executables": [{"is_launcher": false, "name": "necropolis.exe", "os": "win32"}], - "hook": true, - "id": "497830439298400256", - "name": "Necropolis" - }, - { - "aliases": ["Assassin's Creed Odyssey", "Assassin's Creed: Odyssey"], - "executables": [ - {"is_launcher": false, "name": "vcredist/vc_redist.x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "acodyssey.exe", "os": "win32"} - ], - "hook": true, - "id": "497898978466070528", - "name": "Assassin's Creed Odyssey" - }, - { - "executables": [{"is_launcher": false, "name": "crafttheworld/craftworld.exe", "os": "win32"}], - "hook": true, - "id": "498216676744101891", - "name": "Craft The World" - }, - { - "executables": [{"is_launcher": false, "name": "midair-win64-test.exe", "os": "win32"}], - "hook": true, - "id": "498457066738810890", - "name": "Midair" - }, - { - "aliases": ["CrossCode"], - "executables": [ - {"is_launcher": false, "name": "crosscode-beta.exe", "os": "win32"}, - {"is_launcher": false, "name": "crosscode/crosscode.exe", "os": "win32"} - ], - "hook": true, - "id": "498640615744077864", - "name": "CrossCode" - }, - { - "executables": [{"is_launcher": false, "name": "jotun.exe", "os": "win32"}], - "hook": true, - "id": "498640773999362050", - "name": "Jotun" - }, - { - "executables": [{"is_launcher": false, "name": "monster slayers/monster slayers db.exe", "os": "win32"}], - "hook": true, - "id": "498641288250392600", - "name": "Monster Slayers" - }, - { - "executables": [{"is_launcher": false, "name": "glimpsegame.exe", "os": "win32"}], - "hook": true, - "id": "498728807881113620", - "name": "We Happy Few" - }, - { - "aliases": ["Lost Saga"], - "executables": [{"is_launcher": false, "name": "lostsaga.exe", "os": "win32"}], - "hook": true, - "id": "498938615934615552", - "name": "Lost Saga North America" - }, - { - "aliases": ["Men Of War: Assault Squad"], - "executables": [ - {"is_launcher": false, "name": "mow_assault_squad_ed.exe", "os": "win32"}, - {"is_launcher": false, "name": "mow_assualt_squad.exe", "os": "win32"}, - {"is_launcher": false, "name": "mow_assault_squad.exe", "os": "win32"} - ], - "hook": true, - "id": "498941421814939648", - "name": "Men of War: Assault Squad" - }, - { - "executables": [{"is_launcher": false, "name": "might & magic heroes vi.exe", "os": "win32"}], - "hook": true, - "id": "498942150042451978", - "name": "Might & Magic Heroes VI" - }, - { - "executables": [{"is_launcher": false, "name": "mmh7game-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "498942455903944704", - "name": "Might & Magic Heroes VII" - }, - { - "executables": [{"is_launcher": false, "name": "towerofguns2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "498942846032805908", - "name": "MOTHERGUNSHIP" - }, - { - "executables": [{"is_launcher": false, "name": "mountain.exe", "os": "win32"}], - "hook": true, - "id": "498943265475657728", - "name": "Mountain" - }, - { - "executables": [{"is_launcher": false, "name": "mudlet.exe", "os": "win32"}], - "hook": true, - "id": "498943730817171476", - "name": "Mudlet" - }, - { - "executables": [{"is_launcher": false, "name": "mugensouls.exe", "os": "win32"}], - "hook": true, - "id": "498943830582755368", - "name": "Mugen Souls" - }, - { - "aliases": [ - "NARUTO SHIPPUDEN Ultimate Ninja STORM 3 Full Burst", - "Naruto Shippuden Ultimate Ninja Storm 3 Full Burst" - ], - "executables": [ - {"is_launcher": false, "name": "nsuns3.exe", "os": "win32"}, - {"is_launcher": false, "name": "ns3fb.exe", "os": "win32"} - ], - "hook": true, - "id": "498948228146921472", - "name": "NARUTO SHIPPUDEN: Ultimate Ninja STORM 3 Full Burst" - }, - { - "aliases": ["Naruto Shippuden Ultimate Ninja Storm Revolution"], - "executables": [{"is_launcher": false, "name": "nsunsr.exe", "os": "win32"}], - "hook": true, - "id": "498971059291291648", - "name": "NARUTO SHIPPUDEN: Ultimate Ninja STORM Revolution" - }, - { - "executables": [{"is_launcher": false, "name": "nfsc.exe", "os": "win32"}], - "hook": true, - "id": "498971474841960450", - "name": "Need for Speed: Carbon" - }, - { - "aliases": ["Neo Scavenger"], - "executables": [{"is_launcher": false, "name": "neoscavenger.exe", "os": "win32"}], - "hook": true, - "id": "498971609764200478", - "name": "NEO Scavenger" - }, - { - "executables": [{"is_launcher": false, "name": "neocronclient.exe", "os": "win32"}], - "hook": true, - "id": "498971892968062976", - "name": "Neocron Evolution" - }, - { - "executables": [ - {"is_launcher": false, "name": "wreckfest.exe", "os": "win32"}, - {"is_launcher": false, "name": "wreckfest_x64.exe", "os": "win32"} - ], - "hook": true, - "id": "498971974945603587", - "name": "Next Car Game: Wreckfest" - }, - { - "aliases": ["Nicole (Otome Version)"], - "executables": [{"is_launcher": false, "name": "nicole.exe", "os": "win32"}], - "hook": true, - "id": "498972346078461982", - "name": "Nicole (otome version)" - }, - { - "executables": [{"is_launcher": false, "name": "nosgoth.exe", "os": "win32"}], - "hook": true, - "id": "498972985403899960", - "name": "Nosgoth" - }, - { - "aliases": ["One Piece Pirate Warriors 3"], - "executables": [{"is_launcher": false, "name": "oppw3.exe", "os": "win32"}], - "hook": true, - "id": "498973375595675688", - "name": "ONE PIECE PIRATE WARRIORS 3" - }, - { - "aliases": ["Oni"], - "executables": [{"is_launcher": false, "name": "oni.exe", "os": "win32"}], - "hook": true, - "id": "498979842277113857", - "name": "ONI" - }, - { - "executables": [ - {"is_launcher": false, "name": "peggle/popcapgame1.exe", "os": "win32"}, - {"is_launcher": false, "name": "peggle deluxe/peggle.exe", "os": "win32"} - ], - "hook": true, - "id": "498980232938651648", - "name": "Peggle Deluxe" - }, - { - "executables": [ - {"is_launcher": false, "name": "peggleextreme/popcapgame1.exe", "os": "win32"}, - {"is_launcher": false, "name": "peggleextreme.exe", "os": "win32"} - ], - "hook": true, - "id": "498980339470041123", - "name": "Peggle Extreme" - }, - { - "executables": [ - {"is_launcher": false, "name": "pinballarcade.exe", "os": "win32"}, - {"is_launcher": false, "name": "pinaball arcade.exe", "os": "win32"} - ], - "hook": true, - "id": "498980583096057905", - "name": "Pinball Arcade" - }, - { - "executables": [ - {"is_launcher": false, "name": "pixel_dungeons.exe", "os": "win32"}, - {"is_launcher": false, "name": "pixel dungeon/pd.exe", "os": "win32"} - ], - "hook": true, - "id": "498981118410752020", - "name": "Pixel Dungeon" - }, - { - "executables": [{"is_launcher": false, "name": "shooterultimate.exe", "os": "win32"}], - "hook": true, - "id": "498981476050927653", - "name": "PixelJunk Shooter Ultimate" - }, - { - "executables": [{"is_launcher": false, "name": "shooterultimate.exe", "os": "win32"}], - "hook": true, - "id": "498981634339635253", - "name": "PixelJunk\u2122 Shooter Ultimate" - }, - { - "executables": [ - {"is_launcher": false, "name": "crysis wars/bin64/crysis.exe", "os": "win32"}, - {"is_launcher": false, "name": "mwlllauncher.exe", "os": "win32"} - ], - "hook": true, - "id": "498984088418516992", - "name": "MechWarrior: Living Legends" - }, - { - "aliases": ["Plants vs. Zombies"], - "executables": [ - {"is_launcher": false, "name": "plantsvszombies.exe", "os": "win32"}, - {"is_launcher": false, "name": "plants vs. zombies/popcapgame1.exe", "os": "win32"} - ], - "hook": true, - "id": "498985095378632704", - "name": "Plants vs. Zombies: Game of the Year" - }, - { - "executables": [{"is_launcher": false, "name": "poi.exe", "os": "win32"}], - "hook": true, - "id": "498985543586021376", - "name": "Poi" - }, - { - "executables": [{"is_launcher": false, "name": "pokemmo.exe", "os": "win32"}], - "hook": true, - "id": "498985820221603840", - "name": "PokeMMO" - }, - { - "executables": [{"is_launcher": false, "name": "pokerstars.exe", "os": "win32"}], - "hook": true, - "id": "498986175512576058", - "name": "PokerStars" - }, - { - "executables": [{"is_launcher": false, "name": "prepar3d.exe", "os": "win32"}], - "hook": true, - "id": "498986525757800468", - "name": "Prepar3D" - }, - { - "executables": [{"is_launcher": false, "name": "primalcarnagegame.exe", "os": "win32"}], - "hook": true, - "id": "498986661104058378", - "name": "Primal Carnage" - }, - { - "executables": [ - {"is_launcher": false, "name": "prime world/castle/castle.exe", "os": "win32"}, - {"is_launcher": false, "name": "pw_game.exe", "os": "win32"} - ], - "hook": true, - "id": "498986815227822080", - "name": "Prime World" - }, - { - "executables": [{"is_launcher": false, "name": "rik.exe", "os": "win32"}], - "hook": true, - "id": "498987268048945162", - "name": "ProjectRIK" - }, - { - "executables": [{"is_launcher": false, "name": "proteus.exe", "os": "win32"}], - "hook": true, - "id": "498987388891299859", - "name": "Proteus" - }, - { - "executables": [{"is_launcher": false, "name": "pyrite heart.exe", "os": "win32"}], - "hook": true, - "id": "498987613416456220", - "name": "Pyrite Heart" - }, - { - "executables": [{"is_launcher": false, "name": "quake2.exe", "os": "win32"}], - "hook": true, - "id": "498987709629464586", - "name": "Quake II" - }, - { - "executables": [{"is_launcher": false, "name": "quiplash.exe", "os": "win32"}], - "hook": true, - "id": "498988229798920242", - "name": "Quiplash" - }, - { - "executables": [{"is_launcher": false, "name": "racethesun.exe", "os": "win32"}], - "hook": true, - "id": "498988774169116711", - "name": "Race The Sun" - }, - { - "aliases": ["Ragnarok Online Classic"], - "executables": [ - {"is_launcher": false, "name": "ragexe.exe", "os": "win32"}, - {"is_launcher": false, "name": "clragexe.exe", "os": "win32"} - ], - "hook": true, - "id": "498990766643740692", - "name": "Ragnarok Online" - }, - { - "executables": [{"is_launcher": false, "name": "rappelz/sframe.exe", "os": "win32"}], - "hook": true, - "id": "498991137214955531", - "name": "Rappelz" - }, - { - "aliases": ["Rayman 2: The Great Escape"], - "executables": [{"is_launcher": false, "name": "rayman2.exe", "os": "win32"}], - "hook": true, - "id": "498991556724916225", - "name": "Rayman 2 - The Great Escape" - }, - { - "executables": [ - {"is_launcher": false, "name": "revolt.exe", "os": "win32"}, - {"is_launcher": false, "name": "rvgl.exe", "os": "win32"} - ], - "hook": true, - "id": "498994022048727050", - "name": "Re-Volt" - }, - { - "executables": [{"is_launcher": false, "name": "reassemblyrelease.exe", "os": "win32"}], - "hook": true, - "id": "498997425965367313", - "name": "Reassembly" - }, - { - "executables": [{"is_launcher": false, "name": "recore.exe", "os": "win32"}], - "hook": true, - "id": "498999413172207653", - "name": "ReCore" - }, - { - "aliases": ["RESIDENT EVIL REVELATIONS", "Resident Evil Revelations"], - "executables": [{"is_launcher": false, "name": "rerev.exe", "os": "win32"}], - "hook": true, - "id": "499004687719202816", - "name": "Resident Evil Revelations / Biohazard Revelations" - }, - { - "executables": [{"is_launcher": false, "name": "hidden folks.exe", "os": "win32"}], - "hook": true, - "id": "499303420512174080", - "name": "Hidden Folks" - }, - { - "executables": [{"is_launcher": false, "name": "talesofescape.exe", "os": "win32"}], - "hook": true, - "id": "499330427455012874", - "name": "Tales of Escape" - }, - { - "executables": [{"is_launcher": false, "name": "blockpost.exe", "os": "win32"}], - "hook": true, - "id": "499743985045078036", - "name": "BLOCKPOST" - }, - { - "executables": [{"is_launcher": false, "name": "moonhunters.exe", "os": "win32"}], - "hook": true, - "id": "500645675642388480", - "name": "Moon Hunters" - }, - { - "executables": [{"is_launcher": false, "name": "sam2.exe", "os": "win32"}], - "hook": true, - "id": "500769428753874947", - "name": "Serious Sam 2" - }, - { - "aliases": ["Resident Evil HD"], - "executables": [{"is_launcher": false, "name": "bhd.exe", "os": "win32"}], - "hook": true, - "id": "500804924007907348", - "name": "Resident Evil / biohazard HD REMASTER" - }, - { - "aliases": ["The Walking Dead Season Two"], - "executables": [{"is_launcher": false, "name": "thewalkingdead2.exe", "os": "win32"}], - "hook": true, - "id": "500830174590271509", - "name": "The Walking Dead: Season Two" - }, - { - "executables": [{"is_launcher": false, "name": "pla_toon-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "501063306065346580", - "name": "pla_toon" - }, - { - "executables": [{"is_launcher": false, "name": "darkwood.exe", "os": "win32"}], - "hook": true, - "id": "501209864333164546", - "name": "Darkwood" - }, - { - "executables": [{"is_launcher": false, "name": "nba2k19.exe", "os": "win32"}], - "hook": true, - "id": "501373821886922752", - "name": "NBA 2K19" - }, - { - "executables": [{"is_launcher": false, "name": "iambread.exe", "os": "win32"}], - "hook": true, - "id": "501542797430489098", - "name": "I am Bread" - }, - { - "executables": [{"is_launcher": false, "name": "creativedestruction/client.exe", "os": "win32"}], - "hook": true, - "id": "501792352898121743", - "name": "CreativeDestruction" - }, - { - "executables": [{"is_launcher": false, "name": "bigscreen.exe", "os": "win32"}], - "hook": true, - "id": "501925376747110440", - "name": "Bigscreen Beta" - }, - { - "executables": [{"is_launcher": false, "name": "fuse.exe", "os": "win32"}], - "hook": true, - "id": "502281428168343573", - "name": "Fuse" - }, - { - "executables": [{"is_launcher": false, "name": "sonicgenerations.exe", "os": "win32"}], - "hook": true, - "id": "502406586895958026", - "name": "Sonic Generations" - }, - { - "executables": [{"is_launcher": false, "name": "zeus-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "502879677782818820", - "name": "Zeus' Battlegrounds" - }, - { - "executables": [{"is_launcher": false, "name": "themisfits.exe", "os": "win32"}], - "hook": true, - "id": "502910350413266954", - "name": "The Misfits" - }, - { - "executables": [{"is_launcher": false, "name": "ww3-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "503228350761009162", - "name": "World War 3" - }, - { - "executables": [{"is_launcher": false, "name": "soulcaliburvi.exe", "os": "win32"}], - "hook": true, - "id": "503340646946308096", - "name": "SOULCALIBUR VI" - }, - { - "executables": [{"is_launcher": false, "name": "oh...sir! the insult simulator/ohsir.exe", "os": "win32"}], - "hook": true, - "id": "503362822957432832", - "name": "Oh...Sir! The Insult Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "dr2_us.exe", "os": "win32"}], - "hook": true, - "id": "503578473227354112", - "name": "Danganronpa 2: Goodbye Despair" - }, - { - "executables": [{"is_launcher": false, "name": "otwd-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "503632655137374219", - "name": "OVERKILL's The Walking Dead - BETA" - }, - { - "executables": [{"is_launcher": false, "name": "callofcthulhu.exe", "os": "win32"}], - "hook": true, - "id": "503982482664849408", - "name": "Call of Cthulhu" - }, - { - "executables": [{"is_launcher": false, "name": "acclient.exe", "os": "win32"}], - "hook": true, - "id": "504021888805240914", - "name": "Asheron's Call" - }, - { - "aliases": ["REFLEX", "Reflex"], - "executables": [{"is_launcher": false, "name": "reflex.exe", "os": "win32"}], - "hook": true, - "id": "504024478100095016", - "name": "Reflex Arena" - }, - { - "aliases": ["Retro City Rampage"], - "executables": [{"is_launcher": false, "name": "retrocityrampage.exe", "os": "win32"}], - "hook": true, - "id": "504026620068233235", - "name": "Retro City Rampage\u2122 DX" - }, - { - "executables": [ - {"is_launcher": false, "name": "reus.app", "os": "darwin"}, - {"is_launcher": false, "name": "reus.exe", "os": "win32"} - ], - "hook": true, - "id": "504027911213285423", - "name": "Reus" - }, - { - "executables": [{"is_launcher": false, "name": "tianyu.exe", "os": "win32"}], - "hook": true, - "id": "504028382317772859", - "name": "Revelation Online" - }, - { - "executables": [{"is_launcher": false, "name": "rfactor.exe", "os": "win32"}], - "hook": true, - "id": "504028685322551296", - "name": "rFactor" - }, - { - "executables": [{"is_launcher": false, "name": "rfactor2.exe", "os": "win32"}], - "hook": true, - "id": "504029217650901040", - "name": "rFactor 2" - }, - { - "executables": [{"is_launcher": false, "name": "roguesystemsim.exe", "os": "win32"}], - "hook": true, - "id": "504029616151986198", - "name": "Rogue System" - }, - { - "executables": [{"is_launcher": false, "name": "sakura angels.exe", "os": "win32"}], - "hook": true, - "id": "504029936697344048", - "name": "Sakura Angels" - }, - { - "executables": [{"is_launcher": false, "name": "sakura clicker.exe", "os": "win32"}], - "hook": true, - "id": "504030053017845805", - "name": "Sakura Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "sakura spirit.exe", "os": "win32"}], - "hook": true, - "id": "504030205481058304", - "name": "Sakura Spirit" - }, - { - "executables": [{"is_launcher": false, "name": "screencheat.exe", "os": "win32"}], - "hook": true, - "id": "504030375606091776", - "name": "Screencheat" - }, - { - "executables": [{"is_launcher": false, "name": "scrivener.exe", "os": "win32"}], - "hook": true, - "id": "504030662911590425", - "name": "Scrivener" - }, - { - "executables": [{"is_launcher": false, "name": "secretponchosd3d11.exe", "os": "win32"}], - "hook": true, - "id": "504030792184496148", - "name": "Secret Ponchos" - }, - { - "executables": [{"is_launcher": false, "name": "secrets of grindea.exe", "os": "win32"}], - "hook": true, - "id": "504030959654535198", - "name": "Secrets of Grindea" - }, - { - "executables": [{"is_launcher": false, "name": "shadowgrounds.exe", "os": "win32"}], - "hook": true, - "id": "504031323443167273", - "name": "Shadowgrounds" - }, - { - "executables": [{"is_launcher": false, "name": "survivor.exe", "os": "win32"}], - "hook": true, - "id": "504031813619154974", - "name": "Shadowgrounds: Survivor" - }, - { - "executables": [{"is_launcher": false, "name": "shadowrun.exe", "os": "win32"}], - "hook": true, - "id": "504032333532364840", - "name": "Shadowrun" - }, - { - "executables": [ - {"is_launcher": false, "name": "shantae and the pirate's curse.exe", "os": "win32"}, - {"is_launcher": false, "name": "shantaecurse.exe", "os": "win32"} - ], - "hook": true, - "id": "504032449173389372", - "name": "Shantae and the Pirate's Curse" - }, - { - "executables": [ - {"is_launcher": false, "name": "shatteredskies/lms.exe", "os": "win32"}, - {"is_launcher": false, "name": "shatteredskies.exe", "os": "win32"} - ], - "hook": true, - "id": "504033280149159986", - "name": "Shattered Skies" - }, - { - "executables": [{"is_launcher": false, "name": "railroads.exe", "os": "win32"}], - "hook": true, - "id": "504033484919144452", - "name": "Sid Meier's Railroads!" - }, - { - "executables": [ - {"is_launcher": false, "name": "sinarun.app", "os": "darwin"}, - {"is_launcher": false, "name": "sinarun.exe", "os": "win32"} - ], - "hook": true, - "id": "504033675940200448", - "name": "SinaRun" - }, - { - "executables": [ - {"is_launcher": false, "name": "slime ccg.exe", "os": "win32"}, - {"is_launcher": false, "name": "los-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "504037755018412033", - "name": "Slime CCG" - }, - { - "executables": [{"is_launcher": false, "name": "snes9x.exe", "os": "win32"}], - "hook": true, - "id": "504041310605410315", - "name": "Snes9x" - }, - { - "executables": [{"is_launcher": false, "name": "songbringer.exe", "os": "win32"}], - "hook": true, - "id": "504042287345434624", - "name": "Songbringer" - }, - { - "executables": [{"is_launcher": false, "name": "sonic adventure dx.exe", "os": "win32"}], - "hook": true, - "id": "504042667714543626", - "name": "Sonic Adventure DX" - }, - { - "executables": [{"is_launcher": false, "name": "slw.exe", "os": "win32"}], - "hook": true, - "id": "504044826954694780", - "name": "Sonic Lost World" - }, - { - "executables": [{"is_launcher": false, "name": "soulaxiom.exe", "os": "win32"}], - "hook": true, - "id": "504046230028943380", - "name": "Soul Axiom" - }, - { - "executables": [{"is_launcher": false, "name": "spazgame.exe", "os": "win32"}], - "hook": true, - "id": "504046366302142494", - "name": "Space Pirates and Zombies" - }, - { - "executables": [{"is_launcher": false, "name": "spacechem.exe", "os": "win32"}], - "hook": true, - "id": "504046850584739850", - "name": "SpaceChem" - }, - { - "executables": [{"is_launcher": false, "name": "spider-man 3/game.exe", "os": "win32"}], - "hook": true, - "id": "504047615139119143", - "name": "Spider-Man 3" - }, - { - "executables": [{"is_launcher": false, "name": "sprintvector-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "504050983400374292", - "name": "Sprint Vector" - }, - { - "executables": [{"is_launcher": false, "name": "startupcompany.exe", "os": "win32"}], - "hook": true, - "id": "504052120543166505", - "name": "Startup Company" - }, - { - "executables": [{"is_launcher": false, "name": "seagame.exe", "os": "win32"}], - "hook": true, - "id": "504052334960050176", - "name": "Steel Ocean" - }, - { - "aliases": ["Steins;Gate"], - "executables": [ - {"is_launcher": false, "name": "steins;gate/game.exe", "os": "win32"}, - {"is_launcher": false, "name": "steinsgate.exe", "os": "win32"} - ], - "hook": true, - "id": "504052730042646579", - "name": "STEINS;GATE" - }, - { - "executables": [{"is_launcher": false, "name": "steredenn.exe", "os": "win32"}], - "hook": true, - "id": "504053684494401540", - "name": "Steredenn" - }, - { - "aliases": ["STRAFE: Millennium Editio"], - "executables": [{"is_launcher": false, "name": "strafe.exe", "os": "win32"}], - "hook": true, - "id": "504054126280310794", - "name": "STRAFE" - }, - { - "executables": [{"is_launcher": false, "name": "strife.exe", "os": "win32"}], - "hook": true, - "id": "504055085177765907", - "name": "Strife" - }, - { - "executables": [{"is_launcher": false, "name": "strife-ve.exe", "os": "win32"}], - "hook": true, - "id": "504055223543922708", - "name": "Strife: Veteran Edition" - }, - { - "executables": [{"is_launcher": false, "name": "styxgame.exe", "os": "win32"}], - "hook": true, - "id": "504055375880912946", - "name": "Styx: Master of Shadows" - }, - { - "executables": [{"is_launcher": false, "name": "suguri.exe", "os": "win32"}], - "hook": true, - "id": "504055570483904522", - "name": "Suguri" - }, - { - "executables": [{"is_launcher": false, "name": "supermncgameclient.exe", "os": "win32"}], - "hook": true, - "id": "504055809962147840", - "name": "Super Monday Night Combat" - }, - { - "executables": [{"is_launcher": false, "name": "swordandsworcery_pc.exe", "os": "win32"}], - "hook": true, - "id": "504056145854464000", - "name": "Superbrothers: Sword & Sworcery EP" - }, - { - "executables": [{"is_launcher": false, "name": "survive-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "504056431176056852", - "name": "SURV1V3" - }, - { - "aliases": ["Swat 4", "Swat 4: The Stetchkov Syndicate"], - "executables": [ - {"is_launcher": false, "name": "swat4x.exe", "os": "win32"}, - {"is_launcher": false, "name": "swat4.exe", "os": "win32"} - ], - "hook": true, - "id": "504056709015404544", - "name": "SWAT 4" - }, - { - "executables": [{"is_launcher": false, "name": "swordcoast.exe", "os": "win32"}], - "hook": true, - "id": "504056938439507968", - "name": "Sword Coast Legends" - }, - { - "executables": [{"is_launcher": false, "name": "sword of asumi.exe", "os": "win32"}], - "hook": true, - "id": "504057095109214247", - "name": "Sword of Asumi" - }, - { - "aliases": ["Synthetik"], - "executables": [{"is_launcher": false, "name": "synthetik.exe", "os": "win32"}], - "hook": true, - "id": "504057233756389376", - "name": "SYNTHETIK" - }, - { - "executables": [{"is_launcher": false, "name": "tkom.exe", "os": "win32"}], - "hook": true, - "id": "504057417194143754", - "name": "Take On Mars" - }, - { - "executables": [ - {"is_launcher": false, "name": "b24f49f9-d7fe-40b6-8f4d-65b0c6bf6a6b/borderlands.exe", "os": "win32"}, - {"is_launcher": false, "name": "tales from the borderlands/borderlands.exe", "os": "win32"} - ], - "hook": true, - "id": "504057675286315028", - "name": "Tales from the Borderlands" - }, - { - "executables": [{"is_launcher": false, "name": "t-engine.exe", "os": "win32"}], - "hook": true, - "id": "504065891043115008", - "name": "Tales of Maj'Eyal" - }, - { - "aliases": [ - "Tales of Monkey Island: Chapter 1 - Launch of the Screaming Narwhal", - "Tales of Monkey Island: Chapter 2 - The Siege of Spinner Cay", - "Tales of Monkey Island: Chapter 3 - Lair of the Leviathan", - "Tales of Monkey Island: Chapter 4 - The Trial and Execution of Guybrush Threepwood", - "Tales of Monkey Island: Chapter 5 - Rise of the Pirate God" - ], - "executables": [ - {"is_launcher": false, "name": "monkeyisland101.exe", "os": "win32"}, - {"is_launcher": false, "name": "monkeyisland102.exe", "os": "win32"}, - {"is_launcher": false, "name": "monkeyisland104.exe", "os": "win32"}, - {"is_launcher": false, "name": "monkeyisland105.exe", "os": "win32"}, - {"is_launcher": false, "name": "monkeyisland103.exe", "os": "win32"} - ], - "hook": true, - "id": "504067053481754634", - "name": "Tales of Monkey Island" - }, - { - "executables": [{"is_launcher": false, "name": "tales of zestiria.exe", "os": "win32"}], - "hook": true, - "id": "504070466948956160", - "name": "Tales of Zestiria" - }, - { - "executables": [{"is_launcher": false, "name": "trgame.exe", "os": "win32"}], - "hook": true, - "id": "504071115799265280", - "name": "Tales Runner", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "taskforce/binaries/win64/taskforce.exe", "os": "win32"}], - "hook": true, - "id": "504071248888987676", - "name": "Task Force" - }, - { - "executables": [{"is_launcher": false, "name": "tetrisultimate.exe", "os": "win32"}], - "hook": true, - "id": "504071743963529226", - "name": "Tetris\u00ae Ultimate" - }, - { - "executables": [{"is_launcher": false, "name": "tetris.exe", "os": "win32"}], - "hook": true, - "id": "504071879993196544", - "name": "Tetris" - }, - { - "executables": [{"is_launcher": false, "name": "beginnersguide.exe", "os": "win32"}], - "hook": true, - "id": "504073562785579018", - "name": "The Beginner's Guide" - }, - { - "aliases": ["The Elder Scrolls IV: Oblivion"], - "executables": [ - {"is_launcher": false, "name": "oblivion/oblivion.exe", "os": "win32"}, - {"is_launcher": false, "name": "oblivion/obse_loader.exe", "os": "win32"}, - {"is_launcher": false, "name": "oblivion.exe", "os": "win32"} - ], - "hook": true, - "id": "504074409628401690", - "name": "The Elder Scrolls IV: Oblivion", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "forgettabledungeon.exe", "os": "win32"}], - "hook": true, - "id": "504075021677887541", - "name": "The Forgettable Dungeon" - }, - { - "aliases": ["The King Of Fighters 2002 Unlimited Match", "The King of Fighters 2002 Unlimited Match"], - "executables": [{"is_launcher": false, "name": "kingoffighters2002um.exe", "os": "win32"}], - "hook": true, - "id": "504075299877683230", - "name": "THE KING OF FIGHTERS 2002 UNLIMITED MATCH" - }, - { - "executables": [{"is_launcher": false, "name": "misstake.exe", "os": "win32"}], - "hook": true, - "id": "504076592218112047", - "name": "The Marvellous Miss Take" - }, - { - "executables": [{"is_launcher": false, "name": "thepark.exe", "os": "win32"}], - "hook": true, - "id": "504076991759384596", - "name": "The Park" - }, - { - "executables": [{"is_launcher": false, "name": "the sacred tears true.exe", "os": "win32"}], - "hook": true, - "id": "504077161246883850", - "name": "The Sacred Tears TRUE" - }, - { - "executables": [ - {"is_launcher": false, "name": "thesecretworld.exe", "os": "win32"}, - {"is_launcher": false, "name": "thesecretworlddx11.exe", "os": "win32"}, - {"is_launcher": false, "name": "secretworldlegends.exe", "os": "win32"}, - {"is_launcher": false, "name": "secretworldlegendsdx11.exe", "os": "win32"} - ], - "hook": true, - "id": "504077629175889923", - "name": "The Secret World" - }, - { - "executables": [{"is_launcher": false, "name": "settlers7r.exe", "os": "win32"}], - "hook": true, - "id": "504078051358015516", - "name": "The Settlers 7: Paths to a Kingdom" - }, - { - "executables": [{"is_launcher": false, "name": "settlers6.exe", "os": "win32"}], - "hook": true, - "id": "504078174875942939", - "name": "The Settlers: Rise of an Empire" - }, - { - "executables": [{"is_launcher": false, "name": "astronautsgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "504078553445302330", - "name": "The Vanishing of Ethan Carter" - }, - { - "executables": [{"is_launcher": false, "name": "ethancarter-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "504078762292543506", - "name": "The Vanishing of Ethan Carter Redux" - }, - { - "aliases": ["There Was A Caveman"], - "executables": [{"is_launcher": false, "name": "therewasacaveman.exe", "os": "win32"}], - "hook": true, - "id": "504079332512235573", - "name": "There Was a Caveman" - }, - { - "aliases": ["Thomas was Alone"], - "executables": [{"is_launcher": false, "name": "thomaswasalone.exe", "os": "win32"}], - "hook": true, - "id": "504079439726903336", - "name": "Thomas Was Alone" - }, - { - "executables": [{"is_launcher": false, "name": "tis100.exe", "os": "win32"}], - "hook": true, - "id": "504079649702412295", - "name": "TIS-100" - }, - { - "executables": [{"is_launcher": false, "name": "tomb2.exe", "os": "win32"}], - "hook": true, - "id": "504079864681332739", - "name": "Tomb Raider II" - }, - { - "executables": [{"is_launcher": false, "name": "tomb3.exe", "os": "win32"}], - "hook": true, - "id": "504080259151298560", - "name": "Tomb Raider III: Adventures of Lara Croft" - }, - { - "executables": [{"is_launcher": false, "name": "tra.exe", "os": "win32"}], - "hook": true, - "id": "504080427569643550", - "name": "Tomb Raider: Anniversary" - }, - { - "executables": [{"is_launcher": false, "name": "pctomb5.exe", "os": "win32"}], - "hook": true, - "id": "504080609598111771", - "name": "Tomb Raider: Chronicles" - }, - { - "executables": [{"is_launcher": false, "name": "tomb raider legend/trl.exe", "os": "win32"}], - "hook": true, - "id": "504080831396970511", - "name": "Tomb Raider: Legend" - }, - { - "executables": [{"is_launcher": false, "name": "tomb4.exe", "os": "win32"}], - "hook": true, - "id": "504081066848681984", - "name": "Tomb Raider: The Last Revelation" - }, - { - "executables": [{"is_launcher": false, "name": "tru.exe", "os": "win32"}], - "hook": true, - "id": "504081253314723874", - "name": "Tomb Raider: Underworld" - }, - { - "executables": [{"is_launcher": false, "name": "thug.exe", "os": "win32"}], - "hook": true, - "id": "504081569405730826", - "name": "Tony Hawk's Underground" - }, - { - "executables": [{"is_launcher": false, "name": "thug2.exe", "os": "win32"}], - "hook": true, - "id": "504081807340470291", - "name": "Tony Hawk's Underground 2" - }, - { - "executables": [{"is_launcher": false, "name": "trackday manager.exe", "os": "win32"}], - "hook": true, - "id": "504082602848813087", - "name": "Trackday Manager" - }, - { - "executables": [{"is_launcher": false, "name": "transforbest.exe", "os": "win32"}], - "hook": true, - "id": "504082814350655518", - "name": "TransforBest" - }, - { - "executables": [{"is_launcher": false, "name": "tripletown.exe", "os": "win32"}], - "hook": true, - "id": "504083025211162677", - "name": "Triple Town" - }, - { - "aliases": ["UNRAVEL"], - "executables": [{"is_launcher": false, "name": "unravel.exe", "os": "win32"}], - "hook": true, - "id": "504084141319520299", - "name": "Unravel" - }, - { - "executables": [{"is_launcher": false, "name": "unrealtournament.exe", "os": "win32"}], - "hook": true, - "id": "504084447797313537", - "name": "Unreal Tournament" - }, - { - "aliases": ["Unreal Tournament 3: Black Edition"], - "executables": [{"is_launcher": false, "name": "ut3.exe", "os": "win32"}], - "hook": true, - "id": "504084581989744679", - "name": "Unreal Tournament 3" - }, - { - "executables": [{"is_launcher": false, "name": "uplink.exe", "os": "win32"}], - "hook": true, - "id": "504085139983433774", - "name": "Uplink" - }, - { - "aliases": ["War For the Overworld"], - "executables": [{"is_launcher": false, "name": "wftogame.exe", "os": "win32"}], - "hook": true, - "id": "504085687155425286", - "name": "War for the Overworld" - }, - { - "executables": [ - {"is_launcher": false, "name": "warsow_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "warsow_x86.exe", "os": "win32"} - ], - "hook": true, - "id": "504086535079985181", - "name": "Warsow" - }, - { - "executables": [{"is_launcher": false, "name": "waveland.exe", "os": "win32"}], - "hook": true, - "id": "504086615132733450", - "name": "WaveLand" - }, - { - "executables": [{"is_launcher": false, "name": "wings of vi.exe", "os": "win32"}], - "hook": true, - "id": "504086961498226688", - "name": "Wings of Vi" - }, - { - "executables": [ - {"is_launcher": false, "name": "wolfoldblood_x86.exe", "os": "win32"}, - {"is_launcher": false, "name": "wolfoldblood_x64.exe", "os": "win32"}, - {"is_launcher": false, "name": "wolfoldblood_x32.exe", "os": "win32"} - ], - "hook": true, - "id": "504087375618506772", - "name": "Wolfenstein: The Old Blood" - }, - { - "executables": [ - {"is_launcher": false, "name": "wonderwickets-release.exe", "os": "win32"}, - {"is_launcher": false, "name": "wonder wickets.exe", "os": "win32"} - ], - "hook": true, - "id": "504087681635188766", - "name": "Wonder Wickets" - }, - { - "executables": [{"is_launcher": false, "name": "x-plane.exe", "os": "win32"}], - "hook": true, - "id": "504087790032650290", - "name": "X-Plane 11" - }, - { - "executables": [{"is_launcher": false, "name": "xenonauts.exe", "os": "win32"}], - "hook": true, - "id": "504088140139462686", - "name": "Xenonauts" - }, - { - "executables": [{"is_launcher": false, "name": "zandronum.exe", "os": "win32"}], - "hook": true, - "id": "504088311594483722", - "name": "Zandronum" - }, - { - "aliases": ["Zombi"], - "executables": [{"is_launcher": false, "name": "zombi.exe", "os": "win32"}], - "hook": true, - "id": "504088792223842314", - "name": "ZOMBI" - }, - { - "executables": [{"is_launcher": false, "name": "zmr/unrealengine3/binaries/win32/marsgame.exe", "os": "win32"}], - "hook": true, - "id": "504089133900103714", - "name": "Zombies Monsters Robots" - }, - { - "executables": [{"is_launcher": false, "name": "9dragons/rfstl.exe", "os": "win32"}], - "hook": true, - "id": "504399459426369587", - "name": "9Dragons" - }, - { - "executables": [{"is_launcher": false, "name": "age of wushu/bin/fxgame.exe", "os": "win32"}], - "hook": true, - "id": "504422264599609344", - "name": "Age of Wushu" - }, - { - "executables": [{"is_launcher": false, "name": "alanwake.exe", "os": "win32"}], - "hook": true, - "id": "504423339104796672", - "name": "Alan Wake" - }, - { - "aliases": ["Argentum"], - "executables": [{"is_launcher": false, "name": "argentum.exe", "os": "win32"}], - "hook": true, - "id": "504424067877699614", - "name": "Argentum Online" - }, - { - "aliases": ["Azure Striker"], - "executables": [{"is_launcher": false, "name": "azure striker gunvolt/exe/gv_win.exe", "os": "win32"}], - "hook": true, - "id": "504426985305538600", - "name": "Azure Striker Gunvolt" - }, - { - "aliases": ["Allegiance"], - "executables": [{"is_launcher": false, "name": "allegiance.exe", "os": "win32"}], - "hook": true, - "id": "504444177413701632", - "name": "Microsoft Allegiance" - }, - { - "executables": [{"is_launcher": false, "name": "shodn.exe", "os": "win32"}], - "hook": true, - "id": "504468643384524800", - "name": "Super House of Dead Ninjas" - }, - { - "executables": [{"is_launcher": false, "name": "aseprite.exe", "os": "win32"}], - "hook": true, - "id": "504605035162763294", - "name": "Aseprite" - }, - { - "executables": [{"is_launcher": false, "name": "full metal furies/brawler2d.exe", "os": "win32"}], - "hook": true, - "id": "504743823281487882", - "name": "Full Metal Furies" - }, - { - "aliases": ["Ao no Kanata no Four Rhythm"], - "executables": [ - { - "is_launcher": false, - "name": "\u84bc\u306e\u5f7c\u65b9\u306e\u30d5\u30a9\u30fc\u30ea\u30ba\u30e0.exe", - "os": "win32" - } - ], - "hook": true, - "id": "504764773167136768", - "name": "\u84bc\u306e\u5f7c\u65b9\u306e\u30d5\u30a9\u30fc\u30ea\u30ba\u30e0" - }, - { - "aliases": ["Avalon Lords"], - "executables": [ - {"is_launcher": false, "name": "avalonlords.app", "os": "darwin"}, - {"is_launcher": false, "name": "avalonlords.exe", "os": "win32"} - ], - "hook": true, - "id": "504765148481716224", - "name": "Avalon Lords: Dawn Rises" - }, - { - "aliases": ["BlackShot SEA", "Blackshot SEA"], - "executables": [{"is_launcher": false, "name": "blackshot.exe", "os": "win32"}], - "hook": true, - "id": "504767731825115176", - "name": "BlackShot: Mercenary Warfare FPS" - }, - { - "aliases": ["BlazBlue Continuum Shift Extend"], - "executables": [{"is_launcher": false, "name": "bbcse.exe", "os": "win32"}], - "hook": true, - "id": "504768003469082655", - "name": "BlazBlue: Continuum Shift Extend" - }, - { - "executables": [{"is_launcher": false, "name": "blobby.exe", "os": "win32"}], - "hook": true, - "id": "504768329651585035", - "name": "Blobby Volley 2" - }, - { - "executables": [{"is_launcher": false, "name": "boundless.exe", "os": "win32"}], - "hook": true, - "id": "504768467724140544", - "name": "Boundless" - }, - { - "executables": [{"is_launcher": false, "name": "cabal2main.exe", "os": "win32"}], - "hook": true, - "id": "504769131615223838", - "name": "Cabal 2" - }, - { - "executables": [{"is_launcher": false, "name": "cataclysm-tiles.exe", "os": "win32"}], - "hook": true, - "id": "504785474901114920", - "name": "Cataclysm: Dark Days Ahead" - }, - { - "aliases": ["Chaos Code: New Sign of Catastrophe"], - "executables": [{"is_launcher": false, "name": "chaoscode_nsoc/chaoscode.exe", "os": "win32"}], - "hook": true, - "id": "504788636525395998", - "name": "CHAOS CODE -NEW SIGN OF CATASTROPHE-" - }, - { - "aliases": ["Chronicle - Runescape Legends"], - "executables": [{"is_launcher": false, "name": "chronicle.exe", "os": "win32"}], - "hook": true, - "id": "504790398984781834", - "name": "Chronicle: RuneScape Legends" - }, - { - "aliases": ["Combat Mission: Black Sea"], - "executables": [{"is_launcher": false, "name": "cm black sea.exe", "os": "win32"}], - "hook": true, - "id": "504801397825470464", - "name": "Combat Mission Black Sea" - }, - { - "aliases": ["Combat Mission: Shock Force"], - "executables": [{"is_launcher": false, "name": "cm shock force.exe", "os": "win32"}], - "hook": true, - "id": "504801527219617808", - "name": "Combat Mission Shock Force" - }, - { - "aliases": ["Command & Conquer: Red Alert 2"], - "executables": [{"is_launcher": false, "name": "gamemd.exe", "os": "win32"}], - "hook": true, - "id": "504801959954612274", - "name": "Command & Conquer\u2122 Red Alert 2 and Yuri\u2019s Revenge" - }, - { - "aliases": ["Command: Modern Air/Naval Operations"], - "executables": [ - {"is_launcher": false, "name": "command modern air naval operations/command.exe", "os": "win32"} - ], - "hook": true, - "id": "504802253413154846", - "name": "Command: Modern Air / Naval Operations WOTY" - }, - { - "executables": [{"is_launcher": false, "name": "cosmic dust & rust/cosmic.exe", "os": "win32"}], - "hook": true, - "id": "504802641763762176", - "name": "Cosmic Dust & Rust" - }, - { - "aliases": ["Cosmic Break"], - "executables": [{"is_launcher": false, "name": "cosmic.exe", "os": "win32"}], - "hook": true, - "id": "504802978784346122", - "name": "CosmicBreak" - }, - { - "aliases": ["Cosmic Break 2"], - "executables": [{"is_launcher": false, "name": "cosmicbreak2.exe", "os": "win32"}], - "hook": true, - "id": "504803174880903188", - "name": "CosmicBreak2" - }, - { - "aliases": ["Cosmic League"], - "executables": [{"is_launcher": false, "name": "cosmicleague.exe", "os": "win32"}], - "hook": true, - "id": "504803374613528600", - "name": "CosmicLeague_US" - }, - { - "aliases": ["Creeper World 2: Redemption"], - "executables": [{"is_launcher": false, "name": "creeper world 2.exe", "os": "win32"}], - "hook": true, - "id": "504803589898633216", - "name": "Creeper World 2" - }, - { - "aliases": ["Carrier Command Gaea Mission"], - "executables": [{"is_launcher": false, "name": "carrier.exe", "os": "win32"}], - "hook": true, - "id": "504824168861270033", - "name": "Carrier Command: Gaea Mission" - }, - { - "aliases": ["Demul"], - "executables": [{"is_launcher": false, "name": "demul.exe", "os": "win32"}], - "hook": true, - "id": "505116958086266920", - "name": "Demul version 0.5.6.3" - }, - { - "aliases": ["Desert of Kharak"], - "executables": [ - {"is_launcher": false, "name": "desertsofkharak32.exe", "os": "win32"}, - {"is_launcher": false, "name": "desertsofkharak64.exe", "os": "win32"} - ], - "hook": true, - "id": "505117107097174062", - "name": "Homeworld: Deserts of Kharak" - }, - { - "aliases": ["Disgaea "], - "executables": [{"is_launcher": false, "name": "disgaea pc/dis1_st.exe", "os": "win32"}], - "hook": true, - "id": "505123261546496000", - "name": "Disgaea PC" - }, - { - "aliases": ["Disney Infinity"], - "executables": [{"is_launcher": false, "name": "disneyinfinity3.exe", "os": "win32"}], - "hook": true, - "id": "505123562756112405", - "name": "Disney Infinity 3.0: Gold Edition" - }, - { - "executables": [{"is_launcher": false, "name": "disneyinfinity2.exe", "os": "win32"}], - "hook": true, - "id": "505123882232053810", - "name": "Disney Infinity 2.0: Gold Edition" - }, - { - "aliases": ["Dragon Quest X: Mezameshi Itsutsu no Shuzoku Online"], - "executables": [{"is_launcher": false, "name": "dqxgame.exe", "os": "win32"}], - "hook": true, - "id": "505125120960888877", - "name": "\u30c9\u30e9\u30b4\u30f3\u30af\u30a8\u30b9\u30c8\uff38\u3000\u3044\u306b\u3057\u3048\u306e\u7adc\u306e\u4f1d\u627f\u3000\u30aa\u30f3\u30e9\u30a4\u30f3" - }, - { - "aliases": ["E.Y.E.: Divine Cybermancy"], - "executables": [{"is_launcher": false, "name": "eye.exe", "os": "win32"}], - "hook": true, - "id": "505129908562034716", - "name": "E.Y.E: Divine Cybermancy" - }, - { - "aliases": ["EZ Quake"], - "executables": [ - {"is_launcher": false, "name": "ezquake-gl.exe", "os": "win32"}, - {"is_launcher": false, "name": "ezquake.exe", "os": "win32"} - ], - "hook": true, - "id": "505131009583480844", - "name": "nQuake" - }, - { - "aliases": ["Fable: The Lost Chapters"], - "executables": [{"is_launcher": false, "name": "fable.exe", "os": "win32"}], - "hook": true, - "id": "505133560391401472", - "name": "Fable - The Lost Chapters" - }, - { - "aliases": ["Fantastic Danmaku Festival"], - "executables": [{"is_launcher": false, "name": "thmhj.exe", "os": "win32"}], - "hook": true, - "id": "505133803258249253", - "name": "TouHou Makuka Sai ~ Fantastic Danmaku Festival" - }, - { - "aliases": ["FCEUX"], - "executables": [{"is_launcher": false, "name": "fceux.exe", "os": "win32"}], - "hook": true, - "id": "505134014034870283", - "name": "FCEUX 2.2.3" - }, - { - "executables": [{"is_launcher": false, "name": "pol.exe", "os": "win32"}], - "hook": true, - "id": "505134378138075144", - "name": "FINAL FANTASY XI" - }, - { - "aliases": ["Gahkthun of the Golden Lightning"], - "executables": [{"is_launcher": false, "name": "gahkthun.exe", "os": "win32"}], - "hook": true, - "id": "505134723543203851", - "name": "Gahkthun of the Golden Lightning Steam Edition" - }, - { - "aliases": ["Garfield Kart"], - "executables": [ - {"is_launcher": false, "name": "garfield_master7.exe", "os": "win32"}, - {"is_launcher": false, "name": "garfieldkartnomulti.exe", "os": "win32"} - ], - "hook": true, - "id": "505134938354352128", - "name": "Garfield Kart" - }, - { - "aliases": ["Gensou SkyDrift"], - "executables": [{"is_launcher": false, "name": "skydrift.exe", "os": "win32"}], - "hook": true, - "id": "505135507907543070", - "name": "SkyDrift" - }, - { - "aliases": ["Grandia 2"], - "executables": [{"is_launcher": false, "name": "grandia2.exe", "os": "win32"}], - "hook": true, - "id": "505135738719961143", - "name": "Grandia II Anniversary Edition" - }, - { - "aliases": ["GRID: Autosport"], - "executables": [{"is_launcher": false, "name": "gridautosport_avx.exe", "os": "win32"}], - "hook": true, - "id": "505135989694398512", - "name": "GRID Autosport" - }, - { - "aliases": ["Grisaia no Kajitsu"], - "executables": [{"is_launcher": false, "name": "grisaia.exe", "os": "win32"}], - "hook": true, - "id": "505136406109356032", - "name": "The Fruit of Grisaia" - }, - { - "aliases": ["Grisaia Phantom Trigger"], - "executables": [{"is_launcher": false, "name": "gpt_vol2.exe", "os": "win32"}], - "hook": true, - "id": "505136671138906132", - "name": "Grisaia Phantom Trigger Vol.2" - }, - { - "aliases": ["Halo Trial"], - "executables": [{"is_launcher": false, "name": "halo trial/halo.exe", "os": "win32"}], - "hook": true, - "id": "505137576256995328", - "name": "Microsoft Halo Trial" - }, - { - "aliases": ["Heavy Weapon"], - "executables": [{"is_launcher": false, "name": "heavyweapon.exe", "os": "win32"}], - "hook": true, - "id": "505137992642592815", - "name": "Heavy Weapon Deluxe" - }, - { - "aliases": ["Hyperdimension Neptunia Re;Birth2"], - "executables": [{"is_launcher": false, "name": "neptuniarebirth2.exe", "os": "win32"}], - "hook": true, - "id": "505138235937259549", - "name": "Hyperdimension Neptunia Re;Birth2 Sisters Generation" - }, - { - "aliases": ["Hyperdimension Neptunia Re;Birth3"], - "executables": [{"is_launcher": false, "name": "neptuniarebirth3.exe", "os": "win32"}], - "hook": true, - "id": "505138532700913671", - "name": "Hyperdimension Neptunia Re;Birth3 V Generation" - }, - { - "executables": [{"is_launcher": false, "name": "illarion/jre/bin/java.exe", "os": "win32"}], - "hook": true, - "id": "505138979264528414", - "name": "Illarion" - }, - { - "aliases": ["In The Groove 2"], - "executables": [{"is_launcher": false, "name": "openitg-pc.exe", "os": "win32"}], - "hook": true, - "id": "505139561995829278", - "name": "OpenITG" - }, - { - "aliases": ["Invisible Inc."], - "executables": [{"is_launcher": false, "name": "invisibleinc.exe", "os": "win32"}], - "hook": true, - "id": "505139793940709376", - "name": "Invisible, Inc." - }, - { - "aliases": ["IvAc - IVAO vATC"], - "executables": [{"is_launcher": false, "name": "ivac.exe", "os": "win32"}], - "hook": true, - "id": "505139956017266688", - "name": "IvAc" - }, - { - "executables": [{"is_launcher": false, "name": "justcause.exe", "os": "win32"}], - "hook": true, - "id": "505140295931920404", - "name": "Just Cause" - }, - { - "aliases": ["Kamidori Alchemy Meister"], - "executables": [{"is_launcher": false, "name": "age.exe", "os": "win32"}], - "hook": true, - "id": "505140655501213696", - "name": "\u795e\u63a1\u308a\u30a2\u30eb\u30b1\u30df\u30fc\u30de\u30a4\u30b9\u30bf\u30fc" - }, - { - "aliases": ["Kara no Shoujo 2"], - "executables": [{"is_launcher": false, "name": "kara no shojo 2.exe", "os": "win32"}], - "hook": true, - "id": "505140834644000812", - "name": "Kara no Shojo 2" - }, - { - "aliases": ["Knights of Pen & Paper II"], - "executables": [{"is_launcher": false, "name": "kopp2.exe", "os": "win32"}], - "hook": true, - "id": "505141441388085298", - "name": "Knights of Pen and Paper 2" - }, - { - "aliases": ["Magic the Gathering Arena"], - "executables": [{"is_launcher": false, "name": "mtga.exe", "os": "win32"}], - "hook": true, - "id": "505142532297064468", - "name": "MTGArena" - }, - { - "aliases": ["Magical Battle Arena NEXT"], - "executables": [ - {"is_launcher": false, "name": "mban_m.exe", "os": "win32"}, - {"is_launcher": false, "name": "mban_f.exe", "os": "win32"} - ], - "hook": true, - "id": "505142782654939150", - "name": "\u30de\u30b8\u30ab\u30eb\u30d0\u30c8\u30eb\u30a2\u30ea\u30fc\u30caNEXT\u30fb\u5e7b\u60f3\u90f7\u7a7a\u9583\u59eb" - }, - { - "aliases": ["Maschine"], - "executables": [{"is_launcher": false, "name": "maschine 2.exe", "os": "win32"}], - "hook": true, - "id": "505143168287899676", - "name": "Native Instruments Maschine 2" - }, - { - "aliases": ["Melty Blood Actress Again: Current Code"], - "executables": [{"is_launcher": false, "name": "mbaa.exe", "os": "win32"}], - "hook": true, - "id": "505143546244890691", - "name": "MELTY BLOOD Actress Again Current Code" - }, - { - "aliases": ["Metal Gear Solid 2: Substance"], - "executables": [{"is_launcher": false, "name": "mgs2_sse.exe", "os": "win32"}], - "hook": true, - "id": "505146559835406352", - "name": "Metal Gear Solid 2 Substance" - }, - { - "aliases": ["Modlands"], - "executables": [{"is_launcher": false, "name": "modlands.exe", "os": "win32"}], - "hook": true, - "id": "505147819255136297", - "name": "Modlands 0.512a version 0.512a" - }, - { - "aliases": ["NEO AQUARIUM - The King of Crustaceans"], - "executables": [{"is_launcher": false, "name": "neoaquarium.exe", "os": "win32"}], - "hook": true, - "id": "505150034698960952", - "name": "NEO AQUARIUM - The King of Crustaceans -" - }, - { - "aliases": ["Offspring Fling"], - "executables": [{"is_launcher": false, "name": "offspring fling.exe", "os": "win32"}], - "hook": true, - "id": "505150420377665566", - "name": "Offspring Fling!" - }, - { - "aliases": ["OlliOlli2"], - "executables": [{"is_launcher": false, "name": "olliolli2.exe", "os": "win32"}], - "hook": true, - "id": "505150905696649216", - "name": "OlliOlli2: Welcome to Olliwood" - }, - { - "aliases": ["Organ Trail"], - "executables": [{"is_launcher": false, "name": "organtrail.exe", "os": "win32"}], - "hook": true, - "id": "505151146722197504", - "name": "Organ Trail: Director's Cut" - }, - { - "aliases": ["PangYa!"], - "executables": [{"is_launcher": false, "name": "projectg.exe", "os": "win32"}], - "hook": true, - "id": "505151476427915283", - "name": "PangYa (NtreevSoft)" - }, - { - "aliases": ["Perpetuum Online"], - "executables": [{"is_launcher": false, "name": "perpetuum.exe", "os": "win32"}], - "hook": true, - "id": "505151662151958530", - "name": "Perpetuum" - }, - { - "aliases": ["Phantasy Star Online: Blue Burst"], - "executables": [{"is_launcher": false, "name": "psobb.exe", "os": "win32"}], - "hook": true, - "id": "505152925115482112", - "name": "Phantasy Star Online Blue Burst" - }, - { - "aliases": ["Phantom Break: Battle Grounds"], - "executables": [{"is_launcher": false, "name": "pbbg_win32.exe", "os": "win32"}], - "hook": true, - "id": "505153286840516649", - "name": "Phantom Breaker: Battle Grounds" - }, - { - "aliases": ["Project Hedra"], - "executables": [{"is_launcher": false, "name": "hedra.exe", "os": "win32"}], - "hook": true, - "id": "505153723941781523", - "name": "Project Hedra" - }, - { - "executables": [{"is_launcher": false, "name": "icons combat arena/icons.exe", "os": "win32"}], - "hook": true, - "id": "505187200011337738", - "name": "Icons: Combat Arena" - }, - { - "executables": [{"is_launcher": false, "name": "brggame-steam.exe", "os": "win32"}], - "hook": true, - "id": "505256510453186560", - "name": "LET IT DIE" - }, - { - "executables": [{"is_launcher": false, "name": "dirt2_game.exe", "os": "win32"}], - "hook": true, - "id": "505486620468838447", - "name": "DiRT 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "mabinogi/client.exe", "os": "win32"}, - {"is_launcher": false, "name": "mabinogi/nxsteam.exe", "os": "win32"}, - {"is_launcher": false, "name": "nexon/library/mabinogi/appdata/client.exe", "os": "win32"}, - {"is_launcher": false, "name": "mabinogi.exe", "os": "win32"} - ], - "hook": true, - "id": "505489300545208340", - "name": "Mabinogi" - }, - { - "executables": [{"is_launcher": false, "name": "mgsi.exe", "os": "win32"}], - "hook": true, - "id": "505489991175110676", - "name": "Metal Gear Solid" - }, - { - "executables": [{"is_launcher": false, "name": "mapleroyals.exe", "os": "win32"}], - "hook": true, - "id": "505490321174560783", - "name": "MapleRoyals" - }, - { - "executables": [ - {"is_launcher": false, "name": "hindie.steam.exe", "os": "win32"}, - {"is_launcher": false, "name": "hindie.exe", "os": "win32"} - ], - "hook": true, - "id": "505490535629324318", - "name": "Houdini Indie" - }, - { - "executables": [ - {"is_launcher": false, "name": "tds.exe", "os": "win32"}, - {"is_launcher": false, "name": "infantry.exe", "os": "win32"} - ], - "hook": true, - "id": "505490756782391338", - "name": "Infantry" - }, - { - "executables": [{"is_launcher": false, "name": "helbreath.exe", "os": "win32"}], - "hook": true, - "id": "505490939008122940", - "name": "Helbreath Apocalypse" - }, - { - "executables": [ - {"is_launcher": false, "name": "ffr.exe", "os": "win32"}, - {"is_launcher": false, "name": "r3air.exe", "os": "win32"} - ], - "hook": true, - "id": "505491268755914772", - "name": "Flash Flash Revolution" - }, - { - "executables": [{"is_launcher": false, "name": "dwarf fortress.exe", "os": "win32"}], - "hook": true, - "id": "505491707253620739", - "name": "Dwarf Fortress" - }, - { - "aliases": ["Quake III"], - "executables": [{"is_launcher": false, "name": "quake3.exe", "os": "win32"}], - "hook": true, - "id": "505493023031951411", - "name": "Quake III" - }, - { - "aliases": ["King Of Fighters XIII"], - "executables": [{"is_launcher": false, "name": "kofxiii.exe", "os": "win32"}], - "hook": true, - "id": "505493399688839170", - "name": "King of Fighters XIII" - }, - { - "executables": [{"is_launcher": false, "name": "nitronicrush.exe", "os": "win32"}], - "hook": true, - "id": "505494175702188032", - "name": "Nitronic Rush" - }, - { - "executables": [ - {"is_launcher": false, "name": "pcsx2-r5875.exe", "os": "win32"}, - {"is_launcher": false, "name": "pcsx2.exe", "os": "win32"} - ], - "hook": true, - "id": "505494914872770583", - "name": "PCSX2" - }, - { - "executables": [{"is_launcher": false, "name": "phase_shift.exe", "os": "win32"}], - "hook": true, - "id": "505495076974231588", - "name": "Phase Shift" - }, - { - "executables": [{"is_launcher": false, "name": "torment.exe", "os": "win32"}], - "hook": true, - "id": "505495215856025620", - "name": "Planescape: Torment" - }, - { - "aliases": ["QUBE"], - "executables": [{"is_launcher": false, "name": "qubegame.exe", "os": "win32"}], - "hook": true, - "id": "505496236548292648", - "name": "Q.U.B.E: Director's Cut" - }, - { - "executables": [{"is_launcher": false, "name": "reboundarena.exe", "os": "win32"}], - "hook": true, - "id": "505496835721396254", - "name": "Rebound Arena" - }, - { - "aliases": ["Regen"], - "executables": [{"is_launcher": false, "name": "regen.exe", "os": "win32"}], - "hook": true, - "id": "505496955095482387", - "name": "REGEN" - }, - { - "executables": [{"is_launcher": false, "name": "retroarch.exe", "os": "win32"}], - "hook": true, - "id": "505497615748694018", - "name": "RetroArch" - }, - { - "aliases": ["Return to Castle Wolfenstein"], - "executables": [ - {"is_launcher": false, "name": "wolfsp.exe", "os": "win32"}, - {"is_launcher": false, "name": "wolfmp.exe", "os": "win32"} - ], - "hook": true, - "id": "505497930292133908", - "name": "Return To Castle Wolfenstein" - }, - { - "aliases": ["Darkfall Rise of Agon", "Rise of Agon"], - "executables": [ - {"is_launcher": false, "name": "darkfall_roa.exe", "os": "win32"}, - {"is_launcher": false, "name": "darkfall.exe", "os": "win32"}, - {"is_launcher": false, "name": "darkfall roa/darkfall_roa.exe", "os": "win32"}, - {"is_launcher": false, "name": "darkfall roa/data/darkfall.exe", "os": "win32"}, - {"is_launcher": false, "name": "darkfallroa/darkfall_roa.exe", "os": "win32"}, - {"is_launcher": false, "name": "data/darkfall.exe", "os": "win32"} - ], - "hook": true, - "id": "505498499043819520", - "name": "Rise of Agon" - }, - { - "aliases": ["Rosenkreuzstilette Grollschwert"], - "executables": [ - {"is_launcher": false, "name": "rks_e.exe", "os": "win32"}, - {"is_launcher": false, "name": "rks.exe", "os": "win32"} - ], - "hook": true, - "id": "505498725297422351", - "name": "Rosenkreuzstilette" - }, - { - "executables": [{"is_launcher": false, "name": "s4league/s4client.exe", "os": "win32"}], - "hook": true, - "id": "505498926443528202", - "name": "S4 League" - }, - { - "aliases": ["SC2VN: The e-sport Visual Novel"], - "executables": [{"is_launcher": false, "name": "sc2vn.exe", "os": "win32"}], - "hook": true, - "id": "505499045079416833", - "name": "SC2VN - The eSports Visual Novel" - }, - { - "aliases": ["Shadow Complex"], - "executables": [ - {"is_launcher": false, "name": "shadowcomplex-win32-egl.exe", "os": "win32"}, - {"is_launcher": false, "name": "shadowcomplex-win32.exe", "os": "win32"} - ], - "hook": true, - "id": "505500036214292545", - "name": "Shadow Complex Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "asn_app_pcdx9_final.exe", "os": "win32"}], - "hook": true, - "id": "505500365404373004", - "name": "Sonic & All Stars Racing Transformed" - }, - { - "aliases": ["Sony Playstation Emulator"], - "executables": [{"is_launcher": false, "name": "epsxe.exe", "os": "win32"}], - "hook": true, - "id": "505500770683322399", - "name": "ePSXe" - }, - { - "executables": [{"is_launcher": false, "name": "soulworker100.exe", "os": "win32"}], - "hook": true, - "id": "505501322947199006", - "name": "SoulWorker" - }, - { - "aliases": ["Spy Party"], - "executables": [{"is_launcher": false, "name": "spyparty.exe", "os": "win32"}], - "hook": true, - "id": "505502210117861387", - "name": "SpyParty" - }, - { - "aliases": ["Super Smash Flash 1"], - "executables": [{"is_launcher": false, "name": "ssfexe.exe", "os": "win32"}], - "hook": true, - "id": "505502693113200640", - "name": "Super Smash Flash EXE Version 1.0" - }, - { - "aliases": ["Super Smash Flash 2"], - "executables": [{"is_launcher": false, "name": "ssf2.exe", "os": "win32"}], - "hook": true, - "id": "505502904640208902", - "name": "Super Smash Flash 2 Beta" - }, - { - "executables": [{"is_launcher": false, "name": "tfil.exe", "os": "win32"}], - "hook": true, - "id": "505503697799872532", - "name": "The Floor is Lava" - }, - { - "executables": [{"is_launcher": false, "name": "tlr.exe", "os": "win32"}], - "hook": true, - "id": "505503999403884544", - "name": "The Last Remnant" - }, - { - "aliases": ["The Simpsons: Hit & Run"], - "executables": [{"is_launcher": false, "name": "simpsons.exe", "os": "win32"}], - "hook": true, - "id": "505504523012276234", - "name": "The Simpsons Hit & Run(TM)" - }, - { - "aliases": ["Thrillville Off the Rails "], - "executables": [{"is_launcher": false, "name": "thrillville07.exe", "os": "win32"}], - "hook": true, - "id": "505504809437364244", - "name": "Thrillville: Off the Rails" - }, - { - "aliases": ["Titanfall"], - "executables": [{"is_launcher": false, "name": "titanfall.exe", "os": "win32"}], - "hook": true, - "id": "505505165705609246", - "name": "Titanfall\u2122" - }, - { - "aliases": ["TMNT 2"], - "executables": [{"is_launcher": false, "name": "tmnt2.exe", "os": "win32"}], - "hook": true, - "id": "505505520417767425", - "name": "TMNT 2 - Battle Nexus" - }, - { - "aliases": ["Tomb Raider: Angel of Darkness"], - "executables": [{"is_launcher": false, "name": "traod_p4.exe", "os": "win32"}], - "hook": true, - "id": "505505686705405962", - "name": "Tomb Raider (VI): The Angel of Darkness" - }, - { - "aliases": ["Tomoyo After ~It's a Wonderful Life~"], - "executables": [ - { - "is_launcher": false, - "name": "tomoyo after ~it's a wonderful life~ english edition/realliveen.exe", - "os": "win32" - } - ], - "hook": true, - "id": "505505972899414046", - "name": "Tomoyo After ~It's a Wonderful Life~ English Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "th10.exe", "os": "win32"}, - {"is_launcher": false, "name": "th10e.exe", "os": "win32"} - ], - "hook": true, - "id": "505506583304732695", - "name": "Touhou 10: Mountain of Faith" - }, - { - "executables": [ - {"is_launcher": false, "name": "th105e.exe", "os": "win32"}, - {"is_launcher": false, "name": "th105.exe", "os": "win32"} - ], - "hook": true, - "id": "505506928596877352", - "name": "Touhou 10.5: Scarlet Weather Rhapsody" - }, - { - "executables": [ - {"is_launcher": false, "name": "th11e.exe", "os": "win32"}, - {"is_launcher": false, "name": "th11.exe", "os": "win32"} - ], - "hook": true, - "id": "505507257224658987", - "name": "Touhou 11: Subterranean Animism" - }, - { - "executables": [ - {"is_launcher": false, "name": "th12e.exe", "os": "win32"}, - {"is_launcher": false, "name": "th12.exe", "os": "win32"} - ], - "hook": true, - "id": "505512749149716480", - "name": "Touhou 12: Undefined Fantastic Object" - }, - { - "executables": [ - {"is_launcher": false, "name": "th123.exe", "os": "win32"}, - {"is_launcher": false, "name": "th123e.exe", "os": "win32"} - ], - "hook": true, - "id": "505513116302573578", - "name": "Touhou 12.3: Hisoutensoku" - }, - { - "executables": [ - {"is_launcher": false, "name": "th125.exe", "os": "win32"}, - {"is_launcher": false, "name": "th125e.exe", "os": "win32"} - ], - "hook": true, - "id": "505513477645926430", - "name": "Touhou 12.5: Double Spoiler" - }, - { - "executables": [ - {"is_launcher": false, "name": "th128.exe", "os": "win32"}, - {"is_launcher": false, "name": "th128e.exe", "os": "win32"} - ], - "hook": true, - "id": "505513776607395868", - "name": "Touhou 12.8: Great Fairy Wars" - }, - { - "executables": [ - {"is_launcher": false, "name": "th13.exe", "os": "win32"}, - {"is_launcher": false, "name": "th13e.exe", "os": "win32"} - ], - "hook": true, - "id": "505514028341395495", - "name": "Touhou 13: Ten Desires" - }, - { - "executables": [ - {"is_launcher": false, "name": "th135e.exe", "os": "win32"}, - {"is_launcher": false, "name": "th135.exe", "os": "win32"} - ], - "hook": true, - "id": "505514368520290305", - "name": "Touhou 13.5 Hopeless Mascarade" - }, - { - "executables": [ - {"is_launcher": false, "name": "th14.exe", "os": "win32"}, - {"is_launcher": false, "name": "th14e.exe", "os": "win32"} - ], - "hook": true, - "id": "505514719885393960", - "name": "Touhou 14: Double Dealing Character" - }, - { - "executables": [ - {"is_launcher": false, "name": "th143.exe", "os": "win32"}, - {"is_launcher": false, "name": "th143e.exe", "os": "win32"} - ], - "hook": true, - "id": "505515309726433328", - "name": "Touhou 14.3: Impossible Spell Card" - }, - { - "executables": [ - {"is_launcher": false, "name": "th145.exe", "os": "win32"}, - {"is_launcher": false, "name": "th145e.exe", "os": "win32"} - ], - "hook": true, - "id": "505515610667614232", - "name": "Touhou 14.5: Urban Legend in Limbo" - }, - { - "executables": [ - {"is_launcher": false, "name": "th15e.exe", "os": "win32"}, - {"is_launcher": false, "name": "th15.exe", "os": "win32"} - ], - "hook": true, - "id": "505515966289936393", - "name": "Touhou 15: Legacy of Lunatic Kingdom" - }, - { - "executables": [{"is_launcher": false, "name": "th155.exe", "os": "win32"}], - "hook": true, - "id": "505516276115046415", - "name": "Touhou 15.5: Antinomy of Common Flowers" - }, - { - "executables": [ - {"is_launcher": false, "name": "th07.exe", "os": "win32"}, - {"is_launcher": false, "name": "th07e.exe", "os": "win32"} - ], - "hook": true, - "id": "505516832590004244", - "name": "Touhou 7: Perfect Cherry Blossom" - }, - { - "executables": [ - {"is_launcher": false, "name": "th075.exe", "os": "win32"}, - {"is_launcher": false, "name": "th075e.exe", "os": "win32"} - ], - "hook": true, - "id": "505517064601993254", - "name": "Touhou 7.5: Immaterial and Missing Power" - }, - { - "executables": [ - {"is_launcher": false, "name": "th08.exe", "os": "win32"}, - {"is_launcher": false, "name": "th08e.exe", "os": "win32"} - ], - "hook": true, - "id": "505517586327535646", - "name": "Touhou 8: Imperishable Night" - }, - { - "executables": [ - {"is_launcher": false, "name": "th09.exe", "os": "win32"}, - {"is_launcher": false, "name": "th09e.exe", "os": "win32"} - ], - "hook": true, - "id": "505517882873085952", - "name": "Touhou 9: Phantasmagoria Of Flower View" - }, - { - "executables": [ - {"is_launcher": false, "name": "th095e.exe", "os": "win32"}, - {"is_launcher": false, "name": "th095.exe", "os": "win32"} - ], - "hook": true, - "id": "505518102545432605", - "name": "Touhou 9.5: Shoot the Bullet" - }, - { - "executables": [{"is_launcher": false, "name": "gn_enbu.exe", "os": "win32"}], - "hook": true, - "id": "505518371333472276", - "name": "Touhou Puppet Dance Performance" - }, - { - "aliases": ["Touhou Sky Arena"], - "executables": [{"is_launcher": false, "name": "tsa.exe", "os": "win32"}], - "hook": true, - "id": "505518699395022867", - "name": "Touhou Sky Arena" - }, - { - "aliases": ["Trails in the Sky FC"], - "executables": [ - {"is_launcher": false, "name": "ed6_win_dx9.exe", "os": "win32"}, - {"is_launcher": false, "name": "ed6_win.exe", "os": "win32"} - ], - "hook": true, - "id": "505519194146603009", - "name": "The Legend of Heroes: Trails in the Sky" - }, - { - "aliases": ["Trails in the Sky SC"], - "executables": [ - {"is_launcher": false, "name": "ed6_win2.exe", "os": "win32"}, - {"is_launcher": false, "name": "ed6_win2_dx9.exe", "os": "win32"} - ], - "hook": true, - "id": "505519505091592222", - "name": "The Legend of Heroes: Trails in the Sky SC" - }, - { - "aliases": ["VA-11 Hall-A"], - "executables": [ - {"is_launcher": false, "name": "va-11 hall-a/runner\"", "os": "linux"}, - {"is_launcher": false, "name": "va-11 hall a.exe", "os": "win32"} - ], - "hook": true, - "id": "505520072870199335", - "name": "VA-11 HALL-A" - }, - { - "executables": [{"is_launcher": false, "name": "visualboyadvance.exe", "os": "win32"}], - "hook": true, - "id": "505520145997889546", - "name": "VisualBoyAdvance" - }, - { - "executables": [ - {"is_launcher": false, "name": "wz2100.app", "os": "darwin"}, - {"is_launcher": false, "name": "wz2100.exe", "os": "win32"}, - {"is_launcher": false, "name": "warzone2100.exe", "os": "win32"} - ], - "hook": true, - "id": "505520727521361941", - "name": "Warzone 2100" - }, - { - "executables": [{"is_launcher": false, "name": "xonotic.exe", "os": "win32"}], - "hook": true, - "id": "505520839303757848", - "name": "Xonotic" - }, - { - "aliases": ["Yu-gi-oh Pro"], - "executables": [ - {"is_launcher": false, "name": "ygopro.app", "os": "darwin"}, - {"is_launcher": false, "name": "ygopro_vs.exe", "os": "win32"} - ], - "hook": true, - "id": "505520955649556490", - "name": "YGOPro" - }, - { - "aliases": ["ZSNES"], - "executables": [{"is_launcher": false, "name": "zsnesw.exe", "os": "win32"}], - "hook": true, - "id": "505521162042736657", - "name": "ZSNESw" - }, - { - "executables": [{"is_launcher": false, "name": "zwiftapp.exe", "os": "win32"}], - "hook": true, - "id": "505523904517898240", - "name": "Zwift" - }, - { - "executables": [{"is_launcher": false, "name": "aogame.exe", "os": "win32"}], - "hook": true, - "id": "505531160990973952", - "name": "Allods Online" - }, - { - "executables": [{"is_launcher": false, "name": "murderouspursuits.exe", "os": "win32"}], - "hook": true, - "id": "505801835613913098", - "name": "Murderous Pursuits" - }, - { - "executables": [{"is_launcher": false, "name": "sao_hr.exe", "os": "win32"}], - "hook": true, - "id": "506057315485483008", - "name": "Sword Art Online: Hollow Realization Deluxe Edition" - }, - { - "executables": [{"is_launcher": false, "name": "mgv.exe", "os": "win32"}], - "hook": true, - "id": "506873722745913355", - "name": "METAL GEAR SURVIVE" - }, - { - "executables": [{"is_launcher": false, "name": "aimlab_tb.exe", "os": "win32"}], - "hook": true, - "id": "506950362461110273", - "name": "Aim Lab" - }, - { - "executables": [{"is_launcher": false, "name": "galactic civilizations iii/galciv3.exe", "os": "win32"}], - "hook": true, - "id": "507674068498120714", - "name": "Galactic Civilizations III" - }, - { - "executables": [{"is_launcher": false, "name": "parkasaurus/parkasaurus.exe", "os": "win32"}], - "hook": true, - "id": "508008071411400724", - "name": "Parkasaurus" - }, - { - "executables": [{"is_launcher": false, "name": "visage-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "508057374875975682", - "name": "Visage" - }, - { - "executables": [{"is_launcher": false, "name": "kynseed/kynseed.exe", "os": "win32"}], - "hook": true, - "id": "510199020782747732", - "name": "Kynseed" - }, - { - "aliases": ["Thronebreaker: The Witcher Tales"], - "executables": [{"is_launcher": false, "name": "thronebreaker.exe", "os": "win32"}], - "hook": true, - "id": "511619499053678668", - "name": "Thronebreaker" - }, - {"hook": true, "id": "512498684211232768", "name": "Paladins Strike"}, - { - "executables": [{"is_launcher": false, "name": "fallout76.exe", "os": "win32"}], - "hook": true, - "id": "512501896896970762", - "name": "Fallout 76" - }, - { - "executables": [{"is_launcher": false, "name": "battlefield v/bfv.exe", "os": "win32"}], - "hook": true, - "id": "512699108809637890", - "name": "Battlefield\u2122 V" - }, - { - "executables": [{"is_launcher": false, "name": "battlechefbrigade.exe", "os": "win32"}], - "hook": true, - "id": "512789120234422301", - "name": "Battle Chef Brigade" - }, - { - "executables": [{"is_launcher": false, "name": "kingsway/kingsway.exe", "os": "win32"}], - "hook": true, - "id": "512789343157485602", - "name": "Kingsway" - }, - { - "executables": [{"is_launcher": false, "name": "zenzizenzic/zenzizenzic.exe", "os": "win32"}], - "hook": true, - "id": "512789427462995988", - "name": "Zenzizenzic" - }, - { - "aliases": ["Borderlands\u00ae 3"], - "executables": [{"is_launcher": false, "name": "Borderlands3.exe", "os": "win32"}], - "hook": true, - "id": "514228311661084682", - "name": "Borderlands 3", - "overlay": true - }, - { - "aliases": ["Realm Royale Reforged"], - "executables": [ - {"is_launcher": false, "name": "realm royale/binaries/win64/realmeac.exe", "os": "win32"}, - {"is_launcher": false, "name": "realm royale/realmbootstrapper.exe", "os": "win32"}, - {"is_launcher": false, "name": "realm royale/binaries/win64/realm.exe", "os": "win32"} - ], - "hook": true, - "id": "518088627234930688", - "name": "Realm Royale" - }, - {"hook": true, "id": "519644267212177418", "name": "Turok"}, - {"hook": true, "id": "519644368735567873", "name": "Turok 2: Seeds of Evil"}, - { - "executables": [{"is_launcher": false, "name": "ashen-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "520453007578628124", - "name": "Ashen" - }, - { - "executables": [{"is_launcher": false, "name": "hades.exe", "os": "win32"}], - "hook": true, - "id": "520462578061803588", - "name": "Hades" - }, - {"hook": true, "id": "521842831262875670", "name": "Nitro"}, - { - "aliases": ["Far Cry New Dawn"], - "executables": [{"is_launcher": false, "name": "farcrynewdawn.exe", "os": "win32"}], - "hook": true, - "id": "523154344187789312", - "name": "Far Cry New Dawn", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "atlasgame_be.exe", "os": "win32"}], - "hook": true, - "id": "526489929631531009", - "name": "ATLAS" - }, - { - "executables": [ - {"is_launcher": false, "name": "paladins.exe", "os": "win32"}, - {"is_launcher": false, "name": "paladinseac.exe", "os": "win32"} - ], - "hook": true, - "id": "528145079819436043", - "name": "Paladins" - }, - {"hook": true, "id": "530454325214969866", "name": "Metro Exodus"}, - { - "executables": [{"is_launcher": false, "name": "sotgame.exe", "os": "win32"}], - "hook": true, - "id": "535371564850479134", - "name": "Sea of Thieves" - }, - { - "executables": [{"is_launcher": false, "name": "harry2.exe", "os": "win32"}], - "hook": true, - "id": "535384357536399404", - "name": "LEGO Harry Potter: Years 5-7" - }, - { - "aliases": ["Subnautica: Below Zero"], - "executables": [ - {"is_launcher": false, "name": "subnauticazero/subnauticazero.exe", "os": "win32"}, - {"is_launcher": false, "name": "subnauticazero.exe", "os": "win32"} - ], - "hook": true, - "id": "535869836748783616", - "name": "Subnautica: Below Zero" - }, - { - "aliases": ["Ghost Recon Breakpoint"], - "executables": [ - {"is_launcher": false, "name": "grb_vulkan.exe", "os": "win32"}, - {"is_launcher": false, "name": "grb_upp.exe", "os": "win32"}, - {"is_launcher": false, "name": "grb.exe", "os": "win32"}, - {"is_launcher": false, "name": "ghost recon breakpoint/grb.exe", "os": "win32"} - ], - "hook": true, - "id": "540120593576493057", - "name": "Ghost Recon Breakpoint", - "overlay": true - }, - { - "aliases": ["Apex Legends"], - "executables": [ - {"is_launcher": false, "name": "apex legends/r5apex.exe", "os": "win32"}, - {"is_launcher": false, "name": "apex/r5apex.exe", "os": "win32"} - ], - "hook": true, - "id": "542075586886107149", - "name": "Apex Legends" - }, - { - "executables": [{"is_launcher": false, "name": "x64/farmingsimulator2019game.exe", "os": "win32"}], - "hook": true, - "id": "542474758835535872", - "name": "Farming Simulator 19" - }, - { - "aliases": ["Warhammer: Vermintide 2"], - "executables": [ - {"is_launcher": false, "name": "binaries/vermintide2.exe", "os": "win32"}, - {"is_launcher": false, "name": "binaries_dx12/vermintide2_dx12.exe", "os": "win32"} - ], - "hook": true, - "id": "542475118396309528", - "name": "Warhammer: Vermintide 2" - }, - { - "executables": [{"is_launcher": false, "name": "anthem.exe", "os": "win32"}], - "hook": true, - "id": "546175179542364160", - "name": "Anthem\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "spellbreak.exe", "os": "win32"}], - "hook": true, - "id": "549512435585908756", - "name": "Spellbreak" - }, - { - "aliases": ["Heroes & Generals"], - "executables": [ - {"is_launcher": false, "name": "hng.exe", "os": "win32"}, - {"is_launcher": false, "name": "heroesandgeneralsdesktop.exe", "os": "win32"}, - {"is_launcher": false, "name": "heroes & generals/hng_be.exe", "os": "win32"} - ], - "hook": true, - "id": "550277544025522176", - "name": "Heroes & Generals WWII" - }, - { - "executables": [{"is_launcher": false, "name": "dawnofman.exe", "os": "win32"}], - "hook": true, - "id": "553697181249437716", - "name": "Dawn of Man" - }, - { - "executables": [ - {"is_launcher": false, "name": "warface/bin32release/game.exe", "os": "win32"}, - {"is_launcher": false, "name": "gamecenter/bin32release/game.exe", "os": "win32"} - ], - "hook": true, - "id": "554573307161214977", - "name": "Warface" - }, - { - "executables": [{"is_launcher": false, "name": "tom clancy's the division 2/thedivision2.exe", "os": "win32"}], - "hook": true, - "id": "554921822626381879", - "name": "Tom Clancy's The Division 2" - }, - { - "aliases": ["Temtem"], - "executables": [{"is_launcher": false, "name": "temtem.exe", "os": "win32"}], - "hook": true, - "id": "558547388583772201", - "name": "Temtem" - }, - { - "aliases": ["Mutant Year Zero: Road to Eden"], - "executables": [ - {"is_launcher": false, "name": "win64/zoneue4-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "zoneue4-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "560781100197216267", - "name": "Mutant Year Zero: Road to Eden" - }, - { - "aliases": ["Bloodstained: Ritual of the Night"], - "executables": [ - {"is_launcher": false, "name": "win64/bloodstainedrotn-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "bloodstainedrotn-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "565341641427124244", - "name": "Bloodstained: Ritual of the Night" - }, - { - "aliases": ["Sekiro\u2122: Shadows Die Twice"], - "executables": [ - {"is_launcher": false, "name": "sekiro.exe", "os": "win32"}, - {"is_launcher": false, "name": "sekiro/sekiro.exe", "os": "win32"} - ], - "hook": true, - "id": "569008830701240340", - "name": "Sekiro\u2122: Shadows Die Twice" - }, - { - "aliases": ["Risk of Rain 2"], - "executables": [ - {"is_launcher": false, "name": "risk of rain 2/risk of rain 2.exe", "os": "win32"}, - {"is_launcher": false, "name": "risk of rain 2.exe", "os": "win32"} - ], - "hook": true, - "id": "569253958967885828", - "name": "Risk of Rain 2" - }, - { - "aliases": ["Satisfactory"], - "executables": [ - {"is_launcher": false, "name": "win64/factorygame-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "factorygame-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "572456126872944651", - "name": "Satisfactory" - }, - { - "aliases": ["MORDHAU"], - "executables": [ - {"is_launcher": false, "name": "win64/mordhau-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "mordhau-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "575412499399180288", - "name": "MORDHAU" - }, - { - "aliases": ["Baba Is You"], - "executables": [ - {"is_launcher": false, "name": "baba is you/baba is you.exe", "os": "win32"}, - {"is_launcher": false, "name": "baba is you.exe", "os": "win32"} - ], - "hook": true, - "id": "576482762446602270", - "name": "Baba Is You" - }, - { - "aliases": ["Staxel"], - "executables": [ - {"is_launcher": false, "name": "staxel.client.exe", "os": "win32"}, - {"is_launcher": false, "name": "staxel.modmanager.exe", "os": "win32"}, - {"is_launcher": false, "name": "staxel.steamlauncher.exe", "os": "win32"} - ], - "hook": true, - "id": "584069374462394368", - "name": "Staxel" - }, - { - "aliases": ["Supreme Ruler Ultimate"], - "executables": [{"is_launcher": false, "name": "supremerulerultimate.exe", "os": "win32"}], - "hook": true, - "id": "588739017718366208", - "name": "Supreme Ruler Ultimate" - }, - { - "aliases": ["Dota Underlords"], - "executables": [ - {"is_launcher": false, "name": "underlords.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/underlords.exe", "os": "win32"} - ], - "hook": true, - "id": "592976500802846750", - "name": "Dota Underlords" - }, - { - "aliases": ["PUBG Lite"], - "executables": [ - {"is_launcher": false, "name": "pubglite/launcher.exe", "os": "win32"}, - {"is_launcher": false, "name": "pubglite/launcher_updater.exe", "os": "win32"}, - {"is_launcher": false, "name": "pubglite/pubg lite.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/pubglite-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "pubglite-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "pubglite.exe", "os": "win32"} - ], - "hook": true, - "id": "597588168178663434", - "name": "PUBG LITE", - "overlay": true - }, - { - "aliases": ["Swords of Gurrah"], - "executables": [ - {"is_launcher": false, "name": "gurrah.exe", "os": "win32"}, - {"is_launcher": false, "name": "gurrah-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "597860020935327787", - "name": "Swords of Gurrah" - }, - { - "aliases": ["Lethal League Blaze"], - "executables": [ - {"is_launcher": false, "name": "llblaze/llblaze.exe", "os": "win32"}, - {"is_launcher": false, "name": "llblaze.exe", "os": "win32"} - ], - "hook": true, - "id": "606163888052109312", - "name": "Lethal League Blaze" - }, - { - "aliases": ["Bloons TD 6"], - "executables": [ - {"is_launcher": false, "name": "cleaner/cleaner-btd6.exe", "os": "win32"}, - {"is_launcher": false, "name": "bloonstd6/bloonstd6.exe", "os": "win32"}, - {"is_launcher": false, "name": "bloonstd6.exe", "os": "win32"} - ], - "hook": true, - "id": "614380482620293151", - "name": "Bloons TD 6" - }, - { - "aliases": ["Bloons Adventure Time TD"], - "executables": [ - {"is_launcher": false, "name": "bloons adventure time td/btdadventuretime.exe", "os": "win32"}, - {"is_launcher": false, "name": "btdadventuretime.exe", "os": "win32"} - ], - "hook": true, - "id": "614448244260339712", - "name": "Bloons Adventure Time TD" - }, - { - "aliases": ["World of Warcraft\u2122 Classic"], - "executables": [{"is_launcher": false, "name": "wowclassic.exe", "os": "win32"}], - "hook": true, - "id": "615752773690064908", - "name": "World of Warcraft Classic", - "overlay": true - }, - { - "aliases": ["Tower Keepers"], - "executables": [ - {"is_launcher": false, "name": "tower keepers/tower keepers.exe", "os": "win32"}, - {"is_launcher": false, "name": "tower keepers.exe", "os": "win32"} - ], - "hook": true, - "id": "618575278339260467", - "name": "Tower Keepers" - }, - { - "aliases": ["Gears 5"], - "executables": [ - {"is_launcher": false, "name": "gears5.exe", "os": "win32"}, - {"is_launcher": false, "name": "steam/gears5.exe", "os": "win32"} - ], - "hook": true, - "id": "620685135066693642", - "name": "Gears 5" - }, - { - "aliases": ["CONTROL"], - "executables": [ - {"is_launcher": false, "name": "control_dx12.exe", "os": "win32"}, - {"is_launcher": false, "name": "control_dx11.exe", "os": "win32"}, - {"is_launcher": false, "name": "control/control_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "620758922940383242", - "name": "Control" - }, - { - "aliases": ["Call of Duty Modern Warfare", "Call of Duty: Modern Warfare"], - "executables": [{"is_launcher": false, "name": "call of duty modern warfare/modernwarfare.exe", "os": "win32"}], - "hook": true, - "id": "631914894446297148", - "name": "Call of Duty\u00ae: Modern Warfare\u00ae", - "overlay": true - }, - { - "executables": [{"is_launcher": false, "name": "riot games/lor/live/game/lor.exe", "os": "win32"}], - "hook": true, - "id": "633832498614370323", - "name": "Legends of Runeterra" - }, - { - "aliases": ["The Outer Worlds"], - "executables": [ - {"is_launcher": false, "name": "win64/indianaepicgamestore-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "indianaepicgamestore-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "637382434089861160", - "name": "The Outer Worlds" - }, - { - "executables": [{"is_launcher": false, "name": "red dead redemption 2/rdr2.exe", "os": "win32"}], - "hook": true, - "id": "643897785271189524", - "name": "Red Dead Redemption 2" - }, - { - "aliases": ["STAR WARS Jedi - Fallen Order\u2122", "STAR WARS Jedi: Fallen Order\u2122"], - "executables": [ - {"is_launcher": false, "name": "win64/starwarsjedifallenorder.exe", "os": "win32"}, - {"is_launcher": false, "name": "starwarsjedifallenorder.exe", "os": "win32"} - ], - "hook": true, - "id": "649511727641133066", - "name": "STAR WARS Jedi: Fallen Order\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "pirates of the burning sea/potbs.exe", "os": "win32"}], - "hook": true, - "id": "651923442286985217", - "name": "Pirates of the Burning Sea" - }, - { - "aliases": ["Halo: The Master Chief Collection"], - "executables": [ - {"is_launcher": false, "name": "win64/mcc-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "mcc-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "653432003798106122", - "name": "Halo: The Master Chief Collection" - }, - { - "aliases": ["Forza Horizon 4"], - "executables": [{"is_launcher": false, "name": "forzahorizon4.exe", "os": "win32"}], - "hook": false, - "id": "656353816370741248", - "name": "Forza Horizon 4" - }, - { - "aliases": ["DOOM Eternal"], - "executables": [{"is_launcher": false, "name": "doometernal/doometernalx64vk.exe", "os": "win32"}], - "hook": true, - "id": "693016355007496202", - "name": "DOOM Eternal" - }, - { - "aliases": ["Return of the Obra Dinn"], - "executables": [{"is_launcher": false, "name": "obradinn/obradinn.exe", "os": "win32"}], - "hook": true, - "id": "696065774061879446", - "name": "Return of the Obra Dinn" - }, - { - "aliases": ["VALORANT"], - "executables": [{"is_launcher": false, "name": "win64/valorant-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "700136079562375258", - "name": "VALORANT", - "overlay": true - }, - { - "aliases": ["Age of Empires: Definitive Edition"], - "executables": [ - {"is_launcher": false, "name": "aoede_s.exe", "os": "win32"}, - {"is_launcher": false, "name": "aoede/aoede_s.exe", "os": "win32"} - ], - "hook": true, - "id": "700150526729519165", - "name": "Age of Empires: Definitive Edition" - }, - { - "aliases": ["Age of Empires II: Definitive Edition"], - "executables": [ - {"is_launcher": false, "name": "aoe2de/aoe2de_s.exe", "os": "win32"}, - {"is_launcher": false, "name": "aoe2de_s.exe", "os": "win32"} - ], - "hook": true, - "id": "700150779050459157", - "name": "Age of Empires II: Definitive Edition" - }, - { - "aliases": ["Wurm Online"], - "executables": [ - {"is_launcher": false, "name": "wurm online/wurmlauncher64.exe", "os": "win32"}, - {"is_launcher": false, "name": "wurmlauncher64.exe", "os": "win32"} - ], - "hook": true, - "id": "714975833495830608", - "name": "Wurm Online", - "overlay": true - }, - { - "aliases": ["Age of Empires: Definitive Edition"], - "executables": [ - {"is_launcher": false, "name": "aoede_s.exe", "os": "win32"}, - {"is_launcher": false, "name": "age of empires - definitive edition/aoede_s.exe", "os": "win32"} - ], - "hook": true, - "id": "720771267149561936", - "name": "Age of Empires: Definitive Edition" - }, - { - "aliases": ["Age of Empires II: Definitive Edition"], - "executables": [ - {"is_launcher": false, "name": "aoe2de_s.exe", "os": "win32"}, - {"is_launcher": false, "name": "age of empires ii definitive edition/aoe2de_s.exe", "os": "win32"} - ], - "hook": true, - "id": "720771660768084008", - "name": "Age of Empires II: Definitive Edition" - }, - { - "aliases": ["The Surge 2"], - "executables": [{"is_launcher": false, "name": "bin/thesurge2.exe", "os": "win32"}], - "hook": true, - "id": "733854133471150151", - "name": "The Surge 2" - }, - { - "aliases": ["DEATH STRANDING"], - "executables": [ - {"is_launcher": false, "name": "death stranding/ds.exe", "os": "win32"}, - {"is_launcher": false, "name": "ds.exe", "os": "win32"} - ], - "hook": true, - "id": "734286565114904586", - "name": "DEATH STRANDING" - }, - { - "aliases": ["Rogue Company"], - "executables": [{"is_launcher": false, "name": "win64/roguecompany.exe", "os": "win32"}], - "hook": true, - "id": "737391147659558963", - "name": "Rogue Company" - }, - { - "aliases": ["Grounded"], - "executables": [{"is_launcher": false, "name": "win64/maine-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "738856512868450314", - "name": "Grounded" - }, - { - "aliases": [ - "Fall Guys", - "Fall Guys: Ultimate Knockout", - "\u7cd6\u8c46\u4eba\uff1a\u7d42\u6975\u6dd8\u6c70\u8cfd" - ], - "executables": [ - {"is_launcher": false, "name": "fallguys_client.exe", "os": "win32"}, - {"is_launcher": false, "name": "fallguys_client_game.exe", "os": "win32"} - ], - "hook": true, - "id": "742897755160313986", - "name": "Fall Guys" - }, - { - "aliases": ["Microsoft Flight Simulator"], - "executables": [{"is_launcher": false, "name": "flightsimulator.exe", "os": "win32"}], - "hook": true, - "id": "750925046729670796", - "name": "Microsoft Flight Simulator" - }, - { - "aliases": ["Spellcraft"], - "executables": [ - {"is_launcher": true, "name": "spellcraft-live.exe", "os": "win32"}, - {"is_launcher": true, "name": "spellcraft-staging.exe", "os": "win32"}, - {"is_launcher": false, "name": "spellcraft-live/game/run/tap.exe", "os": "win32"}, - {"is_launcher": false, "name": "v0/spellcraft.exe", "os": "win32"}, - {"is_launcher": false, "name": "spellcraft-gamelab/game/run/tap.exe", "os": "win32"}, - {"is_launcher": false, "name": "spellcraft dev (staging)/spellcraft.exe", "os": "win32"}, - {"is_launcher": false, "name": "spellcraft dev (staging)/unitycrashhandler64.exe", "os": "win32"}, - {"is_launcher": true, "name": "spellcraft-gamelab.exe", "os": "win32"}, - {"is_launcher": false, "name": "spellcraft-staging/game/run/tap.exe", "os": "win32"} - ], - "hook": true, - "id": "760174052760354875", - "name": "Spellcraft" - }, - { - "aliases": ["Genshin Impact"], - "executables": [{"is_launcher": false, "name": "genshinimpact.exe", "os": "win32"}], - "hook": true, - "id": "762434991303950386", - "name": "Genshin Impact" - }, - { - "executables": [{"is_launcher": false, "name": "/haloinfinite.exe", "os": "win32"}], - "hook": true, - "id": "770314100885422095", - "name": "Halo Infinite", - "overlay": true - }, - { - "aliases": ["Assassin's Creed Valhalla"], - "executables": [{"is_launcher": false, "name": "acvalhalla.exe", "os": "win32"}], - "hook": true, - "id": "775754545778786314", - "name": "Assassin's Creed Valhalla" - }, - { - "aliases": ["IL-2 Sturmovik: Battle of Stalingrad"], - "executables": [{"is_launcher": false, "name": "il-2.exe", "os": "win32"}], - "hook": true, - "id": "777681581917601792", - "name": "IL-2 Sturmovik: Battle of Stalingrad" - }, - { - "aliases": ["Call of Duty Black Ops Cold War"], - "executables": [{"is_launcher": false, "name": "blackopscoldwar.exe", "os": "win32"}], - "hook": true, - "id": "783440677958189096", - "name": "Call of Duty\u00ae: Black Ops Cold War", - "overlay": true - }, - { - "aliases": ["Cyberpunk 2077"], - "executables": [ - {"is_launcher": false, "name": "x64/cyberpunk2077.exe", "os": "win32"}, - {"is_launcher": false, "name": "cyberpunk2077.exe", "os": "win32"} - ], - "hook": true, - "id": "787443973538971748", - "name": "Cyberpunk 2077", - "overlay": true - }, - { - "aliases": ["STAR WARS Battlefront", "STAR WARS\u2122 Battlefront\u2122", "Star Wars Battlefront"], - "executables": [{"is_launcher": false, "name": "battlefront.exe", "os": "win32"}], - "hook": true, - "id": "788507043358834698", - "name": "STAR WARS\u2122 Battlefront\u2122 (classic)" - }, - { - "aliases": ["STAR WARS\u2122 Battlefront\u2122 II", "Star Wars Battlefront II"], - "executables": [{"is_launcher": false, "name": "battlefrontii.exe", "os": "win32"}], - "hook": true, - "id": "788511984575316028", - "name": "Star Wars: Battlefront 2 (Classic, 2005)", - "overlay": true - }, - { - "aliases": ["OUTRIDERS"], - "executables": [{"is_launcher": false, "name": "outriders-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "828186715994849280", - "name": "OUTRIDERS", - "overlay": true - }, - { - "aliases": ["Tribes of Midgard"], - "executables": [{"is_launcher": false, "name": "win64/tom-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "874492645689397258", - "name": "Tribes of Midgard" - }, - { - "aliases": ["Disco Elysium"], - "executables": [{"is_launcher": false, "name": "disco elysium/disco.exe", "os": "win32"}], - "hook": true, - "id": "876570707306381342", - "name": "Disco Elysium" - }, - { - "aliases": ["New World"], - "executables": [ - {"is_launcher": false, "name": "bin64/newworld.exe", "os": "win32"}, - {"is_launcher": false, "name": "new world/newworldlauncher.exe", "os": "win32"}, - {"is_launcher": false, "name": "newworldlauncher.exe", "os": "win32"}, - {"is_launcher": false, "name": "newworld.exe", "os": "win32"} - ], - "hook": true, - "id": "892480701583204422", - "name": "New World" - }, - { - "aliases": ["Forza Horizon 5"], - "executables": [ - {"is_launcher": false, "name": "forzahorizon5.exe", "os": "win32"}, - {"is_launcher": false, "name": "forzahorizon5/forzahorizon5.exe", "os": "win32"} - ], - "hook": false, - "id": "905961880789590076", - "name": "Forza Horizon 5" - }, - { - "aliases": ["Lost Ark", "Lost Ark Closed Technical Alpha"], - "executables": [{"is_launcher": false, "name": "win64/lostark.exe", "os": "win32"}], - "hook": true, - "id": "940810636273795162", - "name": "Lost Ark", - "overlay": true - }, - { - "aliases": ["ELDEN RING"], - "executables": [{"is_launcher": false, "name": "game/eldenring.exe", "os": "win32"}], - "hook": true, - "id": "946609449680908348", - "name": "ELDEN RING", - "overlay": true - }, - { - "aliases": ["Call of Duty: Modern Warfare II", "Call of Duty\u00ae: Modern Warfare\u00ae II"], - "executables": [ - {"is_launcher": false, "name": "_retail_/cod22/cod22-cod.exe", "os": "win32"}, - {"is_launcher": false, "name": "_retail_/sp22/sp22-cod.exe", "os": "win32"}, - {"is_launcher": false, "name": "call of duty hq/sp22/sp22-cod.exe", "os": "win32"}, - {"is_launcher": false, "name": "call of duty hq/cod22/cod22-cod.exe", "os": "win32"} - ], - "hook": true, - "id": "982316905262120990", - "name": "Call of Duty\u00ae: Modern Warfare\u00ae II" - }, - { - "aliases": ["MONSTER HUNTER RISE"], - "executables": [{"is_launcher": false, "name": "monsterhunterrise/monsterhunterrise.exe", "os": "win32"}], - "hook": true, - "id": "1022248949865791588", - "name": "MONSTER HUNTER RISE" - }, - { - "aliases": ["Omega Strikers"], - "executables": [ - {"is_launcher": false, "name": "prometheus/prometheus.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/prometheus-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "1022250405255708788", - "name": "Omega Strikers" - }, - { - "aliases": ["MONSTER HUNTER RISE: SUNBREAK DEMO"], - "executables": [ - {"is_launcher": false, "name": "monster hunter rise sunbreak demo/mhrisesunbreakdemo.exe", "os": "win32"} - ], - "hook": true, - "id": "1025084469306200064", - "name": "MONSTER HUNTER RISE: SUNBREAK DEMO" - }, - { - "aliases": ["MARVEL SNAP", "\ub9c8\ube14\uc2a4\ub0c5"], - "executables": [ - {"is_launcher": false, "name": "snap.exe", "os": "win32"}, - {"is_launcher": false, "name": "marvel snap/snap.exe", "os": "win32"} - ], - "hook": true, - "id": "1067552066454695965", - "name": "MARVEL SNAP" - }, - { - "aliases": ["Goose Goose Duck"], - "executables": [{"is_launcher": false, "name": "goose goose duck/goose goose duck.exe", "os": "win32"}], - "hook": true, - "id": "1067554911358832721", - "name": "Goose Goose Duck" - }, - { - "aliases": [ - "Hogwarts Legacy", - "Hogwarts Legacy\u00a0: L'H\u00e9ritage de Poudlard", - "\u0425\u043e\u0433\u0432\u0430\u0440\u0442\u0441. \u041d\u0430\u0441\u043b\u0435\u0434\u0438\u0435", - "\u30db\u30b0\u30ef\u30fc\u30c4\u30fb\u30ec\u30ac\u30b7\u30fc", - "\u970d\u683c\u83ef\u8332\u7684\u50b3\u627f" - ], - "executables": [{"is_launcher": false, "name": "win64/hogwartslegacy.exe", "os": "win32"}], - "hook": true, - "id": "1080277149623271444", - "name": "Hogwarts Legacy" - }, - { - "aliases": ["Sons Of The Forest"], - "executables": [{"is_launcher": false, "name": "sons of the forest/sonsoftheforest.exe", "os": "win32"}], - "hook": true, - "id": "1080279445153263686", - "name": "Sons Of The Forest" - }, - { - "aliases": ["Crab Champions"], - "executables": [ - {"is_launcher": false, "name": "win64/crabchampions-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "crabchampions-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "1095820752877535262", - "name": "Crab Champions" - }, - { - "aliases": ["Diablo IV"], - "executables": [{"is_launcher": false, "name": "diablo iv/diablo iv.exe", "os": "win32"}], - "hook": true, - "id": "1113966530531704943", - "name": "Diablo IV", - "overlay": true - }, - { - "aliases": ["Phasmophobia"], - "executables": [{"is_launcher": false, "name": "phasmophobia/phasmophobia.exe", "os": "win32"}], - "hook": true, - "id": "1116835216464543946", - "name": "Phasmophobia" - }, - { - "aliases": ["Honkai: Star Rail"], - "executables": [{"is_launcher": false, "name": "games/starrail.exe", "os": "win32"}], - "hook": true, - "id": "1121201675240210523", - "name": "Honkai: Star Rail" - }, - { - "aliases": ["Krunker"], - "executables": [{"is_launcher": false, "name": "krunker/official krunker.io client.exe", "os": "win32"}], - "hook": true, - "id": "1124349948201279568", - "name": "Krunker" - }, - { - "executables": [{"is_launcher": false, "name": "bro falls ultimate showdown/run.exe", "os": "win32"}], - "hook": true, - "id": "1124349958166941716", - "name": "Bro Falls: Ultimate Showdown" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pacify-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124349960545128580", - "name": "Pacify" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fpschess-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124349963086856273", - "name": "FPS Chess" - }, - { - "executables": [{"is_launcher": false, "name": "people playground/people playground.exe", "os": "win32"}], - "hook": true, - "id": "1124349965263720458", - "name": "People Playground" - }, - { - "aliases": ["tModLoader"], - "executables": [ - {"is_launcher": false, "name": "launchutils/busybox64.exe", "os": "win32"}, - {"is_launcher": false, "name": "tmodloader/tmodloader64bit.exe", "os": "win32"}, - {"is_launcher": false, "name": "tmodloader/tmodloader.exe", "os": "win32"}, - {"is_launcher": false, "name": "6.0.0/dotnet.exe", "os": "win32"} - ], - "hook": true, - "id": "1124349969906815007", - "name": "tModLoader" - }, - { - "executables": [{"is_launcher": false, "name": "super animal royale/super animal royale.exe", "os": "win32"}], - "hook": true, - "id": "1124349971735511050", - "name": "Super Animal Royale" - }, - { - "executables": [{"is_launcher": false, "name": "devour/devour.exe", "os": "win32"}], - "hook": true, - "id": "1124349973711036548", - "name": "DEVOUR" - }, - { - "executables": [{"is_launcher": false, "name": "helltaker/helltaker.exe", "os": "win32"}], - "hook": true, - "id": "1124349975359410317", - "name": "Helltaker" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "totally accurate battle simulator/totallyaccuratebattlesimulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124349977460744242", - "name": "Totally Accurate Battle Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "pico_park_online/pico_park.exe", "os": "win32"}], - "hook": true, - "id": "1124349979658571847", - "name": "PICO PARK" - }, - { - "executables": [{"is_launcher": false, "name": "bloons td battles 2/btdb2_game.exe", "os": "win32"}], - "hook": true, - "id": "1124349981453721711", - "name": "Bloons TD Battles 2" - }, - { - "aliases": ["Project Playtime"], - "executables": [{"is_launcher": false, "name": "win64/playtime_multiplayer-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124349983408279623", - "name": "Project Playtime" - }, - { - "executables": [{"is_launcher": false, "name": "green hell/gh.exe", "os": "win32"}], - "hook": true, - "id": "1124351667882688662", - "name": "Green Hell" - }, - { - "executables": [{"is_launcher": false, "name": "super auto pets/super auto pets.exe", "os": "win32"}], - "hook": true, - "id": "1124351681929429032", - "name": "Super Auto Pets" - }, - { - "executables": [{"is_launcher": false, "name": "x64/dyinglightgame_x64_rwdi.exe", "os": "win32"}], - "hook": true, - "id": "1124351684131442728", - "name": "Dying Light 2" - }, - { - "executables": [{"is_launcher": false, "name": "drunken wrestlers 2/dw2.exe", "os": "win32"}], - "hook": true, - "id": "1124351686253756468", - "name": "Drunken Wrestlers 2" - }, - { - "executables": [{"is_launcher": false, "name": "my singing monsters/mysingingmonsters.exe", "os": "win32"}], - "hook": true, - "id": "1124351688577396768", - "name": "My Singing Monsters" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/ck3.exe", "os": "win32"}], - "hook": true, - "id": "1124351691123343500", - "name": "Crusader Kings III" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thechase-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351693220491355", - "name": "KurtzPel" - }, - { - "executables": [{"is_launcher": false, "name": "deltarunedemo/deltarune.exe", "os": "win32"}], - "hook": true, - "id": "1124351695015661608", - "name": "DELTARUNE (Chapter 1 & 2 DEMO)" - }, - { - "aliases": ["PICO PARK"], - "executables": [{"is_launcher": false, "name": "pico_park/pico_park.exe", "os": "win32"}], - "hook": true, - "id": "1124351697007951964", - "name": "PICO PARK:Classic Edition" - }, - { - "executables": [{"is_launcher": false, "name": "horizon zero dawn/horizonzerodawn.exe", "os": "win32"}], - "hook": true, - "id": "1124351698740195439", - "name": "Horizon Zero Dawn" - }, - { - "executables": [{"is_launcher": false, "name": "win64/stray-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351702972256328", - "name": "Stray" - }, - { - "executables": [{"is_launcher": false, "name": "teardown/teardown.exe", "os": "win32"}], - "hook": true, - "id": "1124351704880660691", - "name": "Teardown" - }, - { - "executables": [{"is_launcher": false, "name": "pixel strike 3d/pixelstrike3d.exe", "os": "win32"}], - "hook": true, - "id": "1124351707359498373", - "name": "Pixel Strike 3D" - }, - { - "executables": [{"is_launcher": false, "name": "barotrauma/barotrauma.exe", "os": "win32"}], - "hook": true, - "id": "1124351709225955388", - "name": "Barotrauma" - }, - { - "executables": [{"is_launcher": false, "name": "godofwar/gow.exe", "os": "win32"}], - "hook": true, - "id": "1124351711486689290", - "name": "God of War" - }, - { - "executables": [{"is_launcher": false, "name": "bread &amp; fred demo/bread&fred.exe", "os": "win32"}], - "hook": true, - "id": "1124351713718063164", - "name": "Bread & Fred Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dungeoncrawler.exe", "os": "win32"}], - "hook": true, - "id": "1124351715618074634", - "name": "Dark and Darker" - }, - { - "executables": [{"is_launcher": false, "name": "inside the backrooms/inside the backrooms.exe", "os": "win32"}], - "hook": true, - "id": "1124351718134661200", - "name": "Inside the Backrooms" - }, - { - "executables": [{"is_launcher": false, "name": "noita/noita.exe", "os": "win32"}], - "hook": true, - "id": "1124351719950798848", - "name": "Noita" - }, - { - "executables": [{"is_launcher": false, "name": "gorilla tag/gorilla tag.exe", "os": "win32"}], - "hook": true, - "id": "1124351721745956864", - "name": "Gorilla Tag" - }, - { - "executables": [{"is_launcher": false, "name": "devil may cry 5/devilmaycry5.exe", "os": "win32"}], - "hook": true, - "id": "1124351724228988948", - "name": "Devil May Cry 5" - }, - { - "executables": [{"is_launcher": false, "name": "inscryption/inscryption.exe", "os": "win32"}], - "hook": true, - "id": "1124351726158352456", - "name": "Inscryption" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ddeception-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351728049991680", - "name": "Dark Deception" - }, - { - "executables": [{"is_launcher": false, "name": "cult of the lamb/cult of the lamb.exe", "os": "win32"}], - "hook": true, - "id": "1124351730323308675", - "name": "Cult of the Lamb" - }, - { - "executables": [{"is_launcher": false, "name": "banana shooter/banana shooter.exe", "os": "win32"}], - "hook": true, - "id": "1124351732240101469", - "name": "Banana Shooter" - }, - { - "executables": [{"is_launcher": false, "name": "win64/remnant-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351734219817081", - "name": "Remnant: From the Ashes" - }, - { - "executables": [{"is_launcher": false, "name": "slapshotrebound/slapshot.exe", "os": "win32"}], - "hook": true, - "id": "1124351736275021855", - "name": "Slapshot: Rebound" - }, - { - "executables": [{"is_launcher": false, "name": "unrailed/unrailedgame.exe", "os": "win32"}], - "hook": true, - "id": "1124351738053394472", - "name": "Unrailed!" - }, - { - "executables": [{"is_launcher": false, "name": "paunch/paunch.exe", "os": "win32"}], - "hook": true, - "id": "1124351740335108166", - "name": "Paunch" - }, - { - "executables": [{"is_launcher": false, "name": "drawful 2/drawful 2.exe", "os": "win32"}], - "hook": true, - "id": "1124351742679728150", - "name": "Drawful 2" - }, - { - "executables": [{"is_launcher": false, "name": "redmatch 2/redmatch 2.exe", "os": "win32"}], - "hook": true, - "id": "1124351745594773605", - "name": "Redmatch 2" - }, - { - "executables": [{"is_launcher": false, "name": "project winter/projectwinter.exe", "os": "win32"}], - "hook": true, - "id": "1124351747574476942", - "name": "Project Winter" - }, - { - "executables": [{"is_launcher": false, "name": "core keeper/corekeeper.exe", "os": "win32"}], - "hook": true, - "id": "1124351749550002268", - "name": "Core Keeper" - }, - { - "executables": [{"is_launcher": false, "name": "powerwash simulator/powerwashsimulator.exe", "os": "win32"}], - "hook": true, - "id": "1124351751164801115", - "name": "PowerWash Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "blade & sorcery/bladeandsorcery.exe", "os": "win32"}], - "hook": true, - "id": "1124351753249378304", - "name": "Blade & Sorcery" - }, - { - "executables": [{"is_launcher": false, "name": "grandchase/grandchase.exe", "os": "win32"}], - "hook": true, - "id": "1124351755291996271", - "name": "GrandChase" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hlvr.exe", "os": "win32"}], - "hook": true, - "id": "1124351756931977307", - "name": "Half-Life: Alyx" - }, - { - "executables": [{"is_launcher": false, "name": "omori/omori.exe", "os": "win32"}], - "hook": true, - "id": "1124351759591161996", - "name": "OMORI" - }, - { - "executables": [{"is_launcher": false, "name": "rounds/rounds.exe", "os": "win32"}], - "hook": true, - "id": "1124351761512157184", - "name": "ROUNDS" - }, - { - "executables": [ - {"is_launcher": false, "name": "hand simulator survival/hand simulator survival.exe", "os": "win32"} - ], - "hook": true, - "id": "1124351763433144330", - "name": "Hand Simulator: Survival" - }, - { - "executables": [{"is_launcher": false, "name": "chill corner/chill corner.exe", "os": "win32"}], - "hook": true, - "id": "1124351765337354280", - "name": "Chill Corner" - }, - { - "executables": [{"is_launcher": false, "name": "leaf blower revolution/game.exe", "os": "win32"}], - "hook": true, - "id": "1124351767291904040", - "name": "Leaf Blower Revolution - Idle Game" - }, - { - "executables": [{"is_launcher": false, "name": "marvel's spider-man remastered/spider-man.exe", "os": "win32"}], - "hook": true, - "id": "1124351769175150702", - "name": "Marvel\u2019s Spider-Man Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "win64/borderlandsgoty.exe", "os": "win32"}], - "hook": true, - "id": "1124351771133886615", - "name": "Borderlands GOTY Enhanced" - }, - { - "executables": [{"is_launcher": false, "name": "in silence/in silence.exe", "os": "win32"}], - "hook": true, - "id": "1124351773067456552", - "name": "In Silence" - }, - { - "executables": [{"is_launcher": false, "name": "king of crabs/king of crabs.exe", "os": "win32"}], - "hook": true, - "id": "1124351775072338060", - "name": "King of Crabs" - }, - { - "executables": [{"is_launcher": false, "name": "aoe3de/aoe3de_s.exe", "os": "win32"}], - "hook": true, - "id": "1124351777471484065", - "name": "Age of Empires III: Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win64/unfortunatespacemen-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351779665100830", - "name": "Unfortunate Spacemen" - }, - { - "executables": [{"is_launcher": false, "name": "thief simulator/thief.exe", "os": "win32"}], - "hook": true, - "id": "1124351781753868369", - "name": "Thief Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "zero hour/zero hour.exe", "os": "win32"}], - "hook": true, - "id": "1124351783884570724", - "name": "Zero Hour" - }, - { - "executables": [ - {"is_launcher": false, "name": "the jackbox party pack 6/the jackbox party pack 6.exe", "os": "win32"} - ], - "hook": true, - "id": "1124351785851703336", - "name": "The Jackbox Party Pack 6" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2020/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124351787739136050", - "name": "Football Manager 2020" - }, - { - "executables": [{"is_launcher": false, "name": "cookie clicker/cookie clicker.exe", "os": "win32"}], - "hook": true, - "id": "1124351789895004280", - "name": "Cookie Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "bin/animazedesktop.exe", "os": "win32"}], - "hook": true, - "id": "1124351794659741846", - "name": "Animaze" - }, - { - "executables": [{"is_launcher": false, "name": "ori and the will of the wisps/oriwotw.exe", "os": "win32"}], - "hook": true, - "id": "1124351801001521294", - "name": "Ori and the Will of the Wisps" - }, - { - "executables": [{"is_launcher": false, "name": "war selection/glyphengine.exe", "os": "win32"}], - "hook": true, - "id": "1124351803027378197", - "name": "War Selection" - }, - { - "executables": [{"is_launcher": false, "name": "henrystickmin/henrystickmin.exe", "os": "win32"}], - "hook": false, - "id": "1124351804977721455", - "name": "The Henry Stickmin Collection" - }, - { - "executables": [{"is_launcher": false, "name": "combat master/combatmaster.exe", "os": "win32"}], - "hook": true, - "id": "1124351807645302905", - "name": "Combat Master" - }, - { - "executables": [{"is_launcher": false, "name": "win64/projectcoop-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351809906036817", - "name": "Lunch Lady" - }, - { - "executables": [ - {"is_launcher": false, "name": "the jackbox party pack 7/the jackbox party pack 7.exe", "os": "win32"} - ], - "hook": true, - "id": "1124351811659247626", - "name": "The Jackbox Party Pack 7" - }, - { - "executables": [ - {"is_launcher": false, "name": "the jackbox party pack 5/the jackbox party pack 5.exe", "os": "win32"} - ], - "hook": true, - "id": "1124351813395697705", - "name": "The Jackbox Party Pack 5" - }, - { - "executables": [{"is_launcher": false, "name": "cell to singularity/celltosingularity.exe", "os": "win32"}], - "hook": true, - "id": "1124351814926614659", - "name": "Cell to Singularity - Evolution Never Ends" - }, - { - "executables": [{"is_launcher": false, "name": "brotato/brotato.exe", "os": "win32"}], - "hook": true, - "id": "1124351818437242910", - "name": "Brotato" - }, - { - "executables": [{"is_launcher": false, "name": "plateup/plateup.exe", "os": "win32"}], - "hook": true, - "id": "1124351820576342026", - "name": "PlateUp!" - }, - { - "executables": [{"is_launcher": false, "name": "worldbox/worldbox.exe", "os": "win32"}], - "hook": true, - "id": "1124351822530891956", - "name": "WorldBox - God Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "3d aim trainer/3dat.exe", "os": "win32"}], - "hook": true, - "id": "1124351824611258510", - "name": "3D Aim Trainer" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bigfoot-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351826486116372", - "name": "BIGFOOT" - }, - { - "executables": [{"is_launcher": false, "name": "dirt rally 2.0/dirtrally2.exe", "os": "win32"}], - "hook": true, - "id": "1124351828541329408", - "name": "DiRT Rally 2.0" - }, - { - "executables": [{"is_launcher": false, "name": "win64/marblesonstream-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351830244212767", - "name": "Marbles on Stream" - }, - { - "executables": [{"is_launcher": false, "name": "detroit become human/detroitbecomehuman.exe", "os": "win32"}], - "hook": true, - "id": "1124351832454615120", - "name": "Detroit: Become Human" - }, - { - "executables": [{"is_launcher": false, "name": "ninja kiwi archive/ninja kiwi archive.exe", "os": "win32"}], - "hook": true, - "id": "1124351834283327559", - "name": "Ninja Kiwi Archive" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fnaf9-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351836544053340", - "name": "Five Nights at Freddy's: Security Breach" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ac2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351838666375228", - "name": "Assetto Corsa Competizione" - }, - { - "executables": [{"is_launcher": false, "name": "win64/daysgone.exe", "os": "win32"}], - "hook": true, - "id": "1124351840608333845", - "name": "Days Gone" - }, - { - "executables": [{"is_launcher": false, "name": "win64/game_x64r.exe", "os": "win32"}], - "hook": true, - "id": "1124351842554495058", - "name": "Lost Light" - }, - { - "executables": [{"is_launcher": false, "name": "loop hero/loop hero.exe", "os": "win32"}], - "hook": true, - "id": "1124351844743917688", - "name": "Loop Hero" - }, - { - "executables": [{"is_launcher": false, "name": "prison life/prison life.exe", "os": "win32"}], - "hook": true, - "id": "1124351846681694238", - "name": "Prison Life" - }, - { - "executables": [{"is_launcher": false, "name": "skul/skul.exe", "os": "win32"}], - "hook": true, - "id": "1124351848464269412", - "name": "Skul: The Hero Slayer" - }, - { - "executables": [{"is_launcher": false, "name": "win64/undefeated-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351850586591252", - "name": "UNDEFEATED" - }, - { - "aliases": ["The Backrooms Game"], - "executables": [{"is_launcher": false, "name": "the backrooms game/the backrooms game.exe", "os": "win32"}], - "hook": true, - "id": "1124351852331413574", - "name": "The Backrooms Game FREE Edition" - }, - { - "executables": [{"is_launcher": false, "name": "ultrakill/ultrakill.exe", "os": "win32"}], - "hook": true, - "id": "1124351854831222945", - "name": "ULTRAKILL" - }, - { - "executables": [{"is_launcher": false, "name": "boneworks/boneworks.exe", "os": "win32"}], - "hook": true, - "id": "1124351856689303703", - "name": "BONEWORKS" - }, - { - "executables": [{"is_launcher": false, "name": "monopoly poker/monopoly poker.exe", "os": "win32"}], - "hook": true, - "id": "1124351858425741404", - "name": "MONOPOLY Poker" - }, - { - "executables": [{"is_launcher": false, "name": "outer wilds/outerwilds.exe", "os": "win32"}], - "hook": true, - "id": "1124351860376096858", - "name": "Outer Wilds" - }, - { - "executables": [{"is_launcher": false, "name": "win64/deadside-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351862552932444", - "name": "Deadside" - }, - { - "executables": [{"is_launcher": false, "name": "quaver/quaver.exe", "os": "win32"}], - "hook": true, - "id": "1124351864494899300", - "name": "Quaver" - }, - { - "executables": [{"is_launcher": false, "name": "cookingsimulator/cookingsim.exe", "os": "win32"}], - "hook": true, - "id": "1124351866415894691", - "name": "Cooking Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "f1 2021/f1_2021_dx12.exe", "os": "win32"}], - "hook": true, - "id": "1124351868458512546", - "name": "F1 2021" - }, - { - "executables": [{"is_launcher": false, "name": "secret neighbor/secret neighbour.exe", "os": "win32"}], - "hook": true, - "id": "1124351870685696050", - "name": "Secret Neighbor" - }, - { - "executables": [{"is_launcher": false, "name": "ddnet/ddnet.exe", "os": "win32"}], - "hook": true, - "id": "1124351872514404392", - "name": "DDraceNetwork" - }, - { - "executables": [{"is_launcher": false, "name": "nba 2k23/nba2k23.exe", "os": "win32"}], - "hook": true, - "id": "1124351874095661256", - "name": "NBA 2K23" - }, - { - "executables": [{"is_launcher": false, "name": "stumble guys/stumble guys.exe", "os": "win32"}], - "hook": true, - "id": "1124351876033425529", - "name": "Stumble Guys" - }, - { - "executables": [{"is_launcher": false, "name": "blasphemous/blasphemous.exe", "os": "win32"}], - "hook": true, - "id": "1124351877941841950", - "name": "Blasphemous" - }, - { - "executables": [{"is_launcher": false, "name": "puzzle together/puzzle together.exe", "os": "win32"}], - "hook": true, - "id": "1124351881553133628", - "name": "Puzzle Together" - }, - { - "executables": [{"is_launcher": false, "name": "deepest sword/deepest sword.exe", "os": "win32"}], - "hook": true, - "id": "1124351883151167498", - "name": "Deepest Sword" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2021/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124351885151842345", - "name": "Football Manager 2021" - }, - { - "executables": [{"is_launcher": false, "name": "driver booster for steam/driverbooster.exe", "os": "win32"}], - "hook": true, - "id": "1124351886846349312", - "name": "Driver Booster for Steam" - }, - { - "executables": [{"is_launcher": false, "name": "katana zero/katana zero.exe", "os": "win32"}], - "hook": true, - "id": "1124351888737972295", - "name": "Katana ZERO" - }, - { - "executables": [ - {"is_launcher": false, "name": "super bomberman r online/superbombermanr_online.exe", "os": "win32"} - ], - "hook": true, - "id": "1124351890726080552", - "name": "Super Bomberman R Online" - }, - { - "executables": [ - {"is_launcher": false, "name": "60 seconds! reatomized/60secondsreatomized.exe", "os": "win32"} - ], - "hook": true, - "id": "1124351892546404432", - "name": "60 Seconds! Reatomized" - }, - { - "executables": [{"is_launcher": false, "name": "win64/evogamesteam-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351894521917458", - "name": "GUNDAM EVOLUTION" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fp-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351896166076496", - "name": "FUCK PUTIN" - }, - { - "executables": [{"is_launcher": false, "name": "unsolved case/unsolved case.exe", "os": "win32"}], - "hook": true, - "id": "1124351897915117610", - "name": "Unsolved Case" - }, - { - "executables": [{"is_launcher": false, "name": "win32/starter.exe", "os": "win32"}], - "hook": true, - "id": "1124351899806740570", - "name": "City Car Driving" - }, - { - "executables": [{"is_launcher": false, "name": "asphalt 9 legends/asphalt9_steam_x64_rtl.exe", "os": "win32"}], - "hook": true, - "id": "1124351901702570034", - "name": "Asphalt 9: Legends" - }, - { - "executables": [{"is_launcher": false, "name": "win64/escapememoirsms-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351903636140054", - "name": "Escape Memoirs: Mini Stories" - }, - { - "executables": [{"is_launcher": false, "name": "bin/stalcraftw.exe", "os": "win32"}], - "hook": true, - "id": "1124351909235539978", - "name": "STALCRAFT" - }, - { - "executables": [{"is_launcher": false, "name": "ilycs/ilycs.exe", "os": "win32"}], - "hook": true, - "id": "1124351914943992018", - "name": "I Love You, Colonel Sanders! A Finger Lickin\u2019 Good Dating Simulator" - }, - { - "executables": [ - {"is_launcher": false, "name": "we were here together/we were here together.exe", "os": "win32"} - ], - "hook": true, - "id": "1124351920174284800", - "name": "We Were Here Together" - }, - { - "executables": [{"is_launcher": false, "name": "scp escape together/scp_et.exe", "os": "win32"}], - "hook": true, - "id": "1124351925316497438", - "name": "SCP: Escape Together" - }, - { - "executables": [{"is_launcher": false, "name": "labyrinthine/labyrinthine.exe", "os": "win32"}], - "hook": true, - "id": "1124351928009244742", - "name": "Labyrinthine" - }, - { - "executables": [{"is_launcher": false, "name": "openttd/openttd.exe", "os": "win32"}], - "hook": true, - "id": "1124351929712136192", - "name": "OpenTTD" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "totally reliable delivery service beta/totally reliable delivery service.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124351931456958604", - "name": "Totally Reliable Delivery Service Beta" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2022/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124351933566697613", - "name": "Football Manager 2022" - }, - { - "executables": [{"is_launcher": false, "name": "hired ops/hops.exe", "os": "win32"}], - "hook": true, - "id": "1124351935185694872", - "name": "Hired Ops" - }, - { - "executables": [{"is_launcher": false, "name": "honkaiimpact3rd/bh3.exe", "os": "win32"}], - "hook": true, - "id": "1124351937098301590", - "name": "HonkaiImpact 3rd" - }, - { - "executables": [{"is_launcher": false, "name": "metin2/metin2client.exe", "os": "win32"}], - "hook": true, - "id": "1124351939249975327", - "name": "Metin2" - }, - { - "executables": [{"is_launcher": false, "name": "the two of us/the two of us.exe", "os": "win32"}], - "hook": true, - "id": "1124351941263245342", - "name": "The Two of Us" - }, - { - "executables": [{"is_launcher": false, "name": "win64/chivalry2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351943247155330", - "name": "Chivalry 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "monsterhunterrisedemo/monsterhunterrisedemo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124351945004564490", - "name": "MONSTER HUNTER RISE DEMO" - }, - { - "executables": [{"is_launcher": false, "name": "the long drive/thelongdrive.exe", "os": "win32"}], - "hook": true, - "id": "1124351947005243402", - "name": "The Long Drive" - }, - { - "executables": [{"is_launcher": false, "name": "nba 2k20/nba2k20.exe", "os": "win32"}], - "hook": true, - "id": "1124351949253394593", - "name": "NBA 2K20" - }, - { - "executables": [{"is_launcher": false, "name": "mini motorways/mini motorways.exe", "os": "win32"}], - "hook": true, - "id": "1124351951153410148", - "name": "Mini Motorways" - }, - { - "executables": [{"is_launcher": false, "name": "slime rancher 2/slimerancher2.exe", "os": "win32"}], - "hook": true, - "id": "1124351953024077845", - "name": "Slime Rancher 2" - }, - { - "executables": [{"is_launcher": false, "name": "gris/gris.exe", "os": "win32"}], - "hook": true, - "id": "1124351954831818833", - "name": "GRIS" - }, - { - "executables": [{"is_launcher": false, "name": "townscaper/townscaper.exe", "os": "win32"}], - "hook": true, - "id": "1124351956475981905", - "name": "Townscaper" - }, - { - "executables": [{"is_launcher": false, "name": "dorfromantik/dorfromantik.exe", "os": "win32"}], - "hook": true, - "id": "1124351958250176592", - "name": "Dorfromantik" - }, - { - "executables": [{"is_launcher": false, "name": "win64/totclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351960078897173", - "name": "The Outlast Trials" - }, - { - "executables": [{"is_launcher": false, "name": "nba 2k22/nba2k22.exe", "os": "win32"}], - "hook": true, - "id": "1124351961744031934", - "name": "NBA 2K22" - }, - { - "executables": [{"is_launcher": false, "name": "bin/snowrunner.exe", "os": "win32"}], - "hook": true, - "id": "1124351964084449423", - "name": "SnowRunner" - }, - { - "executables": [{"is_launcher": false, "name": "win64/deskjob.exe", "os": "win32"}], - "hook": true, - "id": "1124351966026420235", - "name": "Aperture Desk Job" - }, - { - "executables": [{"is_launcher": false, "name": "the walking zombie 2/the walking zombie 2.exe", "os": "win32"}], - "hook": true, - "id": "1124351967804801055", - "name": "Walking Zombie 2" - }, - { - "executables": [{"is_launcher": false, "name": "virtual cottage/virtual cottage_windows.exe", "os": "win32"}], - "hook": true, - "id": "1124351969704816660", - "name": "Virtual Cottage" - }, - { - "executables": [{"is_launcher": false, "name": "trailmakers/trailmakers.exe", "os": "win32"}], - "hook": true, - "id": "1124351971516760084", - "name": "Trailmakers" - }, - { - "executables": [ - {"is_launcher": false, "name": "car mechanic simulator 2021/car mechanic simulator 2021.exe", "os": "win32"} - ], - "hook": true, - "id": "1124351973701988422", - "name": "Car Mechanic Simulator 2021" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fh-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351975702679583", - "name": "FUCK HITLER" - }, - { - "executables": [{"is_launcher": false, "name": "areyoureadyforvalveindex/compatapp.exe", "os": "win32"}], - "hook": true, - "id": "1124351977158098944", - "name": "Are You Ready for Valve Index?" - }, - { - "executables": [{"is_launcher": false, "name": "win64/prosocceronline-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351980840698066", - "name": "Pro Soccer Online" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mir4s.exe", "os": "win32"}], - "hook": true, - "id": "1124351982908493894", - "name": "MIR4" - }, - { - "executables": [{"is_launcher": false, "name": "dyson sphere program/dspgame.exe", "os": "win32"}], - "hook": true, - "id": "1124351985051775036", - "name": "Dyson Sphere Program" - }, - { - "executables": [{"is_launcher": false, "name": "mgi prologue/mgi.exe", "os": "win32"}], - "hook": true, - "id": "1124351986964381756", - "name": "Monster Girl Island: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/chaosgame424-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351988755353740", - "name": "Chaos" - }, - { - "executables": [{"is_launcher": false, "name": "untitled goose game/untitled.exe", "os": "win32"}], - "hook": true, - "id": "1124351991485837414", - "name": "Untitled Goose Game" - }, - { - "executables": [{"is_launcher": false, "name": "modern combat 5/mc5.exe", "os": "win32"}], - "hook": true, - "id": "1124351993230676018", - "name": "Modern Combat 5" - }, - { - "executables": [{"is_launcher": false, "name": "win64/spyro-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124351995663368222", - "name": "Spyro\u2122 Reignited Trilogy" - }, - { - "executables": [{"is_launcher": false, "name": "lego lord of the rings/legolotr.exe", "os": "win32"}], - "hook": true, - "id": "1124351999073333439", - "name": "LEGO\u00ae The Lord of the Rings\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "ghost watchers/ghost watchers.exe", "os": "win32"}], - "hook": true, - "id": "1124352001547976714", - "name": "Ghost Watchers" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2023/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124352003330560110", - "name": "Football Manager 2023" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mining-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352005297684520", - "name": "Hydroneer" - }, - { - "executables": [{"is_launcher": false, "name": "win64/doubleclutch-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352007193514024", - "name": "3on3 FreeStyle: Rebound" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tropico6-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352008959312012", - "name": "Tropico 6" - }, - { - "executables": [{"is_launcher": false, "name": "jurassic world evolution 2/jwe2.exe", "os": "win32"}], - "hook": true, - "id": "1124352010850938890", - "name": "Jurassic World Evolution 2" - }, - { - "executables": [{"is_launcher": false, "name": "jump king/jumpking.exe", "os": "win32"}], - "hook": true, - "id": "1124352013090705439", - "name": "Jump King" - }, - { - "executables": [ - {"is_launcher": false, "name": "fears to fathom - episode 1/fears to fathom.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352015301095566", - "name": "Fears to Fathom - Episode 1" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2019/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124352017507303434", - "name": "Football Manager 2019" - }, - { - "executables": [{"is_launcher": false, "name": "timberborn/timberborn.exe", "os": "win32"}], - "hook": true, - "id": "1124352019587674193", - "name": "Timberborn" - }, - { - "executables": [{"is_launcher": false, "name": "win64/walkingsimulator2020-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352021848408114", - "name": "Walking Simulator 2020" - }, - { - "executables": [{"is_launcher": false, "name": "dinkum/dinkum.exe", "os": "win32"}], - "hook": true, - "id": "1124352023807152299", - "name": "Dinkum" - }, - { - "executables": [{"is_launcher": false, "name": "scp labrat/scp labrat.exe", "os": "win32"}], - "hook": true, - "id": "1124352026554408960", - "name": "SCP: Labrat" - }, - { - "executables": [{"is_launcher": false, "name": "childrenofmorta/childrenofmorta.exe", "os": "win32"}], - "hook": true, - "id": "1124352028521545909", - "name": "Children of Morta" - }, - { - "executables": [{"is_launcher": false, "name": "win64/harshdoorstop-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352030266372268", - "name": "Operation: Harsh Doorstop" - }, - { - "executables": [{"is_launcher": false, "name": "bloons monkey city/monkeycity-win.exe", "os": "win32"}], - "hook": true, - "id": "1124352032246087821", - "name": "Bloons Monkey City" - }, - { - "executables": [{"is_launcher": false, "name": "djmax respect v/djmax respect v.exe", "os": "win32"}], - "hook": true, - "id": "1124352034078994663", - "name": "DJMAX RESPECT V" - }, - { - "executables": [{"is_launcher": false, "name": "win64/themeangreens-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352035786080388", - "name": "The Mean Greens - Plastic Warfare" - }, - { - "executables": [{"is_launcher": false, "name": "last epoch/last epoch.exe", "os": "win32"}], - "hook": true, - "id": "1124352037560266782", - "name": "Last Epoch" - }, - { - "executables": [{"is_launcher": false, "name": "superliminal/superliminalsteam.exe", "os": "win32"}], - "hook": true, - "id": "1124352039397380096", - "name": "Superliminal" - }, - { - "executables": [ - {"is_launcher": false, "name": "my friend pedro/my friend pedro - blood bullets bananas.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352041268031588", - "name": "My Friend Pedro" - }, - { - "executables": [ - {"is_launcher": false, "name": "we become what we behold/we-become-what-we-behold.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352042924789850", - "name": "We Become What We Behold" - }, - { - "executables": [{"is_launcher": false, "name": "baldi's basics classic remastered/baldi.exe", "os": "win32"}], - "hook": true, - "id": "1124352044808024174", - "name": "Baldi's Basics Classic Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "timberman/timberman.exe", "os": "win32"}], - "hook": true, - "id": "1124352046557057034", - "name": "Timberman" - }, - { - "executables": [{"is_launcher": false, "name": "marvels avengers/avengers.exe", "os": "win32"}], - "hook": true, - "id": "1124352048360603648", - "name": "Marvel's Avengers" - }, - { - "executables": [{"is_launcher": false, "name": "blushblush/blushblush.exe", "os": "win32"}], - "hook": true, - "id": "1124352052454240276", - "name": "Blush Blush" - }, - { - "executables": [{"is_launcher": false, "name": "win64/undecember-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352054190690354", - "name": "Undecember" - }, - { - "executables": [{"is_launcher": false, "name": "bin/crucible.exe", "os": "win32"}], - "hook": true, - "id": "1124352056111673494", - "name": "Crucible" - }, - { - "executables": [{"is_launcher": false, "name": "vup/vup.exe", "os": "win32"}], - "hook": true, - "id": "1124352058011697182", - "name": "VUP" - }, - { - "executables": [ - {"is_launcher": false, "name": "marvel's spider-man miles morales/milesmorales.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352059890749552", - "name": "Marvel's Spider-Man: Miles Morales" - }, - { - "executables": [{"is_launcher": false, "name": "poly bridge 2/poly bridge 2.exe", "os": "win32"}], - "hook": true, - "id": "1124352061660729344", - "name": "Poly Bridge 2" - }, - { - "executables": [{"is_launcher": false, "name": "spelunky 2/spel2.exe", "os": "win32"}], - "hook": true, - "id": "1124352063548174466", - "name": "Spelunky 2" - }, - { - "executables": [{"is_launcher": false, "name": "iosoccer/iosoccer.exe", "os": "win32"}], - "hook": true, - "id": "1124352065179766824", - "name": "IOSoccer" - }, - { - "executables": [{"is_launcher": false, "name": "just shapes & beats/jsb.exe", "os": "win32"}], - "hook": true, - "id": "1124352067016863764", - "name": "Just Shapes & Beats" - }, - { - "executables": [{"is_launcher": false, "name": "rogue legacy 2/rogue legacy 2.exe", "os": "win32"}], - "hook": true, - "id": "1124352069940301924", - "name": "Rogue Legacy 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ranch_simulator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352071630602240", - "name": "Ranch Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "dead space 3/deadspace3.exe", "os": "win32"}], - "hook": true, - "id": "1124352073316716604", - "name": "Dead Space\u2122 3" - }, - { - "executables": [{"is_launcher": false, "name": "stacklands/stacklands.exe", "os": "win32"}], - "hook": true, - "id": "1124352074927325257", - "name": "Stacklands" - }, - { - "executables": [{"is_launcher": false, "name": "tap ninja/tap ninja.exe", "os": "win32"}], - "hook": true, - "id": "1124352076835729488", - "name": "Tap Ninja" - }, - { - "executables": [{"is_launcher": false, "name": "win64/onlyup-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352078714781747", - "name": "Only Up!" - }, - { - "executables": [{"is_launcher": false, "name": "skater xl/skaterxl.exe", "os": "win32"}], - "hook": true, - "id": "1124352080631582821", - "name": "Skater XL" - }, - { - "executables": [{"is_launcher": false, "name": "himno/himno.exe", "os": "win32"}], - "hook": true, - "id": "1124352082414153819", - "name": "Himno" - }, - { - "executables": [{"is_launcher": false, "name": "mindustry/mindustry.exe", "os": "win32"}], - "hook": true, - "id": "1124352084003803146", - "name": "Mindustry" - }, - { - "executables": [{"is_launcher": false, "name": "win64/omd-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352085920591975", - "name": "Orcs Must Die! 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wonderlands.exe", "os": "win32"}], - "hook": true, - "id": "1124352088042917969", - "name": "Tiny Tina's Wonderlands" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "in sink a co-op escape prologue/in sink a co-op escape prologue.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352090240729169", - "name": "In Sink: A Co-Op Escape Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "super bunny man/super bunny man.exe", "os": "win32"}], - "hook": true, - "id": "1124352091838763078", - "name": "Super Bunny Man" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "garfield kart - furious racing/garfield kart furious racing.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352093751357510", - "name": "Garfield Kart - Furious Racing" - }, - { - "executables": [{"is_launcher": false, "name": "monster train/monstertrain.exe", "os": "win32"}], - "hook": true, - "id": "1124352095550722108", - "name": "Monster Train" - }, - { - "executables": [{"is_launcher": false, "name": "humankind/humankind.exe", "os": "win32"}], - "hook": true, - "id": "1124352097249407036", - "name": "HUMANKIND\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "foundation/foundation.exe", "os": "win32"}], - "hook": true, - "id": "1124352098864222218", - "name": "Foundation" - }, - { - "executables": [{"is_launcher": false, "name": "secret neighbor alpha/secret neighbour.exe", "os": "win32"}], - "hook": true, - "id": "1124352101003313213", - "name": "Secret Neighbor Beta" - }, - { - "executables": [{"is_launcher": false, "name": "dicey dungeons/diceydungeons.exe", "os": "win32"}], - "hook": true, - "id": "1124352102462926899", - "name": "Dicey Dungeons" - }, - { - "executables": [{"is_launcher": false, "name": "grimm's hollow/rpg_rt.exe", "os": "win32"}], - "hook": true, - "id": "1124352104086130738", - "name": "Grimm's Hollow" - }, - { - "executables": [{"is_launcher": false, "name": "rain world/rainworld.exe", "os": "win32"}], - "hook": true, - "id": "1124352106107777134", - "name": "Rain World" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tme-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352107978444930", - "name": "Tell Me Why" - }, - { - "executables": [{"is_launcher": false, "name": "transport fever 2/transportfever2.exe", "os": "win32"}], - "hook": true, - "id": "1124352109765214208", - "name": "Transport Fever 2" - }, - { - "executables": [{"is_launcher": false, "name": "20minutetilldawn/minutestilldawn.exe", "os": "win32"}], - "hook": true, - "id": "1124352111812030464", - "name": "20 Minutes Till Dawn" - }, - { - "executables": [{"is_launcher": false, "name": "cube world/cubeworld.exe", "os": "win32"}], - "hook": true, - "id": "1124352113674305577", - "name": "Cube World" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the stanley parable ultra deluxe/the stanley parable ultra deluxe.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352115645624421", - "name": "The Stanley Parable: Ultra Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "pga tour 2k21/golf.exe", "os": "win32"}], - "hook": true, - "id": "1124352117692452955", - "name": "PGA TOUR 2K21" - }, - { - "executables": [{"is_launcher": false, "name": "win64/endeavor-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352119491801179", - "name": "Aliens: Fireteam Elite" - }, - { - "executables": [{"is_launcher": false, "name": "mahjongsoul/jantama_mahjongsoul.exe", "os": "win32"}], - "hook": true, - "id": "1124352121681231892", - "name": "\u96c0\u9b42\u9ebb\u5c06(MahjongSoul)" - }, - { - "executables": [ - {"is_launcher": false, "name": "a plague tale innocence/aplaguetaleinnocence_x64.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352124097155164", - "name": "A Plague Tale: Innocence" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bussimulator18-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352126051696751", - "name": "Bus Simulator 18" - }, - { - "executables": [{"is_launcher": false, "name": "going medieval/going medieval.exe", "os": "win32"}], - "hook": true, - "id": "1124352128035594331", - "name": "Going Medieval" - }, - { - "executables": [{"is_launcher": false, "name": "wildermyth/wildermyth.exe", "os": "win32"}], - "hook": true, - "id": "1124352129851736064", - "name": "Wildermyth" - }, - { - "executables": [{"is_launcher": false, "name": "win64/boston-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352131621736589", - "name": "Police Simulator: Patrol Officers" - }, - { - "executables": [{"is_launcher": false, "name": "nba 2k21/nba2k21.exe", "os": "win32"}], - "hook": true, - "id": "1124352133618221076", - "name": "NBA 2K21" - }, - { - "executables": [{"is_launcher": false, "name": "deathloop/deathloop.exe", "os": "win32"}], - "hook": true, - "id": "1124352135413379143", - "name": "DEATHLOOP" - }, - { - "executables": [{"is_launcher": false, "name": "missedmessageswindows/missed messages..exe", "os": "win32"}], - "hook": true, - "id": "1124352137330184192", - "name": "missed messages." - }, - { - "executables": [{"is_launcher": false, "name": "cube escape paradox/cubeescapeparadox.exe", "os": "win32"}], - "hook": true, - "id": "1124352139104366772", - "name": "Cube Escape: Paradox" - }, - { - "executables": [{"is_launcher": false, "name": "granny simulator/granny simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124352140807262308", - "name": "Granny Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "pizza tower/pizzatower.exe", "os": "win32"}], - "hook": true, - "id": "1124352142589833286", - "name": "Pizza Tower" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the murder of sonic the hedgehog/the murder of sonic the hedgehog.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352144154312755", - "name": "The Murder of Sonic the Hedgehog" - }, - { - "executables": [{"is_launcher": false, "name": "release/ironharvest.exe", "os": "win32"}], - "hook": true, - "id": "1124352145873973278", - "name": "Iron Harvest" - }, - { - "executables": [{"is_launcher": false, "name": "theroom/theroom.exe", "os": "win32"}], - "hook": true, - "id": "1124352147526537377", - "name": "The Room" - }, - { - "executables": [{"is_launcher": false, "name": "shotgun farmers/shotgun farmers.exe", "os": "win32"}], - "hook": true, - "id": "1124352149690793994", - "name": "Shotgun Farmers" - }, - { - "executables": [{"is_launcher": false, "name": "bitburner/bitburner.exe", "os": "win32"}], - "hook": true, - "id": "1124352151334957096", - "name": "Bitburner" - }, - { - "executables": [{"is_launcher": false, "name": "fnaf world/fnaf_world.exe", "os": "win32"}], - "hook": true, - "id": "1124352153214009444", - "name": "FNaF World" - }, - { - "executables": [ - {"is_launcher": false, "name": "five nights at freddy's 3/fivenightsatfreddys3.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352154958835752", - "name": "Five Nights at Freddy's 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/crowfpsclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352156791754783", - "name": "CROWZ" - }, - { - "executables": [{"is_launcher": false, "name": "surviv.io - 2d battle royale/survivio.exe", "os": "win32"}], - "hook": true, - "id": "1124352158624657408", - "name": "surviv.io - 2D Battle Royale" - }, - { - "executables": [{"is_launcher": false, "name": "hd poker/hd poker.exe", "os": "win32"}], - "hook": true, - "id": "1124352160705036379", - "name": "HD Poker" - }, - { - "executables": [{"is_launcher": false, "name": "metro exodus enhanced edition/metroexodus.exe", "os": "win32"}], - "hook": true, - "id": "1124352162890264686", - "name": "Metro Exodus Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "pogostuck/pogostuck.exe", "os": "win32"}], - "hook": true, - "id": "1124352164593160292", - "name": "Pogostuck: Rage With Your Friends" - }, - { - "executables": [{"is_launcher": false, "name": "sun haven/sun haven.exe", "os": "win32"}], - "hook": true, - "id": "1124352166321209464", - "name": "Sun Haven" - }, - { - "executables": [{"is_launcher": false, "name": "wobbly life/wobbly life.exe", "os": "win32"}], - "hook": true, - "id": "1124352168070238368", - "name": "Wobbly Life" - }, - { - "executables": [{"is_launcher": false, "name": "volcanoids/volcanoids.exe", "os": "win32"}], - "hook": true, - "id": "1124352169898946601", - "name": "Volcanoids" - }, - { - "executables": [{"is_launcher": false, "name": "greedfall/greedfall.exe", "os": "win32"}], - "hook": true, - "id": "1124352171987714088", - "name": "GreedFall" - }, - { - "executables": [ - {"is_launcher": false, "name": "huniepop 2 - double date/huniepop 2 - double date.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352173732540567", - "name": "HuniePop 2: Double Date" - }, - { - "executables": [{"is_launcher": false, "name": "idol showdown/idol showdown.exe", "os": "win32"}], - "hook": true, - "id": "1124352175909392445", - "name": "Idol Showdown" - }, - { - "executables": [{"is_launcher": false, "name": "the game of life 2/gameoflife2.exe", "os": "win32"}], - "hook": true, - "id": "1124352177679380560", - "name": "THE GAME OF LIFE 2" - }, - { - "executables": [{"is_launcher": false, "name": "party panic/partypanic.exe", "os": "win32"}], - "hook": true, - "id": "1124352179575210064", - "name": "Party Panic" - }, - { - "executables": [{"is_launcher": false, "name": "mx bikes/mxbikes.exe", "os": "win32"}], - "hook": true, - "id": "1124352181441679441", - "name": "MX Bikes" - }, - { - "executables": [{"is_launcher": false, "name": "win64/xera-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352183027122378", - "name": "XERA: Survival" - }, - { - "executables": [{"is_launcher": false, "name": "carrion/carrion.exe", "os": "win32"}], - "hook": true, - "id": "1124352184587399229", - "name": "CARRION" - }, - { - "executables": [ - {"is_launcher": false, "name": "lego marvel super heroes 2/legomarvel2_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352186269319290", - "name": "LEGO\u00ae MARVEL Super Heroes 2" - }, - { - "executables": [{"is_launcher": false, "name": "win_x64/pandemicexpress.exe", "os": "win32"}], - "hook": true, - "id": "1124352188018339880", - "name": "Pandemic Express - Zombie Escape" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/gauntlet.exe", "os": "win32"}], - "hook": true, - "id": "1124352189775757332", - "name": "Gauntlet\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "ngu idle/nguidle.exe", "os": "win32"}], - "hook": true, - "id": "1124352191331840090", - "name": "NGU IDLE" - }, - { - "executables": [{"is_launcher": false, "name": "just cause 4/justcause4.exe", "os": "win32"}], - "hook": true, - "id": "1124352193252835462", - "name": "Just Cause 4" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/victoria3.exe", "os": "win32"}], - "hook": true, - "id": "1124352195157045371", - "name": "Victoria 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ninetofiveclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352197002547380", - "name": "Nine to Five" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "nier replicant ver.1.22474487139/nier replicant ver.1.22474487139.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352198789312512", - "name": "NieR Replicant ver.1.22474487139..." - }, - { - "executables": [{"is_launcher": false, "name": "win/leftonread.exe", "os": "win32"}], - "hook": true, - "id": "1124352200538345563", - "name": "Left on Read" - }, - { - "executables": [ - {"is_launcher": false, "name": "lego star wars iii - the clone wars/legoclonewars.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352202752929853", - "name": "LEGO\u00ae Star Wars\u2122 III: The Clone Wars\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "win64/multiversus-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352205194023003", - "name": "MultiVersus" - }, - { - "executables": [{"is_launcher": false, "name": "forewarned/forewarned.exe", "os": "win32"}], - "hook": true, - "id": "1124352207362474025", - "name": "FOREWARNED" - }, - { - "executables": [{"is_launcher": false, "name": "win32/battlebrothers.exe", "os": "win32"}], - "hook": true, - "id": "1124352209107308655", - "name": "Battle Brothers" - }, - { - "executables": [{"is_launcher": false, "name": "sectorsedge/sectorsedge.exe", "os": "win32"}], - "hook": true, - "id": "1124352210780831765", - "name": "Sector's Edge" - }, - { - "executables": [{"is_launcher": false, "name": "chair simulator/chair simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124352212651487422", - "name": "Chair Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "win64/helloneighborreborn.exe", "os": "win32"}], - "hook": true, - "id": "1124352215193239622", - "name": "Hello Neighbor Alpha 2" - }, - { - "executables": [{"is_launcher": false, "name": "hardspace shipbreaker/shipbreaker.exe", "os": "win32"}], - "hook": true, - "id": "1124352216703184946", - "name": "Hardspace: Shipbreaker" - }, - { - "executables": [{"is_launcher": false, "name": "win64/oregon-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352222772351066", - "name": "High On Life" - }, - { - "executables": [{"is_launcher": false, "name": "win64/helios-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352224613642252", - "name": "Little Nightmares II Demo" - }, - { - "executables": [{"is_launcher": false, "name": "zup! s/zup! s.exe", "os": "win32"}], - "hook": true, - "id": "1124352226513670225", - "name": "Zup! S" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/darktide.exe", "os": "win32"}], - "hook": true, - "id": "1124352228166217778", - "name": "Warhammer 40,000: Darktide" - }, - { - "executables": [{"is_launcher": false, "name": "booty calls/bootycalls.exe", "os": "win32"}], - "hook": true, - "id": "1124352229822976100", - "name": "Booty Calls" - }, - { - "executables": [{"is_launcher": false, "name": "ultimate marvel vs. capcom 3/umvc3.exe", "os": "win32"}], - "hook": true, - "id": "1124352231559409746", - "name": "Ultimate Marvel vs. Capcom 3" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the game of life - the official 2016 edition/thegameoflife.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352233279082558", - "name": "THE GAME OF LIFE" - }, - { - "executables": [{"is_launcher": false, "name": "cultist simulator/cultistsimulator.exe", "os": "win32"}], - "hook": true, - "id": "1124352234776444999", - "name": "Cultist Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "win64/altf4_f-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352236630323240", - "name": "ALTF4" - }, - { - "executables": [{"is_launcher": false, "name": "journey/journey.exe", "os": "win32"}], - "hook": true, - "id": "1124352238517764166", - "name": "Journey" - }, - { - "executables": [{"is_launcher": false, "name": "wasteland 3/wl3.exe", "os": "win32"}], - "hook": true, - "id": "1124352240216453160", - "name": "Wasteland 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/biomutant-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352242070343680", - "name": "BIOMUTANT" - }, - { - "executables": [{"is_launcher": false, "name": "flashing lights/flashinglights.exe", "os": "win32"}], - "hook": true, - "id": "1124352243920023682", - "name": "Flashing Lights" - }, - { - "executables": [{"is_launcher": false, "name": "win64/goatofduty-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352245891354745", - "name": "GOAT OF DUTY" - }, - { - "executables": [{"is_launcher": false, "name": "milkchoco/milkchoco.exe", "os": "win32"}], - "hook": true, - "id": "1124352247921389688", - "name": "MilkChoco" - }, - { - "executables": [{"is_launcher": false, "name": "madout2_bigcityonline/game.exe", "os": "win32"}], - "hook": true, - "id": "1124352249691389972", - "name": "MadOut2 BigCityOnline" - }, - { - "executables": [{"is_launcher": false, "name": "the past within/the past within.exe", "os": "win32"}], - "hook": true, - "id": "1124352251448807434", - "name": "The Past Within" - }, - { - "executables": [{"is_launcher": false, "name": "college bound/collegebound.exe", "os": "win32"}], - "hook": true, - "id": "1124352253013278831", - "name": "College Bound" - }, - { - "executables": [{"is_launcher": false, "name": "idle slayer/idle slayer.exe", "os": "win32"}], - "hook": true, - "id": "1124352254888136816", - "name": "Idle Slayer" - }, - { - "executables": [{"is_launcher": false, "name": "wartales/wartales.exe", "os": "win32"}], - "hook": true, - "id": "1124352256905588888", - "name": "Wartales" - }, - { - "executables": [{"is_launcher": false, "name": "earth defense force 5/edf5.exe", "os": "win32"}], - "hook": true, - "id": "1124352261678714920", - "name": "EARTH DEFENSE FORCE 5" - }, - { - "executables": [{"is_launcher": false, "name": "farthest frontier/farthest frontier.exe", "os": "win32"}], - "hook": true, - "id": "1124352266476994590", - "name": "Farthest Frontier" - }, - { - "executables": [{"is_launcher": false, "name": "eraser/eraser.exe", "os": "win32"}], - "hook": true, - "id": "1124352268368629800", - "name": "Eraser" - }, - { - "executables": [ - {"is_launcher": false, "name": "the jackbox party pack 8/the jackbox party pack 8.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352270092480512", - "name": "The Jackbox Party Pack 8" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mistclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352271677935636", - "name": "Last Oasis" - }, - { - "executables": [{"is_launcher": false, "name": "windows_content/internet cafe simulator 2.exe", "os": "win32"}], - "hook": true, - "id": "1124352273305321653", - "name": "Internet Cafe Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sabotaj.exe", "os": "win32"}], - "hook": true, - "id": "1124352275100487821", - "name": "Sabotaj" - }, - { - "executables": [{"is_launcher": false, "name": "win_x64/warofrights.exe", "os": "win32"}], - "hook": true, - "id": "1124352278007132283", - "name": "War of Rights" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "doki doki literature club plus/doki doki literature club plus.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352279512895578", - "name": "Doki Doki Literature Club Plus!" - }, - { - "executables": [{"is_launcher": false, "name": "win64/upgun-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352281593266346", - "name": "UpGun" - }, - { - "executables": [ - {"is_launcher": false, "name": "the timeless child/the timeless child prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352283203883028", - "name": "The Timeless Child" - }, - { - "executables": [ - {"is_launcher": false, "name": "rubber bandits christmas prologue/rubberbandits.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352285129060352", - "name": "Rubber Bandits: Christmas Prologue" - }, - { - "executables": [ - {"is_launcher": false, "name": "contraband police prologue/contrabandpolice.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352286643212438", - "name": "Contraband Police: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "kindergarten/kindergarten.exe", "os": "win32"}], - "hook": true, - "id": "1124352288253816952", - "name": "Kindergarten" - }, - { - "executables": [{"is_launcher": false, "name": "bin/gotg.exe", "os": "win32"}], - "hook": true, - "id": "1124352289956708382", - "name": "Marvel's Guardians of the Galaxy" - }, - { - "executables": [{"is_launcher": false, "name": "couchcoopmono2/plateup.exe", "os": "win32"}], - "hook": true, - "id": "1124352292171296869", - "name": "PlateUp! Demo" - }, - { - "executables": [{"is_launcher": false, "name": "knightfall/knightfall.exe", "os": "win32"}], - "hook": true, - "id": "1124352293601562825", - "name": "Knightfall: A Daring Journey" - }, - { - "executables": [{"is_launcher": false, "name": "conflict of nations/conflict of nations.exe", "os": "win32"}], - "hook": true, - "id": "1124352295266697370", - "name": "Conflict of Nations: World War 3" - }, - { - "executables": [{"is_launcher": false, "name": "capcom arcade stadium/capcomarcadestadium.exe", "os": "win32"}], - "hook": true, - "id": "1124352297099612210", - "name": "Capcom Arcade Stadium" - }, - { - "executables": [{"is_launcher": false, "name": "win64/blazingsails-win64.exe", "os": "win32"}], - "hook": true, - "id": "1124352298710220886", - "name": "Blazing Sails" - }, - { - "executables": [{"is_launcher": false, "name": "prprlive/prprlive.exe", "os": "win32"}], - "hook": true, - "id": "1124352301776261230", - "name": "PrprLive" - }, - { - "executables": [ - {"is_launcher": false, "name": "school of dragons how to train your dragon/domain.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352303529467904", - "name": "School of Dragons: How to Train Your Dragon" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the one who pulls out the sword will be crowned king/the one who pulls out the sword will be crowned king.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352305576296561", - "name": "The one who pulls out the sword will be crowned king" - }, - { - "executables": [{"is_launcher": false, "name": "dayzserver/dayzserver_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124352307430174840", - "name": "DayZ Server" - }, - { - "executables": [{"is_launcher": false, "name": "win32/nwmain.exe", "os": "win32"}], - "hook": true, - "id": "1124352309183402035", - "name": "Neverwinter Nights: Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "the planet crafter/planet crafter.exe", "os": "win32"}], - "hook": true, - "id": "1124352310764650607", - "name": "The Planet Crafter" - }, - { - "executables": [{"is_launcher": false, "name": "we were here forever/we were here forever.exe", "os": "win32"}], - "hook": true, - "id": "1124352312450764840", - "name": "We Were Here Forever" - }, - { - "executables": [{"is_launcher": false, "name": "win64/twd-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352314187202650", - "name": "The Walking Dead: Saints & Sinners" - }, - { - "executables": [{"is_launcher": false, "name": "gladio and glory/gladio and glory.exe", "os": "win32"}], - "hook": true, - "id": "1124352315944611902", - "name": "Gladio and Glory" - }, - { - "executables": [{"is_launcher": false, "name": "survival wasteland zombie/survival.exe", "os": "win32"}], - "hook": true, - "id": "1124352317739782235", - "name": "Wasteland Survival" - }, - { - "executables": [ - {"is_launcher": false, "name": "detroit become human demo/detroitbecomehuman.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352319740457091", - "name": "Detroit: Become Human Demo" - }, - { - "executables": [{"is_launcher": false, "name": "neon beats/neon beats.exe", "os": "win32"}], - "hook": true, - "id": "1124352321413992598", - "name": "Neon Beats" - }, - { - "executables": [{"is_launcher": false, "name": "puyopuyotetris/puyopuyotetris.exe", "os": "win32"}], - "hook": true, - "id": "1124352323645354027", - "name": "Puyo Puyo\u2122Tetris\u00ae" - }, - { - "executables": [{"is_launcher": false, "name": "wgt golf/golf.exe", "os": "win32"}], - "hook": true, - "id": "1124352325520216075", - "name": "WGT Golf" - }, - { - "executables": [{"is_launcher": false, "name": "neon boost/neon boost.exe", "os": "win32"}], - "hook": true, - "id": "1124352327403450368", - "name": "Neon Boost" - }, - { - "executables": [{"is_launcher": false, "name": "barony/barony.exe", "os": "win32"}], - "hook": true, - "id": "1124352329169256518", - "name": "Barony" - }, - { - "executables": [{"is_launcher": false, "name": "youronlymoveishustle/youronlymoveishustle.exe", "os": "win32"}], - "hook": true, - "id": "1124352331123806228", - "name": "Your Only Move Is HUSTLE" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ancestors-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352332801519706", - "name": "Ancestors: The Humankind Odyssey" - }, - { - "executables": [{"is_launcher": false, "name": "godot engine/godot.windows.opt.tools.64.exe", "os": "win32"}], - "hook": true, - "id": "1124352333376147466", - "name": "Godot Engine" - }, - { - "executables": [{"is_launcher": false, "name": "cockroach_simulator/cs.exe", "os": "win32"}], - "hook": true, - "id": "1124352335506845876", - "name": "Cockroach Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "vtuber editor/vtuber editor.exe", "os": "win32"}], - "hook": true, - "id": "1124352337331376148", - "name": "VTuber Editor" - }, - { - "executables": [{"is_launcher": false, "name": "baldur's gate ii enhanced edition/baldur.exe", "os": "win32"}], - "hook": true, - "id": "1124352339055231137", - "name": "Baldur's Gate II: Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "dredge/dredge.exe", "os": "win32"}], - "hook": true, - "id": "1124352340749725766", - "name": "DREDGE" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hatred-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352342687498270", - "name": "Hatred" - }, - { - "executables": [{"is_launcher": false, "name": "inscryption demo/inscryption.exe", "os": "win32"}], - "hook": true, - "id": "1124352344436518912", - "name": "Inscryption Demo" - }, - { - "executables": [{"is_launcher": false, "name": "the looker/the looker.exe", "os": "win32"}], - "hook": true, - "id": "1124352345992613948", - "name": "The Looker" - }, - { - "executables": [{"is_launcher": false, "name": "win64/spidermanffh-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352347926180000", - "name": "Spider-Man: Far From Home Virtual Reality" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dungeons-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352351269048370", - "name": "Minecraft Dungeons" - }, - { - "executables": [{"is_launcher": false, "name": "the survivalists demo/the survivalists.exe", "os": "win32"}], - "hook": true, - "id": "1124352353219395624", - "name": "The Survivalists Online Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/frostrunner-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352354758701217", - "name": "FrostRunner" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/imperator.exe", "os": "win32"}], - "hook": true, - "id": "1124352356360929351", - "name": "Imperator: Rome" - }, - { - "executables": [{"is_launcher": false, "name": "cat goes fishing/cat goes fishing.exe", "os": "win32"}], - "hook": true, - "id": "1124352358135115827", - "name": "Cat Goes Fishing" - }, - { - "executables": [{"is_launcher": false, "name": "disney dreamlight valley/ddv.exe", "os": "win32"}], - "hook": true, - "id": "1124352360140001361", - "name": "Disney Dreamlight Valley" - }, - { - "executables": [{"is_launcher": false, "name": "samsara room/samsararoom.exe", "os": "win32"}], - "hook": true, - "id": "1124352361947742339", - "name": "Samsara Room" - }, - { - "executables": [{"is_launcher": false, "name": "win64/f1manager22.exe", "os": "win32"}], - "hook": true, - "id": "1124352364162330676", - "name": "F1\u00ae Manager 2022" - }, - { - "executables": [{"is_launcher": false, "name": "synthetik arena/synthetik arena.exe", "os": "win32"}], - "hook": true, - "id": "1124352366196576286", - "name": "SYNTHETIK: Arena" - }, - { - "executables": [{"is_launcher": false, "name": "scp nine-tailed fox/scp nine-tailed fox.exe", "os": "win32"}], - "hook": true, - "id": "1124352368033673297", - "name": "SCP: Nine-Tailed Fox" - }, - { - "executables": [{"is_launcher": false, "name": "soda dungeon 2/sodadungeon2.exe", "os": "win32"}], - "hook": true, - "id": "1124352369795284992", - "name": "Soda Dungeon 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "lego batman 3 beyond gotham/legobatman3_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352371582062742", - "name": "LEGO\u00ae Batman\u2122 3: Beyond Gotham" - }, - { - "executables": [{"is_launcher": false, "name": "trine 4 the nightmare prince/trine4.exe", "os": "win32"}], - "hook": true, - "id": "1124352373364633640", - "name": "Trine 4: The Nightmare Prince" - }, - { - "executables": [{"is_launcher": false, "name": "windows_content/internet cafe simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124352375096889416", - "name": "Internet Cafe Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "contraband police demo/contrabandpolice.exe", "os": "win32"}], - "hook": true, - "id": "1124352376627806219", - "name": "Contraband Police Demo" - }, - { - "executables": [{"is_launcher": false, "name": "evil inside - prologue/evil_inside.exe", "os": "win32"}], - "hook": true, - "id": "1124352378301329418", - "name": "Evil Inside - Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "beavers be dammed/beaversbedammed.exe", "os": "win32"}], - "hook": true, - "id": "1124352380092305529", - "name": "Beavers Be Dammed" - }, - { - "executables": [{"is_launcher": false, "name": "supremacy 1914/supremacy 1914.exe", "os": "win32"}], - "hook": true, - "id": "1124352381803573309", - "name": "Supremacy 1914" - }, - { - "executables": [{"is_launcher": false, "name": "monster prom 2 - monster camp/monstercamp.exe", "os": "win32"}], - "hook": true, - "id": "1124352384089477210", - "name": "Monster Prom 2: Monster Camp" - }, - { - "executables": [{"is_launcher": false, "name": "mechanicus/mechanicus.exe", "os": "win32"}], - "hook": true, - "id": "1124352386325037187", - "name": "Warhammer 40,000: Mechanicus" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "jojo's bizarre adventure all-star battle r demo version/asbr.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352387885314088", - "name": "JoJo's Bizarre Adventure: All-Star Battle R Demo version" - }, - { - "executables": [{"is_launcher": false, "name": "win64/propagationvr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352389680484392", - "name": "Propagation VR" - }, - { - "executables": [ - {"is_launcher": false, "name": "the planet crafter prologue/planet crafter.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352391328837703", - "name": "The Planet Crafter: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "sunsetoverdrive/sunset.exe", "os": "win32"}], - "hook": true, - "id": "1124352392801046608", - "name": "Sunset Overdrive" - }, - { - "executables": [{"is_launcher": false, "name": "ultrakill demo/ultrakill.exe", "os": "win32"}], - "hook": true, - "id": "1124352394763976714", - "name": "ULTRAKILL Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fpssteamgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352396223590481", - "name": "FPS Game: Dev Test" - }, - { - "executables": [{"is_launcher": false, "name": "metal hellsinger demo/metal.exe", "os": "win32"}], - "hook": true, - "id": "1124352397909704754", - "name": "Metal: Hellsinger Demo" - }, - { - "executables": [{"is_launcher": false, "name": "limbus company/limbuscompany.exe", "os": "win32"}], - "hook": true, - "id": "1124352399570653185", - "name": "Limbus Company" - }, - { - "executables": [{"is_launcher": false, "name": "have a nice death/haveanicedeath.exe", "os": "win32"}], - "hook": true, - "id": "1124352401307086898", - "name": "Have a Nice Death" - }, - { - "executables": [{"is_launcher": false, "name": "biped/biped.exe", "os": "win32"}], - "hook": true, - "id": "1124352405937606666", - "name": "Biped" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ff7remake_.exe", "os": "win32"}], - "hook": true, - "id": "1124352407741149344", - "name": "FINAL FANTASY VII REMAKE INTERGRADE" - }, - { - "executables": [{"is_launcher": false, "name": "russiaphobia/russiaphobia.exe", "os": "win32"}], - "hook": true, - "id": "1124352409414684734", - "name": "RUSSIAPHOBIA" - }, - { - "executables": [{"is_launcher": false, "name": "smithworks/smithworks.exe", "os": "win32"}], - "hook": true, - "id": "1124352411218227230", - "name": "Smithworks" - }, - { - "executables": [{"is_launcher": false, "name": "rhythm doctor/rhythm doctor.exe", "os": "win32"}], - "hook": true, - "id": "1124352412841427054", - "name": "Rhythm Doctor" - }, - { - "executables": [{"is_launcher": false, "name": "death's door/deathsdoor.exe", "os": "win32"}], - "hook": true, - "id": "1124352414703693834", - "name": "Death's Door" - }, - { - "executables": [{"is_launcher": false, "name": "jet set radio/jsrsetup.exe", "os": "win32"}], - "hook": true, - "id": "1124352416935071824", - "name": "Jet Set Radio" - }, - { - "executables": [{"is_launcher": false, "name": "win64/drop-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352418998661361", - "name": "Gravitas" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "5dchesswithmultiversetimetravel/5dchesswithmultiversetimetravel.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352421007736893", - "name": "5D Chess With Multiverse Time Travel" - }, - { - "executables": [{"is_launcher": false, "name": "cotl_demo_win/cult of the lamb.exe", "os": "win32"}], - "hook": true, - "id": "1124352422807097415", - "name": "Cult of the Lamb Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/finchgame.exe", "os": "win32"}], - "hook": true, - "id": "1124352424275099669", - "name": "What Remains of Edith Finch" - }, - { - "executables": [{"is_launcher": false, "name": "windows_content/streamer life simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124352425860542525", - "name": "Streamer Life Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "soulstone survivors/soulstone survivors.exe", "os": "win32"}], - "hook": true, - "id": "1124352427404054679", - "name": "Soulstone Survivors" - }, - { - "executables": [{"is_launcher": false, "name": "pineapple on pizza/pineapple on pizza.exe", "os": "win32"}], - "hook": true, - "id": "1124352429236957276", - "name": "Pineapple on pizza" - }, - { - "executables": [{"is_launcher": false, "name": "brainbread2/bb2.exe", "os": "win32"}], - "hook": true, - "id": "1124352430797246654", - "name": "BrainBread 2" - }, - { - "executables": [{"is_launcher": false, "name": "3tene/3tene.exe", "os": "win32"}], - "hook": true, - "id": "1124352433087332353", - "name": "3tene" - }, - { - "executables": [{"is_launcher": false, "name": "clue/cluedo.exe", "os": "win32"}], - "hook": true, - "id": "1124352434857332786", - "name": "Clue/Cluedo: The Classic Mystery Game" - }, - { - "executables": [{"is_launcher": false, "name": "theroomtwo/theroomtwo.exe", "os": "win32"}], - "hook": true, - "id": "1124352436442775552", - "name": "The Room Two" - }, - { - "executables": [ - {"is_launcher": false, "name": "dishonored_deathoftheoutsider/dishonored_do.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352438334402692", - "name": "Dishonored\u00ae: Death of the Outsider\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "vtol vr/vtolvr.exe", "os": "win32"}], - "hook": true, - "id": "1124352439307489440", - "name": "VTOL VR" - }, - { - "executables": [{"is_launcher": false, "name": "across the obelisk/acrosstheobelisk.exe", "os": "win32"}], - "hook": true, - "id": "1124352441127809135", - "name": "Across the Obelisk" - }, - { - "executables": [{"is_launcher": false, "name": "peglin/peglin.exe", "os": "win32"}], - "hook": true, - "id": "1124352443015254046", - "name": "Peglin" - }, - { - "executables": [{"is_launcher": false, "name": "god eater 3/ge3.exe", "os": "win32"}], - "hook": true, - "id": "1124352444709744871", - "name": "GOD EATER 3" - }, - { - "executables": [{"is_launcher": false, "name": "talespire/talespire.exe", "os": "win32"}], - "hook": true, - "id": "1124352446450389012", - "name": "TaleSpire" - }, - { - "executables": [{"is_launcher": false, "name": "with you/with you.exe", "os": "win32"}], - "hook": true, - "id": "1124352449872932994", - "name": "With You" - }, - { - "executables": [ - {"is_launcher": false, "name": "call of duty black ops cold war/blackopscoldwar.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352451844259940", - "name": "Call of Duty Black Ops Cold War" - }, - { - "executables": [{"is_launcher": false, "name": "little inferno beta/little inferno.exe", "os": "win32"}], - "hook": true, - "id": "1124352453597474846", - "name": "Little Inferno" - }, - { - "executables": [{"is_launcher": false, "name": "doom 64/doom64_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124352455396839484", - "name": "DOOM 64" - }, - { - "executables": [ - {"is_launcher": false, "name": "the mortuary assistant/the mortuary assistant demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352457145860106", - "name": "The Mortuary Assistant Demo" - }, - { - "executables": [{"is_launcher": false, "name": "nostale/nostaleclientx.exe", "os": "win32"}], - "hook": true, - "id": "1124352458781634652", - "name": "NosTale" - }, - { - "executables": [{"is_launcher": false, "name": "pulsarlostcolony/pulsar_lostcolony.exe", "os": "win32"}], - "hook": true, - "id": "1124352460694241333", - "name": "PULSAR: Lost Colony" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wewentback-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352462703308820", - "name": "We Went Back" - }, - { - "executables": [{"is_launcher": false, "name": "grapple/grapple.exe", "os": "win32"}], - "hook": true, - "id": "1124352464276176926", - "name": "Grapple" - }, - { - "executables": [{"is_launcher": false, "name": "prototype/prototypef.exe", "os": "win32"}], - "hook": true, - "id": "1124352466230726847", - "name": "Prototype" - }, - { - "executables": [{"is_launcher": false, "name": "lords mobile/lords mobile.exe", "os": "win32"}], - "hook": true, - "id": "1124352468223012984", - "name": "Lords Mobile" - }, - { - "executables": [{"is_launcher": false, "name": "freshwomen/freshwomen.exe", "os": "win32"}], - "hook": true, - "id": "1124352470425026600", - "name": "FreshWomen - Season 1" - }, - { - "executables": [{"is_launcher": false, "name": "ruined king/ruinedking.exe", "os": "win32"}], - "hook": true, - "id": "1124352472232775781", - "name": "Ruined King: A League of Legends Story\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "dome keeper/domekeeper.exe", "os": "win32"}], - "hook": true, - "id": "1124352474170540072", - "name": "Dome Keeper" - }, - { - "executables": [{"is_launcher": false, "name": "party hard/partyhardgame.exe", "os": "win32"}], - "hook": true, - "id": "1124352478641664030", - "name": "Party Hard" - }, - { - "executables": [{"is_launcher": false, "name": "videohorrorsociety/videohorrorsociety.exe", "os": "win32"}], - "hook": true, - "id": "1124352480545886268", - "name": "Video Horror Society" - }, - { - "executables": [{"is_launcher": false, "name": "win64/darksidersgenesis-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352482563330068", - "name": "Darksiders Genesis" - }, - { - "executables": [{"is_launcher": false, "name": "retrowave/retrowave.exe", "os": "win32"}], - "hook": true, - "id": "1124352484530466936", - "name": "Retrowave" - }, - { - "executables": [{"is_launcher": false, "name": "one step from eden/osfe.exe", "os": "win32"}], - "hook": true, - "id": "1124352486308855898", - "name": "One Step From Eden" - }, - { - "executables": [{"is_launcher": false, "name": "neon abyss/neonabyss.exe", "os": "win32"}], - "hook": true, - "id": "1124352487982379048", - "name": "Neon Abyss" - }, - { - "executables": [{"is_launcher": false, "name": "win64_bin/wargroove64.exe", "os": "win32"}], - "hook": true, - "id": "1124352489727213808", - "name": "Wargroove" - }, - { - "executables": [{"is_launcher": false, "name": "coloring game/game.exe", "os": "win32"}], - "hook": true, - "id": "1124352491283304478", - "name": "Coloring Game" - }, - { - "executables": [{"is_launcher": false, "name": "timbermanvs/timbermanvs.exe", "os": "win32"}], - "hook": true, - "id": "1124352493074264167", - "name": "Timberman VS" - }, - { - "executables": [{"is_launcher": false, "name": "madden nfl 22/madden22.exe", "os": "win32"}], - "hook": true, - "id": "1124352494710050836", - "name": "Madden NFL 22" - }, - { - "executables": [{"is_launcher": false, "name": "dungeons 3/dungeons3bin.exe", "os": "win32"}], - "hook": true, - "id": "1124352496798810172", - "name": "Dungeons 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/enderliliessteam-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352498761748480", - "name": "ENDER LILIES" - }, - { - "executables": [{"is_launcher": false, "name": "deadswitch 3/deadswitch3.exe", "os": "win32"}], - "hook": true, - "id": "1124352500561096724", - "name": "Deadswitch 3" - }, - { - "executables": [{"is_launcher": false, "name": "cube racer/cuberacer.exe", "os": "win32"}], - "hook": true, - "id": "1124352503748767845", - "name": "Cube Racer" - }, - { - "executables": [ - {"is_launcher": false, "name": "octodad dadliest catch/octodaddadliestcatch.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352505581682689", - "name": "Octodad: Dadliest Catch" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/pmkm.exe", "os": "win32"}], - "hook": true, - "id": "1124352507251011585", - "name": "Milk inside a bag of milk inside a bag of milk" - }, - { - "executables": [ - {"is_launcher": false, "name": "lurk in the dark prologue/lurk in the dark prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352509138452540", - "name": "Lurk in the Dark : Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "half dead 2/hd2.exe", "os": "win32"}], - "hook": true, - "id": "1124352510958784634", - "name": "HALF DEAD 2" - }, - { - "executables": [{"is_launcher": false, "name": "hue/hue.exe", "os": "win32"}], - "hook": true, - "id": "1124352512779108402", - "name": "Hue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sherlock.exe", "os": "win32"}], - "hook": true, - "id": "1124352514830127144", - "name": "Sherlock Holmes: The Devil's Daughter" - }, - { - "executables": [{"is_launcher": false, "name": "qwant/nsuns1.exe", "os": "win32"}], - "hook": true, - "id": "1124352516868550696", - "name": "NARUTO: Ultimate Ninja STORM" - }, - { - "executables": [{"is_launcher": false, "name": "library of ruina/libraryofruina.exe", "os": "win32"}], - "hook": true, - "id": "1124352518533697646", - "name": "Library Of Ruina" - }, - { - "executables": [{"is_launcher": false, "name": "burg/burg.exe", "os": "win32"}], - "hook": true, - "id": "1124352520131723494", - "name": "Burg" - }, - { - "executables": [{"is_launcher": false, "name": "a little to the left/a little to the left.exe", "os": "win32"}], - "hook": true, - "id": "1124352521633280020", - "name": "A Little to the Left" - }, - { - "executables": [{"is_launcher": false, "name": "metal slug 3/mslug3.exe", "os": "win32"}], - "hook": true, - "id": "1124352523273256970", - "name": "METAL SLUG 3" - }, - { - "executables": [{"is_launcher": false, "name": "media/yakuzalikeadragon.exe", "os": "win32"}], - "hook": true, - "id": "1124352524967759973", - "name": "Yakuza: Like a Dragon" - }, - { - "executables": [{"is_launcher": false, "name": "win64/agrou-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352526628700181", - "name": "Agrou" - }, - { - "executables": [{"is_launcher": false, "name": "max payne/maxpayne.exe", "os": "win32"}], - "hook": true, - "id": "1124352528415477770", - "name": "Max Payne" - }, - { - "executables": [{"is_launcher": false, "name": "action taimanin/actiontaimanin.exe", "os": "win32"}], - "hook": true, - "id": "1124352530516820008", - "name": "Action Taimanin" - }, - { - "executables": [{"is_launcher": false, "name": "rogue tower/rogue tower.exe", "os": "win32"}], - "hook": true, - "id": "1124352532475564212", - "name": "Rogue Tower" - }, - { - "executables": [{"is_launcher": false, "name": "win64/peekaboo-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352534438490193", - "name": "Peekaboo" - }, - { - "executables": [{"is_launcher": false, "name": "wwe 2k22/wwe2k22_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124352536170741902", - "name": "WWE 2K22" - }, - { - "executables": [{"is_launcher": false, "name": "project torque/projecttorque.exe", "os": "win32"}], - "hook": true, - "id": "1124352537923956797", - "name": "Project Torque" - }, - { - "executables": [{"is_launcher": false, "name": "x4 foundations/x4.exe", "os": "win32"}], - "hook": true, - "id": "1124352539580711073", - "name": "X4: Foundations" - }, - { - "executables": [{"is_launcher": false, "name": "parkitect/parkitect.exe", "os": "win32"}], - "hook": true, - "id": "1124352541426200638", - "name": "Parkitect" - }, - { - "executables": [{"is_launcher": false, "name": "app_digister/digimon story cs.exe", "os": "win32"}], - "hook": true, - "id": "1124352543619829892", - "name": "Digimon Story Cyber Sleuth: Complete Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "amanda the adventurer demo/amanda the adventurer.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352545536618576", - "name": "Amanda the Adventurer Demo" - }, - { - "executables": [{"is_launcher": false, "name": "anger foot demo/anger foot.exe", "os": "win32"}], - "hook": true, - "id": "1124352547226927215", - "name": "Anger Foot Demo" - }, - { - "executables": [{"is_launcher": false, "name": "theroomthree/theroomthree.exe", "os": "win32"}], - "hook": true, - "id": "1124352548837535784", - "name": "The Room Three" - }, - { - "executables": [{"is_launcher": false, "name": "beyond two souls/beyondtwosouls_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124352550511071232", - "name": "Beyond: Two Souls" - }, - { - "executables": [{"is_launcher": false, "name": "win64/obscure-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352552234926121", - "name": "Choo-Choo Charles" - }, - { - "executables": [{"is_launcher": false, "name": "half-life 1 source deathmatch/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124352554009120829", - "name": "Half-Life Deathmatch: Source" - }, - { - "executables": [{"is_launcher": false, "name": "win64/zerocaliber-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352555934302300", - "name": "Zero Caliber VR" - }, - { - "executables": [{"is_launcher": false, "name": "half-life 2 update/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124352557683331182", - "name": "Half-Life 2: Update" - }, - { - "executables": [{"is_launcher": false, "name": "steel division 2/steeldivision2.exe", "os": "win32"}], - "hook": true, - "id": "1124352559612702720", - "name": "Steel Division 2" - }, - { - "executables": [{"is_launcher": false, "name": "dueprocess/dueprocess.exe", "os": "win32"}], - "hook": true, - "id": "1124352561210740877", - "name": "Due Process" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fctclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352563270139958", - "name": "First Class Trouble" - }, - { - "executables": [ - {"is_launcher": false, "name": "curse of the dead gods/curse of the dead gods.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352565178552320", - "name": "Curse of the Dead Gods" - }, - { - "executables": [{"is_launcher": false, "name": "win64/anc-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352566835298384", - "name": "Ancestors Legacy" - }, - { - "executables": [{"is_launcher": false, "name": "age of wonders planetfall/aowpf.exe", "os": "win32"}], - "hook": true, - "id": "1124352568731119786", - "name": "Age of Wonders: Planetfall" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thequarry-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352570681479250", - "name": "The Quarry" - }, - { - "executables": [{"is_launcher": false, "name": "doorkickers2/doorkickers2.exe", "os": "win32"}], - "hook": true, - "id": "1124352572518580404", - "name": "Door Kickers 2" - }, - { - "executables": [{"is_launcher": false, "name": "changed/game.exe", "os": "win32"}], - "hook": true, - "id": "1124352574208880671", - "name": "Changed" - }, - { - "executables": [{"is_launcher": false, "name": "webbed/webbed.exe", "os": "win32"}], - "hook": true, - "id": "1124352576125681704", - "name": "Webbed" - }, - { - "executables": [{"is_launcher": false, "name": "happy room/happy room.exe", "os": "win32"}], - "hook": true, - "id": "1124352577983762512", - "name": "Happy Room" - }, - { - "executables": [{"is_launcher": false, "name": "chicken invaders universe/ciu.exe", "os": "win32"}], - "hook": true, - "id": "1124352579766333440", - "name": "Chicken Invaders Universe" - }, - { - "executables": [ - {"is_launcher": false, "name": "new epic scuffed bhop simulator 2023 (pog champ)/bhop.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352581611835442", - "name": "*NEW* EPIC SCUFFED BHOP SIMULATOR 2023 (POG CHAMP)" - }, - { - "executables": [{"is_launcher": false, "name": "deceiveinc/deceiveinc.exe", "os": "win32"}], - "hook": true, - "id": "1124352585340571730", - "name": "Deceive Inc." - }, - { - "executables": [{"is_launcher": false, "name": "undermine/undermine.exe", "os": "win32"}], - "hook": true, - "id": "1124352586972147892", - "name": "UnderMine" - }, - { - "executables": [{"is_launcher": false, "name": "stronghold/stronghold.exe", "os": "win32"}], - "hook": true, - "id": "1124352589136412862", - "name": "Stronghold HD" - }, - { - "executables": [{"is_launcher": false, "name": "wakaru/wakaru.exe", "os": "win32"}], - "hook": true, - "id": "1124352590742827099", - "name": "Wakaru ver. beta" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mechwarrior-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352592571547768", - "name": "MechWarrior 5: Mercenaries" - }, - { - "executables": [{"is_launcher": false, "name": "runproprun/run prop run.exe", "os": "win32"}], - "hook": true, - "id": "1124352594739998740", - "name": "Run Prop, Run!" - }, - { - "executables": [{"is_launcher": false, "name": "launcher/eg2.exe", "os": "win32"}], - "hook": true, - "id": "1124352596946206810", - "name": "Evil Genius 2" - }, - { - "executables": [{"is_launcher": false, "name": "tmnt/tmnt.exe", "os": "win32"}], - "hook": true, - "id": "1124352598506483793", - "name": "Teenage Mutant Ninja Turtles: Shredder's Revenge" - }, - { - "executables": [{"is_launcher": false, "name": "spacehaven/spacehaven.exe", "os": "win32"}], - "hook": true, - "id": "1124352600238735400", - "name": "Space Haven" - }, - { - "executables": [{"is_launcher": false, "name": "road to vostok demo/public_demo_1.exe", "os": "win32"}], - "hook": true, - "id": "1124352602138759241", - "name": "Road to Vostok Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "lego dc super-villains/lego dc super-villains_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352603996827709", - "name": "LEGO\u00ae DC Super-Villains" - }, - { - "executables": [{"is_launcher": false, "name": "dnftm/dnftm.exe", "os": "win32"}], - "hook": true, - "id": "1124352605699723344", - "name": "Do Not Feed the Monkeys" - }, - { - "executables": [{"is_launcher": false, "name": "doom 3 bfg edition/doom3bfg.exe", "os": "win32"}], - "hook": true, - "id": "1124352607218057286", - "name": "DOOM 3: BFG Edition" - }, - { - "executables": [{"is_launcher": false, "name": "game of thrones winter is coming/gotpc.exe", "os": "win32"}], - "hook": true, - "id": "1124352609042575381", - "name": "Game of Thrones Winter is Coming" - }, - { - "executables": [{"is_launcher": false, "name": "lego city undercover/legolcur_dx11.exe", "os": "win32"}], - "hook": true, - "id": "1124352610971959416", - "name": "LEGO\u00ae City Undercover" - }, - { - "executables": [{"is_launcher": false, "name": "enemyonboard/enemy-on-board.exe", "os": "win32"}], - "hook": true, - "id": "1124352612351881366", - "name": "Enemy On Board" - }, - { - "executables": [{"is_launcher": false, "name": "operation tango - demo/operation tango.exe", "os": "win32"}], - "hook": true, - "id": "1124352613983473684", - "name": "Operation: Tango - Demo" - }, - { - "executables": [{"is_launcher": false, "name": "vecter/vecter.exe", "os": "win32"}], - "hook": true, - "id": "1124352615556329622", - "name": "Vecter" - }, - { - "executables": [{"is_launcher": false, "name": "road 96/road 96.exe", "os": "win32"}], - "hook": true, - "id": "1124352617234059375", - "name": "Road 96" - }, - { - "executables": [ - {"is_launcher": false, "name": "the walking dead the telltale definitive series/wdc.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352619041800284", - "name": "The Walking Dead: The Telltale Definitive Series" - }, - { - "executables": [{"is_launcher": false, "name": "kuboom/build.exe", "os": "win32"}], - "hook": true, - "id": "1124352620702748852", - "name": "Kuboom" - }, - { - "executables": [{"is_launcher": false, "name": "madden nfl 23/madden23.exe", "os": "win32"}], - "hook": true, - "id": "1124352622372073633", - "name": "Madden NFL 23" - }, - { - "executables": [{"is_launcher": false, "name": "endzone - a world apart/endzone.exe", "os": "win32"}], - "hook": true, - "id": "1124352624813166702", - "name": "Endzone - A World Apart" - }, - { - "executables": [ - {"is_launcher": false, "name": "the mortuary assistant/the mortuary assistant.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352626478293071", - "name": "The Mortuary Assistant" - }, - { - "executables": [{"is_launcher": false, "name": "mushy/mushy.exe", "os": "win32"}], - "hook": true, - "id": "1124352628625788958", - "name": "Mushy" - }, - { - "executables": [ - {"is_launcher": false, "name": "slender - the arrival/slender - the arrival.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352630538387638", - "name": "Slender: The Arrival" - }, - { - "executables": [{"is_launcher": false, "name": "sonicfrontiers/sonicfrontiers.exe", "os": "win32"}], - "hook": true, - "id": "1124352632862027856", - "name": "Sonic Frontiers" - }, - { - "executables": [{"is_launcher": false, "name": "nova drift/novadrift.exe", "os": "win32"}], - "hook": true, - "id": "1124352634573312211", - "name": "Nova Drift" - }, - { - "executables": [{"is_launcher": false, "name": "gems of war/gemsofwar.exe", "os": "win32"}], - "hook": true, - "id": "1124352636204888095", - "name": "Gems of War" - }, - { - "executables": [{"is_launcher": false, "name": "company of heroes 3/reliccoh3.exe", "os": "win32"}], - "hook": true, - "id": "1124352637953921104", - "name": "Company of Heroes 3" - }, - { - "executables": [{"is_launcher": false, "name": "little misfortune/little misfortune.exe", "os": "win32"}], - "hook": true, - "id": "1124352639883296878", - "name": "Little Misfortune" - }, - { - "executables": [{"is_launcher": false, "name": "exanima/exanima.exe", "os": "win32"}], - "hook": true, - "id": "1124352643314237552", - "name": "Exanima" - }, - { - "executables": [{"is_launcher": false, "name": "win64/veiledexperts-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352645231030272", - "name": "VEILED EXPERTS" - }, - { - "executables": [{"is_launcher": false, "name": "win64/headsnatchers-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352647160414330", - "name": "Headsnatchers" - }, - { - "executables": [{"is_launcher": false, "name": "bustybiz/bustybiz.exe", "os": "win32"}], - "hook": true, - "id": "1124352648968155318", - "name": "BustyBiz" - }, - { - "executables": [{"is_launcher": false, "name": "sid meier's pirates!/pirates!.exe", "os": "win32"}], - "hook": true, - "id": "1124352650830434444", - "name": "Sid Meier's Pirates!" - }, - { - "executables": [{"is_launcher": false, "name": "64bit/niche.exe", "os": "win32"}], - "hook": true, - "id": "1124352652956942416", - "name": "Niche - a genetics survival game" - }, - { - "executables": [{"is_launcher": false, "name": "everhood/everhood.exe", "os": "win32"}], - "hook": true, - "id": "1124352654575939624", - "name": "Everhood" - }, - { - "executables": [{"is_launcher": false, "name": "reminiscence/reminiscence.exe", "os": "win32"}], - "hook": true, - "id": "1124352656543072327", - "name": "Reminiscence" - }, - { - "executables": [{"is_launcher": false, "name": "pipe/pipe.exe", "os": "win32"}], - "hook": true, - "id": "1124352658241769552", - "name": "PIPE" - }, - { - "executables": [ - {"is_launcher": false, "name": "nekopara - catboys paradise/nekopara - catboys paradise.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352659789463692", - "name": "NEKOPARA - Catboys Paradise" - }, - { - "executables": [{"is_launcher": false, "name": "total tank simulator/totaltanksim.exe", "os": "win32"}], - "hook": true, - "id": "1124352661337157712", - "name": "Total Tank Simulator" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "bendy and the ink machine demo/bendy and the ink machine - demo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352663228792993", - "name": "Bendy and the Ink Machine: Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "when the darkness comes/whenthedarknesscomes.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352665560830085", - "name": "When the Darkness comes" - }, - { - "executables": [{"is_launcher": false, "name": "gothic 3/gothic3.exe", "os": "win32"}], - "hook": true, - "id": "1124352667083354153", - "name": "Gothic 3" - }, - { - "executables": [{"is_launcher": false, "name": "sign of silence/sign of silence.exe", "os": "win32"}], - "hook": true, - "id": "1124352668937240596", - "name": "Sign of Silence" - }, - { - "executables": [{"is_launcher": false, "name": "onmyoji/client.exe", "os": "win32"}], - "hook": true, - "id": "1124352670296191088", - "name": "Onmyoji" - }, - { - "executables": [{"is_launcher": false, "name": "call of duty vanguard/vanguard.exe", "os": "win32"}], - "hook": true, - "id": "1124352672015863928", - "name": "Call of Duty Vanguard" - }, - { - "executables": [{"is_launcher": false, "name": "undisputed/undisputed.exe", "os": "win32"}], - "hook": true, - "id": "1124352673748094986", - "name": "Undisputed" - }, - { - "executables": [ - {"is_launcher": false, "name": "siren head's awakening/siren head awakening.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352675627159582", - "name": "Siren Head: Awakening" - }, - { - "executables": [{"is_launcher": false, "name": "win64/gwt.exe", "os": "win32"}], - "hook": true, - "id": "1124352677288095844", - "name": "Ghostwire: Tokyo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/prototypecity-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352678944854107", - "name": "Kingdoms Reborn" - }, - { - "executables": [{"is_launcher": false, "name": "x64/sor4.exe", "os": "win32"}], - "hook": true, - "id": "1124352680769368235", - "name": "Streets of Rage 4" - }, - { - "executables": [{"is_launcher": false, "name": "kao the kangaroo round 2/kao2.exe", "os": "win32"}], - "hook": true, - "id": "1124352682606481478", - "name": "Kao the Kangaroo: Round 2" - }, - { - "executables": [{"is_launcher": false, "name": "the perfect tower ii/the perfect tower ii.exe", "os": "win32"}], - "hook": true, - "id": "1124352684145787001", - "name": "The Perfect Tower II" - }, - { - "executables": [{"is_launcher": false, "name": "kind words/kind words.exe", "os": "win32"}], - "hook": true, - "id": "1124352685781561525", - "name": "Kind Words" - }, - { - "executables": [{"is_launcher": false, "name": "battle grounds iii/bg3.exe", "os": "win32"}], - "hook": true, - "id": "1124352687463485570", - "name": "Battle Grounds III" - }, - { - "executables": [{"is_launcher": false, "name": "catherineclassic/catherine.exe", "os": "win32"}], - "hook": true, - "id": "1124352689728401438", - "name": "Catherine Classic" - }, - { - "executables": [{"is_launcher": false, "name": "house of detention/house of detention.exe", "os": "win32"}], - "hook": true, - "id": "1124352692026888192", - "name": "House of Detention" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon painter studio/dps.exe", "os": "win32"}], - "hook": true, - "id": "1124352694002397234", - "name": "Dungeon Painter Studio" - }, - { - "executables": [{"is_launcher": false, "name": "zumbi blocks 2 open alpha/zumbiblocks2.exe", "os": "win32"}], - "hook": true, - "id": "1124352695759814766", - "name": "Zumbi Blocks 2 Open Alpha" - }, - { - "executables": [{"is_launcher": false, "name": "vagante/vagante.exe", "os": "win32"}], - "hook": true, - "id": "1124352697466900591", - "name": "Vagante" - }, - { - "executables": [{"is_launcher": false, "name": "warspear online mmorpg/warspear.exe", "os": "win32"}], - "hook": true, - "id": "1124352699194949652", - "name": "Warspear Online" - }, - { - "executables": [{"is_launcher": false, "name": "bin/griftlands.exe", "os": "win32"}], - "hook": true, - "id": "1124352700990115840", - "name": "Griftlands" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wtl-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352703074680900", - "name": "Will To Live Online" - }, - { - "executables": [{"is_launcher": false, "name": "win64/manofmedan-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352704882430002", - "name": "The Dark Pictures Anthology: Man of Medan" - }, - { - "executables": [{"is_launcher": false, "name": "project hospital/projecthospital.exe", "os": "win32"}], - "hook": true, - "id": "1124352707982016532", - "name": "Project Hospital" - }, - { - "executables": [{"is_launcher": false, "name": "cheeky chooks/cheekychooks.exe", "os": "win32"}], - "hook": true, - "id": "1124352709793960067", - "name": "Cheeky Chooks" - }, - { - "executables": [{"is_launcher": false, "name": "rekt crash test/rekt crash test.exe", "os": "win32"}], - "hook": true, - "id": "1124352711660417054", - "name": "Rekt: Crash Test" - }, - { - "executables": [{"is_launcher": false, "name": "katamari damacy reroll/katamari.exe", "os": "win32"}], - "hook": true, - "id": "1124352712155353229", - "name": "Katamari Damacy REROLL" - }, - { - "executables": [{"is_launcher": false, "name": "win64/atomicheart-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352713984061530", - "name": "Atomic Heart" - }, - { - "executables": [{"is_launcher": false, "name": "outpath first journey/outpath.exe", "os": "win32"}], - "hook": true, - "id": "1124352715976364166", - "name": "Outpath: First Journey" - }, - { - "executables": [{"is_launcher": false, "name": "gunz 2 the second duel/gunz2_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124352717494685747", - "name": "GunZ 2: The Second Duel" - }, - { - "executables": [{"is_launcher": false, "name": "drift86 v3/drift86 v3.exe", "os": "win32"}], - "hook": true, - "id": "1124352719176618125", - "name": "Drift86" - }, - { - "executables": [{"is_launcher": false, "name": "luck be a landlord/luck be a landlord.exe", "os": "win32"}], - "hook": true, - "id": "1124352721059856415", - "name": "Luck be a Landlord", - "overlay_methods": 1 - }, - { - "executables": [{"is_launcher": false, "name": "accident the pilot/accident the pilot.exe", "os": "win32"}], - "hook": true, - "id": "1124352722687250493", - "name": "Accident: The Pilot" - }, - { - "executables": [{"is_launcher": false, "name": "melty blood type lumina/mbtl.exe", "os": "win32"}], - "hook": true, - "id": "1124352724616622130", - "name": "MELTY BLOOD: TYPE LUMINA" - }, - { - "executables": [{"is_launcher": false, "name": "worms clan wars/wormsclanwars.exe", "os": "win32"}], - "hook": true, - "id": "1124352726436954172", - "name": "Worms Clan Wars" - }, - { - "executables": [{"is_launcher": false, "name": "poker championship/poker championship.exe", "os": "win32"}], - "hook": true, - "id": "1124352728240500887", - "name": "Poker Championship" - }, - { - "executables": [ - {"is_launcher": false, "name": "yu-gi-oh! legacy of the duelist link evolution/yugioh.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352730371211455", - "name": "Yu-Gi-Oh! Legacy of the Duelist : Link Evolution" - }, - { - "executables": [{"is_launcher": false, "name": "cloud meadow/cloud meadow.exe", "os": "win32"}], - "hook": true, - "id": "1124352732065714237", - "name": "Cloud Meadow" - }, - { - "executables": [{"is_launcher": false, "name": "railway empire/railwayempire.exe", "os": "win32"}], - "hook": true, - "id": "1124352733697290370", - "name": "Railway Empire" - }, - { - "executables": [{"is_launcher": false, "name": "lara croft and the temple of osiris/lc2.exe", "os": "win32"}], - "hook": true, - "id": "1124352735492456458", - "name": "Lara Croft and the Temple of Osiris" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hshsurvivor-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352737501523988", - "name": "Home Sweet Home Survive" - }, - { - "executables": [ - {"is_launcher": false, "name": "dissidia final fantasy nt free edition/dffnt.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352739724509325", - "name": "DISSIDIA FINAL FANTASY NT Free Edition" - }, - { - "executables": [{"is_launcher": false, "name": "league of maidens/lom.exe", "os": "win32"}], - "hook": true, - "id": "1124352741209288795", - "name": "League of Maidens" - }, - { - "executables": [{"is_launcher": false, "name": "pikuniku/pikuniku.exe", "os": "win32"}], - "hook": true, - "id": "1124352742962495588", - "name": "Pikuniku" - }, - { - "executables": [{"is_launcher": false, "name": "operation tango/operation tango.exe", "os": "win32"}], - "hook": true, - "id": "1124352744778641622", - "name": "Operation Tango" - }, - { - "executables": [{"is_launcher": false, "name": "sunlesssea/sunless sea.exe", "os": "win32"}], - "hook": true, - "id": "1124352746175352942", - "name": "Sunless Sea" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hi-fi-rush.exe", "os": "win32"}], - "hook": true, - "id": "1124352748004053074", - "name": "Hi-Fi RUSH" - }, - { - "executables": [{"is_launcher": false, "name": "scythe digital edition/scythe.exe", "os": "win32"}], - "hook": true, - "id": "1124352749816000563", - "name": "Scythe: Digital Edition" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "circle of sumo online rumble!/circle of sumo - online rumble.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352751619559515", - "name": "Circle of Sumo: Online Rumble!" - }, - { - "executables": [{"is_launcher": false, "name": "postal1/postal plus.exe", "os": "win32"}], - "hook": true, - "id": "1124352753100144640", - "name": "POSTAL" - }, - { - "executables": [{"is_launcher": false, "name": "win64/maneater-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352755058880542", - "name": "Maneater" - }, - { - "executables": [{"is_launcher": false, "name": "sniper3d/sniper3d.exe", "os": "win32"}], - "hook": true, - "id": "1124352756744998922", - "name": "Sniper 3D Assassin: Shoot to Kill" - }, - { - "executables": [{"is_launcher": false, "name": "contraband police/contrabandpolice.exe", "os": "win32"}], - "hook": true, - "id": "1124352758460465213", - "name": "Contraband Police" - }, - { - "executables": [{"is_launcher": false, "name": "60 parsecs!/60parsecs.exe", "os": "win32"}], - "hook": true, - "id": "1124352759857164380", - "name": "60 Parsecs!" - }, - { - "executables": [{"is_launcher": false, "name": "nine parchments/nineparchments_64bit.exe", "os": "win32"}], - "hook": true, - "id": "1124352761526505672", - "name": "Nine Parchments" - }, - { - "executables": [{"is_launcher": false, "name": "empires apart/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124352763028062298", - "name": "Empires Apart" - }, - { - "executables": [{"is_launcher": false, "name": "bin/samhd.exe", "os": "win32"}], - "hook": true, - "id": "1124352764949057616", - "name": "Serious Sam HD: The First Encounter" - }, - { - "executables": [{"is_launcher": false, "name": "naval action/client.exe", "os": "win32"}], - "hook": true, - "id": "1124352766521917552", - "name": "Naval Action" - }, - { - "executables": [{"is_launcher": false, "name": "rubberbandits/rubberbandits.exe", "os": "win32"}], - "hook": true, - "id": "1124352768212217906", - "name": "Rubber Bandits" - }, - { - "executables": [{"is_launcher": false, "name": "stein.world/stein.world.exe", "os": "win32"}], - "hook": true, - "id": "1124352769860587621", - "name": "stein.world" - }, - { - "executables": [{"is_launcher": false, "name": "opus magnum/lightning.exe", "os": "win32"}], - "hook": true, - "id": "1124352771492167731", - "name": "Opus Magnum" - }, - { - "executables": [{"is_launcher": false, "name": "wobbledogs_windows_64/wobbledogs.exe", "os": "win32"}], - "hook": true, - "id": "1124352773220216982", - "name": "Wobbledogs" - }, - { - "executables": [{"is_launcher": false, "name": "superbernieworld/superbernieworld.exe", "os": "win32"}], - "hook": true, - "id": "1124352774897942538", - "name": "Super Bernie World" - }, - { - "executables": [ - {"is_launcher": false, "name": "electrician simulator - first shock/electrician.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352776500170782", - "name": "Electrician Simulator - First Shock" - }, - { - "executables": [{"is_launcher": false, "name": "bin/strangebrigade.exe", "os": "win32"}], - "hook": true, - "id": "1124352778211438674", - "name": "Strange Brigade" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wiregame.exe", "os": "win32"}], - "hook": true, - "id": "1124352780249878598", - "name": "Beyond The Wire" - }, - { - "executables": [ - {"is_launcher": false, "name": "dark messiah might and magic single player/mm.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352781948563537", - "name": "Dark Messiah of Might & Magic Single Player" - }, - { - "executables": [{"is_launcher": false, "name": "coffee talk/coffeetalk.exe", "os": "win32"}], - "hook": true, - "id": "1124352783903117312", - "name": "Coffee Talk" - }, - { - "executables": [{"is_launcher": false, "name": "win64/doge_fight-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352785853464616", - "name": "DogeFight" - }, - { - "executables": [{"is_launcher": false, "name": "bin/fc3_blooddragon_d3d11.exe", "os": "win32"}], - "hook": true, - "id": "1124352787556356136", - "name": "Far Cry\u00ae 3 Blood Dragon" - }, - { - "executables": [{"is_launcher": false, "name": "omsi 2/omsi.exe", "os": "win32"}], - "hook": true, - "id": "1124352789280211025", - "name": "OMSI 2" - }, - { - "executables": [{"is_launcher": false, "name": "zardy's maze/zardy's maze.exe", "os": "win32"}], - "hook": true, - "id": "1124352791096348682", - "name": "Zardy's Maze" - }, - { - "executables": [{"is_launcher": false, "name": "come home/comehome.exe", "os": "win32"}], - "hook": true, - "id": "1124352793206075442", - "name": "Come Home" - }, - { - "executables": [{"is_launcher": false, "name": "entropy zero/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124352795303231560", - "name": "Entropy : Zero" - }, - { - "executables": [{"is_launcher": false, "name": "choushougi/choushougi.exe", "os": "win32"}], - "hook": true, - "id": "1124352797404573948", - "name": "\u8d85\u5c06\u68cb" - }, - { - "executables": [{"is_launcher": false, "name": "win64/darkfracture-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352799510118570", - "name": "Dark Fracture: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "d4x/d4x.exe", "os": "win32"}], - "hook": true, - "id": "1124352800936177755", - "name": "Dune: Spice Wars" - }, - { - "executables": [{"is_launcher": false, "name": "neon white/neon white.exe", "os": "win32"}], - "hook": true, - "id": "1124352802873954426", - "name": "Neon White" - }, - { - "executables": [{"is_launcher": false, "name": "win64/obf-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352804748800102", - "name": "Breeders of the Nephelym: Alpha" - }, - { - "executables": [{"is_launcher": false, "name": "bakso simulator/bakso simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124352806472663080", - "name": "Bakso Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "despotism 3k/despotism3k.exe", "os": "win32"}], - "hook": true, - "id": "1124352808313966592", - "name": "Despotism 3k" - }, - { - "executables": [{"is_launcher": false, "name": "our life beginnings and always/ourlife.exe", "os": "win32"}], - "hook": true, - "id": "1124352809760997476", - "name": "Our Life: Beginnings & Always" - }, - { - "executables": [{"is_launcher": false, "name": "win/alpaca stacka.exe", "os": "win32"}], - "hook": true, - "id": "1124352811560357960", - "name": "Alpaca Stacka" - }, - { - "executables": [{"is_launcher": false, "name": "against the storm/against the storm.exe", "os": "win32"}], - "hook": true, - "id": "1124352813355511848", - "name": "Against the Storm" - }, - { - "executables": [ - {"is_launcher": false, "name": "prison simulator prologue/prison simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352815003877386", - "name": "Prison Simulator: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "uebs2/uebs2.exe", "os": "win32"}], - "hook": true, - "id": "1124352816660631663", - "name": "Ultimate Epic Battle Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "rustangelo/rustangelo.exe", "os": "win32"}], - "hook": true, - "id": "1124352818556452914", - "name": "Rustangelo" - }, - { - "executables": [{"is_launcher": false, "name": "grim clicker/game.exe", "os": "win32"}], - "hook": true, - "id": "1124352820431310908", - "name": "Grim Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "idle skilling/idleskilling.exe", "os": "win32"}], - "hook": true, - "id": "1124352822054498405", - "name": "Idle Skilling" - }, - { - "executables": [{"is_launcher": false, "name": "liftoff/liftoff.exe", "os": "win32"}], - "hook": true, - "id": "1124352823786749993", - "name": "Liftoff" - }, - { - "executables": [{"is_launcher": false, "name": "win64/shootergameclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352825862926428", - "name": "Zombie Carnage 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "cafe owner simulator prologue/cafe owner simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352828006219876", - "name": "Cafe Owner Simulator: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "turbodismount/turbodismount.exe", "os": "win32"}], - "hook": true, - "id": "1124352829805580348", - "name": "Turbo Dismount" - }, - { - "executables": [{"is_launcher": false, "name": "burnoutpr/burnoutpr.exe", "os": "win32"}], - "hook": true, - "id": "1124352831495876618", - "name": "Burnout\u2122 Paradise Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "win32/alicemadnessreturns.exe", "os": "win32"}], - "hook": true, - "id": "1124352833412681818", - "name": "Alice: Madness Returns" - }, - { - "executables": [{"is_launcher": false, "name": "stronghold kingdoms/strongholdkingdoms.exe", "os": "win32"}], - "hook": true, - "id": "1124352835224612884", - "name": "Stronghold Kingdoms" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "car mechanic simulator 2021 demo/car mechanic simulator 2021 demo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352837267247135", - "name": "Car Mechanic Simulator 2021 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "secondextinction/secondextinction_f.exe", "os": "win32"}], - "hook": true, - "id": "1124352838802358342", - "name": "Second Extinction\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "welcome to the game ii/wttg2.exe", "os": "win32"}], - "hook": true, - "id": "1124352840756908123", - "name": "Welcome to the Game II" - }, - { - "executables": [ - {"is_launcher": false, "name": "stick it to the stickman demo/stick it to the stickman.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352842740809798", - "name": "Stick It to the Stickman Demo" - }, - { - "executables": [{"is_launcher": false, "name": "riseofindustry/rise of industry.exe", "os": "win32"}], - "hook": true, - "id": "1124352844435304448", - "name": "Rise of Industry" - }, - { - "executables": [ - {"is_launcher": false, "name": "blackjack championship/blackjack championship.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352846406635661", - "name": "Blackjack Championship" - }, - { - "executables": [{"is_launcher": false, "name": "x64/sam2017.exe", "os": "win32"}], - "hook": true, - "id": "1124352848000466964", - "name": "Serious Sam Fusion 2017 (beta)" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "turnip boy commits tax evasion/turnip boy commits tax evasion.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352849804013609", - "name": "Turnip Boy Commits Tax Evasion" - }, - { - "executables": [{"is_launcher": false, "name": "clownfield 2042/clownfield 2042.exe", "os": "win32"}], - "hook": true, - "id": "1124352851972472942", - "name": "Clownfield 2042" - }, - { - "executables": [{"is_launcher": false, "name": "rusty lake hotel/rustylakehotel.exe", "os": "win32"}], - "hook": true, - "id": "1124352854023491654", - "name": "Rusty Lake Hotel" - }, - { - "executables": [{"is_launcher": false, "name": "win64/frontiers-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352855919312967", - "name": "Torchlight III" - }, - { - "executables": [{"is_launcher": false, "name": "lights off!/lights off!.exe", "os": "win32"}], - "hook": true, - "id": "1124352857672536084", - "name": "Lights Off!" - }, - { - "executables": [{"is_launcher": false, "name": "moving out/movingout.exe", "os": "win32"}], - "hook": true, - "id": "1124352859417358507", - "name": "Moving Out" - }, - { - "executables": [{"is_launcher": false, "name": "shift happens/shift happens.exe", "os": "win32"}], - "hook": true, - "id": "1124352861069922334", - "name": "Shift Happens" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lightbearers.exe", "os": "win32"}], - "hook": true, - "id": "1124352862848303255", - "name": "Light Bearers" - }, - { - "executables": [{"is_launcher": false, "name": "resources/warfork_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124352864815435879", - "name": "Warfork" - }, - { - "executables": [{"is_launcher": false, "name": "the stanley parable demo/stanley.exe", "os": "win32"}], - "hook": true, - "id": "1124352866652532737", - "name": "The Stanley Parable Demo" - }, - { - "executables": [{"is_launcher": false, "name": "sdkbase_pvkii/pvkii.exe", "os": "win32"}], - "hook": true, - "id": "1124352868426731540", - "name": "Pirates, Vikings, & Knights II" - }, - { - "executables": [{"is_launcher": false, "name": "cloudpunk/cloudpunk.exe", "os": "win32"}], - "hook": true, - "id": "1124352870326743092", - "name": "Cloudpunk" - }, - { - "executables": [{"is_launcher": false, "name": "super totally ultimate dad showdown/studs.exe", "os": "win32"}], - "hook": true, - "id": "1124352872390348881", - "name": "Super Totally Ultimate Dad Showdown" - }, - { - "executables": [{"is_launcher": false, "name": "soccer manager 2020/sm20.exe", "os": "win32"}], - "hook": true, - "id": "1124352873971593216", - "name": "Soccer Manager 2020" - }, - { - "executables": [{"is_launcher": false, "name": "bonelab/bonelab_steam_windows64.exe", "os": "win32"}], - "hook": true, - "id": "1124352875779342346", - "name": "BONELAB" - }, - { - "executables": [{"is_launcher": false, "name": "donut county/donutcounty.exe", "os": "win32"}], - "hook": true, - "id": "1124352877381562479", - "name": "Donut County" - }, - { - "executables": [ - {"is_launcher": false, "name": "rollercoaster tycoon 3 complete edition/rct3.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352879193510030", - "name": "RollerCoaster Tycoon\u00ae 3: Complete Edition" - }, - { - "executables": [{"is_launcher": false, "name": "castlecrashersdemo/castle.exe", "os": "win32"}], - "hook": true, - "id": "1124352880967696465", - "name": "Castle Crashers Demo" - }, - { - "executables": [{"is_launcher": false, "name": "lewdapocalypse/lewdapocalypse.exe", "os": "win32"}], - "hook": true, - "id": "1124352882783825991", - "name": "LEWDAPOCALYPSE" - }, - { - "executables": [{"is_launcher": false, "name": "littlewood/littlewood.exe", "os": "win32"}], - "hook": true, - "id": "1124352884696432662", - "name": "Littlewood" - }, - { - "executables": [{"is_launcher": false, "name": "fireworks mania/fireworks mania.exe", "os": "win32"}], - "hook": true, - "id": "1124352886223155321", - "name": "Fireworks Mania" - }, - { - "executables": [{"is_launcher": false, "name": "woh/worldofhorror.exe", "os": "win32"}], - "hook": true, - "id": "1124352888014127124", - "name": "WORLD OF HORROR" - }, - { - "executables": [{"is_launcher": false, "name": "door kickers - action squad/actionsquad.exe", "os": "win32"}], - "hook": true, - "id": "1124352889834459286", - "name": "Door Kickers: Action Squad" - }, - { - "executables": [{"is_launcher": false, "name": "hellish quart/hellish quart.exe", "os": "win32"}], - "hook": true, - "id": "1124352891730276352", - "name": "Hellish Quart" - }, - { - "executables": [{"is_launcher": false, "name": "the planet crafter demo/planet crafter.exe", "os": "win32"}], - "hook": true, - "id": "1124352893437366322", - "name": "The Planet Crafter Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/beastsofbermuda.exe", "os": "win32"}], - "hook": true, - "id": "1124352894758567989", - "name": "Beasts of Bermuda" - }, - { - "executables": [{"is_launcher": false, "name": "tales of symphonia/tos.exe", "os": "win32"}], - "hook": true, - "id": "1124352897392595095", - "name": "Tales of Symphonia" - }, - { - "executables": [{"is_launcher": false, "name": "sparrowhime/game.exe", "os": "win32"}], - "hook": true, - "id": "1124352899686871243", - "name": "\u96c0\u59ec" - }, - { - "executables": [{"is_launcher": false, "name": "death and taxes/death and taxes.exe", "os": "win32"}], - "hook": true, - "id": "1124352901398151248", - "name": "Death and Taxes" - }, - { - "executables": [{"is_launcher": false, "name": "pinball fx3/pinball fx3.exe", "os": "win32"}], - "hook": true, - "id": "1124352903314952224", - "name": "Pinball FX3" - }, - { - "executables": [{"is_launcher": false, "name": "engine evolution 2021/engine evolution.exe", "os": "win32"}], - "hook": true, - "id": "1124352905110110278", - "name": "Engine Evolution 2021" - }, - { - "executables": [{"is_launcher": false, "name": "reventure/reventure.exe", "os": "win32"}], - "hook": true, - "id": "1124352908746567752", - "name": "Reventure" - }, - { - "executables": [{"is_launcher": false, "name": "heave ho/heaveho.exe", "os": "win32"}], - "hook": true, - "id": "1124352910428491776", - "name": "Heave Ho" - }, - { - "executables": [{"is_launcher": false, "name": "chaosgate/chaosgate.exe", "os": "win32"}], - "hook": true, - "id": "1124352912357867621", - "name": "Warhammer 40,000: Chaos Gate - Daemonhunters" - }, - { - "executables": [{"is_launcher": false, "name": "a short hike/ashorthike.exe", "os": "win32"}], - "hook": true, - "id": "1124352914157220000", - "name": "A Short Hike" - }, - { - "executables": [{"is_launcher": false, "name": "win64/projectwingman-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352915797196870", - "name": "Project Wingman" - }, - { - "executables": [{"is_launcher": false, "name": "mr.president!/mr.prez.exe", "os": "win32"}], - "hook": true, - "id": "1124352917965656105", - "name": "Mr.President!" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "placid plastic duck simulator/placid plastic duck simulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352920033443920", - "name": "Placid Plastic Duck Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "lucius/lucius.exe", "os": "win32"}], - "hook": true, - "id": "1124352921732141137", - "name": "Lucius" - }, - { - "executables": [{"is_launcher": false, "name": "engine evolution 2022/engine evolution.exe", "os": "win32"}], - "hook": true, - "id": "1124352923422441542", - "name": "Engine Evolution 2022" - }, - { - "executables": [{"is_launcher": false, "name": "win64/midnightsuns-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352924869472346", - "name": "Marvel's Midnight Suns" - }, - { - "executables": [{"is_launcher": false, "name": "win64/devolverland_expo-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352926719168604", - "name": "Devolverland Expo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thecallistoprotocol-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352928644350023", - "name": "The Callisto Protocol" - }, - { - "executables": [{"is_launcher": false, "name": "settlement survival/settlement survival.exe", "os": "win32"}], - "hook": true, - "id": "1124352930284327022", - "name": "Settlement Survival" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ride4-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352932066897960", - "name": "RIDE 4" - }, - { - "executables": [{"is_launcher": false, "name": "spiderheck/spiderheckapp.exe", "os": "win32"}], - "hook": true, - "id": "1124352933753016433", - "name": "SpiderHeck" - }, - { - "executables": [{"is_launcher": false, "name": "x64/sam4.exe", "os": "win32"}], - "hook": true, - "id": "1124352935334260856", - "name": "Serious Sam 4" - }, - { - "executables": [{"is_launcher": false, "name": "maurice in the predators nest/maurice.exe", "os": "win32"}], - "hook": true, - "id": "1124352938823921847", - "name": "Maurice: In The Predator's Nest" - }, - { - "executables": [ - {"is_launcher": false, "name": "them's fightin' herds/them's fightin' herds.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352940551979099", - "name": "Them's Fightin' Herds" - }, - { - "executables": [{"is_launcher": false, "name": "island saver/moneybox.exe", "os": "win32"}], - "hook": true, - "id": "1124352942561054760", - "name": "Island Saver" - }, - { - "executables": [{"is_launcher": false, "name": "sprocket/sprocket.exe", "os": "win32"}], - "hook": true, - "id": "1124352944389763082", - "name": "Sprocket" - }, - { - "executables": [{"is_launcher": false, "name": "space pirate trainer vr/spacepiratevr.exe", "os": "win32"}], - "hook": true, - "id": "1124352946281398372", - "name": "Space Pirate Trainer" - }, - { - "executables": [{"is_launcher": false, "name": "jelly brawl classic/jelly brawl.exe", "os": "win32"}], - "hook": true, - "id": "1124352948105916548", - "name": "Jelly Brawl: Classic" - }, - { - "executables": [{"is_launcher": false, "name": "win64/siren-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352949800423474", - "name": "Life is Strange: True Colors" - }, - { - "executables": [{"is_launcher": false, "name": "pga tour 2k23/pgatour2k23.exe", "os": "win32"}], - "hook": true, - "id": "1124352951557828628", - "name": "PGA TOUR 2K23" - }, - { - "executables": [{"is_launcher": false, "name": "win64/intotheradius-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352953101340821", - "name": "Into the Radius VR" - }, - { - "executables": [ - {"is_launcher": false, "name": "the elder scrolls daggerfall/dosbox-0.74/dosbox.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352954720333935", - "name": "The Elder Scrolls II: Daggerfall" - }, - { - "executables": [{"is_launcher": false, "name": "pokerstars vr/pokerstarsvr.exe", "os": "win32"}], - "hook": true, - "id": "1124352956519698482", - "name": "PokerStars VR" - }, - { - "executables": [{"is_launcher": false, "name": "kingdoms of amalur re-reckoning/koa.exe", "os": "win32"}], - "hook": true, - "id": "1124352958067392643", - "name": "Kingdoms of Amalur: Re-Reckoning" - }, - { - "executables": [ - {"is_launcher": false, "name": "just cause 2 - multiplayer mod/crashsender1301.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352959921270975", - "name": "Just Cause 2: Multiplayer Mod" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mg3-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352961812910210", - "name": "Seen" - }, - { - "executables": [{"is_launcher": false, "name": "peglin demo/peglin.exe", "os": "win32"}], - "hook": true, - "id": "1124352963679367269", - "name": "Peglin Demo" - }, - { - "executables": [{"is_launcher": false, "name": "zero sievert/zero sievert.exe", "os": "win32"}], - "hook": true, - "id": "1124352965172547685", - "name": "ZERO Sievert" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "animation throwdown the quest for cards/animationthrowdown.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124352966766375004", - "name": "Animation Throwdown: The Quest for Cards" - }, - { - "executables": [{"is_launcher": false, "name": "win64/poolnationfx.exe", "os": "win32"}], - "hook": true, - "id": "1124352968548962405", - "name": "Pool Nation FX" - }, - { - "executables": [{"is_launcher": false, "name": "gloria victis/gv.exe", "os": "win32"}], - "hook": true, - "id": "1124352970285400205", - "name": "Gloria Victis" - }, - { - "executables": [{"is_launcher": false, "name": "client/edenrising.exe", "os": "win32"}], - "hook": true, - "id": "1124352972239949864", - "name": "Eden Rising" - }, - { - "executables": [{"is_launcher": false, "name": "win64/roboquest-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352974228045914", - "name": "Roboquest" - }, - { - "executables": [{"is_launcher": false, "name": "survived by/survivedby.exe", "os": "win32"}], - "hook": true, - "id": "1124352975926743182", - "name": "Survived By" - }, - { - "executables": [{"is_launcher": false, "name": "qwant2/nsuns2.exe", "os": "win32"}], - "hook": true, - "id": "1124352977692536852", - "name": "NARUTO SHIPPUDEN: Ultimate Ninja STORM 2" - }, - { - "executables": [{"is_launcher": false, "name": "launcher/sniperelite5.exe", "os": "win32"}], - "hook": true, - "id": "1124352979449958511", - "name": "Sniper Elite 5" - }, - { - "executables": [ - {"is_launcher": false, "name": "soulstone survivors prologue/soulstone survivors.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352981203173507", - "name": "Soulstone Survivors: Prologue" - }, - { - "executables": [ - {"is_launcher": false, "name": "rebel inc escalation/rebel inc. escalation.exe", "os": "win32"} - ], - "hook": true, - "id": "1124352982922833970", - "name": "Rebel Inc: Escalation" - }, - { - "executables": [{"is_launcher": false, "name": "win64/omfgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352985334567012", - "name": "OMFG: One Million Fatal Guns" - }, - { - "executables": [{"is_launcher": false, "name": "void bastards/void bastards.exe", "os": "win32"}], - "hook": true, - "id": "1124352987150692393", - "name": "Void Bastards" - }, - { - "executables": [{"is_launcher": false, "name": "win64/smalland-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352988786479175", - "name": "Smalland: Survive the Wilds" - }, - { - "executables": [{"is_launcher": false, "name": "impact point/impact point.exe", "os": "win32"}], - "hook": true, - "id": "1124352990724243527", - "name": "Impact Point" - }, - { - "executables": [{"is_launcher": false, "name": "need for speed(tm) rivals/nfs14.exe", "os": "win32"}], - "hook": true, - "id": "1124352992297111622", - "name": "Need for Speed\u2122 Rivals" - }, - { - "executables": [{"is_launcher": false, "name": "west hunt/west hunt.exe", "os": "win32"}], - "hook": true, - "id": "1124352993970634922", - "name": "West Hunt" - }, - { - "executables": [{"is_launcher": false, "name": "win64/projectcoral-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352995887435876", - "name": "Coral Island" - }, - { - "executables": [{"is_launcher": false, "name": "win64/deadpoly-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124352997573537802", - "name": "DeadPoly" - }, - { - "executables": [{"is_launcher": false, "name": "one piece world seeker/opws.exe", "os": "win32"}], - "hook": true, - "id": "1124352999351926805", - "name": "ONE PIECE World Seeker" - }, - { - "executables": [{"is_launcher": false, "name": "wingspan/wingspan.exe", "os": "win32"}], - "hook": true, - "id": "1124353001054810273", - "name": "Wingspan" - }, - { - "executables": [{"is_launcher": false, "name": "wolfquest anniversary edition/wolfquestae.exe", "os": "win32"}], - "hook": true, - "id": "1124353003357491292", - "name": "WolfQuest: Anniversary Edition" - }, - { - "executables": [{"is_launcher": false, "name": "strange horticulture/strange horticulture.exe", "os": "win32"}], - "hook": true, - "id": "1124353005169426482", - "name": "Strange Horticulture" - }, - { - "executables": [{"is_launcher": false, "name": "thecoingame/thecoingame.exe", "os": "win32"}], - "hook": true, - "id": "1124353007144939591", - "name": "The Coin Game" - }, - { - "executables": [ - {"is_launcher": false, "name": "madness project nexus 2/madness project nexus.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353008852025454", - "name": "MADNESS: Project Nexus" - }, - { - "executables": [{"is_launcher": false, "name": "mr. hopp's playhouse/mrhoppsplayhouse1.exe", "os": "win32"}], - "hook": true, - "id": "1124353010743660634", - "name": "Mr. Hopp's Playhouse" - }, - { - "executables": [{"is_launcher": false, "name": "entropyzero2/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124353012530426017", - "name": "Entropy : Zero 2" - }, - { - "executables": [{"is_launcher": false, "name": "factory town/factory town.exe", "os": "win32"}], - "hook": true, - "id": "1124353014405283872", - "name": "Factory Town" - }, - { - "executables": [{"is_launcher": false, "name": "pistol whip/pistol whip.exe", "os": "win32"}], - "hook": true, - "id": "1124353016087203840", - "name": "Pistol Whip" - }, - { - "executables": [{"is_launcher": false, "name": "sniper ghost warrior/sniper_x86.exe", "os": "win32"}], - "hook": true, - "id": "1124353018427617421", - "name": "Sniper: Ghost Warrior" - }, - { - "executables": [{"is_launcher": false, "name": "win64/brightmemory_ep1-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353020113735711", - "name": "Bright Memory" - }, - { - "executables": [{"is_launcher": false, "name": "win64/subverse-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353022017941634", - "name": "Subverse" - }, - { - "executables": [{"is_launcher": false, "name": "win64/boe-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353023855050793", - "name": "Builders of Egypt: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "kerbal space program 2/ksp2_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124353025650217030", - "name": "Kerbal Space Program 2" - }, - { - "executables": [{"is_launcher": false, "name": "chilloutvr/chilloutvr.exe", "os": "win32"}], - "hook": true, - "id": "1124353027294375947", - "name": "ChilloutVR" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/kidnappedgirl.exe", "os": "win32"}], - "hook": true, - "id": "1124353028858859560", - "name": "Kidnapped Girl" - }, - { - "executables": [{"is_launcher": false, "name": "minds eyes/mindseyeslaunch.exe", "os": "win32"}], - "hook": true, - "id": "1124353030704345110", - "name": "Minds Eyes" - }, - { - "executables": [{"is_launcher": false, "name": "pathologic/pathologic.exe", "os": "win32"}], - "hook": true, - "id": "1124353032528871474", - "name": "Pathologic 2" - }, - { - "executables": [{"is_launcher": false, "name": "common/tomb raider (i)/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124353034336612382", - "name": "Tomb Raider I" - }, - { - "executables": [{"is_launcher": false, "name": "beyond the sword/civ4beyondsword.exe", "os": "win32"}], - "hook": true, - "id": "1124353036341497979", - "name": "Sid Meier's Civilization IV: Beyond the Sword" - }, - {"hook": true, "id": "1124353038035992649", "name": "Badlanders"}, - { - "executables": [{"is_launcher": false, "name": "driver booster 5 for steam/driverbooster.exe", "os": "win32"}], - "hook": true, - "id": "1124353040137342996", - "name": "Driver Booster 5 for Steam" - }, - { - "executables": [{"is_launcher": false, "name": "the last spell/the last spell.exe", "os": "win32"}], - "hook": true, - "id": "1124353041454350458", - "name": "The Last Spell" - }, - { - "executables": [{"is_launcher": false, "name": "112 operator/operator 112.exe", "os": "win32"}], - "hook": true, - "id": "1124353043350179910", - "name": "112 Operator" - }, - { - "executables": [{"is_launcher": false, "name": "champions online/champions online.exe", "os": "win32"}], - "hook": true, - "id": "1124353045044674560", - "name": "Champions Online" - }, - { - "executables": [ - {"is_launcher": false, "name": "ultimate general civil war/ultimate general civil war.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353046726586500", - "name": "Ultimate General: Civil War" - }, - { - "executables": [{"is_launcher": false, "name": "brotatodemo/brotatodemo.exe", "os": "win32"}], - "hook": true, - "id": "1124353048278487072", - "name": "Brotato Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "max payne 2 the fall of max payne/maxpayne2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353050086227968", - "name": "Max Payne 2: The Fall of Max Payne" - }, - { - "executables": [{"is_launcher": false, "name": "vanquish/vanquish.exe", "os": "win32"}], - "hook": true, - "id": "1124353051797499934", - "name": "Vanquish" - }, - { - "executables": [{"is_launcher": false, "name": "retail/mk11_dx12.exe", "os": "win32"}], - "hook": true, - "id": "1124353053970157578", - "name": "Mortal Kombat 11" - }, - { - "executables": [{"is_launcher": false, "name": "win64/stayclose-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353055865978880", - "name": "Stay Close" - }, - { - "executables": [{"is_launcher": false, "name": "melatonin/melatonin.exe", "os": "win32"}], - "hook": true, - "id": "1124353057489178766", - "name": "Melatonin" - }, - { - "executables": [{"is_launcher": false, "name": "sheltered/sheltered.exe", "os": "win32"}], - "hook": true, - "id": "1124353059678597280", - "name": "Sheltered" - }, - { - "executables": [{"is_launcher": false, "name": "win64/deathlystillnessgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353061364715702", - "name": "\u6b7b\u5bc2\uff08DeathlyStillness\uff09" - }, - { - "executables": [{"is_launcher": false, "name": "becastled/becastled.exe", "os": "win32"}], - "hook": true, - "id": "1124353063218589817", - "name": "Becastled" - }, - { - "executables": [ - {"is_launcher": false, "name": "shotgun king the final checkmate/shotgun_king.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353065093451786", - "name": "Shotgun King: The Final Checkmate" - }, - { - "executables": [{"is_launcher": false, "name": "before your eyes/before your eyes.exe", "os": "win32"}], - "hook": true, - "id": "1124353066704056330", - "name": "Before Your Eyes" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thirdpersonbp-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353068369199194", - "name": "Apex Aim Trainer" - }, - { - "executables": [{"is_launcher": false, "name": "win64/perfectheist2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353070206308453", - "name": "Perfect Heist 2" - }, - { - "executables": [{"is_launcher": false, "name": "hobo tough life/hoborpg.exe", "os": "win32"}], - "hook": true, - "id": "1124353071921770627", - "name": "Hobo: Tough Life" - }, - { - "executables": [{"is_launcher": false, "name": "needfordrive/needfordrive.exe", "os": "win32"}], - "hook": true, - "id": "1124353073641439293", - "name": "Need for Drive - Open World Multiplayer Racing" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hotwheels-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353075986059335", - "name": "HOT WHEELS UNLEASHED\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "data/gameguard.des", "os": "win32"}], - "hook": true, - "id": "1124353077701525504", - "name": "Elsword Free-to-Play" - }, - { - "executables": [{"is_launcher": false, "name": "kingdom rush/kingdom rush.exe", "os": "win32"}], - "hook": true, - "id": "1124353079500886165", - "name": "Kingdom Rush" - }, - { - "executables": [{"is_launcher": false, "name": "the pirate caribbean hunt/thepirate.exe", "os": "win32"}], - "hook": true, - "id": "1124353081212158173", - "name": "The Pirate: Caribbean Hunt" - }, - { - "executables": [ - {"is_launcher": false, "name": "danganronpa another episode ultra despair girls/game.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353083032490014", - "name": "Danganronpa Another Episode: Ultra Despair Girls" - }, - { - "executables": [{"is_launcher": false, "name": "win64/manorlords-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353084886364271", - "name": "Manor Lords Demo" - }, - { - "executables": [{"is_launcher": false, "name": "dysmantle/dysmantle.exe", "os": "win32"}], - "hook": true, - "id": "1124353086811553853", - "name": "DYSMANTLE" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fg-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353088619294791", - "name": "Firefighting Simulator - The Squad" - }, - { - "executables": [{"is_launcher": false, "name": "deadrising4/deadrising4.exe", "os": "win32"}], - "hook": true, - "id": "1124353090435432530", - "name": "Dead Rising 4" - }, - { - "executables": [{"is_launcher": false, "name": "piratopia/piratopia.exe", "os": "win32"}], - "hook": true, - "id": "1124353092998156439", - "name": "Piratopia" - }, - { - "executables": [{"is_launcher": false, "name": "fun with ragdolls/fun with ragdolls.exe", "os": "win32"}], - "hook": true, - "id": "1124353094499713146", - "name": "Fun with Ragdolls: The Game" - }, - { - "executables": [{"is_launcher": false, "name": "my time at sandrock/sandrock.exe", "os": "win32"}], - "hook": true, - "id": "1124353096357793873", - "name": "My Time at Sandrock" - }, - { - "executables": [{"is_launcher": false, "name": "assassin's creed iii remastered/aciii.exe", "os": "win32"}], - "hook": true, - "id": "1124353098417193031", - "name": "Assassin's Creed III Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "monbazou/mon bazou.exe", "os": "win32"}], - "hook": true, - "id": "1124353102858956800", - "name": "Mon Bazou" - }, - { - "executables": [{"is_launcher": false, "name": "fate/fate.exe", "os": "win32"}], - "hook": true, - "id": "1124353106361204807", - "name": "FATE" - }, - { - "executables": [{"is_launcher": false, "name": "dead rising/deadrising.exe", "os": "win32"}], - "hook": true, - "id": "1124353108483518634", - "name": "Dead Rising" - }, - { - "executables": [{"is_launcher": false, "name": "democracy 4/democracy4.exe", "os": "win32"}], - "hook": true, - "id": "1124353110568095785", - "name": "Democracy 4" - }, - { - "executables": [{"is_launcher": false, "name": "software inc/software inc.exe", "os": "win32"}], - "hook": true, - "id": "1124353112627494942", - "name": "Software Inc." - }, - { - "executables": [{"is_launcher": false, "name": "piggy hunt/piggy-hunt.exe", "os": "win32"}], - "hook": true, - "id": "1124353114305212526", - "name": "PIGGY: Hunt" - }, - { - "executables": [{"is_launcher": false, "name": "fluid/pce2.exe", "os": "win32"}], - "hook": true, - "id": "1124353116129738823", - "name": "PAC-MAN\u2122 CHAMPIONSHIP EDITION 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "overcooked! all you can eat/overcooked all you can eat.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353117954257036", - "name": "Overcooked! All You Can Eat" - }, - { - "executables": [{"is_launcher": false, "name": "the messenger/themessenger.exe", "os": "win32"}], - "hook": true, - "id": "1124353120063996044", - "name": "The Messenger" - }, - { - "executables": [{"is_launcher": false, "name": "spiral clicker/spiral clicker.exe", "os": "win32"}], - "hook": true, - "id": "1124353121922068531", - "name": "Spiral Clicker" - }, - { - "executables": [ - {"is_launcher": false, "name": "shotgun king the final checkmate demo/shotgun_king_demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353123578822769", - "name": "Shotgun King: The Final Checkmate Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/gothamknights.exe", "os": "win32"}], - "hook": true, - "id": "1124353125063602277", - "name": "Gotham Knights" - }, - { - "executables": [{"is_launcher": false, "name": "win64/boltgun-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353126854574250", - "name": "Warhammer 40,000: Boltgun" - }, - { - "executables": [ - {"is_launcher": false, "name": "tales of vesperia definitive edition/tov_de.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353128821698660", - "name": "Tales of Vesperia: Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "onlycans/onlycans thirst date.exe", "os": "win32"}], - "hook": true, - "id": "1124353130612674682", - "name": "OnlyCans: Thirst Date" - }, - { - "executables": [{"is_launcher": false, "name": "zup! f/zup! f.exe", "os": "win32"}], - "hook": true, - "id": "1124353132479131678", - "name": "Zup! F" - }, - { - "executables": [{"is_launcher": false, "name": "freestylefootball r/fsefootball.exe", "os": "win32"}], - "hook": true, - "id": "1124353134144278619", - "name": "FreestyleFootball R" - }, - { - "executables": [{"is_launcher": false, "name": "element td 2/element td 2.exe", "os": "win32"}], - "hook": true, - "id": "1124353135889100840", - "name": "Element TD 2" - }, - { - "executables": [{"is_launcher": false, "name": "hand of fate 2/hand of fate 2.exe", "os": "win32"}], - "hook": true, - "id": "1124353137625546762", - "name": "Hand of Fate 2" - }, - { - "executables": [{"is_launcher": false, "name": "birdgut/birdgut.exe", "os": "win32"}], - "hook": true, - "id": "1124353139282292867", - "name": "BirdGut" - }, - { - "executables": [{"is_launcher": false, "name": "cruelty squad/crueltysquad.exe", "os": "win32"}], - "hook": true, - "id": "1124353141228454028", - "name": "Cruelty Squad" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "dictatorsnopeacecountryballs/dictatorsnopeacecountryballs.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353143006842950", - "name": "Dictators:No Peace Countryballs" - }, - { - "executables": [{"is_launcher": false, "name": "rage 2/rage2.exe", "os": "win32"}], - "hook": true, - "id": "1124353144688750612", - "name": "RAGE 2" - }, - { - "executables": [{"is_launcher": false, "name": "airline manager 4/airline manager 4.exe", "os": "win32"}], - "hook": true, - "id": "1124353146441957467", - "name": "Airline Manager 4" - }, - { - "executables": [{"is_launcher": false, "name": "metal slug x/mslugx.exe", "os": "win32"}], - "hook": true, - "id": "1124353150107795507", - "name": "METAL SLUG X" - }, - { - "executables": [{"is_launcher": false, "name": "bin/samhd_tse.exe", "os": "win32"}], - "hook": true, - "id": "1124353151642906705", - "name": "Serious Sam HD: The Second Encounter" - }, - { - "executables": [{"is_launcher": false, "name": "win32/refunct-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353153291276422", - "name": "Refunct" - }, - { - "executables": [{"is_launcher": false, "name": "bubble people/bubble people.exe", "os": "win32"}], - "hook": true, - "id": "1124353154935439370", - "name": "Bubble People" - }, - { - "executables": [{"is_launcher": false, "name": "kindergarten 2/kindergarten2.exe", "os": "win32"}], - "hook": true, - "id": "1124353156659294299", - "name": "Kindergarten 2" - }, - { - "executables": [{"is_launcher": false, "name": "snkrx/snkrx.exe", "os": "win32"}], - "hook": true, - "id": "1124353158467047467", - "name": "SNKRX" - }, - { - "executables": [{"is_launcher": false, "name": "beat cop/beatcop.exe", "os": "win32"}], - "hook": true, - "id": "1124353160442556487", - "name": "Beat Cop" - }, - { - "executables": [{"is_launcher": false, "name": "landfall archives/landfallarchives.exe", "os": "win32"}], - "hook": true, - "id": "1124353162174812290", - "name": "Landfall Archives" - }, - { - "executables": [{"is_launcher": false, "name": "click to ten/click to ten.exe", "os": "win32"}], - "hook": true, - "id": "1124353163680563381", - "name": "click to ten" - }, - { - "executables": [{"is_launcher": false, "name": "neosvr/neos.exe", "os": "win32"}], - "hook": true, - "id": "1124353165408620624", - "name": "Neos VR" - }, - { - "executables": [{"is_launcher": false, "name": "no time to relax/no time to relax.exe", "os": "win32"}], - "hook": true, - "id": "1124353167111503880", - "name": "No Time to Relax" - }, - { - "executables": [{"is_launcher": false, "name": "yet another zombie defense hd/yazd_hd.exe", "os": "win32"}], - "hook": true, - "id": "1124353169145745448", - "name": "Yet Another Zombie Defense HD" - }, - { - "executables": [{"is_launcher": false, "name": "caves of qud/coq.exe", "os": "win32"}], - "hook": true, - "id": "1124353170890571796", - "name": "Caves of Qud" - }, - { - "executables": [{"is_launcher": false, "name": "rickandmortyvr/rickandmortyvr.exe", "os": "win32"}], - "hook": true, - "id": "1124353173105160202", - "name": "Rick and Morty: Virtual Rick-ality" - }, - { - "executables": [{"is_launcher": false, "name": "post void/post void.exe", "os": "win32"}], - "hook": true, - "id": "1124353174845804604", - "name": "Post Void" - }, - { - "executables": [{"is_launcher": false, "name": "win64/toaa-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353176666124388", - "name": "Undawn" - }, - { - "executables": [{"is_launcher": false, "name": "legend of keepers/legendofkeepers.exe", "os": "win32"}], - "hook": true, - "id": "1124353178276741170", - "name": "Legend of Keepers" - }, - { - "executables": [{"is_launcher": false, "name": "win64/solarlandclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353180130619402", - "name": "Farlight 84" - }, - { - "executables": [{"is_launcher": false, "name": "win64/stormgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353181963534576", - "name": "Bulletstorm: Full Clip Edition" - }, - { - "executables": [{"is_launcher": false, "name": "the ship/ship.exe", "os": "win32"}], - "hook": true, - "id": "1124353183670612109", - "name": "The Ship" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/pmkm2.exe", "os": "win32"}], - "hook": true, - "id": "1124353185335758948", - "name": "Milk outside a bag of milk outside a bag of milk" - }, - { - "executables": [{"is_launcher": false, "name": "orc massage/orcmassage.exe", "os": "win32"}], - "hook": true, - "id": "1124353186753429584", - "name": "Orc Massage" - }, - { - "executables": [{"is_launcher": false, "name": "metal slug/mslug1.exe", "os": "win32"}], - "hook": true, - "id": "1124353188338880553", - "name": "METAL SLUG" - }, - { - "executables": [{"is_launcher": false, "name": "the legend of bum-bo/the legend of bum-bo.exe", "os": "win32"}], - "hook": true, - "id": "1124353190444417064", - "name": "The Legend of Bum-Bo" - }, - { - "executables": [{"is_launcher": false, "name": "citywars tower defense/citywarssavage.exe", "os": "win32"}], - "hook": true, - "id": "1124353192327663840", - "name": "Citywars Tower Defense" - }, - { - "executables": [{"is_launcher": false, "name": "come with me/comewithme.exe", "os": "win32"}], - "hook": true, - "id": "1124353194303176735", - "name": "Come with Me" - }, - { - "executables": [{"is_launcher": false, "name": "coloring game 2/game.exe", "os": "win32"}], - "hook": true, - "id": "1124353195959930910", - "name": "Coloring Game 2" - }, - { - "executables": [{"is_launcher": false, "name": "age of conquest iv/app_main.exe", "os": "win32"}], - "hook": true, - "id": "1124353197423738951", - "name": "Age of Conquest IV" - }, - { - "executables": [{"is_launcher": false, "name": "little witch nobeta/littlewitchnobeta.exe", "os": "win32"}], - "hook": true, - "id": "1124353199252451479", - "name": "Little Witch Nobeta" - }, - { - "executables": [{"is_launcher": false, "name": "wolfenstein enemy territory/et.exe", "os": "win32"}], - "hook": true, - "id": "1124353201248944301", - "name": "Wolfenstein: Enemy Territory" - }, - { - "executables": [{"is_launcher": false, "name": "killer instinct/killerinstinctx64_r.exe", "os": "win32"}], - "hook": true, - "id": "1124353203232854056", - "name": "Killer Instinct" - }, - { - "executables": [{"is_launcher": false, "name": "cat quest/cat quest.exe", "os": "win32"}], - "hook": true, - "id": "1124353205464215664", - "name": "Cat Quest" - }, - { - "executables": [{"is_launcher": false, "name": "win64/arid-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353207263576074", - "name": "Arid" - }, - { - "executables": [{"is_launcher": false, "name": "win32/surgeonvr.exe", "os": "win32"}], - "hook": true, - "id": "1124353209205542942", - "name": "Surgeon Simulator VR: Meet The Medic" - }, - { - "executables": [{"is_launcher": false, "name": "dead or alive 6/doa6.exe", "os": "win32"}], - "hook": true, - "id": "1124353211097170002", - "name": "DEAD OR ALIVE 6" - }, - { - "executables": [{"is_launcher": false, "name": "10 minutes till dawn/minutestilldawn.exe", "os": "win32"}], - "hook": true, - "id": "1124353212829413446", - "name": "10 Minutes Till Dawn" - }, - { - "executables": [{"is_launcher": false, "name": "twelve minutes/12m.exe", "os": "win32"}], - "hook": true, - "id": "1124353214909796505", - "name": "Twelve Minutes" - }, - { - "executables": [{"is_launcher": false, "name": "apewar/apewar.exe", "os": "win32"}], - "hook": true, - "id": "1124353216621068338", - "name": "Apewar" - }, - { - "executables": [{"is_launcher": false, "name": "firestone/firestone.exe", "os": "win32"}], - "hook": true, - "id": "1124353218504315057", - "name": "Firestone Idle RPG" - }, - { - "executables": [{"is_launcher": false, "name": "star trek bridge crew/stbc.exe", "os": "win32"}], - "hook": true, - "id": "1124353220253335563", - "name": "Star Trek: Bridge Crew" - }, - { - "executables": [{"is_launcher": false, "name": "eronoctosis/eronoctosis.exe", "os": "win32"}], - "hook": true, - "id": "1124353221880721508", - "name": "Eronoctosis: Put Yourself Together" - }, - { - "executables": [{"is_launcher": false, "name": "cozy grove/cozygrove.exe", "os": "win32"}], - "hook": true, - "id": "1124353223927545897", - "name": "Cozy Grove" - }, - { - "executables": [{"is_launcher": false, "name": "waltz of the wizard/waltzofthewizard.exe", "os": "win32"}], - "hook": true, - "id": "1124353225869512715", - "name": "Waltz of the Wizard" - }, - { - "executables": [{"is_launcher": false, "name": "autonauts/autonauts.exe", "os": "win32"}], - "hook": true, - "id": "1124353227580784750", - "name": "Autonauts" - }, - { - "executables": [{"is_launcher": false, "name": "win64/postal4-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353229384339626", - "name": "POSTAL 4: No Regerts" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sixdays-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353231540207734", - "name": "Six Days in Fallujah" - }, - { - "executables": [{"is_launcher": false, "name": "dagon/dagon.exe", "os": "win32"}], - "hook": true, - "id": "1124353233054347485", - "name": "Dagon" - }, - { - "executables": [{"is_launcher": false, "name": "oxenfree/oxenfree.exe", "os": "win32"}], - "hook": true, - "id": "1124353234715299880", - "name": "Oxenfree" - }, - { - "executables": [{"is_launcher": false, "name": "counterside/counterside.exe", "os": "win32"}], - "hook": true, - "id": "1124353236564983808", - "name": "CounterSide" - }, - { - "executables": [{"is_launcher": false, "name": "check it out!/check it out!.exe", "os": "win32"}], - "hook": true, - "id": "1124353238498562088", - "name": "Check it Out!" - }, - { - "executables": [{"is_launcher": false, "name": "missing hiker/missing hiker.exe", "os": "win32"}], - "hook": true, - "id": "1124353240352436318", - "name": "Missing Hiker" - }, - { - "executables": [{"is_launcher": false, "name": "mount and blade/mount&blade.exe", "os": "win32"}], - "hook": true, - "id": "1124353241992417300", - "name": "Mount & Blade" - }, - { - "executables": [{"is_launcher": false, "name": "urbek prologue/urbek.exe", "os": "win32"}], - "hook": true, - "id": "1124353243779182602", - "name": "Urbek City Builder: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "emily is away too/emilyisawaytoo.exe", "os": "win32"}], - "hook": true, - "id": "1124353245616291971", - "name": "Emily is Away Too" - }, - { - "executables": [{"is_launcher": false, "name": "dominion/dominion.exe", "os": "win32"}], - "hook": true, - "id": "1124353247696662548", - "name": "Dominion" - }, - { - "executables": [{"is_launcher": false, "name": "police stories the academy/policestories.exe", "os": "win32"}], - "hook": true, - "id": "1124353249500221572", - "name": "Police Stories: The Academy" - }, - { - "executables": [{"is_launcher": false, "name": "stationeers/rocketstation.exe", "os": "win32"}], - "hook": true, - "id": "1124353251001778176", - "name": "Stationeers" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/moeera.exe", "os": "win32"}], - "hook": true, - "id": "1124353253061177414", - "name": "Moe Era" - }, - { - "executables": [{"is_launcher": false, "name": "win64/breathedge-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353254835372082", - "name": "Breathedge" - }, - { - "executables": [{"is_launcher": false, "name": "hero's hour/hero's hour.exe", "os": "win32"}], - "hook": true, - "id": "1124353256672481401", - "name": "Hero's Hour" - }, - { - "executables": [{"is_launcher": false, "name": "blood/anuket_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124353258887065742", - "name": "Blood: Fresh Supply" - }, - { - "executables": [{"is_launcher": false, "name": "root/root.exe", "os": "win32"}], - "hook": true, - "id": "1124353260850008074", - "name": "Root" - }, - { - "executables": [{"is_launcher": false, "name": "hooked on you/hooked on you.exe", "os": "win32"}], - "hook": true, - "id": "1124353263257530450", - "name": "Hooked on You: A Dead by Daylight Dating Sim\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "win64/towergame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353264847179917", - "name": "Cloud Climber" - }, - { - "executables": [{"is_launcher": false, "name": "gum ball run/gum ball run.exe", "os": "win32"}], - "hook": true, - "id": "1124353266269044767", - "name": "Gum Ball Run" - }, - { - "executables": [{"is_launcher": false, "name": "out of space/out of space.exe", "os": "win32"}], - "hook": true, - "id": "1124353267971936296", - "name": "Out of Space" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tetriseffect-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353269435744376", - "name": "Tetris\u00ae Effect: Connected" - }, - { - "executables": [{"is_launcher": false, "name": "dreamland/dreamland.exe", "os": "win32"}], - "hook": true, - "id": "1124353270954078260", - "name": "Dreamland" - }, - { - "executables": [{"is_launcher": false, "name": "mad adventures/mad adventures.exe", "os": "win32"}], - "hook": true, - "id": "1124353272933793914", - "name": "Mad Adventures" - }, - { - "executables": [{"is_launcher": false, "name": "dyo/dyo.exe", "os": "win32"}], - "hook": true, - "id": "1124353274661851156", - "name": "DYO" - }, - { - "executables": [{"is_launcher": false, "name": "hero zero/hero zero.exe", "os": "win32"}], - "hook": true, - "id": "1124353276201152583", - "name": "Hero Zero" - }, - { - "executables": [{"is_launcher": false, "name": "win64/citadel-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353278008889374", - "name": "Citadel: Forged With Fire" - }, - { - "executables": [{"is_launcher": false, "name": "sniper fury/mcfw.exe", "os": "win32"}], - "hook": true, - "id": "1124353279615316059", - "name": "Sniper Fury" - }, - { - "executables": [ - {"is_launcher": false, "name": "bendy and the dark revival/bendy and the dark revival.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353281783779409", - "name": "Bendy and the Dark Revival" - }, - { - "executables": [{"is_launcher": false, "name": "notruf 112/notruf112.exe", "os": "win32"}], - "hook": true, - "id": "1124353283599908864", - "name": "Notruf 112" - }, - { - "executables": [{"is_launcher": false, "name": "soviet jump game/sovietjumpgame.exe", "os": "win32"}], - "hook": true, - "id": "1124353285894176789", - "name": "Soviet Jump Game" - }, - { - "executables": [{"is_launcher": false, "name": "desperados iii/desperados iii.exe", "os": "win32"}], - "hook": true, - "id": "1124353287945203783", - "name": "Desperados III" - }, - { - "executables": [{"is_launcher": false, "name": "win64/avf2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353289857810612", - "name": "Hentai Vs Furries" - }, - { - "executables": [{"is_launcher": false, "name": "win64/frozenheim-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353291405512724", - "name": "Frozenheim" - }, - { - "executables": [{"is_launcher": false, "name": "resident evil 7 biohazard demo/re7trial.exe", "os": "win32"}], - "hook": true, - "id": "1124353293301330070", - "name": "Resident Evil 7 Teaser: Beginning Hour" - }, - { - "executables": [{"is_launcher": false, "name": "tavern master/tavern master.exe", "os": "win32"}], - "hook": true, - "id": "1124353294916145193", - "name": "Tavern Master" - }, - { - "executables": [{"is_launcher": false, "name": "rise of legions/riseoflegions.exe", "os": "win32"}], - "hook": true, - "id": "1124353296606441633", - "name": "Rise of Legions" - }, - { - "executables": [{"is_launcher": false, "name": "car mechanic simulator/cms.exe", "os": "win32"}], - "hook": true, - "id": "1124353298217062502", - "name": "Car Mechanic Simulator 2014" - }, - { - "executables": [{"is_launcher": false, "name": "data/ra3ep1_1.0.game", "os": "win32"}], - "hook": true, - "id": "1124353300171599992", - "name": "Command and Conquer: Red Alert 3 - Uprising" - }, - { - "executables": [ - {"is_launcher": false, "name": "duke nukem 3d twentieth anniversary world tour/duke3d.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353302042267738", - "name": "Duke Nukem 3D: 20th Anniversary World Tour" - }, - { - "executables": [ - {"is_launcher": false, "name": "life is feudal forest village/forestvillage.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353303799672832", - "name": "Life is Feudal: Forest Village" - }, - { - "executables": [{"is_launcher": false, "name": "fantasy strike/fs_win64.exe", "os": "win32"}], - "hook": true, - "id": "1124353305557090315", - "name": "Fantasy Strike" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wayofthehunter-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353307322888375", - "name": "Way of the Hunter" - }, - { - "executables": [{"is_launcher": false, "name": "catto pew pew!/catto pew pew!.exe", "os": "win32"}], - "hook": true, - "id": "1124353309185163334", - "name": "Catto Pew Pew!" - }, - { - "executables": [{"is_launcher": false, "name": "ratz instagib/ratzinstagib.exe", "os": "win32"}], - "hook": true, - "id": "1124353311244570755", - "name": "Ratz Instagib 2.0" - }, - { - "executables": [{"is_launcher": false, "name": "tattletail/tattletailwindows.exe", "os": "win32"}], - "hook": true, - "id": "1124353312913895484", - "name": "Tattletail" - }, - { - "executables": [{"is_launcher": false, "name": "nascar heat 5/nascarheat5.exe", "os": "win32"}], - "hook": true, - "id": "1124353314423853127", - "name": "NASCAR Heat 5" - }, - { - "executables": [{"is_launcher": false, "name": "endless sky/endlesssky.exe", "os": "win32"}], - "hook": true, - "id": "1124353316676186263", - "name": "Endless Sky" - }, - { - "executables": [{"is_launcher": false, "name": "blasphemous demo/blasphemous.exe", "os": "win32"}], - "hook": true, - "id": "1124353318404243466", - "name": "Blasphemous Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "danganronpa v3 killing harmony demo/dangan3win.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353319943549058", - "name": "Danganronpa V3: Killing Harmony Demo Ver." - }, - { - "executables": [{"is_launcher": false, "name": "knux/knux.exe", "os": "win32"}], - "hook": true, - "id": "1124353321537392710", - "name": "Aperture Hand Lab" - }, - { - "executables": [{"is_launcher": false, "name": "heavy rain/heavyrain.exe", "os": "win32"}], - "hook": true, - "id": "1124353323013783653", - "name": "Heavy Rain" - }, - { - "executables": [{"is_launcher": false, "name": "v_katsu/vkatsu.exe", "os": "win32"}], - "hook": true, - "id": "1124353324607614996", - "name": "V\u30ab\u30c4 / V-Katsu" - }, - { - "executables": [{"is_launcher": false, "name": "win64/cooppuzzle-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353326344061029", - "name": "United heist" - }, - { - "executables": [ - {"is_launcher": false, "name": "pixel coloring book/pixel art coloring book.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353327925317673", - "name": "Pixel Art Coloring Book" - }, - { - "executables": [{"is_launcher": false, "name": "win64/diabloimmortal.exe", "os": "win32"}], - "hook": true, - "id": "1124353329640783962", - "name": "Diablo Immortal" - }, - { - "executables": [{"is_launcher": false, "name": "circle empires/circle empires.exe", "os": "win32"}], - "hook": true, - "id": "1124353331603714068", - "name": "Circle Empires" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "dark roll free kick challenge/dark roll free kick challenge.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353333109477376", - "name": "Dark Roll: Free Kick Challenge" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mariesroom-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353334770413588", - "name": "Marie's Room" - }, - { - "executables": [{"is_launcher": false, "name": "metal hellsinger/metal.exe", "os": "win32"}], - "hook": true, - "id": "1124353336662052976", - "name": "Metal: Hellsinger" - }, - { - "executables": [{"is_launcher": false, "name": "supercratebox/supercratebox.exe", "os": "win32"}], - "hook": true, - "id": "1124353338205552670", - "name": "Super Crate Box" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "animal revolt battle simulator/animal revolt battle simulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353340235591771", - "name": "Animal Revolt Battle Simulator" - }, - { - "executables": [ - {"is_launcher": false, "name": "diplomacy is not an option/diplomacy is not an option.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353341850390630", - "name": "Diplomacy is Not an Option" - }, - { - "executables": [{"is_launcher": false, "name": "mini ninjas/ninja.exe", "os": "win32"}], - "hook": true, - "id": "1124353343746232431", - "name": "Mini Ninjas" - }, - { - "executables": [{"is_launcher": false, "name": "higurashi when they cry/higurashiep01.exe", "os": "win32"}], - "hook": true, - "id": "1124353345566556160", - "name": "Higurashi When They Cry Hou - Ch.1 Onikakushi" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dragons-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353347705647144", - "name": "Day of Dragons" - }, - { - "executables": [{"is_launcher": false, "name": "final fantasy pr/final fantasy.exe", "os": "win32"}], - "hook": true, - "id": "1124353349656002670", - "name": "FINAL FANTASY" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fernbus-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353351526658058", - "name": "Fernbus Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "win64/towers-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353353242136606", - "name": "Journey To The Savage Planet" - }, - { - "executables": [{"is_launcher": false, "name": "nekopara vol. 2/nekopara_vol2.exe", "os": "win32"}], - "hook": true, - "id": "1124353354911465512", - "name": "NEKOPARA Vol. 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/murdered.exe", "os": "win32"}], - "hook": true, - "id": "1124353356639514694", - "name": "MURDERED: SOUL SUSPECT\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "bin/ninja.exe", "os": "win32"}], - "hook": true, - "id": "1124353358434684998", - "name": "Mark of the Ninja: Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "occupy mars prologue/occupymars-prolog.exe", "os": "win32"}], - "hook": true, - "id": "1124353361458774036", - "name": "Occupy Mars: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fpskit-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353363446878239", - "name": "TrenchesWIP" - }, - { - "executables": [{"is_launcher": false, "name": "songsofconquest/songsofconquest.exe", "os": "win32"}], - "hook": true, - "id": "1124353365263003648", - "name": "Songs of Conquest" - }, - { - "executables": [{"is_launcher": false, "name": "win64/callofkarenunreal-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353367213359204", - "name": "The Call of Karen" - }, - { - "executables": [{"is_launcher": false, "name": "angvik/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124353368882696232", - "name": "Angvik" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kofxv-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353370707210310", - "name": "THE KING OF FIGHTERS XV" - }, - { - "executables": [{"is_launcher": false, "name": "discord bot maker/discord bot maker.exe", "os": "win32"}], - "hook": true, - "id": "1124353372192002189", - "name": "Discord Bot Maker" - }, - { - "executables": [{"is_launcher": false, "name": "despot's game/despot's game.exe", "os": "win32"}], - "hook": true, - "id": "1124353373810995200", - "name": "Despot's Game: Dystopian Army Builder" - }, - { - "executables": [ - {"is_launcher": false, "name": "lego indiana jones the original adventures/legoindy.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353378579927100", - "name": "LEGO\u24c7 Indiana Jones\u2122: The Original Adventures" - }, - { - "executables": [{"is_launcher": false, "name": "budget cuts/budget cuts.exe", "os": "win32"}], - "hook": true, - "id": "1124353380412833902", - "name": "Budget Cuts" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "age of darkness - final stand/achilles/binaries/win64/achilles-win64-shipping.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353382245740635", - "name": "Age of Darkness: Final Stand" - }, - { - "executables": [{"is_launcher": false, "name": "she will punish them/she will punish them.exe", "os": "win32"}], - "hook": true, - "id": "1124353383889915924", - "name": "She Will Punish Them" - }, - { - "executables": [{"is_launcher": false, "name": "idle spiral/idlespiral.exe", "os": "win32"}], - "hook": true, - "id": "1124353385550852206", - "name": "Idle Spiral" - }, - { - "executables": [{"is_launcher": false, "name": "executable/ducktales.exe", "os": "win32"}], - "hook": true, - "id": "1124353387484430526", - "name": "DuckTales Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "shelter 69/shelter69.exe", "os": "win32"}], - "hook": true, - "id": "1124353389174730883", - "name": "Shelter 69" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the walking dead - a new frontier (season 3)/walkingdead3.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353390835679272", - "name": "The Walking Dead: A New Frontier" - }, - { - "executables": [{"is_launcher": false, "name": "total war warhammer iii/warhammer3.exe", "os": "win32"}], - "hook": true, - "id": "1124353392672780388", - "name": "Total War: WARHAMMER III" - }, - { - "executables": [{"is_launcher": false, "name": "eternium/mageandminions.exe", "os": "win32"}], - "hook": true, - "id": "1124353394396647434", - "name": "Eternium" - }, - { - "executables": [{"is_launcher": false, "name": "win64/battlefleetgothic-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353396116303932", - "name": "Battlefleet Gothic: Armada" - }, - { - "executables": [{"is_launcher": false, "name": "welcome to the game/wttg.exe", "os": "win32"}], - "hook": true, - "id": "1124353397848559706", - "name": "Welcome to the Game" - }, - { - "executables": [{"is_launcher": false, "name": "win64/shieldwall-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353399551443064", - "name": "Shieldwall" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kingofretail-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353401069776966", - "name": "King of Retail" - }, - { - "executables": [{"is_launcher": false, "name": "uncharted legacy of thieves collection/u4.exe", "os": "win32"}], - "hook": true, - "id": "1124353402630062100", - "name": "UNCHARTED\u2122: Legacy of Thieves Collection" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kena-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353404395868210", - "name": "Kena: Bridge of Spirits" - }, - { - "executables": [{"is_launcher": false, "name": "sludge life/sludgelife.exe", "os": "win32"}], - "hook": true, - "id": "1124353406232965140", - "name": "SLUDGE LIFE" - }, - { - "executables": [{"is_launcher": false, "name": "red hot vengeance/redhotvengeance.exe", "os": "win32"}], - "hook": true, - "id": "1124353408065884210", - "name": "RED HOT VENGEANCE" - }, - { - "executables": [{"is_launcher": false, "name": "game/farlonesails.exe", "os": "win32"}], - "hook": true, - "id": "1124353409873621023", - "name": "FAR: Lone Sails" - }, - { - "executables": [{"is_launcher": false, "name": "snake force/snake force.exe", "os": "win32"}], - "hook": true, - "id": "1124353411710734387", - "name": "Snake Force" - }, - { - "executables": [{"is_launcher": false, "name": "shenzhen io/shenzhen.exe", "os": "win32"}], - "hook": true, - "id": "1124353413296173229", - "name": "SHENZHEN I/O" - }, - { - "executables": [ - {"is_launcher": false, "name": "the greatest penguin heist of all time/penguin heist.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353415221366906", - "name": "The Greatest Penguin Heist of All Time" - }, - { - "executables": [{"is_launcher": false, "name": "bear party adventure/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124353417175904348", - "name": "Bear Party: Adventure" - }, - { - "executables": [ - {"is_launcher": false, "name": "i'm on observation duty/i'm on observation duty.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353418849435678", - "name": "I'm on Observation Duty" - }, - { - "executables": [{"is_launcher": false, "name": "error143/error143.exe", "os": "win32"}], - "hook": true, - "id": "1124353420468432959", - "name": "Error143" - }, - { - "executables": [{"is_launcher": false, "name": "zoo tycoon/zootycoon.exe", "os": "win32"}], - "hook": true, - "id": "1124353424067153980", - "name": "Zoo Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "calico/calico.exe", "os": "win32"}], - "hook": true, - "id": "1124353425715511347", - "name": "Calico" - }, - { - "executables": [{"is_launcher": false, "name": "win64/snakepass-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353427489706096", - "name": "Snake Pass" - }, - { - "executables": [{"is_launcher": false, "name": "the room old sins/oldsins.exe", "os": "win32"}], - "hook": true, - "id": "1124353429461020702", - "name": "The Room 4: Old Sins" - }, - { - "executables": [{"is_launcher": false, "name": "infinitode 2/infinitode-2.exe", "os": "win32"}], - "hook": true, - "id": "1124353431293939873", - "name": "Infinitode 2" - }, - { - "executables": [{"is_launcher": false, "name": "friends vs friends/friends vs friends.exe", "os": "win32"}], - "hook": true, - "id": "1124353432950685756", - "name": "Friends vs Friends" - }, - { - "executables": [{"is_launcher": false, "name": "win64/whatneverwas-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353434443853936", - "name": "What Never Was" - }, - { - "executables": [{"is_launcher": false, "name": "iratus lord of the dead/iratus.exe", "os": "win32"}], - "hook": true, - "id": "1124353436025110659", - "name": "Iratus: Lord of the Dead" - }, - { - "executables": [{"is_launcher": false, "name": "white noise 2/whitenoise2.exe", "os": "win32"}], - "hook": true, - "id": "1124353437887385710", - "name": "White Noise 2" - }, - { - "executables": [{"is_launcher": false, "name": "x64/bosclient.exe", "os": "win32"}], - "hook": true, - "id": "1124353439657377843", - "name": "Blood of Steel" - }, - { - "executables": [{"is_launcher": false, "name": "automobilista 2/ams2avx.exe", "os": "win32"}], - "hook": true, - "id": "1124353441389629460", - "name": "Automobilista 2" - }, - { - "executables": [{"is_launcher": false, "name": "coloring game 4/game.exe", "os": "win32"}], - "hook": true, - "id": "1124353443264479362", - "name": "Coloring Game 4" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "swords and sandals classic collection/swords and sandals classic collection.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353444812173322", - "name": "Swords and Sandals Classic Collection" - }, - { - "executables": [{"is_launcher": false, "name": "deiland/deiland.exe", "os": "win32"}], - "hook": true, - "id": "1124353446590562495", - "name": "Deiland" - }, - { - "executables": [{"is_launcher": false, "name": "babble royale/babbleroyale.exe", "os": "win32"}], - "hook": true, - "id": "1124353448134062203", - "name": "Babble Royale" - }, - { - "executables": [{"is_launcher": false, "name": "exec/sonic forces.exe", "os": "win32"}], - "hook": true, - "id": "1124353450008920234", - "name": "Sonic Forces" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dungeonhaven-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353451795689472", - "name": "Mortal Shell" - }, - { - "executables": [{"is_launcher": false, "name": "mysterium/mysterium.exe", "os": "win32"}], - "hook": true, - "id": "1124353453494386718", - "name": "Mysterium" - }, - { - "executables": [{"is_launcher": false, "name": "backpack hero/backpack hero.exe", "os": "win32"}], - "hook": true, - "id": "1124353455302127817", - "name": "Backpack Hero" - }, - { - "executables": [{"is_launcher": false, "name": "rusty lake roots/rustylakeroots.exe", "os": "win32"}], - "hook": true, - "id": "1124353456887578696", - "name": "Rusty Lake: Roots" - }, - { - "executables": [{"is_launcher": false, "name": "win64/gothicremake.exe", "os": "win32"}], - "hook": true, - "id": "1124353458926006362", - "name": "Gothic Playable Teaser" - }, - { - "executables": [{"is_launcher": false, "name": "hentai killer/hentai killer.exe", "os": "win32"}], - "hook": true, - "id": "1124353460880556183", - "name": "Hentai Killer" - }, - { - "executables": [{"is_launcher": false, "name": "win64/badguysatschool-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353462684110868", - "name": "Bad Guys at School" - }, - { - "executables": [ - {"is_launcher": false, "name": "the incredible adventures of van helsing/vanhelsing_x64.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353464491847792", - "name": "The Incredible Adventures of Van Helsing" - }, - { - "executables": [{"is_launcher": false, "name": "yes, your grace/yes, your grace.exe", "os": "win32"}], - "hook": true, - "id": "1124353466203131996", - "name": "Yes, Your Grace" - }, - { - "executables": [{"is_launcher": false, "name": "use your words/uyw.exe", "os": "win32"}], - "hook": true, - "id": "1124353467838902322", - "name": "Use Your Words" - }, - { - "executables": [{"is_launcher": false, "name": "blameless/blameless.exe", "os": "win32"}], - "hook": true, - "id": "1124353469571153923", - "name": "Blameless" - }, - { - "executables": [ - {"is_launcher": false, "name": "cats organized neatly/cats organized neatly.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353471236296904", - "name": "Cats Organized Neatly" - }, - { - "executables": [{"is_launcher": false, "name": "mordheim/mordheim.exe", "os": "win32"}], - "hook": true, - "id": "1124353473002094592", - "name": "Mordheim: City of the Damned" - }, - { - "executables": [{"is_launcher": false, "name": "istrolid/istrolid.exe", "os": "win32"}], - "hook": true, - "id": "1124353474503651409", - "name": "Istrolid" - }, - { - "executables": [{"is_launcher": false, "name": "obamamaze/obama maze.exe", "os": "win32"}], - "hook": true, - "id": "1124353476143628318", - "name": "Obama Maze" - }, - { - "executables": [{"is_launcher": false, "name": "territory idle/game.exe", "os": "win32"}], - "hook": true, - "id": "1124353477859102910", - "name": "Territory Idle" - }, - { - "executables": [{"is_launcher": false, "name": "v/v.exe", "os": "win32"}], - "hook": true, - "id": "1124353479675232348", - "name": "OLDTV" - }, - { - "executables": [{"is_launcher": false, "name": "cubic castles/cubic.exe", "os": "win32"}], - "hook": true, - "id": "1124353481227120783", - "name": "Cubic Castles" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "fly punch boom first impact!/fly punch boom first impact!.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353482959372298", - "name": "Fly Punch Boom: First Impact!" - }, - { - "executables": [{"is_launcher": false, "name": "win64/warguardgameclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353484687421460", - "name": "CityBattle | Virtual Earth" - }, - { - "executables": [{"is_launcher": false, "name": "being a dik/beingadik.exe", "os": "win32"}], - "hook": true, - "id": "1124353486490976377", - "name": "Being a DIK" - }, - { - "executables": [{"is_launcher": false, "name": "fire & maneuver/fire & maneuver.exe", "os": "win32"}], - "hook": true, - "id": "1124353488235810846", - "name": "Fire & Maneuver" - }, - { - "executables": [{"is_launcher": false, "name": "barji kart/barjikart.exe", "os": "win32"}], - "hook": true, - "id": "1124353490001604688", - "name": "Barji Kart" - }, - { - "executables": [{"is_launcher": false, "name": "i expect you to die/ieytd.exe", "os": "win32"}], - "hook": true, - "id": "1124353491360567397", - "name": "I Expect You To Die" - }, - { - "executables": [{"is_launcher": false, "name": "win32/benanded.exe", "os": "win32"}], - "hook": true, - "id": "1124353493315108875", - "name": "Ben and Ed" - }, - { - "executables": [{"is_launcher": false, "name": "afterhours/after hours.exe", "os": "win32"}], - "hook": true, - "id": "1124353494921523231", - "name": "AfterHours" - }, - { - "executables": [{"is_launcher": false, "name": "zup! x/zup! x.exe", "os": "win32"}], - "hook": true, - "id": "1124353496678940766", - "name": "Zup! X" - }, - { - "executables": [{"is_launcher": false, "name": "grid (2019)/grid_dx12.exe", "os": "win32"}], - "hook": true, - "id": "1124353498167914626", - "name": "GRID (2019)" - }, - { - "executables": [{"is_launcher": false, "name": "10 second ninja x/10snx.exe", "os": "win32"}], - "hook": true, - "id": "1124353499866615838", - "name": "10 Second Ninja X" - }, - { - "executables": [{"is_launcher": false, "name": "aegis defenders/aegisdefenders.exe", "os": "win32"}], - "hook": true, - "id": "1124353501653385317", - "name": "Aegis Defenders" - }, - { - "executables": [{"is_launcher": false, "name": "creeper world 4/cw4.exe", "os": "win32"}], - "hook": true, - "id": "1124353503352074240", - "name": "Creeper World 4" - }, - { - "executables": [{"is_launcher": false, "name": "zoo 2 animal park/zoo2.exe", "os": "win32"}], - "hook": true, - "id": "1124353505101107281", - "name": "Zoo 2: Animal Park" - }, - { - "executables": [{"is_launcher": false, "name": "drunken wrestlers/drunkenwrestlers.exe", "os": "win32"}], - "hook": true, - "id": "1124353507143729264", - "name": "Drunken Wrestlers" - }, - { - "executables": [{"is_launcher": false, "name": "fly simulator/fly simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124353508880166952", - "name": "Fly Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "yogurt!!/yogurt!.exe", "os": "win32"}], - "hook": true, - "id": "1124353510612422746", - "name": "Yogurt!" - }, - { - "executables": [{"is_launcher": false, "name": "the static speaks my name/thestatic_win.exe", "os": "win32"}], - "hook": true, - "id": "1124353512512434288", - "name": "the static speaks my name" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hellsplit_arena-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353514097889321", - "name": "Hellsplit: Arena" - }, - { - "executables": [{"is_launcher": false, "name": "ravenswatch/ravenswatch.exe", "os": "win32"}], - "hook": true, - "id": "1124353515855294545", - "name": "Ravenswatch" - }, - { - "executables": [{"is_launcher": false, "name": "bear and breakfast/bearandbreakfast.exe", "os": "win32"}], - "hook": true, - "id": "1124353517906317382", - "name": "Bear and Breakfast" - }, - { - "executables": [{"is_launcher": false, "name": "wrc 7/wrc7.exe", "os": "win32"}], - "hook": true, - "id": "1124353519579836556", - "name": "WRC 7" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the convenience store yakin jiken/the convenience store yakin jiken.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353521525997578", - "name": "The Convenience Store | \u591c\u52e4\u4e8b\u4ef6" - }, - { - "executables": [{"is_launcher": false, "name": "steambirds alliance/steambirds.exe", "os": "win32"}], - "hook": true, - "id": "1124353523551850646", - "name": "Steambirds Alliance" - }, - { - "executables": [{"is_launcher": false, "name": "vrbenchmarkkanojo/vrbenchmarkkanojo.exe", "os": "win32"}], - "hook": true, - "id": "1124353525175042100", - "name": "VR Benchmark Kanojo" - }, - { - "executables": [{"is_launcher": false, "name": "amnesia rebirth/amnesiarebirth.exe", "os": "win32"}], - "hook": true, - "id": "1124353526840184853", - "name": "Amnesia: Rebirth" - }, - { - "executables": [ - {"is_launcher": false, "name": "thief simulator 2 prologue/thief simulator 2 prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353528723423374", - "name": "Thief Simulator 2: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "dig or die/digordie.exe", "os": "win32"}], - "hook": true, - "id": "1124353530455674930", - "name": "Dig or Die" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dreadhunger-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353532368273488", - "name": "Dread Hunger" - }, - { - "executables": [{"is_launcher": false, "name": "not for broadcast/notforbroadcast.exe", "os": "win32"}], - "hook": true, - "id": "1124353534327017643", - "name": "Not For Broadcast" - }, - { - "executables": [{"is_launcher": false, "name": "big ambitions/big ambitions.exe", "os": "win32"}], - "hook": true, - "id": "1124353536017313854", - "name": "Big Ambitions" - }, - { - "executables": [{"is_launcher": false, "name": "ex/wild hearts.exe", "os": "win32"}], - "hook": true, - "id": "1124353537925730325", - "name": "WILD HEARTS\u2122" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "don't be afraid - first toy/don't be afraid the first toy.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353539741859860", - "name": "Don't Be Afraid - The First Toy" - }, - { - "executables": [{"is_launcher": false, "name": "one piece burning blood/opbb.exe", "os": "win32"}], - "hook": true, - "id": "1124353541415391252", - "name": "ONE PIECE BURNING BLOOD" - }, - { - "executables": [{"is_launcher": false, "name": "fpv.skydive/fpv.skydive.exe", "os": "win32"}], - "hook": true, - "id": "1124353542870810766", - "name": "FPV.SkyDive" - }, - { - "executables": [{"is_launcher": false, "name": "initial drift online/initial drift.exe", "os": "win32"}], - "hook": true, - "id": "1124353544594673695", - "name": "Initial Drift Online" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dds-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353546184310915", - "name": "Dungeon Defenders: Awakened" - }, - { - "executables": [{"is_launcher": false, "name": "win64/escapefromschool-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353548164026479", - "name": "Escape From School" - }, - { - "executables": [ - {"is_launcher": false, "name": "kingdom rush frontiers/kingdom rush frontiers.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353550986784849", - "name": "Kingdom Rush Frontiers" - }, - { - "executables": [{"is_launcher": false, "name": "exit the gungeon/xtg.exe", "os": "win32"}], - "hook": true, - "id": "1124353552651931659", - "name": "Exit the Gungeon" - }, - { - "executables": [{"is_launcher": false, "name": "coromon/coromon.exe", "os": "win32"}], - "hook": true, - "id": "1124353554392563782", - "name": "Coromon" - }, - { - "executables": [{"is_launcher": false, "name": "win64/theascent-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353556334530611", - "name": "The Ascent" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kinoko-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353557987082351", - "name": "Kinoko" - }, - { - "executables": [{"is_launcher": false, "name": "atom rpg/atomrpg_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124353559719333959", - "name": "ATOM RPG" - }, - { - "executables": [{"is_launcher": false, "name": "survive the nights/survivethenights_win.exe", "os": "win32"}], - "hook": true, - "id": "1124353561581600779", - "name": "Survive the Nights" - }, - { - "executables": [{"is_launcher": false, "name": "rabi-ribi/rabiribi.exe", "os": "win32"}], - "hook": true, - "id": "1124353563343212605", - "name": "Rabi-Ribi" - }, - { - "executables": [{"is_launcher": false, "name": "potion permit demo/potion permit.exe", "os": "win32"}], - "hook": true, - "id": "1124353565117395147", - "name": "Potion Permit Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "human resource machine/human resource machine.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353567000641536", - "name": "Human Resource Machine" - }, - { - "executables": [{"is_launcher": false, "name": "russia battlegrounds/russia battlegrounds.exe", "os": "win32"}], - "hook": true, - "id": "1124353568799993968", - "name": "RUSSIA BATTLEGROUNDS" - }, - { - "executables": [{"is_launcher": false, "name": "the battle of polytopia/polytopia.exe", "os": "win32"}], - "hook": true, - "id": "1124353570301562880", - "name": "The Battle of Polytopia" - }, - { - "executables": [ - {"is_launcher": false, "name": "lawn mowing simulator/lawn mowing simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353571794731018", - "name": "Lawn Mowing Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "splendor/splendor.exe", "os": "win32"}], - "hook": true, - "id": "1124353573434708018", - "name": "Splendor" - }, - { - "executables": [ - {"is_launcher": false, "name": "dead rising 2 off the record/deadrising2otr.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353575078871100", - "name": "Dead Rising 2: Off the Record" - }, - { - "executables": [{"is_launcher": false, "name": "ratropolis/ratropolis.exe", "os": "win32"}], - "hook": true, - "id": "1124353576681099465", - "name": "Ratropolis" - }, - { - "executables": [ - {"is_launcher": false, "name": "the jackbox party pack 9/the jackbox party pack 9.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353582959964251", - "name": "The Jackbox Party Pack 9" - }, - { - "executables": [{"is_launcher": false, "name": "rogue heroes/rogue heroes.exe", "os": "win32"}], - "hook": true, - "id": "1124353586659348612", - "name": "Rogue Heroes: Ruins of Tasos" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon siege 1/dungeonsiege.exe", "os": "win32"}], - "hook": true, - "id": "1124353590086090902", - "name": "Dungeon Siege" - }, - { - "executables": [{"is_launcher": false, "name": "win64/psychonauts2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353592636223558", - "name": "Psychonauts 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pewdewredemption-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353594737578146", - "name": "Pew Dew Redemption" - }, - { - "executables": [{"is_launcher": false, "name": "win64/brightmemoryinfinite-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353596427874305", - "name": "Bright Memory: Infinite" - }, - { - "executables": [{"is_launcher": false, "name": "dead estate/dead estate.exe", "os": "win32"}], - "hook": true, - "id": "1124353597921054730", - "name": "Dead Estate" - }, - { - "executables": [{"is_launcher": false, "name": "hentai nazi/hentai nazi.exe", "os": "win32"}], - "hook": true, - "id": "1124353599590379552", - "name": "Hentai Nazi" - }, - { - "executables": [{"is_launcher": false, "name": "system/conviction_game.exe", "os": "win32"}], - "hook": true, - "id": "1124353601221968032", - "name": "Tom Clancy's Splinter Cell: Conviction" - }, - { - "executables": [{"is_launcher": false, "name": "raidland/raidland.exe", "os": "win32"}], - "hook": true, - "id": "1124353603054874655", - "name": "RaidLand" - }, - { - "executables": [ - {"is_launcher": false, "name": "spellcaster university/spellcaster university.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353605017813042", - "name": "Spellcaster University" - }, - { - "executables": [{"is_launcher": false, "name": "beholder 2/beholder2.exe", "os": "win32"}], - "hook": true, - "id": "1124353606800396369", - "name": "Beholder 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "one finger death punch 2/one finger death punch 2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353608599748618", - "name": "One Finger Death Punch 2" - }, - { - "executables": [{"is_launcher": false, "name": "sudden strike 4/suddenstrike4.exe", "os": "win32"}], - "hook": true, - "id": "1124353610277466273", - "name": "Sudden Strike 4" - }, - { - "executables": [ - {"is_launcher": false, "name": "boris and the dark survival/boris and the dark survival.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353612022304778", - "name": "Boris and the Dark Survival" - }, - { - "executables": [{"is_launcher": false, "name": "animal shelter prologue/animal shelter.exe", "os": "win32"}], - "hook": true, - "id": "1124353613590970388", - "name": "Animal Shelter: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "selene ~apoptosis~/selene.exe", "os": "win32"}], - "hook": true, - "id": "1124353615176421426", - "name": "Selene ~Apoptosis~" - }, - { - "executables": [{"is_launcher": false, "name": "the sandbox evolution/thesandbox2.exe", "os": "win32"}], - "hook": true, - "id": "1124353616732500053", - "name": "The Sandbox Evolution" - }, - { - "executables": [{"is_launcher": false, "name": "win64/battleroyale-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353618603163739", - "name": "Valgrave: Immortal Plains" - }, - { - "executables": [{"is_launcher": false, "name": "machinarium/machinarium.exe", "os": "win32"}], - "hook": true, - "id": "1124353620721291294", - "name": "Machinarium" - }, - { - "executables": [{"is_launcher": false, "name": "dying light bad blood/badbloodgame.exe", "os": "win32"}], - "hook": true, - "id": "1124353622495477771", - "name": "Dying Light: Bad Blood" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/cinderellaphenomenon.exe", "os": "win32"}], - "hook": true, - "id": "1124353624076726303", - "name": "Cinderella Phenomenon" - }, - { - "executables": [{"is_launcher": false, "name": "final/game.exe", "os": "win32"}], - "hook": true, - "id": "1124353625783812218", - "name": "Pathologic Classic HD" - }, - { - "executables": [{"is_launcher": false, "name": "god eater resurrection/ger.exe", "os": "win32"}], - "hook": true, - "id": "1124353627511861259", - "name": "GOD EATER RESURRECTION" - }, - { - "executables": [{"is_launcher": false, "name": "redist/dotnetfx40_client_x86_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124353629382525039", - "name": "Tiny Tina's Assault on Dragon Keep: A Wonderlands One-shot Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "win64/octarina-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353631152517270", - "name": "Octarina" - }, - { - "executables": [{"is_launcher": false, "name": "bin/krita.exe", "os": "win32"}], - "hook": true, - "id": "1124353632758939688", - "name": "Krita" - }, - { - "executables": [ - {"is_launcher": false, "name": "idling to rule the gods/idling to rule the gods.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353634415693905", - "name": "Idling to Rule the Gods" - }, - { - "executables": [{"is_launcher": false, "name": "draw & guess/draw&guess.exe", "os": "win32"}], - "hook": true, - "id": "1124353636068241428", - "name": "Draw & Guess" - }, - { - "executables": [{"is_launcher": false, "name": "tainted grail/tainted grail.exe", "os": "win32"}], - "hook": true, - "id": "1124353637674664018", - "name": "Tainted Grail" - }, - { - "executables": [{"is_launcher": false, "name": "arcadius/arcadius.exe", "os": "win32"}], - "hook": true, - "id": "1124353640992354435", - "name": "Arcadius" - }, - { - "executables": [{"is_launcher": false, "name": "at home alone/game.exe", "os": "win32"}], - "hook": true, - "id": "1124353642993041478", - "name": "At Home Alone" - }, - { - "executables": [{"is_launcher": false, "name": "windows/jazzpunk.exe", "os": "win32"}], - "hook": true, - "id": "1124353644687544441", - "name": "Jazzpunk: Director's Cut" - }, - { - "executables": [{"is_launcher": false, "name": "transmissions element 120/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124353646453342268", - "name": "Transmissions: Element 120" - }, - { - "executables": [{"is_launcher": false, "name": "prison simulator demo/prison simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124353648349163602", - "name": "Prison Simulator Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hood.exe", "os": "win32"}], - "hook": true, - "id": "1124353649850732645", - "name": "Hood: Outlaws & Legends" - }, - { - "executables": [{"is_launcher": false, "name": "win64/spacefish.exe", "os": "win32"}], - "hook": true, - "id": "1124353651427786782", - "name": "Predator: Hunting Grounds" - }, - { - "executables": [{"is_launcher": false, "name": "battlestar galactica deadlock/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124353653147447366", - "name": "Battlestar Galactica Deadlock" - }, - { - "executables": [{"is_launcher": false, "name": "hard bullet/hard bullet.exe", "os": "win32"}], - "hook": true, - "id": "1124353654883897475", - "name": "Hard Bullet" - }, - { - "executables": [{"is_launcher": false, "name": "porcelain_tales/porcelain_tales.exe", "os": "win32"}], - "hook": true, - "id": "1124353656569999533", - "name": "Porcelain Tales" - }, - { - "executables": [{"is_launcher": false, "name": "nidhogg 2/nidhogg_2.exe", "os": "win32"}], - "hook": true, - "id": "1124353658218365008", - "name": "Nidhogg 2" - }, - { - "executables": [{"is_launcher": false, "name": "bomb bots arena/bomb bots arena.exe", "os": "win32"}], - "hook": true, - "id": "1124353661867405533", - "name": "Bomb Bots Arena" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dnfduel-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353663922618368", - "name": "DNF DUEL" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sherwoodextreme-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353665659056138", - "name": "Sherwood Extreme" - }, - { - "executables": [{"is_launcher": false, "name": "win64/aircar-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353667575857233", - "name": "Aircar" - }, - { - "executables": [{"is_launcher": false, "name": "split or steal/split or steal.exe", "os": "win32"}], - "hook": true, - "id": "1124353669320691752", - "name": "Split or Steal" - }, - { - "executables": [{"is_launcher": false, "name": "hades' star/hadesstar.exe", "os": "win32"}], - "hook": true, - "id": "1124353671241674902", - "name": "Hades' Star" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "farmer against potatoes idle/farmer against potatoes idle.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353672839708682", - "name": "Farmer Against Potatoes Idle" - }, - { - "executables": [{"is_launcher": false, "name": "airships conquer the skies/airships.exe", "os": "win32"}], - "hook": true, - "id": "1124353675113025560", - "name": "Airships: Conquer the Skies" - }, - { - "executables": [{"is_launcher": false, "name": "oblivity/oblivity.exe", "os": "win32"}], - "hook": true, - "id": "1124353677294059622", - "name": "Oblivity" - }, - { - "executables": [{"is_launcher": false, "name": "martial law/martial-law.exe", "os": "win32"}], - "hook": true, - "id": "1124353679026311299", - "name": "Martial Law" - }, - { - "executables": [{"is_launcher": false, "name": "win64/detective-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353680729190430", - "name": "Backbone: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wrsh-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353682562105435", - "name": "No One Survived" - }, - { - "executables": [{"is_launcher": false, "name": "welcome to free will/welcometofreewill.exe", "os": "win32"}], - "hook": true, - "id": "1124353684185305221", - "name": "Welcome to Free Will" - }, - { - "executables": [{"is_launcher": false, "name": "icewind dale enhanced edition/icewind.exe", "os": "win32"}], - "hook": true, - "id": "1124353686320197632", - "name": "Icewind Dale: Enhanced Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "warhammer 40,000 - eternal crusade/eternalcrusadeclient.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353688002121849", - "name": "Warhammer 40,000: Eternal Crusade" - }, - { - "executables": [{"is_launcher": false, "name": "grim fandango remastered/grimfandango.exe", "os": "win32"}], - "hook": true, - "id": "1124353689981821019", - "name": "Grim Fandango Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "release/chimeraland.exe", "os": "win32"}], - "hook": true, - "id": "1124353691982516244", - "name": "Chimeraland" - }, - { - "executables": [{"is_launcher": false, "name": "windows64/nimbatus.exe", "os": "win32"}], - "hook": true, - "id": "1124353693794447380", - "name": "Nimbatus - The Space Drone Constructor" - }, - { - "executables": [{"is_launcher": false, "name": "wwe2k20/wwe2k20_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124353738505715825", - "name": "WWE 2K20" - }, - { - "executables": [{"is_launcher": false, "name": "hackgu/hackgu.exe", "os": "win32"}], - "hook": true, - "id": "1124353740577718312", - "name": ".hack//G.U. Last Recode" - }, - { - "executables": [{"is_launcher": false, "name": "simairport/simairport.exe", "os": "win32"}], - "hook": true, - "id": "1124353742892957746", - "name": "SimAirport" - }, - { - "executables": [{"is_launcher": false, "name": "vega conflict/vegaconflict.exe", "os": "win32"}], - "hook": true, - "id": "1124353744507781180", - "name": "VEGA Conflict" - }, - { - "executables": [{"is_launcher": false, "name": "finding paradise/finding paradise.exe", "os": "win32"}], - "hook": true, - "id": "1124353748681109618", - "name": "Finding Paradise" - }, - { - "executables": [{"is_launcher": false, "name": "reigns her majesty/reigns2.exe", "os": "win32"}], - "hook": true, - "id": "1124353750463696926", - "name": "Reigns: Her Majesty" - }, - { - "executables": [{"is_launcher": false, "name": "spiritfarer demo/spiritfarer.exe", "os": "win32"}], - "hook": true, - "id": "1124353752455987331", - "name": "Spiritfarer Demo" - }, - { - "executables": [{"is_launcher": false, "name": "meadow/meadow.exe", "os": "win32"}], - "hook": true, - "id": "1124353754347622470", - "name": "Meadow" - }, - { - "executables": [{"is_launcher": false, "name": "final doom/base/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124353755979202580", - "name": "Final DOOM" - }, - { - "executables": [{"is_launcher": false, "name": "anno 1404 - history edition/anno1404addon.exe", "os": "win32"}], - "hook": true, - "id": "1124353758097322064", - "name": "Anno 1404 - History Edition" - }, - { - "executables": [{"is_launcher": false, "name": "pac-man championship edition dx+/pac-man.exe", "os": "win32"}], - "hook": true, - "id": "1124353760420970496", - "name": "PAC-MAN Championship Edition DX+" - }, - { - "executables": [{"is_launcher": false, "name": "underrail/underrail.exe", "os": "win32"}], - "hook": true, - "id": "1124353762144833546", - "name": "Underrail" - }, - { - "executables": [{"is_launcher": false, "name": "paper lily - project kat/projectkat.exe", "os": "win32"}], - "hook": true, - "id": "1124353763960963102", - "name": "Project Kat - Paper Lily Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/maelstromv2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353765932290138", - "name": "Maelstrom" - }, - { - "executables": [{"is_launcher": false, "name": "bus simulator 16/bussimulator16.exe", "os": "win32"}], - "hook": true, - "id": "1124353767819718697", - "name": "Bus Simulator 16" - }, - { - "executables": [{"is_launcher": false, "name": "dude simulator 3/dudesimulator3.exe", "os": "win32"}], - "hook": true, - "id": "1124353769400979548", - "name": "Dude Simulator 3" - }, - { - "executables": [{"is_launcher": false, "name": "streets of kamurocho/streets of kamurocho.exe", "os": "win32"}], - "hook": true, - "id": "1124353771087081584", - "name": "Streets Of Kamurocho" - }, - { - "executables": [{"is_launcher": false, "name": "idle research/idle research.exe", "os": "win32"}], - "hook": true, - "id": "1124353774673211402", - "name": "Idle Research" - }, - { - "executables": [{"is_launcher": false, "name": "bloody hell/bloody hell.exe", "os": "win32"}], - "hook": true, - "id": "1124353776376103014", - "name": "Bloody Hell" - }, - { - "executables": [{"is_launcher": false, "name": "kyle is famous/kyle is famous.exe", "os": "win32"}], - "hook": true, - "id": "1124353778112548887", - "name": "Kyle is Famous" - }, - { - "executables": [{"is_launcher": false, "name": "nobody saves the world/nstw_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124353779911897098", - "name": "Nobody Saves the World" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mav2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353781870645258", - "name": "Boo Men" - }, - { - "executables": [{"is_launcher": false, "name": "yourchronicle/yourchronicle.exe", "os": "win32"}], - "hook": true, - "id": "1124353783665795192", - "name": "Your Chronicle" - }, - { - "executables": [ - {"is_launcher": false, "name": "cube escape collection/cubeescapecollection.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353785297387720", - "name": "Cube Escape Collection" - }, - { - "executables": [{"is_launcher": false, "name": "nekopara vol. 3/nekoparavol3.exe", "os": "win32"}], - "hook": true, - "id": "1124353786954133554", - "name": "NEKOPARA Vol. 3" - }, - { - "executables": [{"is_launcher": false, "name": "golf gang/golf gang.exe", "os": "win32"}], - "hook": true, - "id": "1124353788501840034", - "name": "Golf Gang" - }, - { - "aliases": ["System Shock Pre-Alpha Demo"], - "executables": [{"is_launcher": false, "name": "win64/systemreshock-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353790250856448", - "name": "System Shock Demo" - }, - { - "executables": [{"is_launcher": false, "name": "windows64/wanderingvillage.exe", "os": "win32"}], - "hook": true, - "id": "1124353791941169172", - "name": "The Wandering Village" - }, - { - "executables": [{"is_launcher": false, "name": "rusty lake paradise/rustylakeparadise.exe", "os": "win32"}], - "hook": true, - "id": "1124353794021539930", - "name": "Rusty Lake Paradise" - }, - { - "executables": [{"is_launcher": false, "name": "bin64/crysisremastered.exe", "os": "win32"}], - "hook": true, - "id": "1124353795875418132", - "name": "Crysis Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "iron lung/iron lung.exe", "os": "win32"}], - "hook": true, - "id": "1124353797687365713", - "name": "Iron Lung" - }, - { - "executables": [{"is_launcher": false, "name": "exe/chaosbane.exe", "os": "win32"}], - "hook": true, - "id": "1124353799952285767", - "name": "Warhammer: Chaosbane" - }, - { - "executables": [{"is_launcher": false, "name": "floating point/floating point.exe", "os": "win32"}], - "hook": true, - "id": "1124353801546117266", - "name": "Floating Point" - }, - { - "executables": [{"is_launcher": false, "name": "win64/postalredux-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353804838654003", - "name": "POSTAL Redux" - }, - { - "executables": [{"is_launcher": false, "name": "september1999/september1999.exe", "os": "win32"}], - "hook": true, - "id": "1124353810505154590", - "name": "SEPTEMBER 1999" - }, - { - "executables": [{"is_launcher": false, "name": "shop heroes/shopheroes.exe", "os": "win32"}], - "hook": true, - "id": "1124353812157706240", - "name": "Shop Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "simulacra/simulacra.exe", "os": "win32"}], - "hook": true, - "id": "1124353814087090296", - "name": "SIMULACRA" - }, - { - "executables": [{"is_launcher": false, "name": "atomicrops/atomicrops.exe", "os": "win32"}], - "hook": true, - "id": "1124353819858456576", - "name": "Atomicrops" - }, - { - "executables": [{"is_launcher": false, "name": "fell seal/fell seal.exe", "os": "win32"}], - "hook": true, - "id": "1124353821968183366", - "name": "Fell Seal: Arbiter's Mark" - }, - { - "executables": [{"is_launcher": false, "name": "wtl/wtl.exe", "os": "win32"}], - "hook": true, - "id": "1124353823482335302", - "name": "while True: learn()" - }, - { - "executables": [{"is_launcher": false, "name": "rollercoaster tycoon classic/rctclassic.exe", "os": "win32"}], - "hook": true, - "id": "1124353824971309166", - "name": "RollerCoaster Tycoon Classic" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "street fighter 30th anniversary collection/sf30thanniversarycollection.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353826565140561", - "name": "Street Fighter 30th Anniversary Collection" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "dr livesey giga based edition/dr livesey rom and death edition.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353828700045452", - "name": "DR LIVESEY ROM AND DEATH EDITION" - }, - { - "executables": [{"is_launcher": false, "name": "dirt 5/dirt5.exe", "os": "win32"}], - "hook": true, - "id": "1124353830700724280", - "name": "DIRT 5" - }, - { - "executables": [ - {"is_launcher": false, "name": "swords & souls neverseen/swords & souls neverseen.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353832596557944", - "name": "Swords & Souls: Neverseen" - }, - { - "executables": [ - {"is_launcher": false, "name": "the elder scrolls arena/dosbox-0.74/dosbox.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353834811142184", - "name": "The Elder Scrolls: Arena" - }, - { - "executables": [{"is_launcher": false, "name": "release/rof.exe", "os": "win32"}], - "hook": true, - "id": "1124353836715364452", - "name": "Rise of Flight United" - }, - { - "executables": [{"is_launcher": false, "name": "going under/going under.exe", "os": "win32"}], - "hook": true, - "id": "1124353838288224348", - "name": "Going Under" - }, - { - "executables": [{"is_launcher": false, "name": "warplanes ww2 dogfight/warplanes.exe", "os": "win32"}], - "hook": true, - "id": "1124353840129527878", - "name": "Warplanes: WW2 Dogfight" - }, - { - "executables": [{"is_launcher": false, "name": "launcher/za4.exe", "os": "win32"}], - "hook": true, - "id": "1124353841626890311", - "name": "Zombie Army 4: Dead War" - }, - { - "executables": [{"is_launcher": false, "name": "cave crawler/cavecrawler.exe", "os": "win32"}], - "hook": true, - "id": "1124353843396882485", - "name": "Cave Crawler" - }, - { - "executables": [{"is_launcher": false, "name": "cold waters/coldwaters.exe", "os": "win32"}], - "hook": true, - "id": "1124353845036859512", - "name": "Cold Waters" - }, - { - "executables": [{"is_launcher": false, "name": "tracknburn_windows/track & burn.exe", "os": "win32"}], - "hook": true, - "id": "1124353846618103838", - "name": "Track and Burn" - }, - { - "executables": [{"is_launcher": false, "name": "pixel painter/pixel painter.exe", "os": "win32"}], - "hook": true, - "id": "1124353848253890660", - "name": "Pixel Painter" - }, - { - "executables": [{"is_launcher": false, "name": "air brawl/air brawl.exe", "os": "win32"}], - "hook": true, - "id": "1124353850132942969", - "name": "Air Brawl" - }, - { - "executables": [{"is_launcher": false, "name": "steamworld dig 2/dig2.exe", "os": "win32"}], - "hook": true, - "id": "1124353851852603443", - "name": "SteamWorld Dig 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/rsg-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353853643575397", - "name": "EVERSPACE\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "win64/launchwinterwar.exe", "os": "win32"}], - "hook": true, - "id": "1124353860077633607", - "name": "Talvisota - Winter War" - }, - { - "executables": [{"is_launcher": false, "name": "cncremastered/clientg.exe", "os": "win32"}], - "hook": true, - "id": "1124353861876994170", - "name": "Command & Conquer\u2122 Remastered Collection" - }, - { - "executables": [ - {"is_launcher": false, "name": "bbq simulator the squad/bbq_simulator_thesquad.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353865869967410", - "name": "BBQ Simulator: The Squad" - }, - { - "executables": [{"is_launcher": false, "name": "pharaoh + cleopatra/pharaoh.exe", "os": "win32"}], - "hook": true, - "id": "1124353868369776680", - "name": "Pharaoh + Cleopatra" - }, - { - "executables": [{"is_launcher": false, "name": "escape simulator demo/escape simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124353870060077209", - "name": "Escape Simulator Demo" - }, - { - "executables": [{"is_launcher": false, "name": "desktop dungeons/desktopdungeons.exe", "os": "win32"}], - "hook": true, - "id": "1124353872006230156", - "name": "Desktop Dungeons" - }, - { - "executables": [{"is_launcher": false, "name": "syberia/game.exe", "os": "win32"}], - "hook": true, - "id": "1124353873704931448", - "name": "Syberia" - }, - { - "executables": [{"is_launcher": false, "name": "master of orion/masteroforion.exe", "os": "win32"}], - "hook": true, - "id": "1124353875785297920", - "name": "Master of Orion" - }, - { - "executables": [{"is_launcher": false, "name": "dynasty warriors 8/launch.exe", "os": "win32"}], - "hook": true, - "id": "1124353877735657583", - "name": "DYNASTY WARRIORS 8: Xtreme Legends Complete Edition" - }, - { - "executables": [{"is_launcher": false, "name": "emily is away 3/emily3.exe", "os": "win32"}], - "hook": true, - "id": "1124353879551787148", - "name": "Emily is Away <3" - }, - { - "executables": [{"is_launcher": false, "name": "treasure of nadia/game.exe", "os": "win32"}], - "hook": true, - "id": "1124353883188244560", - "name": "Treasure of Nadia" - }, - { - "executables": [{"is_launcher": false, "name": "p4u2/p4u2.exe", "os": "win32"}], - "hook": true, - "id": "1124353884735946842", - "name": "Persona 4 Arena Ultimax" - }, - { - "executables": [{"is_launcher": false, "name": "dear esther landmark edition/dearesther.exe", "os": "win32"}], - "hook": true, - "id": "1124353886526910504", - "name": "Dear Esther: Landmark Edition" - }, - { - "executables": [{"is_launcher": false, "name": "florence/florence.exe", "os": "win32"}], - "hook": true, - "id": "1124353888405966869", - "name": "Florence" - }, - { - "executables": [{"is_launcher": false, "name": "win64/carnal_instinct-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353890138210414", - "name": "Carnal Instinct" - }, - { - "executables": [{"is_launcher": false, "name": "batla/batla.exe", "os": "win32"}], - "hook": true, - "id": "1124353892310864007", - "name": "Batla" - }, - { - "executables": [ - {"is_launcher": false, "name": "crafting idle clicker/crafting idle clicker.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353894059880558", - "name": "Crafting Idle Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "embr/fireproject.exe", "os": "win32"}], - "hook": true, - "id": "1124353895867633764", - "name": "Embr" - }, - { - "executables": [{"is_launcher": false, "name": "let's build a zoo/letsbuildazoo.exe", "os": "win32"}], - "hook": true, - "id": "1124353897419522191", - "name": "Let's Build a Zoo" - }, - { - "executables": [{"is_launcher": false, "name": "this land is my land/this land is my land.exe", "os": "win32"}], - "hook": true, - "id": "1124353898921078805", - "name": "This Land Is My Land" - }, - { - "executables": [{"is_launcher": false, "name": "per aspera/per aspera.exe", "os": "win32"}], - "hook": true, - "id": "1124353900623974441", - "name": "Per Aspera" - }, - { - "executables": [{"is_launcher": false, "name": "win64/creed-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353904436592701", - "name": "Creed: Rise to Glory\u2122" - }, - { - "executables": [ - {"is_launcher": false, "name": "gunsmith simulator prologue/gunsmith simulator prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353906122698874", - "name": "Gunsmith Simulator: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "warno/warno.exe", "os": "win32"}], - "hook": true, - "id": "1124353907817201674", - "name": "WARNO" - }, - { - "executables": [{"is_launcher": false, "name": "isonzo/isonzo.exe", "os": "win32"}], - "hook": true, - "id": "1124353909385867426", - "name": "Isonzo" - }, - { - "executables": [{"is_launcher": false, "name": "figment/figment.exe", "os": "win32"}], - "hook": true, - "id": "1124353911390752848", - "name": "Figment" - }, - { - "executables": [{"is_launcher": false, "name": "untrusted/untrusted.exe", "os": "win32"}], - "hook": true, - "id": "1124353913655672884", - "name": "Untrusted" - }, - { - "executables": [{"is_launcher": false, "name": "the longing/the longing.exe", "os": "win32"}], - "hook": true, - "id": "1124353915299844136", - "name": ":THE LONGING:" - }, - { - "executables": [{"is_launcher": false, "name": "ngu industries/ngu industries.exe", "os": "win32"}], - "hook": true, - "id": "1124353917166301224", - "name": "NGU INDUSTRIES" - }, - { - "executables": [{"is_launcher": false, "name": "onigiri/onigiri.exe", "os": "win32"}], - "hook": true, - "id": "1124353918781116416", - "name": "Onigiri" - }, - { - "executables": [{"is_launcher": false, "name": "richman10/richman10.exe", "os": "win32"}], - "hook": true, - "id": "1124353920597246144", - "name": "\u5927\u5bcc\u7fc110(Richman 10)" - }, - { - "executables": [{"is_launcher": false, "name": "sniper elite/sniperelite.exe", "os": "win32"}], - "hook": true, - "id": "1124353922555990147", - "name": "Sniper Elite" - }, - { - "executables": [{"is_launcher": false, "name": "intralism/intralism.exe", "os": "win32"}], - "hook": true, - "id": "1124353924451811348", - "name": "Intralism" - }, - { - "executables": [{"is_launcher": false, "name": "mansions of madness/mansions of madness.exe", "os": "win32"}], - "hook": true, - "id": "1124353926033059990", - "name": "Mansions of Madness" - }, - { - "executables": [{"is_launcher": false, "name": "fake lay/fakelay.exe", "os": "win32"}], - "hook": true, - "id": "1124353928100860025", - "name": "Fake Lay" - }, - { - "executables": [{"is_launcher": false, "name": "win64/smhcvr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353929887625216", - "name": "Spider-Man: Homecoming - Virtual Reality Experience" - }, - { - "executables": [ - {"is_launcher": false, "name": "amanda the adventurer/amanda the adventurer.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353931426943107", - "name": "Amanda the Adventurer" - }, - { - "executables": [{"is_launcher": false, "name": "win64/aimbeast-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353932999802900", - "name": "Aimbeast" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ccff7r-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353934623002726", - "name": "CRISIS CORE \u2013FINAL FANTASY VII\u2013 REUNION" - }, - { - "executables": [{"is_launcher": false, "name": "surgeon simulator 2/surgeon simulator 2.exe", "os": "win32"}], - "hook": true, - "id": "1124353936980197457", - "name": "Surgeon Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "emberknights/emberknights_64.exe", "os": "win32"}], - "hook": true, - "id": "1124353938473365534", - "name": "Ember Knights" - }, - { - "executables": [{"is_launcher": false, "name": "industryidle/industryidle.exe", "os": "win32"}], - "hook": true, - "id": "1124353940348223628", - "name": "Industry Idle" - }, - { - "executables": [{"is_launcher": false, "name": "head goal/headgoal.exe", "os": "win32"}], - "hook": true, - "id": "1124353941874954381", - "name": "Head Goal: Soccer Online" - }, - { - "executables": [{"is_launcher": false, "name": "purrgatory/purrgatory.exe", "os": "win32"}], - "hook": true, - "id": "1124353943653335170", - "name": "Purrgatory" - }, - { - "executables": [{"is_launcher": false, "name": "duck simulator 2/duck simulator 2.exe", "os": "win32"}], - "hook": true, - "id": "1124353945276534814", - "name": "Duck Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/worldofgoo.exe", "os": "win32"}], - "hook": true, - "id": "1124353946874560633", - "name": "World of Goo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/police-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353948539695185", - "name": "Police Simulator: Patrol Duty" - }, - { - "executables": [{"is_launcher": false, "name": "blazblue chronophantasma extend/bbcpex.exe", "os": "win32"}], - "hook": true, - "id": "1124353950485860352", - "name": "BlazBlue: Chronophantasma Extend" - }, - { - "executables": [{"is_launcher": false, "name": "win64/iwtb-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353952432013432", - "name": "Phantom Doctrine" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "train station renovation - first job/trainstationrenovation.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124353954403332156", - "name": "Train Station Renovation - First Job" - }, - { - "executables": [{"is_launcher": false, "name": "n++/n++.exe", "os": "win32"}], - "hook": true, - "id": "1124353956081057812", - "name": "N++" - }, - { - "executables": [{"is_launcher": false, "name": "victory/victory.exe", "os": "win32"}], - "hook": true, - "id": "1124353957783949323", - "name": "Victory: The Age of Racing" - }, - { - "executables": [{"is_launcher": false, "name": "win64/snow-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353960401186876", - "name": "Til Nord" - }, - { - "executables": [ - {"is_launcher": false, "name": "inertial drift sunset prologue/inertialdrift.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353962162798703", - "name": "Inertial Drift Sunset Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win_x86/scania_truck_driving_simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124353966122225695", - "name": "Scania Truck Driving Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "fap queen/fq.exe", "os": "win32"}], - "hook": true, - "id": "1124353967732834414", - "name": "Fap Queen" - }, - { - "executables": [{"is_launcher": false, "name": "snakeybus/snakeybus.exe", "os": "win32"}], - "hook": true, - "id": "1124353969523806308", - "name": "Snakeybus" - }, - { - "executables": [{"is_launcher": false, "name": "battle ball/dodgeball.exe", "os": "win32"}], - "hook": true, - "id": "1124353971289600141", - "name": "Battle Ball" - }, - { - "executables": [{"is_launcher": false, "name": "win64/battalion_betaclient.exe", "os": "win32"}], - "hook": true, - "id": "1124353972904411176", - "name": "Fog Of War - Free Edition" - }, - { - "executables": [{"is_launcher": false, "name": "stream racer/streamracer.exe", "os": "win32"}], - "hook": true, - "id": "1124353974720548927", - "name": "Stream Racer" - }, - { - "executables": [{"is_launcher": false, "name": "idle wizard/idlewizard.exe", "os": "win32"}], - "hook": true, - "id": "1124353976389873795", - "name": "Idle Wizard" - }, - { - "executables": [{"is_launcher": false, "name": "immortal redneck/immortalredneck.exe", "os": "win32"}], - "hook": true, - "id": "1124353978222788698", - "name": "Immortal Redneck" - }, - { - "executables": [{"is_launcher": false, "name": "project warlock/pw_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124353979816620073", - "name": "Project Warlock" - }, - { - "executables": [{"is_launcher": false, "name": "uboat/uboat.exe", "os": "win32"}], - "hook": true, - "id": "1124353981326577695", - "name": "UBOAT" - }, - { - "executables": [{"is_launcher": false, "name": "releaseexe/evilgeniusexestub-release.exe", "os": "win32"}], - "hook": true, - "id": "1124353983226589224", - "name": "Evil Genius" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kholat-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353985042731008", - "name": "KHOLAT" - }, - { - "executables": [ - {"is_launcher": false, "name": "we were here together demo/we were here together.exe", "os": "win32"} - ], - "hook": true, - "id": "1124353986821111830", - "name": "We Were Here Together Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/beer_factory-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124353989174112256", - "name": "Beer Factory - Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "lust theory/lusttheorys1.exe", "os": "win32"}], - "hook": true, - "id": "1124353990914752582", - "name": "Lust Theory" - }, - { - "executables": [{"is_launcher": false, "name": "thief_gold/thief.exe", "os": "win32"}], - "hook": true, - "id": "1124353992852525167", - "name": "Thief Gold" - }, - { - "executables": [{"is_launcher": false, "name": "fraim/fraim.exe", "os": "win32"}], - "hook": true, - "id": "1124353994979033119", - "name": "FRAIM" - }, - { - "executables": [{"is_launcher": false, "name": "i wanna maker/i wanna maker.exe", "os": "win32"}], - "hook": true, - "id": "1124353996719673466", - "name": "I Wanna Maker" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon alchemist/dungeon alchemist.exe", "os": "win32"}], - "hook": true, - "id": "1124353998242197524", - "name": "Dungeon Alchemist" - }, - { - "executables": [{"is_launcher": false, "name": "rage of car force/rageofcarforce.exe", "os": "win32"}], - "hook": true, - "id": "1124354000679092324", - "name": "Rage of Car Force: Car Crashing Games" - }, - { - "executables": [{"is_launcher": false, "name": "win64/awayout.exe", "os": "win32"}], - "hook": true, - "id": "1124354002495230122", - "name": "A Way Out" - }, - { - "executables": [{"is_launcher": false, "name": "dude simulator 2/dudesimulator2.exe", "os": "win32"}], - "hook": true, - "id": "1124354004328136836", - "name": "Dude Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "aceofspades/aos.exe", "os": "win32"}], - "hook": true, - "id": "1124354005909385298", - "name": "Ace of Spades" - }, - { - "executables": [{"is_launcher": false, "name": "wall world/wallworld.exe", "os": "win32"}], - "hook": true, - "id": "1124354009449381988", - "name": "Wall World" - }, - { - "executables": [{"is_launcher": false, "name": "kawaii neko girls/kawaii neko girls.exe", "os": "win32"}], - "hook": true, - "id": "1124354010963521707", - "name": "Kawaii Neko Girls" - }, - { - "executables": [{"is_launcher": false, "name": "smart game booster for steam/sgbmain.exe", "os": "win32"}], - "hook": true, - "id": "1124354012599304224", - "name": "Smart Game Booster" - }, - { - "executables": [{"is_launcher": false, "name": "shadows of doubt/shadows of doubt.exe", "os": "win32"}], - "hook": true, - "id": "1124354014314778634", - "name": "Shadows of Doubt" - }, - { - "executables": [{"is_launcher": false, "name": "the red strings club/trsc2017.exe", "os": "win32"}], - "hook": true, - "id": "1124354015795363940", - "name": "The Red Strings Club" - }, - { - "executables": [{"is_launcher": false, "name": "manhunt/manhunt.exe", "os": "win32"}], - "hook": true, - "id": "1124354017481469982", - "name": "Manhunt" - }, - { - "executables": [{"is_launcher": false, "name": "ixion/ixion.exe", "os": "win32"}], - "hook": true, - "id": "1124354034359357521", - "name": "IXION" - }, - { - "executables": [{"is_launcher": false, "name": "hentai crush/hentai crush.exe", "os": "win32"}], - "hook": true, - "id": "1124354036020297778", - "name": "Hentai Crush" - }, - { - "executables": [{"is_launcher": false, "name": "win64/plagueproject-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354037693829182", - "name": "Thymesia" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hacker_simulator_t-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354039568674939", - "name": "Hacker Simulator: Free Trial" - }, - { - "executables": [{"is_launcher": false, "name": "bean/bean.exe", "os": "win32"}], - "hook": true, - "id": "1124354041309315112", - "name": "Bean" - }, - { - "executables": [ - {"is_launcher": false, "name": "no time to explain remastered/notimetoexplain.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354042961875057", - "name": "No Time To Explain Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2022 demo/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124354044593455215", - "name": "Football Manager 2022 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "gizmovr video player/gizmovr.exe", "os": "win32"}], - "hook": true, - "id": "1124354046350864476", - "name": "GizmoVR Video Player" - }, - { - "executables": [{"is_launcher": false, "name": "occult/occult.exe", "os": "win32"}], - "hook": true, - "id": "1124354048171196417", - "name": "Occult" - }, - { - "executables": [{"is_launcher": false, "name": "caveblazers/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354049827942430", - "name": "Caveblazers" - }, - { - "executables": [{"is_launcher": false, "name": "steam/gearstactics.exe", "os": "win32"}], - "hook": true, - "id": "1124354051434364928", - "name": "Gears Tactics" - }, - { - "executables": [{"is_launcher": false, "name": "musynx/musynx.exe", "os": "win32"}], - "hook": true, - "id": "1124354053107888218", - "name": "MUSYNX" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "car detailing simulator prologue/car detailing simulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354054680756355", - "name": "Car Detailing Simulator: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2021 demo/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124354056073261176", - "name": "Football Manager 2021 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "hitman sniper challenge/hmsc.exe", "os": "win32"}], - "hook": true, - "id": "1124354057788739594", - "name": "Hitman: Sniper Challenge" - }, - { - "executables": [{"is_launcher": false, "name": "megaton rainfall/megatonrainfall.exe", "os": "win32"}], - "hook": true, - "id": "1124354059651006604", - "name": "Megaton Rainfall" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dodgeit-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354061509087236", - "name": "Dodge It!" - }, - { - "executables": [{"is_launcher": false, "name": "win64/trashpatrol-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354063220355163", - "name": "Trash Patrol - Academic Version" - }, - { - "executables": [{"is_launcher": false, "name": "arena of kings/arenaofkings.exe", "os": "win32"}], - "hook": true, - "id": "1124354065132961912", - "name": "Arena of Kings" - }, - { - "executables": [{"is_launcher": false, "name": "untilyoufall/untilyoufall.exe", "os": "win32"}], - "hook": true, - "id": "1124354066827456654", - "name": "Until You Fall" - }, - { - "executables": [{"is_launcher": false, "name": "cardlife/cardlife.exe", "os": "win32"}], - "hook": true, - "id": "1124354068572295228", - "name": "CardLife" - }, - { - "executables": [{"is_launcher": false, "name": "desertlegend/desertlegend.exe", "os": "win32"}], - "hook": true, - "id": "1124354070250012803", - "name": "Sands of Salzaar" - }, - { - "executables": [ - {"is_launcher": false, "name": "ravenfield multiplayer/ravenfield multiplayer.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354071948710008", - "name": "Ravenfield: Multiplayer Mod" - }, - { - "executables": [ - {"is_launcher": false, "name": "antimatter dimensions/antimatter dimensions.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354073781612645", - "name": "Antimatter Dimensions" - }, - { - "executables": [{"is_launcher": false, "name": "skyhill/skyhill.exe", "os": "win32"}], - "hook": true, - "id": "1124354075631304855", - "name": "SKYHILL" - }, - { - "executables": [{"is_launcher": false, "name": "madguns/madguns.exe", "os": "win32"}], - "hook": true, - "id": "1124354077426462740", - "name": "MadGuns" - }, - { - "executables": [{"is_launcher": false, "name": "disgaea 5 complete/disgaea5.exe", "os": "win32"}], - "hook": true, - "id": "1124354078923837560", - "name": "Disgaea 5 Complete" - }, - { - "executables": [{"is_launcher": false, "name": "win32/baebloodparty.exe", "os": "win32"}], - "hook": true, - "id": "1124354081146814524", - "name": "Ben and Ed - Blood Party" - }, - { - "executables": [{"is_launcher": false, "name": "ghostexile/ghostexile.exe", "os": "win32"}], - "hook": true, - "id": "1124354082665144541", - "name": "Ghost Exile" - }, - { - "executables": [{"is_launcher": false, "name": "dis the game/dis the game.exe", "os": "win32"}], - "hook": true, - "id": "1124354084493869118", - "name": "Dis The Game" - }, - { - "executables": [{"is_launcher": false, "name": "fear & hunger/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354086163198112", - "name": "Fear & Hunger" - }, - { - "executables": [{"is_launcher": false, "name": "driver booster 6 for steam/driverbooster.exe", "os": "win32"}], - "hook": true, - "id": "1124354087769620530", - "name": "Driver Booster 6 for Steam" - }, - { - "executables": [{"is_launcher": false, "name": "princess & conquest/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354089183096842", - "name": "Princess & Conquest" - }, - { - "executables": [{"is_launcher": false, "name": "bin/luftrausers.exe", "os": "win32"}], - "hook": true, - "id": "1124354090797908109", - "name": "LUFTRAUSERS" - }, - { - "executables": [{"is_launcher": false, "name": "littlebigworkshop/littlebigworkshop.exe", "os": "win32"}], - "hook": true, - "id": "1124354093142519900", - "name": "Little Big Workshop" - }, - { - "executables": [{"is_launcher": false, "name": "furryfury/furryfury.exe", "os": "win32"}], - "hook": true, - "id": "1124354094983823420", - "name": "FurryFury" - }, - { - "executables": [{"is_launcher": false, "name": "accounting/accounting.exe", "os": "win32"}], - "hook": true, - "id": "1124354096674131978", - "name": "Accounting" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thunder2305-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354098448318525", - "name": "Thunder Tier One" - }, - { - "executables": [ - {"is_launcher": false, "name": "warhammer 40,000 inquisitor - martyr/warhammer.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354100251873490", - "name": "Warhammer 40,000: Inquisitor - Prophecy" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "tom clancy's rainbow six siege - test server/rainbowsix_vulkan.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354102135111761", - "name": "Tom Clancy's Rainbow Six Siege - Test Server" - }, - { - "executables": [{"is_launcher": false, "name": "hylics/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354104068681880", - "name": "Hylics" - }, - { - "executables": [{"is_launcher": false, "name": "ann/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124354105612193936", - "name": "Ann" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/killorlove.exe", "os": "win32"}], - "hook": true, - "id": "1124354110813122610", - "name": "Kill or Love" - }, - { - "executables": [{"is_launcher": false, "name": "mother russia bleeds/mother russia bleeds.exe", "os": "win32"}], - "hook": true, - "id": "1124354112599900190", - "name": "Mother Russia Bleeds" - }, - { - "executables": [{"is_launcher": false, "name": "othercide/othercide.exe", "os": "win32"}], - "hook": true, - "id": "1124354114260840571", - "name": "Othercide" - }, - { - "executables": [{"is_launcher": false, "name": "pet idle/pet idle.exe", "os": "win32"}], - "hook": true, - "id": "1124354116110536755", - "name": "Pet idle" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ride3-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354117784055989", - "name": "RIDE 3" - }, - { - "executables": [{"is_launcher": false, "name": "fibbage xl/fibbage xl.exe", "os": "win32"}], - "hook": true, - "id": "1124354119524700190", - "name": "Fibbage XL" - }, - { - "executables": [{"is_launcher": false, "name": "win64/theinfected-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354121386967152", - "name": "The Infected" - }, - { - "executables": [{"is_launcher": false, "name": "bounty of one/bountyofone.exe", "os": "win32"}], - "hook": true, - "id": "1124354126663397406", - "name": "Bounty of One" - }, - { - "executables": [ - {"is_launcher": false, "name": "russian life simulator/russian life simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354130551521300", - "name": "Russian Life Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "mini world block art/minigameapp.exe", "os": "win32"}], - "hook": true, - "id": "1124354132250218577", - "name": "Mini World: Block Art" - }, - { - "executables": [{"is_launcher": false, "name": "necrosmith/necrosmith.exe", "os": "win32"}], - "hook": true, - "id": "1124354134481580162", - "name": "Necrosmith" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2023 demo/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124354136016703619", - "name": "Football Manager 2023 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "potion permit/potion permit.exe", "os": "win32"}], - "hook": true, - "id": "1124354137614729256", - "name": "Potion Permit" - }, - { - "executables": [{"is_launcher": false, "name": "f1 23/f1_23.exe", "os": "win32"}], - "hook": true, - "id": "1124354139078537286", - "name": "F1\u00ae 23" - }, - { - "executables": [ - {"is_launcher": false, "name": "papa's freezeria deluxe/papa's freezeria deluxe.exe", "os": "win32"} - ], - "hook": false, - "id": "1124354140710129775", - "name": "Papa's Freezeria Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "sonic generations demo/configurationtool.exe", "os": "win32"}], - "hook": true, - "id": "1124354142371070033", - "name": "Sonic Generations Demo" - }, - { - "executables": [{"is_launcher": false, "name": "kane & lynch 2 - dog days/kl2.exe", "os": "win32"}], - "hook": true, - "id": "1124354144275280012", - "name": "Kane & Lynch 2: Dog Days" - }, - { - "executables": [{"is_launcher": false, "name": "megaquarium/megaquarium.exe", "os": "win32"}], - "hook": true, - "id": "1124354145936232541", - "name": "Megaquarium" - }, - { - "executables": [{"is_launcher": false, "name": "her story/herstory.exe", "os": "win32"}], - "hook": true, - "id": "1124354147664281601", - "name": "Her Story" - }, - { - "executables": [{"is_launcher": false, "name": "zenith mmo/unityclient@windows.exe", "os": "win32"}], - "hook": true, - "id": "1124354149736263761", - "name": "Zenith MMO" - }, - { - "executables": [{"is_launcher": false, "name": "lovers of aether/loversofaether.exe", "os": "win32"}], - "hook": true, - "id": "1124354151913111702", - "name": "Lovers of Aether" - }, - { - "executables": [{"is_launcher": false, "name": "yakuza 3/yakuza3.exe", "os": "win32"}], - "hook": true, - "id": "1124354153762795580", - "name": "Yakuza 3 Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "win64/crad-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354155654434909", - "name": "MisBits" - }, - { - "executables": [{"is_launcher": false, "name": "scpcbr/scpcbr.exe", "os": "win32"}], - "hook": true, - "id": "1124354157516697711", - "name": "SCP: Containment Breach Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "ggcr/togg.exe", "os": "win32"}], - "hook": true, - "id": "1124354159236370543", - "name": "SD GUNDAM G GENERATION CROSS RAYS" - }, - { - "executables": [{"is_launcher": false, "name": "haven/haven.exe", "os": "win32"}], - "hook": true, - "id": "1124354160985387130", - "name": "Haven" - }, - { - "executables": [{"is_launcher": false, "name": "outcore/outcore.exe", "os": "win32"}], - "hook": true, - "id": "1124354162663116810", - "name": "Outcore" - }, - { - "executables": [{"is_launcher": false, "name": "bio inc. redemption/bioincredemption.exe", "os": "win32"}], - "hook": true, - "id": "1124354164416327710", - "name": "Bio Inc. Redemption" - }, - { - "executables": [{"is_launcher": false, "name": "wwe 2k19/wwe2k19_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124354166286991430", - "name": "WWE 2K19" - }, - { - "executables": [{"is_launcher": false, "name": "youtubevr/youtubevr.exe", "os": "win32"}], - "hook": true, - "id": "1124354168925204652", - "name": "YouTube VR" - }, - { - "executables": [{"is_launcher": false, "name": "resident evil 6 benchmark tool/re6.exe", "os": "win32"}], - "hook": true, - "id": "1124354170724569158", - "name": "Resident Evil 6 Benchmark Tool" - }, - { - "executables": [{"is_launcher": false, "name": "pixel starships/pixel starships.exe", "os": "win32"}], - "hook": true, - "id": "1124354172440035358", - "name": "Pixel Starships" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sexwithdevil-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354174310699169", - "name": "Sex with the Devil" - }, - { - "executables": [{"is_launcher": false, "name": "zombie night terror/znt.exe", "os": "win32"}], - "hook": true, - "id": "1124354176055521310", - "name": "Zombie Night Terror" - }, - { - "executables": [{"is_launcher": false, "name": "bread & fred/bread&fred.exe", "os": "win32"}], - "hook": true, - "id": "1124354177745834014", - "name": "Bread & Fred" - }, - { - "executables": [{"is_launcher": false, "name": "valiant hearts/valiant hearts.exe", "os": "win32"}], - "hook": true, - "id": "1124354179822006272", - "name": "Valiant Hearts: The Great War\u2122 / Soldats Inconnus : M\u00e9moires de la Grande Guerre\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "gorogoa/gorogoa.exe", "os": "win32"}], - "hook": true, - "id": "1124354181772361728", - "name": "Gorogoa" - }, - { - "executables": [{"is_launcher": false, "name": "hypnospace outlaw/hypnos.exe", "os": "win32"}], - "hook": true, - "id": "1124354183814991963", - "name": "Hypnospace Outlaw" - }, - { - "executables": [{"is_launcher": false, "name": "epistory/epistory.exe", "os": "win32"}], - "hook": true, - "id": "1124354185433989170", - "name": "Epistory - Typing Chronicles" - }, - { - "executables": [{"is_launcher": false, "name": "feel the snow/feelthesnow.exe", "os": "win32"}], - "hook": true, - "id": "1124354187011043481", - "name": "Feel The Snow" - }, - { - "executables": [{"is_launcher": false, "name": "maximum action/maximum action.exe", "os": "win32"}], - "hook": true, - "id": "1124354188755878048", - "name": "Maximum Action" - }, - { - "executables": [{"is_launcher": false, "name": "exe/cotm.exe", "os": "win32"}], - "hook": true, - "id": "1124354190488121365", - "name": "Bloodstained: Curse of the Moon" - }, - { - "executables": [{"is_launcher": false, "name": "iamfish/iamfish.exe", "os": "win32"}], - "hook": true, - "id": "1124354192220377147", - "name": "I Am Fish" - }, - { - "executables": [{"is_launcher": false, "name": "dude simulator/dudesimulator.exe", "os": "win32"}], - "hook": true, - "id": "1124354194044895312", - "name": "Dude Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "simrailprologue/simrail.exe", "os": "win32"}], - "hook": true, - "id": "1124354195491926047", - "name": "SimRail - The Railway Simulator: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "cooking simulator vr/cookingsimulatorvr.exe", "os": "win32"}], - "hook": true, - "id": "1124354197450670151", - "name": "Cooking Simulator VR" - }, - { - "executables": [{"is_launcher": false, "name": "micro platformer/micro platformer.exe", "os": "win32"}], - "hook": true, - "id": "1124354199073869844", - "name": "Micro Platformer" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "golfing over it with alva majo/golfing over it with alva majo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354201363951698", - "name": "Golfing Over It with Alva Majo" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "story of seasons friends of mineral town/story of seasons friends of mineral town.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354202907463700", - "name": "STORY OF SEASONS: Friends of Mineral Town" - }, - { - "executables": [{"is_launcher": false, "name": "moving out demo/movingout.exe", "os": "win32"}], - "hook": true, - "id": "1124354204597760042", - "name": "Moving Out Demo" - }, - { - "executables": [{"is_launcher": false, "name": "tukoni/tukoni.exe", "os": "win32"}], - "hook": true, - "id": "1124354206090940548", - "name": "Tukoni" - }, - { - "executables": [{"is_launcher": false, "name": "cat quest ii/cat quest ii.exe", "os": "win32"}], - "hook": true, - "id": "1124354207651209308", - "name": "Cat Quest II" - }, - { - "executables": [{"is_launcher": false, "name": "win64/playcraft.exe", "os": "win32"}], - "hook": true, - "id": "1124354208968233060", - "name": "Playcraft" - }, - { - "executables": [{"is_launcher": false, "name": "granny/granny.exe", "os": "win32"}], - "hook": true, - "id": "1124354210696278117", - "name": "Granny" - }, - { - "executables": [{"is_launcher": false, "name": "mad father/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354212495642698", - "name": "Mad Father" - }, - { - "executables": [ - {"is_launcher": false, "name": "tom clancy\u2019s rainbow six extraction/r6-extraction.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354215867854968", - "name": "Tom Clancys Rainbow Six Extraction" - }, - { - "executables": [{"is_launcher": false, "name": "highfleet/highfleet.exe", "os": "win32"}], - "hook": true, - "id": "1124354217709162556", - "name": "HighFleet" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sexual_void-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354219374297238", - "name": "Sexual Void" - }, - { - "executables": [{"is_launcher": false, "name": "siren head the siren's forest/sirean head.exe", "os": "win32"}], - "hook": true, - "id": "1124354221110743040", - "name": "Siren Head: The Siren's Forest" - }, - { - "executables": [{"is_launcher": false, "name": "clicker heroes 2/clickerheroes2.exe", "os": "win32"}], - "hook": true, - "id": "1124354222671016028", - "name": "Clicker Heroes 2" - }, - { - "executables": [{"is_launcher": false, "name": "win32/archeblade.exe", "os": "win32"}], - "hook": true, - "id": "1124354224336162867", - "name": "Archeblade" - }, - { - "executables": [{"is_launcher": false, "name": "the first tree/thefirsttree.exe", "os": "win32"}], - "hook": true, - "id": "1124354225946759358", - "name": "The First Tree" - }, - { - "executables": [{"is_launcher": false, "name": "flatout/flatout.exe", "os": "win32"}], - "hook": true, - "id": "1124354227519631502", - "name": "FlatOut" - }, - { - "executables": [{"is_launcher": false, "name": "not tonight/nottonight.exe", "os": "win32"}], - "hook": true, - "id": "1124354229771976854", - "name": "Not Tonight" - }, - { - "executables": [{"is_launcher": false, "name": "among the sleep/among the sleep.exe", "os": "win32"}], - "hook": true, - "id": "1124354231516811305", - "name": "Among the Sleep" - }, - { - "executables": [{"is_launcher": false, "name": "tilt brush/tiltbrush.exe", "os": "win32"}], - "hook": true, - "id": "1124354233286799410", - "name": "Tilt Brush" - }, - { - "executables": [{"is_launcher": false, "name": "half-life 2 vr/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124354235019055184", - "name": "Half-Life 2: VR Mod" - }, - { - "executables": [{"is_launcher": false, "name": "order of battle pacific/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124354236868735047", - "name": "Order of Battle: World War II" - }, - { - "executables": [{"is_launcher": false, "name": "brief karate foolish/sfwincf.exe", "os": "win32"}], - "hook": true, - "id": "1124354238756175912", - "name": "Brief Karate Foolish" - }, - { - "executables": [{"is_launcher": false, "name": "divinity2_dev_cut/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124354240505204797", - "name": "Divinity II: Developer's Cut" - }, - { - "executables": [{"is_launcher": false, "name": "zup! 8/zup! 8.exe", "os": "win32"}], - "hook": true, - "id": "1124354242308751440", - "name": "Zup! 8" - }, - { - "executables": [ - {"is_launcher": false, "name": "american theft 80s prologue/american theft 80s prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354243785142442", - "name": "American Theft 80s: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bussimulator21-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354245391569096", - "name": "Bus Simulator 21" - }, - { - "executables": [{"is_launcher": false, "name": "bin/spacelords.exe", "os": "win32"}], - "hook": true, - "id": "1124354247123812503", - "name": "Spacelords" - }, - { - "executables": [{"is_launcher": false, "name": "eastward/eastward.exe", "os": "win32"}], - "hook": true, - "id": "1124354248952533123", - "name": "Eastward" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "disney dreamlight valley - avatar designer demo/disneydreamlightvalley_demo_steam.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354251058065518", - "name": "Disney Dreamlight Valley - Avatar Designer Tool" - }, - { - "executables": [{"is_launcher": false, "name": "global city/city64.exe", "os": "win32"}], - "hook": true, - "id": "1124354252773544057", - "name": "Global City" - }, - { - "executables": [ - {"is_launcher": false, "name": "hand simulator horror/hand simulator horror.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354254468034590", - "name": "Hand Simulator: Horror" - }, - { - "executables": [{"is_launcher": false, "name": "r.u.s.e/ruse.exe", "os": "win32"}], - "hook": true, - "id": "1124354256602943498", - "name": "R.U.S.E" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2020 touch/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124354258289049660", - "name": "Football Manager 2020 Touch" - }, - { - "executables": [{"is_launcher": false, "name": "win64/darkalliance-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354260033875988", - "name": "Dungeons & Dragons: Dark Alliance" - }, - { - "executables": [{"is_launcher": false, "name": "ib/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354261615136858", - "name": "Ib" - }, - { - "executables": [{"is_launcher": false, "name": "win32/sherlock.exe", "os": "win32"}], - "hook": true, - "id": "1124354263536119849", - "name": "Sherlock Holmes: Crimes and Punishments" - }, - { - "executables": [{"is_launcher": false, "name": "win64/helloguest-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354265184489552", - "name": "Hello Guest: Hello Neighbor 2 pre-alpha" - }, - { - "executables": [{"is_launcher": false, "name": "win64/surviveall-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354267046752418", - "name": "Passed Out: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "academiaschoolsimulator/academia64.exe", "os": "win32"}], - "hook": true, - "id": "1124354269080993873", - "name": "Academia : School Simulator" - }, - { - "executables": [ - {"is_launcher": false, "name": "league of angle-heaven's fury/loa-hf-steam.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354270783885342", - "name": "League of Angels-Heaven's Fury" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tfba-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354272658731039", - "name": "Three Finger Battle Arena" - }, - { - "executables": [ - {"is_launcher": false, "name": "win64/contractors_ue4_22_steam-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354274311290890", - "name": "Contractors VR" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "resident evil village biohazard village gold edition gameplay demo/re8gedemo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354276127428728", - "name": "Resident Evil Village Gold Edition Gameplay Demo" - }, - { - "executables": [{"is_launcher": false, "name": "freeways/freeways.exe", "os": "win32"}], - "hook": true, - "id": "1124354279428341811", - "name": "Freeways" - }, - { - "executables": [{"is_launcher": false, "name": "win64/summer_of_58-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354281122836570", - "name": "Summer of '58" - }, - { - "executables": [{"is_launcher": false, "name": "fap queen 2/fap queen 2.exe", "os": "win32"}], - "hook": true, - "id": "1124354282779590736", - "name": "Fap Queen 2" - }, - { - "executables": [{"is_launcher": false, "name": "secretpie/secretpie.exe", "os": "win32"}], - "hook": true, - "id": "1124354284465705120", - "name": "Secret Pie" - }, - { - "executables": [{"is_launcher": false, "name": "ion fury/fury.exe", "os": "win32"}], - "hook": true, - "id": "1124354286135029890", - "name": "Ion Fury" - }, - { - "executables": [{"is_launcher": false, "name": "win64/highmoon-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354288504815676", - "name": "Evil West" - }, - { - "executables": [{"is_launcher": false, "name": "serial cleaner/cleaner.exe", "os": "win32"}], - "hook": true, - "id": "1124354290702626897", - "name": "Serial Cleaner" - }, - { - "executables": [{"is_launcher": false, "name": "weed shop 3/weed shop 3.exe", "os": "win32"}], - "hook": true, - "id": "1124354292632010893", - "name": "Weed Shop 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/chexhd-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354294443954267", - "name": "Chex Quest HD" - }, - { - "executables": [{"is_launcher": false, "name": "at home alone final/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354296251691208", - "name": "At Home Alone Final" - }, - { - "executables": [{"is_launcher": false, "name": "darksburg/darksburg.exe", "os": "win32"}], - "hook": true, - "id": "1124354297853923418", - "name": "Darksburg" - }, - { - "executables": [{"is_launcher": false, "name": "music racer/music racer.exe", "os": "win32"}], - "hook": true, - "id": "1124354299472908338", - "name": "Music Racer" - }, - { - "executables": [{"is_launcher": false, "name": "rpg mo/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124354301226143744", - "name": "RPG MO" - }, - { - "executables": [{"is_launcher": false, "name": "the council/the council.exe", "os": "win32"}], - "hook": true, - "id": "1124354302958383176", - "name": "The Council" - }, - { - "executables": [{"is_launcher": false, "name": "team sonic racing/gameapp_pcdx11_x64final.exe", "os": "win32"}], - "hook": true, - "id": "1124354304606748793", - "name": "Team Sonic Racing\u2122" - }, - { - "executables": [ - {"is_launcher": false, "name": "kingdom rush vengeance/kingdom rush vengeance.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354306066362388", - "name": "Kingdom Rush Vengeance" - }, - { - "executables": [{"is_launcher": false, "name": "two point campus/tpc.exe", "os": "win32"}], - "hook": true, - "id": "1124354307735703663", - "name": "Two Point Campus" - }, - { - "executables": [{"is_launcher": false, "name": "the last stand aftermath/tlsa.exe", "os": "win32"}], - "hook": true, - "id": "1124354309614747708", - "name": "The Last Stand: Aftermath" - }, - { - "executables": [{"is_launcher": false, "name": "win64/xcom.exe", "os": "win32"}], - "hook": true, - "id": "1124354311233744967", - "name": "XCOM: Chimera Squad" - }, - { - "executables": [{"is_launcher": false, "name": "pixel piracy/pixelpiracy.exe", "os": "win32"}], - "hook": true, - "id": "1124354312940834826", - "name": "Pixel Piracy" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vectromirror_zero-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354315184779385", - "name": "Vectromirror 0" - }, - { - "executables": [ - {"is_launcher": false, "name": "the designer's curse/the designer's curse chapter one.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354316875087912", - "name": "The Designer's Curse" - }, - { - "executables": [{"is_launcher": false, "name": "atdeadofnight/atdeadofnight.exe", "os": "win32"}], - "hook": true, - "id": "1124354318590562434", - "name": "At Dead Of Night" - }, - { - "executables": [{"is_launcher": false, "name": "zup!/zup!.exe", "os": "win32"}], - "hook": true, - "id": "1124354320788369459", - "name": "Zup!" - }, - { - "executables": [ - {"is_launcher": false, "name": "interplanetary enhanced edition/interplanetary.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354322327687188", - "name": "Interplanetary: Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "goonect/goonect.exe", "os": "win32"}], - "hook": true, - "id": "1124354323829243924", - "name": "Goonect" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "squad - public testing/squadgame/binaries/win64/squadgame.exe", - "os": "win32" - }, - {"is_launcher": true, "name": "squad - public testing/squad_launcher.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354325716676679", - "name": "Squad - Public Testing" - }, - { - "executables": [{"is_launcher": false, "name": "fph spedv/fph spedv.exe", "os": "win32"}], - "hook": true, - "id": "1124354327289548900", - "name": "SpedV" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "dr langeskov the tiger and the terribly cursed emerald a whirlwind heist/drlangeskov.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354328929513622", - "name": "Dr. Langeskov, The Tiger, and The Terribly Cursed Emerald: A Whirlwind Heist" - }, - { - "executables": [{"is_launcher": false, "name": "kandidatos/kandidatos.exe", "os": "win32"}], - "hook": true, - "id": "1124354330582077540", - "name": "Kandidatos" - }, - { - "executables": [{"is_launcher": false, "name": "warpips/warpips.exe", "os": "win32"}], - "hook": true, - "id": "1124354332222042112", - "name": "Warpips" - }, - { - "executables": [{"is_launcher": false, "name": "risingworld/risingworldx64.exe", "os": "win32"}], - "hook": true, - "id": "1124354334046568548", - "name": "Rising World" - }, - { - "executables": [{"is_launcher": false, "name": "saohf/saohf.exe", "os": "win32"}], - "hook": true, - "id": "1124354335845929030", - "name": "Sword Art Online Re: Hollow Fragment" - }, - { - "executables": [{"is_launcher": false, "name": "win64/icon-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354341235601418", - "name": "Disc Jam" - }, - { - "executables": [{"is_launcher": false, "name": "guild quest/guild-quest.exe", "os": "win32"}], - "hook": true, - "id": "1124354342804279346", - "name": "Guild Quest" - }, - { - "executables": [{"is_launcher": false, "name": "sow1 project/symphonyofwar.exe", "os": "win32"}], - "hook": true, - "id": "1124354344817537115", - "name": "Symphony of War: The Nephilim Saga" - }, - { - "executables": [{"is_launcher": false, "name": "crystal clash/crystalclash.exe", "os": "win32"}], - "hook": true, - "id": "1124354346608509059", - "name": "Crystal Clash" - }, - { - "executables": [{"is_launcher": false, "name": "cattails/cattails.exe", "os": "win32"}], - "hook": true, - "id": "1124354348349141062", - "name": "Cattails" - }, - { - "executables": [{"is_launcher": false, "name": "nekopara vol. 1 demo/nekopara_vol1_trial.exe", "os": "win32"}], - "hook": true, - "id": "1124354349913624756", - "name": "NEKOPARA Vol. 1 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wildlifec-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354351591342201", - "name": "Wild Life Demo" - }, - { - "executables": [{"is_launcher": false, "name": "pocket waifu/pw_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124354353403285514", - "name": "Pocket Waifu" - }, - { - "executables": [{"is_launcher": false, "name": "sub rosa/subrosa.exe", "os": "win32"}], - "hook": true, - "id": "1124354354997117022", - "name": "Sub Rosa" - }, - { - "executables": [ - {"is_launcher": false, "name": "car for sale simulator 2023/car for sale simulator 2023.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354356569976872", - "name": "Car For Sale Simulator 2023" - }, - { - "executables": [{"is_launcher": false, "name": "1v1.lol/1v1_lol.exe", "os": "win32"}], - "hook": true, - "id": "1124354358105096312", - "name": "1v1.LOL" - }, - { - "executables": [ - {"is_launcher": false, "name": "sword art online alicization lycoris/sao_al.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354359812182046", - "name": "SWORD ART ONLINE Alicization Lycoris" - }, - { - "executables": [{"is_launcher": false, "name": "common/master levels of doom/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124354361271795773", - "name": "Master Levels for DOOM II" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "totally reliable delivery service/totally reliable delivery service.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354363171811368", - "name": "Totally Reliable Delivery Service" - }, - { - "executables": [{"is_launcher": false, "name": "aiartimpostor/aiartimpostor.exe", "os": "win32"}], - "hook": true, - "id": "1124354364736295063", - "name": "AI\u30a2\u30fc\u30c8\u30a4\u30f3\u30dd\u30b9\u30bf\u30fc" - }, - { - "executables": [{"is_launcher": false, "name": "saiko no sutoka/saiko no sutoka.exe", "os": "win32"}], - "hook": true, - "id": "1124354366451761232", - "name": "Saiko no sutoka" - }, - { - "executables": [{"is_launcher": false, "name": "futa fix dick dine and dash/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354368095932466", - "name": "Futa Fix Dick Dine and Dash" - }, - { - "executables": [{"is_launcher": false, "name": "win64/trover-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354369794617365", - "name": "Trover Saves the Universe" - }, - { - "executables": [{"is_launcher": false, "name": "overlord/overlord.exe", "os": "win32"}], - "hook": true, - "id": "1124354371283603547", - "name": "Overlord" - }, - { - "executables": [{"is_launcher": false, "name": "win64/case2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354373535940738", - "name": "CASE 2: Animatronics Survival" - }, - { - "executables": [ - {"is_launcher": false, "name": "epic battle fantasy 5/epic battle fantasy 5.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354377080131675", - "name": "Epic Battle Fantasy 5" - }, - { - "executables": [{"is_launcher": false, "name": "shady knight demo/shady knight demo.exe", "os": "win32"}], - "hook": true, - "id": "1124354378883674152", - "name": "Shady Knight Demo" - }, - { - "executables": [{"is_launcher": false, "name": "batman the telltale series/batman.exe", "os": "win32"}], - "hook": true, - "id": "1124354380813058048", - "name": "Batman - The Telltale Series" - }, - { - "executables": [{"is_launcher": false, "name": "valley/valley.exe", "os": "win32"}], - "hook": true, - "id": "1124354382692110518", - "name": "Valley" - }, - { - "executables": [{"is_launcher": false, "name": "rebel forces/rebelforces.exe", "os": "win32"}], - "hook": true, - "id": "1124354384415965215", - "name": "Rebel Forces" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "sonic and sega all stars racing/sonic & sega all-stars racing.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354386064322660", - "name": "Sonic and SEGA All Stars Racing" - }, - { - "executables": [{"is_launcher": false, "name": "mojo 2 mia/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354387591057478", - "name": "Mojo 2: Mia" - }, - { - "executables": [ - {"is_launcher": false, "name": "captain bones prologue/captain bones prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354389621096478", - "name": "Captain Bones: Prologue" - }, - { - "executables": [ - {"is_launcher": false, "name": "they can't stop all of us/they cant stop all of us.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354391294627920", - "name": "They Can't Stop All Of Us" - }, - { - "executables": [{"is_launcher": false, "name": "house flipper 2 demo/houseflipper2.exe", "os": "win32"}], - "hook": true, - "id": "1124354392947175534", - "name": "House Flipper 2 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "house builder first job/housebuilder.exe", "os": "win32"}], - "hook": true, - "id": "1124354394771705947", - "name": "House Builder: First Job" - }, - { - "executables": [{"is_launcher": false, "name": "total war three kingdoms/three_kingdoms.exe", "os": "win32"}], - "hook": true, - "id": "1124354396462002308", - "name": "Total War: THREE KINGDOMS" - }, - { - "executables": [{"is_launcher": false, "name": "late shift/lateshift.exe", "os": "win32"}], - "hook": true, - "id": "1124354398290726982", - "name": "Late Shift" - }, - { - "executables": [ - {"is_launcher": false, "name": "crusaders of the lost idols/crusaders of the lost idols.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354400035553414", - "name": "Crusaders of the Lost Idols" - }, - { - "executables": [{"is_launcher": false, "name": "chromasquad/chromasquad.exe", "os": "win32"}], - "hook": true, - "id": "1124354402141098015", - "name": "Chroma Squad" - }, - { - "executables": [{"is_launcher": false, "name": "the white door/thewhitedoor.exe", "os": "win32"}], - "hook": true, - "id": "1124354404020142120", - "name": "The White Door" - }, - { - "executables": [{"is_launcher": false, "name": "pickle clicker/pickle clicker.exe", "os": "win32"}], - "hook": true, - "id": "1124354405538476143", - "name": "Pickle Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "creeper world 4 demo/cw4.exe", "os": "win32"}], - "hook": true, - "id": "1124354407245561896", - "name": "Creeper World 4 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "incremental cubes/incrementalcubes.exe", "os": "win32"}], - "hook": true, - "id": "1124354409229463593", - "name": "Incremental Cubes" - }, - { - "executables": [ - {"is_launcher": false, "name": "monster prom 3 - monster roadtrip/monsterroadtrip.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354410965909634", - "name": "Monster Prom 3: Monster Roadtrip" - }, - { - "executables": [{"is_launcher": false, "name": "kingdom rush origins/kingdom rush origins.exe", "os": "win32"}], - "hook": true, - "id": "1124354412794622083", - "name": "Kingdom Rush Origins" - }, - { - "executables": [ - {"is_launcher": false, "name": "spooky's jump scare mansion hd renovation/spookyunity.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354414409437215", - "name": "Spooky's Jump Scare Mansion: HD Renovation" - }, - { - "executables": [{"is_launcher": false, "name": "mmorpg tycoon 2/mt2.exe", "os": "win32"}], - "hook": true, - "id": "1124354416187818075", - "name": "MMORPG Tycoon 2" - }, - { - "executables": [{"is_launcher": false, "name": "captain of industry/captain of industry.exe", "os": "win32"}], - "hook": true, - "id": "1124354417760677999", - "name": "Captain of Industry" - }, - { - "executables": [{"is_launcher": false, "name": "scrapnaut prologue/scrapnaut.exe", "os": "win32"}], - "hook": true, - "id": "1124354419463569469", - "name": "Scrapnaut: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/terminator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354421271318569", - "name": "Terminator: Resistance" - }, - { - "executables": [{"is_launcher": false, "name": "stranded alien dawn/strandedsteam.exe", "os": "win32"}], - "hook": true, - "id": "1124354423024521227", - "name": "Stranded: Alien Dawn" - }, - { - "executables": [ - {"is_launcher": false, "name": "senran kagura estival versus/skestivalversus.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354424618365090", - "name": "SENRAN KAGURA ESTIVAL VERSUS" - }, - { - "executables": [{"is_launcher": false, "name": "party hard 2/partyhard2game.exe", "os": "win32"}], - "hook": true, - "id": "1124354426484834374", - "name": "Party Hard 2" - }, - { - "executables": [{"is_launcher": false, "name": "shadow warrior original/bin/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124354428011556894", - "name": "Shadow Warrior Classic (1997)" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bpmgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354429882220574", - "name": "BPM: BULLETS PER MINUTE" - }, - { - "executables": [{"is_launcher": false, "name": "flower/flower.exe", "os": "win32"}], - "hook": true, - "id": "1124354431752884326", - "name": "Flower" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the four kings casino and slots/the four kings casino and slots.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354434273656912", - "name": "The Four Kings Casino and Slots" - }, - { - "executables": [{"is_launcher": false, "name": "red dead redemption 2/playrdr2.exe", "os": "win32"}], - "hook": true, - "id": "1124354435896848434", - "name": "Red Dead Online" - }, - { - "executables": [{"is_launcher": false, "name": "among us vr/amongusvr.exe", "os": "win32"}], - "hook": true, - "id": "1124354437557800980", - "name": "Among Us VR" - }, - { - "executables": [{"is_launcher": false, "name": "iconoclasts/iconoclasts.exe", "os": "win32"}], - "hook": true, - "id": "1124354439298433154", - "name": "Iconoclasts" - }, - { - "executables": [{"is_launcher": false, "name": "no place like home/nplh.exe", "os": "win32"}], - "hook": true, - "id": "1124354441114570884", - "name": "No Place Like Home" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lostember-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354443115245710", - "name": "Lost Ember" - }, - { - "executables": [{"is_launcher": false, "name": "ring of pain/ring of pain.exe", "os": "win32"}], - "hook": true, - "id": "1124354447687041145", - "name": "Ring of Pain" - }, - { - "executables": [ - {"is_launcher": false, "name": "motorcycle mechanic simulator 2021 prologue/mms21p.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354452493717626", - "name": "Motorcycle Mechanic Simulator 2021: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "slava ukraini/slava ukraini.exe", "os": "win32"}], - "hook": true, - "id": "1124354457879195750", - "name": "Slava Ukraini!" - }, - { - "executables": [{"is_launcher": false, "name": "summerland/summerland.exe", "os": "win32"}], - "hook": true, - "id": "1124354460043460739", - "name": "Summerland" - }, - { - "executables": [{"is_launcher": false, "name": "indivisible/indivisible.exe", "os": "win32"}], - "hook": true, - "id": "1124354461960261812", - "name": "Indivisible" - }, - { - "executables": [{"is_launcher": false, "name": "arma 3 tools/arma3tools.exe", "os": "win32"}], - "hook": true, - "id": "1124354463654756562", - "name": "Arma 3 Tools" - }, - { - "executables": [{"is_launcher": false, "name": "blazblue calamity trigger/bbct.exe", "os": "win32"}], - "hook": true, - "id": "1124354465399582870", - "name": "BlazBlue: Calamity Trigger" - }, - { - "executables": [{"is_launcher": false, "name": "keplerth/keplerth.exe", "os": "win32"}], - "hook": true, - "id": "1124354467152810105", - "name": "Keplerth" - }, - { - "executables": [{"is_launcher": false, "name": "win64/chess2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354468826329119", - "name": "Chess Ultra" - }, - { - "executables": [{"is_launcher": false, "name": "battle realms/battle_realms_f.exe", "os": "win32"}], - "hook": true, - "id": "1124354470273372201", - "name": "Battle Realms: Zen Edition" - }, - { - "executables": [{"is_launcher": false, "name": "escape the ayuwoki/escape the ayuwoki.exe", "os": "win32"}], - "hook": true, - "id": "1124354471728791562", - "name": "Escape the Ayuwoki" - }, - { - "executables": [ - {"is_launcher": false, "name": "holyday city reloaded/holyday city reloaded.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354473398128660", - "name": "Holyday City: Reloaded" - }, - { - "executables": [{"is_launcher": false, "name": "woff/woff.exe", "os": "win32"}], - "hook": true, - "id": "1124354475788877906", - "name": "WORLD OF FINAL FANTASY" - }, - { - "executables": [{"is_launcher": false, "name": "clatter/clatter.exe", "os": "win32"}], - "hook": true, - "id": "1124354477718253670", - "name": "Clatter" - }, - { - "executables": [ - {"is_launcher": false, "name": "call of the wild the angler/cotwtheangler_steam.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354482478796870", - "name": "Call of the Wild: The Angler\u2122" - }, - { - "executables": [ - {"is_launcher": false, "name": "the final hours of portal 2/thefinalhoursofportal2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354484131348580", - "name": "Portal 2 - The Final Hours" - }, - { - "executables": [{"is_launcher": false, "name": "tiny rogues/tiny rogues.exe", "os": "win32"}], - "hook": true, - "id": "1124354485897154661", - "name": "Tiny Rogues" - }, - { - "executables": [{"is_launcher": false, "name": "disc space/discspace.exe", "os": "win32"}], - "hook": true, - "id": "1124354487566479520", - "name": "Disc Space" - }, - { - "executables": [{"is_launcher": false, "name": "anno 1404/addon.exe", "os": "win32"}], - "hook": true, - "id": "1124354489298731109", - "name": "Anno 1404: Venice" - }, - { - "executables": [{"is_launcher": false, "name": "wargame airland battle/wargame2.exe", "os": "win32"}], - "hook": true, - "id": "1124354491165192283", - "name": "Wargame: AirLand Battle" - }, - { - "executables": [{"is_launcher": false, "name": "faith/faith.exe", "os": "win32"}], - "hook": true, - "id": "1124354493094580414", - "name": "FAITH" - }, - { - "executables": [{"is_launcher": false, "name": "win64/odyssey-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354494659047465", - "name": "ONE PIECE ODYSSEY" - }, - { - "executables": [{"is_launcher": false, "name": "animal shelter/animal shelter.exe", "os": "win32"}], - "hook": true, - "id": "1124354496269664367", - "name": "Animal Shelter" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "ultimate admiral dreadnoughts/ultimate admiral dreadnoughts.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354497733472266", - "name": "Ultimate Admiral: Dreadnoughts" - }, - { - "executables": [{"is_launcher": false, "name": "win64/rawdata-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354499297956042", - "name": "Raw Data" - }, - { - "executables": [{"is_launcher": false, "name": "crying suns/cs.exe", "os": "win32"}], - "hook": true, - "id": "1124354501042782359", - "name": "Crying Suns" - }, - { - "executables": [{"is_launcher": false, "name": "march of empires/moe.exe", "os": "win32"}], - "hook": true, - "id": "1124354507619455067", - "name": "March of Empires" - }, - { - "executables": [{"is_launcher": false, "name": "win64/backrooms_escape-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354512241573938", - "name": "Backrooms: Escape Together" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon siege 2/dungeonsiege2.exe", "os": "win32"}], - "hook": true, - "id": "1124354515680907376", - "name": "Dungeon Siege 2" - }, - { - "executables": [{"is_launcher": false, "name": "heavenly bodies/heavenly bodies.exe", "os": "win32"}], - "hook": true, - "id": "1124354517392179210", - "name": "Heavenly Bodies" - }, - { - "executables": [ - {"is_launcher": false, "name": "get to the orange door/get to the orange door.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354519149596672", - "name": "Get To The Orange Door" - }, - { - "executables": [{"is_launcher": false, "name": "miss neko/miss neko.exe", "os": "win32"}], - "hook": true, - "id": "1124354521603260496", - "name": "Miss Neko" - }, - { - "executables": [{"is_launcher": false, "name": "swarm simulator evolution/swarm sim.exe", "os": "win32"}], - "hook": true, - "id": "1124354526070198392", - "name": "Swarm Simulator: Evolution" - }, - { - "executables": [{"is_launcher": false, "name": "garden paws/gardenpaws.exe", "os": "win32"}], - "hook": true, - "id": "1124354527953432618", - "name": "Garden Paws" - }, - { - "executables": [ - {"is_launcher": false, "name": "childrenofsilentownprologue/childrenofsilentown.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354529647939695", - "name": "Children of Silentown: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/returnal-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354533334720652", - "name": "Returnal\u2122" - }, - { - "executables": [ - {"is_launcher": false, "name": "super buckyball tournament preseason/s.b.t.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354534903402536", - "name": "Super Buckyball Tournament Preseason" - }, - { - "executables": [{"is_launcher": false, "name": "starbase/starbase.exe", "os": "win32"}], - "hook": true, - "id": "1124354536493039636", - "name": "Starbase" - }, - { - "executables": [{"is_launcher": false, "name": "coloring game 3/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354538078482512", - "name": "Coloring Game 3" - }, - { - "executables": [{"is_launcher": false, "name": "monstrum/monstrum.exe", "os": "win32"}], - "hook": true, - "id": "1124354539462611015", - "name": "Monstrum" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mhoj.exe", "os": "win32"}], - "hook": true, - "id": "1124354540444074024", - "name": "MY HERO ONE'S JUSTICE" - }, - { - "executables": [{"is_launcher": false, "name": "spookymilklife demo/spooky milk life demo.exe", "os": "win32"}], - "hook": true, - "id": "1124354542264406136", - "name": "SpookyMilkLife Demo" - }, - { - "executables": [{"is_launcher": false, "name": "inferna/inferna.exe", "os": "win32"}], - "hook": true, - "id": "1124354544084725941", - "name": "Inferna" - }, - { - "executables": [{"is_launcher": false, "name": "icey/icey.exe", "os": "win32"}], - "hook": true, - "id": "1124354546060247050", - "name": "ICEY" - }, - { - "executables": [{"is_launcher": false, "name": "dude, stop/dude, stop.exe", "os": "win32"}], - "hook": true, - "id": "1124354547700224000", - "name": "Dude, Stop" - }, - { - "executables": [{"is_launcher": false, "name": "zombie defense/zombiedefense.exe", "os": "win32"}], - "hook": true, - "id": "1124354549377937448", - "name": "Zombie Defense" - }, - { - "executables": [{"is_launcher": false, "name": "need for speed undercover/nfs.exe", "os": "win32"}], - "hook": true, - "id": "1124354550975975556", - "name": "Need for Speed: Undercover" - }, - { - "executables": [{"is_launcher": false, "name": "empireofsin/empireofsin.exe", "os": "win32"}], - "hook": true, - "id": "1124354552808882276", - "name": "Empire of Sin" - }, - { - "executables": [{"is_launcher": false, "name": "unityartifact/storybookbrawl.exe", "os": "win32"}], - "hook": true, - "id": "1124354554620825650", - "name": "Storybook Brawl" - }, - { - "executables": [{"is_launcher": false, "name": "unsung warriors/unsungwarriorsprologue.exe", "os": "win32"}], - "hook": true, - "id": "1124354556537614438", - "name": "Unsung Warriors - Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "bloodyspell/bloodyspell.exe", "os": "win32"}], - "hook": true, - "id": "1124354558030790786", - "name": "\u55dc\u8840\u5370 Bloody Spell" - }, - { - "executables": [{"is_launcher": false, "name": "kopanito all-stars soccer/kopanito.exe", "os": "win32"}], - "hook": true, - "id": "1124354560048255148", - "name": "Kopanito All-Stars Soccer" - }, - { - "executables": [{"is_launcher": false, "name": "surgeon simulator experience reality/sser.exe", "os": "win32"}], - "hook": true, - "id": "1124354561835020400", - "name": "Surgeon Simulator: Experience Reality" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2021 touch/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124354563877654579", - "name": "Football Manager 2021 Touch" - }, - { - "executables": [{"is_launcher": false, "name": "dungeons of dredmor/dungeons of dredmor.exe", "os": "win32"}], - "hook": true, - "id": "1124354565379211354", - "name": "Dungeons of Dredmor" - }, - { - "executables": [{"is_launcher": false, "name": "cookservedelicious3/csd3.exe", "os": "win32"}], - "hook": true, - "id": "1124354566998216754", - "name": "Cook, Serve, Delicious! 3?!" - }, - { - "executables": [{"is_launcher": false, "name": "force of nature/forceofnature.exe", "os": "win32"}], - "hook": true, - "id": "1124354568705294497", - "name": "Force of Nature" - }, - { - "executables": [{"is_launcher": false, "name": "wizard with a gun demo/wizardwithagun.exe", "os": "win32"}], - "hook": true, - "id": "1124354570294931497", - "name": "Wizard with a Gun Demo" - }, - { - "executables": [{"is_launcher": false, "name": "grow defense/grow defense.exe", "os": "win32"}], - "hook": true, - "id": "1124354571792306197", - "name": "Grow Defense" - }, - { - "executables": [{"is_launcher": false, "name": "crusadersoflight/col.exe", "os": "win32"}], - "hook": true, - "id": "1124354573470019604", - "name": "Crusaders of Light" - }, - { - "executables": [{"is_launcher": false, "name": "hasbro's battleship/battleship.exe", "os": "win32"}], - "hook": true, - "id": "1124354575227424768", - "name": "Hasbro's BATTLESHIP" - }, - { - "executables": [{"is_launcher": false, "name": "mrprepper/mrprepper.exe", "os": "win32"}], - "hook": true, - "id": "1124354576628330506", - "name": "Mr. Prepper" - }, - { - "executables": [{"is_launcher": false, "name": "bin/dmcr.exe", "os": "win32"}], - "hook": true, - "id": "1124354578440273990", - "name": "Cossacks: Back to War" - }, - { - "executables": [{"is_launcher": false, "name": "rome total war alexander/testappa.exe", "os": "win32"}], - "hook": true, - "id": "1124354580117991544", - "name": "Rome: Total War - Alexander" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thevagrant-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354581653115001", - "name": "The Vagrant" - }, - { - "executables": [{"is_launcher": false, "name": "blazing beaks/blazingbeaks.exe", "os": "win32"}], - "hook": true, - "id": "1124354583385358466", - "name": "Blazing Beaks" - }, - { - "executables": [{"is_launcher": false, "name": "stolen realm/stolen realm.exe", "os": "win32"}], - "hook": true, - "id": "1124354584886915072", - "name": "Stolen Realm" - }, - { - "executables": [{"is_launcher": false, "name": "win64/scorn-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354586384289872", - "name": "Scorn" - }, - { - "executables": [{"is_launcher": false, "name": "hidden deep/hdeep.exe", "os": "win32"}], - "hook": true, - "id": "1124354588246552656", - "name": "Hidden Deep" - }, - { - "executables": [{"is_launcher": false, "name": "mitoza/mitoza.exe", "os": "win32"}], - "hook": true, - "id": "1124354590037524572", - "name": "Mitoza" - }, - { - "executables": [{"is_launcher": false, "name": "populationone/populationone.exe", "os": "win32"}], - "hook": true, - "id": "1124354591996268555", - "name": "POPULATION: ONE" - }, - { - "executables": [{"is_launcher": false, "name": "befunnynow/befunnynow.exe", "os": "win32"}], - "hook": true, - "id": "1124354593724317726", - "name": "Be Funny Now!" - }, - { - "executables": [{"is_launcher": false, "name": "signalis/signalis.exe", "os": "win32"}], - "hook": true, - "id": "1124354595276206181", - "name": "SIGNALIS" - }, - { - "executables": [{"is_launcher": false, "name": "sleepingdogs/hkship.exe", "os": "win32"}], - "hook": true, - "id": "1124354596979097731", - "name": "Sleeping Dogs\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "miniland prologue/miniland.exe", "os": "win32"}], - "hook": true, - "id": "1124354598627455138", - "name": "Miniland Adventure: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "hexceed/hexceed.exe", "os": "win32"}], - "hook": true, - "id": "1124354600271626290", - "name": "hexceed" - }, - { - "executables": [{"is_launcher": false, "name": "the closing shift/theclosingshift.exe", "os": "win32"}], - "hook": true, - "id": "1124354601991295039", - "name": "The Closing Shift | \u9589\u5e97\u4e8b\u4ef6" - }, - { - "executables": [{"is_launcher": false, "name": "deadbolt/deadbolt_game.exe", "os": "win32"}], - "hook": true, - "id": "1124354603467685938", - "name": "DEADBOLT" - }, - { - "executables": [{"is_launcher": false, "name": "fpv drone simulator/fpv drone simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124354605325758584", - "name": "FPV Drone Simulator" - }, - { - "executables": [ - {"is_launcher": false, "name": "the walking dead the final season demo/walkingdead4demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354607150284870", - "name": "The Walking Dead: The Final Season Demo" - }, - { - "executables": [{"is_launcher": false, "name": "drift21/drift21.exe", "os": "win32"}], - "hook": true, - "id": "1124354608987385886", - "name": "Drift21" - }, - { - "executables": [{"is_launcher": false, "name": "nerts online/nerts! online.exe", "os": "win32"}], - "hook": true, - "id": "1124354610648334547", - "name": "NERTS! Online" - }, - { - "executables": [ - {"is_launcher": false, "name": "gemcraft chasing shadows/gemcraft chasing shadows.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354612107948172", - "name": "GemCraft - Chasing Shadows" - }, - { - "executables": [{"is_launcher": false, "name": "vr_kanojo/vr_kanojo.exe", "os": "win32"}], - "hook": true, - "id": "1124354613722763364", - "name": "VR Kanojo" - }, - { - "executables": [{"is_launcher": false, "name": "twilight struggle/twilightstruggle.exe", "os": "win32"}], - "hook": true, - "id": "1124354615526310059", - "name": "Twilight Struggle" - }, - { - "executables": [{"is_launcher": false, "name": "win64/moe.exe", "os": "win32"}], - "hook": true, - "id": "1124354617325670410", - "name": "Myth of Empires" - }, - { - "executables": [{"is_launcher": false, "name": "hellpoint/hellpoint.exe", "os": "win32"}], - "hook": true, - "id": "1124354619036938260", - "name": "Hellpoint" - }, - { - "executables": [{"is_launcher": false, "name": "train valley/train-valley.exe", "os": "win32"}], - "hook": true, - "id": "1124354620572061806", - "name": "Train Valley" - }, - { - "executables": [{"is_launcher": false, "name": "plantera/plantera.exe", "os": "win32"}], - "hook": true, - "id": "1124354623168327690", - "name": "Plantera" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/actinglessons.exe", "os": "win32"}], - "hook": true, - "id": "1124354624925749278", - "name": "Acting Lessons" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mariner-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354626389557298", - "name": "Rocket Arena" - }, - { - "executables": [{"is_launcher": false, "name": "dayz exp/dayzuninstaller.exe", "os": "win32"}], - "hook": true, - "id": "1124354628113420328", - "name": "DayZ Experimental" - }, - { - "executables": [{"is_launcher": false, "name": "brigador/brigador.exe", "os": "win32"}], - "hook": true, - "id": "1124354629728223232", - "name": "Brigador: Up-Armored Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win32_release/stronghold3.exe", "os": "win32"}], - "hook": true, - "id": "1124354631607267419", - "name": "Stronghold 3" - }, - { - "executables": [{"is_launcher": false, "name": "unepic/unepic.exe", "os": "win32"}], - "hook": true, - "id": "1124354633360494723", - "name": "Unepic" - }, - { - "executables": [{"is_launcher": false, "name": "production line/productionline.exe", "os": "win32"}], - "hook": true, - "id": "1124354634962714808", - "name": "Production Line" - }, - { - "executables": [ - {"is_launcher": false, "name": "open world game the open world game/owgtowg.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354636577517648", - "name": "Open World Game: the Open World Game" - }, - { - "executables": [{"is_launcher": false, "name": "hexcells infinite/hexcells infinite.exe", "os": "win32"}], - "hook": true, - "id": "1124354638272020520", - "name": "Hexcells Infinite" - }, - { - "executables": [{"is_launcher": false, "name": "mad games tycoon 2/mad games tycoon 2.exe", "os": "win32"}], - "hook": true, - "id": "1124354639966515270", - "name": "Mad Games Tycoon 2" - }, - { - "executables": [{"is_launcher": false, "name": "two worlds - epic edition/twoworlds.exe", "os": "win32"}], - "hook": true, - "id": "1124354641778462750", - "name": "Two Worlds: Epic Edition" - }, - { - "executables": [{"is_launcher": false, "name": "lovebeat/gameguard.des", "os": "win32"}], - "hook": true, - "id": "1124354643380682873", - "name": "LoveBeat" - }, - { - "executables": [{"is_launcher": false, "name": "soldat/soldat.exe", "os": "win32"}], - "hook": true, - "id": "1124354646832590900", - "name": "Soldat" - }, - { - "executables": [{"is_launcher": false, "name": "warrock global/wrupdater.exe", "os": "win32"}], - "hook": true, - "id": "1124354648749395998", - "name": "War Rock" - }, - { - "executables": [{"is_launcher": false, "name": "forkdrift/forkdrift.exe", "os": "win32"}], - "hook": true, - "id": "1124354650410332290", - "name": "Forkdrift" - }, - { - "executables": [{"is_launcher": false, "name": "the supper/the supper.exe", "os": "win32"}], - "hook": true, - "id": "1124354654122295399", - "name": "The Supper" - }, - { - "executables": [{"is_launcher": false, "name": "barro/barro.exe", "os": "win32"}], - "hook": true, - "id": "1124354655992959026", - "name": "Barro" - }, - { - "executables": [ - {"is_launcher": false, "name": "hell architect prologue/hellarchitect_prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354657716809728", - "name": "Hell Architect: Prologue" - }, - { - "executables": [ - {"is_launcher": false, "name": "get to the orange door demo/get to the orange door.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354659520364544", - "name": "Get To The Orange Door Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/letitflow-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354661143556106", - "name": "Let It Flow" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "frog fractions game of the decade edition/frog fractions game of the decade edition.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354662825476156", - "name": "Frog Fractions: Game of the Decade Edition" - }, - { - "executables": [{"is_launcher": false, "name": "shark simulator/shark_simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124354664842940536", - "name": "Shark Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fbs-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354666449354782", - "name": "Fishing: Barents Sea" - }, - { - "executables": [{"is_launcher": false, "name": "sf/star fetchers pilot.exe", "os": "win32"}], - "hook": true, - "id": "1124354668055769219", - "name": "Star Fetchers" - }, - { - "executables": [{"is_launcher": false, "name": "ez2on reboot r/ez2on.exe", "os": "win32"}], - "hook": true, - "id": "1124354669985153145", - "name": "EZ2ON REBOOT : R" - }, - { - "executables": [ - {"is_launcher": false, "name": "rollercoaster tycoon world/rollercoaster tycoon world.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354671683850350", - "name": "RollerCoaster Tycoon World" - }, - { - "executables": [{"is_launcher": false, "name": "mutilate-a-doll 2/mad2.exe", "os": "win32"}], - "hook": true, - "id": "1124354673499979776", - "name": "Mutilate-a-Doll 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/potionomics-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354675018313849", - "name": "Potionomics" - }, - { - "executables": [{"is_launcher": false, "name": "duskers/duskers.exe", "os": "win32"}], - "hook": true, - "id": "1124354676893171782", - "name": "Duskers" - }, - { - "executables": [{"is_launcher": false, "name": "the good time garden/the good time garden.exe", "os": "win32"}], - "hook": true, - "id": "1124354678583472178", - "name": "The Good Time Garden" - }, - { - "executables": [{"is_launcher": false, "name": "win32/homesweethome-win32-shipping.exe.exe", "os": "win32"}], - "hook": true, - "id": "1124354680202477689", - "name": "Home Sweet Home Demo" - }, - { - "executables": [{"is_launcher": false, "name": "eastshade/eastshade.exe", "os": "win32"}], - "hook": true, - "id": "1124354681947312128", - "name": "Eastshade" - }, - { - "executables": [{"is_launcher": false, "name": "wwe 2k23/wwe2k23_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124354683641806959", - "name": "WWE 2K23" - }, - { - "executables": [{"is_launcher": false, "name": "absolute drift/absolutedrift.exe", "os": "win32"}], - "hook": true, - "id": "1124354685646680186", - "name": "Absolute Drift" - }, - { - "executables": [{"is_launcher": false, "name": "high entropy challenges/highentropy.exe", "os": "win32"}], - "hook": true, - "id": "1124354687316021300", - "name": "High Entropy: Challenges" - }, - { - "executables": [{"is_launcher": false, "name": "commandos behind enemy lines/comandos.exe", "os": "win32"}], - "hook": true, - "id": "1124354689014706176", - "name": "Commandos: Behind Enemy Lines" - }, - { - "executables": [{"is_launcher": false, "name": "youtubers life 2/youtubers life 2.exe", "os": "win32"}], - "hook": true, - "id": "1124354690847621180", - "name": "Youtubers Life 2" - }, - { - "executables": [{"is_launcher": false, "name": "doodle god blitz/doodlegod.exe", "os": "win32"}], - "hook": true, - "id": "1124354692550504552", - "name": "Doodle God Blitz" - }, - { - "executables": [{"is_launcher": false, "name": "sayonara wild hearts/sayonara wild hearts.exe", "os": "win32"}], - "hook": true, - "id": "1124354694349865020", - "name": "Sayonara Wild Hearts" - }, - { - "executables": [{"is_launcher": false, "name": "neon abyss demo/neonabyss.exe", "os": "win32"}], - "hook": true, - "id": "1124354696648339608", - "name": "Neon Abyss Demo" - }, - { - "executables": [{"is_launcher": false, "name": "suzerain/suzerain.exe", "os": "win32"}], - "hook": true, - "id": "1124354698061828096", - "name": "Suzerain" - }, - { - "executables": [ - {"is_launcher": false, "name": "the tenants - free trial/the tenants - free trial.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354701186576464", - "name": "The Tenants - Free Trial" - }, - { - "executables": [{"is_launcher": false, "name": "7 billion humans/7 billion humans.exe", "os": "win32"}], - "hook": true, - "id": "1124354704755937371", - "name": "7 Billion Humans" - }, - { - "executables": [{"is_launcher": false, "name": "spin rhythm/spinrhythm.exe", "os": "win32"}], - "hook": true, - "id": "1124354707264127088", - "name": "Spin Rhythm XD" - }, - { - "executables": [{"is_launcher": false, "name": "detention/detention.exe", "os": "win32"}], - "hook": true, - "id": "1124354709038321715", - "name": "Detention" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mvci.exe", "os": "win32"}], - "hook": true, - "id": "1124354711148048435", - "name": "Marvel vs. Capcom: Infinite" - }, - { - "executables": [{"is_launcher": false, "name": "there's poop in my soup/poopinmysoup.exe", "os": "win32"}], - "hook": true, - "id": "1124354712817389741", - "name": "There's Poop In My Soup" - }, - { - "executables": [{"is_launcher": false, "name": "edge of eternity/edgeofeternity.exe", "os": "win32"}], - "hook": true, - "id": "1124354714423799878", - "name": "Edge Of Eternity" - }, - { - "executables": [{"is_launcher": false, "name": "sable/sable.exe", "os": "win32"}], - "hook": true, - "id": "1124354716181221437", - "name": "Sable" - }, - { - "executables": [{"is_launcher": false, "name": "from the darkness/from the darkness.exe", "os": "win32"}], - "hook": true, - "id": "1124354717724721243", - "name": "From the darkness" - }, - { - "executables": [{"is_launcher": false, "name": "before we leave/before we leave.exe", "os": "win32"}], - "hook": true, - "id": "1124354719356301434", - "name": "Before We Leave" - }, - { - "executables": [{"is_launcher": false, "name": "nine sols demo/ninesols.exe", "os": "win32"}], - "hook": true, - "id": "1124354720983695471", - "name": "Nine Sols Demo" - }, - { - "executables": [{"is_launcher": false, "name": "worms reloaded/wormsreloaded.exe", "os": "win32"}], - "hook": true, - "id": "1124354722682384575", - "name": "Worms Reloaded" - }, - { - "executables": [ - {"is_launcher": false, "name": "hentai mosaique neko waifus/hentai mosaique neko waifus.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354724301393940", - "name": "Hentai Mosaique Neko Waifus" - }, - { - "executables": [{"is_launcher": false, "name": "f1 2014/f1_2014.exe", "os": "win32"}], - "hook": true, - "id": "1124354725911998554", - "name": "F1 2014" - }, - { - "executables": [{"is_launcher": false, "name": "rogueglitch/rogueglitch.exe", "os": "win32"}], - "hook": true, - "id": "1124354727963021372", - "name": "Rogue Glitch" - }, - { - "executables": [{"is_launcher": false, "name": "ship of fools/shipoffools.exe", "os": "win32"}], - "hook": true, - "id": "1124354729586212974", - "name": "Ship of Fools" - }, - { - "executables": [{"is_launcher": false, "name": "resident evil resistance/reresistance.exe", "os": "win32"}], - "hook": true, - "id": "1124354731423322112", - "name": "RESIDENT EVIL RESISTANCE" - }, - { - "executables": [{"is_launcher": false, "name": "confessmylove/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354733373669527", - "name": "Confess My Love" - }, - { - "executables": [{"is_launcher": false, "name": "win32/rememberme.exe", "os": "win32"}], - "hook": true, - "id": "1124354734946537513", - "name": "Remember Me" - }, - { - "executables": [{"is_launcher": false, "name": "win64/battleborn.exe", "os": "win32"}], - "hook": true, - "id": "1124354736653615204", - "name": "Battleborn" - }, - { - "executables": [{"is_launcher": false, "name": "trailer park boys greasy money/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354738826260510", - "name": "Trailer Park Boys: Greasy Money" - }, - { - "executables": [{"is_launcher": false, "name": "tanki x/tankix.exe", "os": "win32"}], - "hook": true, - "id": "1124354740403326976", - "name": "Tanki X" - }, - { - "executables": [{"is_launcher": false, "name": "win64/emilywantstoplay-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354742353674240", - "name": "Emily Wants To Play" - }, - { - "executables": [{"is_launcher": false, "name": "emergenyc/emergenyc.exe", "os": "win32"}], - "hook": true, - "id": "1124354744056557588", - "name": "EmergeNYC" - }, - { - "executables": [{"is_launcher": false, "name": "lego builder's journey/builder's journey.exe", "os": "win32"}], - "hook": true, - "id": "1124354745759449098", - "name": "LEGO\u00ae Builder's Journey" - }, - { - "executables": [{"is_launcher": false, "name": "victor vran/victorvransteam.exe", "os": "win32"}], - "hook": true, - "id": "1124354748015988846", - "name": "Victor Vran" - }, - { - "executables": [{"is_launcher": false, "name": "distrust/distrust.exe", "os": "win32"}], - "hook": true, - "id": "1124354749681123510", - "name": "Distrust" - }, - { - "executables": [{"is_launcher": false, "name": "evoland legendary edition/evoland.exe", "os": "win32"}], - "hook": true, - "id": "1124354751438532628", - "name": "Evoland Legendary Edition" - }, - { - "executables": [{"is_launcher": false, "name": "swallow the sea/swallowthesea.exe", "os": "win32"}], - "hook": true, - "id": "1124354753082708109", - "name": "Swallow the Sea" - }, - { - "executables": [{"is_launcher": false, "name": "bin/rakion.bin", "os": "win32"}], - "hook": true, - "id": "1124354755230183546", - "name": "Rakion Chaos Force" - }, - { - "executables": [{"is_launcher": false, "name": "amysticallandsac/villagersandheroes.exe", "os": "win32"}], - "hook": true, - "id": "1124354757222482043", - "name": "Villagers and Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "ball 2d/ball 2d.exe", "os": "win32"}], - "hook": true, - "id": "1124354759281881258", - "name": "Ball 2D: Soccer Online" - }, - { - "executables": [{"is_launcher": false, "name": "steamworld heist/heist.exe", "os": "win32"}], - "hook": true, - "id": "1124354760749895731", - "name": "SteamWorld Heist" - }, - { - "executables": [ - {"is_launcher": false, "name": "commissar escape simulator/commissar escape simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354762368892948", - "name": "\u0421\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u041f\u043e\u0431\u0435\u0433\u0430 \u043e\u0442 \u0412\u043e\u0435\u043d\u043a\u043e\u043c\u0430\u0442\u0430" - }, - { - "executables": [{"is_launcher": false, "name": "roller champions/roller.exe", "os": "win32"}], - "hook": true, - "id": "1124354763941752882", - "name": "Roller Champions" - }, - { - "executables": [{"is_launcher": false, "name": "stormbound kingdom wars/stormbound.exe", "os": "win32"}], - "hook": true, - "id": "1124354765556568255", - "name": "Stormbound" - }, - { - "executables": [{"is_launcher": false, "name": "femdom waifu/femdomwaifu.exe", "os": "win32"}], - "hook": true, - "id": "1124354767347531816", - "name": "Femdom Waifu" - }, - { - "executables": [{"is_launcher": false, "name": "bloody trapland 2/bloodytrapland2.exe", "os": "win32"}], - "hook": true, - "id": "1124354771101438114", - "name": "Bloody Trapland 2: Curiosity" - }, - { - "executables": [{"is_launcher": false, "name": "horse riding tales/horseridingtales.exe", "os": "win32"}], - "hook": true, - "id": "1124354773743845386", - "name": "Horse Riding Tales" - }, - { - "executables": [{"is_launcher": false, "name": "men of war/mow.exe", "os": "win32"}], - "hook": true, - "id": "1124354775266381834", - "name": "Men of War" - }, - { - "executables": [{"is_launcher": false, "name": "bin/nza.exe", "os": "win32"}], - "hook": true, - "id": "1124354777040568582", - "name": "Sniper Elite: Nazi Zombie Army" - }, - { - "executables": [{"is_launcher": false, "name": "keywe/keywe.exe", "os": "win32"}], - "hook": true, - "id": "1124354778680537088", - "name": "KeyWe" - }, - { - "executables": [{"is_launcher": false, "name": "win64/partisans-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354780362457128", - "name": "Partisans 1941" - }, - { - "executables": [{"is_launcher": false, "name": "8bitarmies/clientg.exe", "os": "win32"}], - "hook": true, - "id": "1124354781868216391", - "name": "8-Bit Armies" - }, - { - "executables": [{"is_launcher": false, "name": "beat hazard 2/beathazard2.exe", "os": "win32"}], - "hook": true, - "id": "1124354783503990914", - "name": "Beat Hazard 2" - }, - { - "executables": [{"is_launcher": false, "name": "codename gordon/cg.exe", "os": "win32"}], - "hook": true, - "id": "1124354785466921081", - "name": "Codename Gordon" - }, - { - "executables": [{"is_launcher": false, "name": "seraph's last stand/seraph's last stand.exe", "os": "win32"}], - "hook": true, - "id": "1124354787023011950", - "name": "Seraph's Last Stand" - }, - { - "executables": [{"is_launcher": false, "name": "star wars episode i racer/swep1rcr.exe", "os": "win32"}], - "hook": true, - "id": "1124354788570714142", - "name": "STAR WARS\u2122 Episode I Racer" - }, - { - "executables": [{"is_launcher": false, "name": "il 2 sturmovik 1946/il2fb.exe", "os": "win32"}], - "hook": true, - "id": "1124354790319734825", - "name": "IL-2 Sturmovik: 1946" - }, - { - "executables": [{"is_launcher": false, "name": "win64/policeshootout-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354792010035382", - "name": "Police Shootout: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "x64/galaxy life.exe", "os": "win32"}], - "hook": true, - "id": "1124354793385775214", - "name": "Galaxy Life" - }, - { - "executables": [{"is_launcher": false, "name": "voiceattack/voiceattack.exe", "os": "win32"}], - "hook": true, - "id": "1124354795059298364", - "name": "VoiceAttack" - }, - { - "executables": [{"is_launcher": false, "name": "dragon cliff/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354797034819665", - "name": "Dragon Cliff \u9f99\u5d16" - }, - { - "executables": [{"is_launcher": false, "name": "bin/clos2.exe", "os": "win32"}], - "hook": true, - "id": "1124354798712533032", - "name": "Castlevania: Lords of Shadow 2" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the life and suffering of sir brante/the life and suffering of sir brante.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354800448983060", - "name": "The Life and Suffering of Sir Brante" - }, - { - "executables": [ - {"is_launcher": false, "name": "drift streets japan windows/drift streets japan.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354802453852262", - "name": "Drift Streets Japan" - }, - { - "executables": [{"is_launcher": false, "name": "swag and sorcery/swag and sorcery.exe", "os": "win32"}], - "hook": true, - "id": "1124354804131577886", - "name": "Swag and Sorcery" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "sid meier's civilization v sdk/sid meier's civilization v sdk.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354805633134684", - "name": "Sid Meier's Civilization V SDK" - }, - { - "executables": [{"is_launcher": false, "name": "the thrill of the fight/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354807507996692", - "name": "The Thrill of the Fight" - }, - { - "executables": [{"is_launcher": false, "name": "yes, master!/yesmaster.exe", "os": "win32"}], - "hook": true, - "id": "1124354809219264623", - "name": "Yes, Master!" - }, - { - "executables": [{"is_launcher": false, "name": "x64r/emergency5.exe", "os": "win32"}], - "hook": true, - "id": "1124354810741801091", - "name": "EMERGENCY 20" - }, - { - "executables": [ - {"is_launcher": false, "name": "you will (not) remain/you will (not) remain.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354812373381252", - "name": "You Will (Not) Remain" - }, - { - "executables": [{"is_launcher": false, "name": "sword art online lost song/saols.exe", "os": "win32"}], - "hook": true, - "id": "1124354814097244281", - "name": "Sword Art Online: Lost Song" - }, - { - "executables": [ - {"is_launcher": false, "name": "crypto miner tycoon simulator starter edition/game.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354815774961774", - "name": "Crypto Miner Tycoon Simulator Starter Edition" - }, - { - "executables": [{"is_launcher": false, "name": "drunkn bar fight/dbf.exe", "os": "win32"}], - "hook": true, - "id": "1124354817482047618", - "name": "Drunkn Bar Fight" - }, - { - "executables": [{"is_launcher": false, "name": "windward/windward.exe", "os": "win32"}], - "hook": true, - "id": "1124354819067490408", - "name": "Windward" - }, - { - "executables": [{"is_launcher": false, "name": "blockstorm/blockstorm.exe", "os": "win32"}], - "hook": true, - "id": "1124354820757803068", - "name": "Blockstorm" - }, - { - "executables": [{"is_launcher": false, "name": "dealerslife2/dealerslife2.exe", "os": "win32"}], - "hook": true, - "id": "1124354822372606042", - "name": "Dealer's Life 2" - }, - { - "executables": [{"is_launcher": false, "name": "boodunnit/boodunnit!.exe", "os": "win32"}], - "hook": true, - "id": "1124354824239075378", - "name": "Boodunnit" - }, - { - "executables": [{"is_launcher": false, "name": "haunted gas station/haunted gas station.exe", "os": "win32"}], - "hook": true, - "id": "1124354825967120546", - "name": "Haunted Gas Station" - }, - { - "executables": [{"is_launcher": false, "name": "project castle/castle.exe", "os": "win32"}], - "hook": true, - "id": "1124354827833589953", - "name": "Vedelem: The Golden Horde" - }, - { - "executables": [{"is_launcher": false, "name": "fire prowrestling world/fireprowrestlingw.exe", "os": "win32"}], - "hook": true, - "id": "1124354829578424450", - "name": "Fire Pro Wrestling World" - }, - { - "executables": [{"is_launcher": false, "name": "tempo/tempo.exe", "os": "win32"}], - "hook": true, - "id": "1124354831117729802", - "name": "Tempo" - }, - { - "executables": [{"is_launcher": false, "name": "town of salem 2/townofsalem2.exe", "os": "win32"}], - "hook": true, - "id": "1124354832984199252", - "name": "Town of Salem 2" - }, - { - "executables": [{"is_launcher": false, "name": "getout/historicallyaccuratejam.exe", "os": "win32"}], - "hook": true, - "id": "1124354834523504711", - "name": "GET OUT!" - }, - { - "executables": [{"is_launcher": false, "name": "lost in vivo/liv.exe", "os": "win32"}], - "hook": true, - "id": "1124354836226396170", - "name": "Lost in Vivo" - }, - { - "executables": [{"is_launcher": false, "name": "a taste of the past/a taste of the past.exe", "os": "win32"}], - "hook": true, - "id": "1124354838000582666", - "name": "A Taste of the Past" - }, - { - "executables": [{"is_launcher": false, "name": "game builder/game builder.exe", "os": "win32"}], - "hook": true, - "id": "1124354839623782540", - "name": "Game Builder" - }, - { - "executables": [{"is_launcher": false, "name": "dungeons & dragons hd/managame.exe", "os": "win32"}], - "hook": true, - "id": "1124354841213415474", - "name": "Dungeons & Dragons: Chronicles of Mystara" - }, - { - "executables": [{"is_launcher": false, "name": "win64/redream.exe", "os": "win32"}], - "hook": true, - "id": "1124354842886950932", - "name": "CODE2040" - }, - { - "executables": [{"is_launcher": false, "name": "gyroplosion/itreallyisgambling.exe", "os": "win32"}], - "hook": true, - "id": "1124354844669522041", - "name": "I Can't Believe It's Not Gambling GOTY Edition" - }, - { - "executables": [{"is_launcher": false, "name": "bombix/bombix.exe", "os": "win32"}], - "hook": true, - "id": "1124354846317891675", - "name": "Bombix" - }, - { - "executables": [ - {"is_launcher": false, "name": "rival stars horse racing/rivalstarshorseracing.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354848008179773", - "name": "Rival Stars Horse Racing" - }, - { - "executables": [{"is_launcher": false, "name": "fly corp/fly corp.exe", "os": "win32"}], - "hook": true, - "id": "1124354849652355142", - "name": "Fly Corp" - }, - { - "executables": [{"is_launcher": false, "name": "badland/badland.exe", "os": "win32"}], - "hook": true, - "id": "1124354851258781767", - "name": "BADLAND: Game of the Year Edition" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "win64/cyberdimensionneptunia4goddessesonline-win64-shipping.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354852995215441", - "name": "Cyberdimension Neptunia: 4 Goddesses Online" - }, - { - "executables": [{"is_launcher": false, "name": "racing classics/racing classics.exe", "os": "win32"}], - "hook": true, - "id": "1124354854689722398", - "name": "Racing Classics: Drag Race Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "terra invicta/terrainvicta.exe", "os": "win32"}], - "hook": true, - "id": "1124354856329687052", - "name": "Terra Invicta" - }, - { - "executables": [{"is_launcher": false, "name": "demolish & build 2018/demolish.exe", "os": "win32"}], - "hook": true, - "id": "1124354858154213386", - "name": "Demolish & Build 2018" - }, - { - "executables": [ - {"is_launcher": false, "name": "autobahn police simulator/highwaypatrol2015.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354859940982824", - "name": "Autobahn Police Simulator" - }, - { - "executables": [ - {"is_launcher": false, "name": "the horus heresy legions/horusheresylegions.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354861820035144", - "name": "The Horus Heresy: Legions" - }, - { - "executables": [{"is_launcher": false, "name": "love letter/loveletter_release.exe", "os": "win32"}], - "hook": true, - "id": "1124354863644561418", - "name": "Love Letter" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/nomoremoney.exe", "os": "win32"}], - "hook": true, - "id": "1124354865125146624", - "name": "No More Money" - }, - { - "executables": [ - {"is_launcher": false, "name": "honey, i joined a cult/honey, i joined a cult.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354866836426762", - "name": "Honey, I Joined a Cult" - }, - { - "executables": [{"is_launcher": false, "name": "distraint/distraint.exe", "os": "win32"}], - "hook": true, - "id": "1124354868979707944", - "name": "DISTRAINT: Deluxe Edition" - }, - { - "executables": [{"is_launcher": false, "name": "mount your friends 3d/myf3d.exe", "os": "win32"}], - "hook": true, - "id": "1124354870451916891", - "name": "Mount Your Friends 3D: A Hard Man is Good to Climb" - }, - { - "executables": [{"is_launcher": false, "name": "cartoon strike/cartoon strike.exe", "os": "win32"}], - "hook": true, - "id": "1124354872221909082", - "name": "Cartoon Strike" - }, - { - "executables": [{"is_launcher": false, "name": "feeding frenzy 2 deluxe/popcapgame1.exe", "os": "win32"}], - "hook": true, - "id": "1124354873866080386", - "name": "Feeding Frenzy 2: Shipwreck Showdown Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "typing of the dead overkill/hotd_ng.exe", "os": "win32"}], - "hook": true, - "id": "1124354875518632046", - "name": "The Typing of The Dead: Overkill" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "siren head the horror experience/sirenhead - the horror experience.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354877112463461", - "name": "Siren Head: The Horror Experience" - }, - { - "executables": [{"is_launcher": false, "name": "basement/basement_64.exe", "os": "win32"}], - "hook": true, - "id": "1124354878676942958", - "name": "Basement" - }, - { - "executables": [{"is_launcher": false, "name": "dirt showdown/showdown_avx.exe", "os": "win32"}], - "hook": true, - "id": "1124354880287551568", - "name": "DiRT Showdown" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pwndclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354881969475595", - "name": "PWND" - }, - { - "executables": [ - {"is_launcher": false, "name": "little misfortune demo/little misfortune demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354883550724167", - "name": "Little Misfortune Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/driftland-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354885329105078", - "name": "Driftland: The Magic Revival" - }, - { - "executables": [{"is_launcher": false, "name": "isle of ewe/isle of ewe.exe", "os": "win32"}], - "hook": true, - "id": "1124354886964891668", - "name": "Isle of Ewe" - }, - { - "executables": [{"is_launcher": false, "name": "what the golf/what the golf.exe", "os": "win32"}], - "hook": true, - "id": "1124354888571301988", - "name": "WHAT THE GOLF?" - }, - { - "executables": [{"is_launcher": false, "name": "polyball/polyball.exe", "os": "win32"}], - "hook": true, - "id": "1124354890119008386", - "name": "Polyball" - }, - { - "executables": [{"is_launcher": false, "name": "castlevania anniversary collection/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354891842863194", - "name": "Castlevania Anniversary Collection" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kabounce-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354893612855407", - "name": "Kabounce" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "fears to fathom - episode 2/fears to fathom - norwood hitchhike.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354895479324682", - "name": "Fears to Fathom - Episode 2" - }, - { - "executables": [{"is_launcher": false, "name": "the slormancer/the slormancer.exe", "os": "win32"}], - "hook": true, - "id": "1124354896754389022", - "name": "The Slormancer" - }, - { - "executables": [{"is_launcher": false, "name": "zeus + poseidon/zeus.exe", "os": "win32"}], - "hook": true, - "id": "1124354898784436345", - "name": "Zeus + Poseidon" - }, - { - "executables": [ - {"is_launcher": false, "name": "spaceflight simulator game/spaceflight simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354903528189972", - "name": "Spaceflight Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "forspoken demo/forspokendemo.exe", "os": "win32"}], - "hook": true, - "id": "1124354907756052480", - "name": "Forspoken Demo" - }, - { - "executables": [{"is_launcher": false, "name": "ride 2/ride2x64.exe", "os": "win32"}], - "hook": true, - "id": "1124354911681925161", - "name": "Ride 2" - }, - { - "executables": [{"is_launcher": false, "name": "bacon may die/bacon.exe", "os": "win32"}], - "hook": true, - "id": "1124354916505370695", - "name": "Bacon May Die" - }, - { - "executables": [{"is_launcher": false, "name": "assemble with care/awc.exe", "os": "win32"}], - "hook": true, - "id": "1124354919646900418", - "name": "Assemble with Care" - }, - { - "executables": [{"is_launcher": false, "name": "divide by sheep/dividebysheep.exe", "os": "win32"}], - "hook": true, - "id": "1124354921517563984", - "name": "Divide by Sheep" - }, - { - "executables": [{"is_launcher": false, "name": "win64/clay_2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354923182706850", - "name": "Garten of Banban 2" - }, - { - "executables": [{"is_launcher": false, "name": "locked in mind/escape room.exe", "os": "win32"}], - "hook": true, - "id": "1124354924742975510", - "name": "Locked In Mind" - }, - { - "executables": [{"is_launcher": false, "name": "nascar heat 4/nascarheat4.exe", "os": "win32"}], - "hook": true, - "id": "1124354926458454086", - "name": "NASCAR Heat 4" - }, - { - "executables": [ - {"is_launcher": false, "name": "camping simulator the squad/camping_simulator_thesquad.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354927993573476", - "name": "Camping Simulator: The Squad" - }, - { - "executables": [{"is_launcher": false, "name": "space rangers hd a war apart/rangers.exe", "os": "win32"}], - "hook": true, - "id": "1124354929943920780", - "name": "Space Rangers HD: A War Apart" - }, - { - "executables": [{"is_launcher": false, "name": "corruption of champions ii/coc ii.exe", "os": "win32"}], - "hook": true, - "id": "1124354931873304647", - "name": "Corruption of Champions II" - }, - { - "executables": [{"is_launcher": false, "name": "zup! 3/zup! 3.exe", "os": "win32"}], - "hook": true, - "id": "1124354933605544056", - "name": "Zup! 3" - }, - { - "executables": [{"is_launcher": false, "name": "steamworld dig/steamworlddig.exe", "os": "win32"}], - "hook": true, - "id": "1124354934981283932", - "name": "SteamWorld Dig" - }, - { - "executables": [{"is_launcher": false, "name": "waterdeep/waterdeep.exe", "os": "win32"}], - "hook": true, - "id": "1124354936508006451", - "name": "D&D Lords of Waterdeep" - }, - { - "executables": [{"is_launcher": false, "name": "gameguide/theobserver.exe", "os": "win32"}], - "hook": true, - "id": "1124354937946648596", - "name": "Observer" - }, - { - "executables": [{"is_launcher": false, "name": "wolongfallendynasty/wolong.exe", "os": "win32"}], - "hook": true, - "id": "1124354939716653086", - "name": "Wo Long: Fallen Dynasty" - }, - { - "executables": [{"is_launcher": false, "name": "hexcells/hexcells.exe", "os": "win32"}], - "hook": true, - "id": "1124354941289513020", - "name": "Hexcells" - }, - { - "executables": [{"is_launcher": false, "name": "aot/aot.exe", "os": "win32"}], - "hook": true, - "id": "1124354942841401404", - "name": "Attack on Titan / A.O.T. Wings of Freedom" - }, - { - "executables": [{"is_launcher": false, "name": "win64/scpthefoundation.exe", "os": "win32"}], - "hook": true, - "id": "1124354944502354001", - "name": "SCP: The Foundation" - }, - { - "executables": [{"is_launcher": false, "name": "lastevil/lastevil.exe", "os": "win32"}], - "hook": true, - "id": "1124354946091991121", - "name": "Last Evil" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "hiraganabattle/learn japanese to survive - hiragana battle.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124354947861991454", - "name": "Learn Japanese To Survive - Hiragana Battle" - }, - { - "executables": [{"is_launcher": false, "name": "darza's dominion/darzasdominion.exe", "os": "win32"}], - "hook": true, - "id": "1124354949569069278", - "name": "Darza's Dominion" - }, - { - "executables": [{"is_launcher": false, "name": "deeeer simulator/deeeer simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124354951280349224", - "name": "DEEEER Simulator: Your Average Everyday Deer Game" - }, - { - "executables": [{"is_launcher": false, "name": "saints row the third remastered/srttr.exe", "os": "win32"}], - "hook": true, - "id": "1124354952828039348", - "name": "Saints Row The Third Remastered" - }, - { - "executables": [ - {"is_launcher": false, "name": "dinosaur fossil hunter prologue/dinosaur fossil hunter.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354954438656100", - "name": "Dinosaur Fossil Hunter: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "escape first/escapefirst.exe", "os": "win32"}], - "hook": true, - "id": "1124354955818577920", - "name": "Escape First" - }, - { - "executables": [ - {"is_launcher": false, "name": "shadows over loathing/shadows over loathing.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354957471142019", - "name": "Shadows Over Loathing" - }, - { - "executables": [{"is_launcher": false, "name": "the test/game.exe", "os": "win32"}], - "hook": true, - "id": "1124354959048192010", - "name": "The Test" - }, - { - "executables": [{"is_launcher": false, "name": "win64/exorcist-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354961011130378", - "name": "Vade Retro : Exorcist" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hope.exe", "os": "win32"}], - "hook": true, - "id": "1124354962701430855", - "name": "SCP022" - }, - { - "executables": [ - {"is_launcher": false, "name": "return to monkey island/return to monkey island.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354964362383452", - "name": "Return to Monkey Island" - }, - { - "executables": [{"is_launcher": false, "name": "magic rampage/magicrampage.exe", "os": "win32"}], - "hook": true, - "id": "1124354966086238359", - "name": "Magic Rampage" - }, - { - "executables": [{"is_launcher": false, "name": "windows/monstertd.exe", "os": "win32"}], - "hook": true, - "id": "1124354967633932381", - "name": "Idle Monster TD: Evolved" - }, - { - "executables": [{"is_launcher": false, "name": "win64/infused-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354969672368138", - "name": "Spirit of the North" - }, - { - "executables": [{"is_launcher": false, "name": "common/xcom ufo defense/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124354971303956601", - "name": "X-COM: UFO Defense" - }, - { - "executables": [{"is_launcher": false, "name": "shelter2/shelter2.exe", "os": "win32"}], - "hook": true, - "id": "1124354973069750322", - "name": "Shelter 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/projectnimble.exe", "os": "win32"}], - "hook": true, - "id": "1124354974818783294", - "name": "Worms Rumble" - }, - { - "executables": [{"is_launcher": false, "name": "risk factions/risk factions.exe", "os": "win32"}], - "hook": true, - "id": "1124354976454557747", - "name": "RISK Factions" - }, - { - "executables": [{"is_launcher": false, "name": "legend of grimrock/grimrock.exe", "os": "win32"}], - "hook": true, - "id": "1124354979772252350", - "name": "Legend of Grimrock" - }, - { - "executables": [{"is_launcher": false, "name": "viewfinder demo/viewfinder_demo.exe", "os": "win32"}], - "hook": true, - "id": "1124354981449977866", - "name": "Viewfinder Demo" - }, - { - "executables": [{"is_launcher": false, "name": "melodysescape/melodysescape.exe", "os": "win32"}], - "hook": true, - "id": "1124354983136079882", - "name": "Melody's Escape" - }, - { - "executables": [{"is_launcher": false, "name": "kitty powers matchmaker/matchmaker.exe", "os": "win32"}], - "hook": true, - "id": "1124354984465682502", - "name": "Kitty Powers' Matchmaker" - }, - { - "executables": [ - {"is_launcher": false, "name": "i'm on observation duty 4/i'm on observation duty 4.exe", "os": "win32"} - ], - "hook": true, - "id": "1124354986214699058", - "name": "I'm on Observation Duty 4" - }, - { - "executables": [{"is_launcher": false, "name": "notruf2/notruf2019.exe", "os": "win32"}], - "hook": true, - "id": "1124354988144087071", - "name": "Notruf 112 - Die Feuerwehr Simulation 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/seaplane-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124354989721141268", - "name": "SKYE" - }, - { - "executables": [{"is_launcher": false, "name": "artofrally/artofrally.exe", "os": "win32"}], - "hook": true, - "id": "1124354991499530291", - "name": "art of rally" - }, - { - "executables": [{"is_launcher": false, "name": "halo spartan assault/halospartanassault.exe", "os": "win32"}], - "hook": true, - "id": "1124354993332437143", - "name": "Halo: Spartan Assault" - }, - { - "executables": [{"is_launcher": false, "name": "my free farm 2/myfreefarm2.exe", "os": "win32"}], - "hook": true, - "id": "1124354994993377340", - "name": "My Free Farm 2" - }, - { - "executables": [{"is_launcher": false, "name": "rise of liberty/rise of liberty.exe", "os": "win32"}], - "hook": true, - "id": "1124354996524306442", - "name": "Rise of Liberty" - }, - { - "executables": [{"is_launcher": false, "name": "sneak thief/sneakthief01.exe", "os": "win32"}], - "hook": true, - "id": "1124354998264934522", - "name": "Sneak Thief" - }, - { - "executables": [{"is_launcher": false, "name": "slasher's keep/slasherskeep.exe", "os": "win32"}], - "hook": true, - "id": "1124355000005574756", - "name": "Slasher's Keep" - }, - { - "executables": [{"is_launcher": false, "name": "rapture rejects/rr-windows-client.exe", "os": "win32"}], - "hook": true, - "id": "1124355001637163129", - "name": "Rapture Rejects" - }, - { - "executables": [{"is_launcher": false, "name": "ancient warfare 3/ancient warfare 3.exe", "os": "win32"}], - "hook": true, - "id": "1124355003289714758", - "name": "Ancient Warfare 3" - }, - { - "executables": [{"is_launcher": false, "name": "system/em.exe", "os": "win32"}], - "hook": true, - "id": "1124355005009375423", - "name": "Eternal Magic" - }, - { - "executables": [{"is_launcher": false, "name": "vacation simulator/vacation simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124355006544494682", - "name": "Vacation Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "the king of fighters xiv/kofxiv.exe", "os": "win32"}], - "hook": true, - "id": "1124355008222212196", - "name": "THE KING OF FIGHTERS XIV STEAM EDITION" - }, - { - "executables": [{"is_launcher": false, "name": "coloring game the little city/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355009719586967", - "name": "Coloring Game: Little City" - }, - { - "executables": [{"is_launcher": false, "name": "ovrdrop/ovrdrop.exe", "os": "win32"}], - "hook": true, - "id": "1124355011246309446", - "name": "OVRdrop" - }, - { - "executables": [{"is_launcher": false, "name": "lily's well/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355013037281380", - "name": "Lily's Well" - }, - { - "executables": [{"is_launcher": false, "name": "pixel battle royale/pixelbattleroyale.exe", "os": "win32"}], - "hook": true, - "id": "1124355014735966328", - "name": "Pixel Battle Royale" - }, - { - "executables": [{"is_launcher": false, "name": "final fantasy iv pr/final fantasy iv.exe", "os": "win32"}], - "hook": true, - "id": "1124355016233320650", - "name": "FINAL FANTASY IV" - }, - { - "executables": [{"is_launcher": false, "name": "super dirt racers/super dirt racers.exe", "os": "win32"}], - "hook": true, - "id": "1124355024022159480", - "name": "Super Dirt Racers" - }, - { - "executables": [{"is_launcher": false, "name": "buddy simulator 1984/buddy simulator 1984.exe", "os": "win32"}], - "hook": true, - "id": "1124355025632776303", - "name": "Buddy Simulator 1984" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sifu-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355027398570055", - "name": "Sifu" - }, - { - "executables": [{"is_launcher": false, "name": "monolisk/monolisk.exe", "os": "win32"}], - "hook": true, - "id": "1124355029294403695", - "name": "MONOLISK" - }, - { - "executables": [{"is_launcher": false, "name": "zombie gunship survival/zgi_steam_win_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124355031173443644", - "name": "Zombie Gunship Survival" - }, - { - "executables": [{"is_launcher": false, "name": "insanity clicker/insanity clicker.exe", "os": "win32"}], - "hook": true, - "id": "1124355033685839912", - "name": "Insanity Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "hover/hover.exe", "os": "win32"}], - "hook": true, - "id": "1124355035376136343", - "name": "Hover" - }, - { - "executables": [{"is_launcher": false, "name": "loop hero demo/loophero_demo.exe", "os": "win32"}], - "hook": true, - "id": "1124355036969980045", - "name": "Loop Hero Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/weaponized-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355038677057586", - "name": "Axiom Soccer" - }, - { - "executables": [{"is_launcher": false, "name": "win64/arr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355040350580818", - "name": "RAILROADS Online!" - }, - { - "executables": [{"is_launcher": false, "name": "touhou fantasia/touhoufantasia.exe", "os": "win32"}], - "hook": true, - "id": "1124355042057666640", - "name": "Touhou Fantasia" - }, - { - "executables": [{"is_launcher": false, "name": "pc/wandersong.exe", "os": "win32"}], - "hook": true, - "id": "1124355043689254953", - "name": "Wandersong" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dxm-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355045308248085", - "name": "DAEMON X MACHINA" - }, - { - "executables": [{"is_launcher": false, "name": "cars/cars.exe", "os": "win32"}], - "hook": true, - "id": "1124355046696570900", - "name": "Cars" - }, - { - "executables": [{"is_launcher": false, "name": "wolfteamclassic/wolfteam.bin", "os": "win32"}], - "hook": true, - "id": "1124355048433004655", - "name": "WolfTeam: Classic" - }, - { - "executables": [{"is_launcher": false, "name": "you have to win the game/thegame.exe", "os": "win32"}], - "hook": true, - "id": "1124355050324643870", - "name": "You Have to Win the Game" - }, - { - "executables": [{"is_launcher": false, "name": "cyber hook/cyberhook.exe", "os": "win32"}], - "hook": true, - "id": "1124355051813617917", - "name": "Cyber Hook" - }, - { - "executables": [{"is_launcher": false, "name": "samorost 1/samorost1.exe", "os": "win32"}], - "hook": true, - "id": "1124355053503926282", - "name": "Samorost 1" - }, - { - "executables": [{"is_launcher": false, "name": "fury unleashed/furyunleashed.exe", "os": "win32"}], - "hook": true, - "id": "1124355055273918615", - "name": "Fury Unleashed" - }, - { - "executables": [ - {"is_launcher": false, "name": "a plague tale requiem/aplaguetalerequiem_x64.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355056964219010", - "name": "A Plague Tale: Requiem" - }, - { - "executables": [ - {"is_launcher": false, "name": "epic battle fantasy 3/epic battle fantasy 3.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355059040407692", - "name": "Epic Battle Fantasy 3" - }, - { - "executables": [{"is_launcher": false, "name": "cooking live restaurant game/cl.exe", "os": "win32"}], - "hook": true, - "id": "1124355060709736479", - "name": "Cooking Live: Restaurant Game" - }, - { - "executables": [{"is_launcher": false, "name": "outdrive/outdrive.exe", "os": "win32"}], - "hook": true, - "id": "1124355062358102016", - "name": "OutDrive" - }, - { - "executables": [{"is_launcher": false, "name": "exo one/exo one.exe", "os": "win32"}], - "hook": true, - "id": "1124355064409108501", - "name": "Exo One" - }, - { - "executables": [{"is_launcher": false, "name": "death and taxes demo/death and taxes.exe", "os": "win32"}], - "hook": true, - "id": "1124355065981980692", - "name": "Death and Taxes Demo" - }, - { - "executables": [{"is_launcher": false, "name": "infinifactory/infinifactory.exe", "os": "win32"}], - "hook": true, - "id": "1124355067311571039", - "name": "Infinifactory" - }, - { - "executables": [{"is_launcher": false, "name": "hitman 2 silent assassin/hitman2.exe", "os": "win32"}], - "hook": true, - "id": "1124355068947345489", - "name": "Hitman 2: Silent Assassin" - }, - { - "executables": [{"is_launcher": false, "name": "win64/drakehollow-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355091571429556", - "name": "Drake Hollow" - }, - { - "executables": [{"is_launcher": false, "name": "hitman contracts/hitmancontracts.exe", "os": "win32"}], - "hook": true, - "id": "1124355095677636648", - "name": "Hitman: Contracts" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bloodtrailvr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355100547231826", - "name": "Blood Trail" - }, - { - "executables": [{"is_launcher": false, "name": "the tiny bang story/ttbs.exe", "os": "win32"}], - "hook": true, - "id": "1124355102556307496", - "name": "The Tiny Bang Story" - }, - { - "executables": [{"is_launcher": false, "name": "hokko life/hokko life.exe", "os": "win32"}], - "hook": true, - "id": "1124355104334688276", - "name": "Hokko Life" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bumsim-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355106226323616", - "name": "Bum Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "charlie murder/charliemurder.exe", "os": "win32"}], - "hook": true, - "id": "1124355107799191603", - "name": "Charlie Murder" - }, - { - "executables": [{"is_launcher": false, "name": "mechabellum/mechabellum.exe", "os": "win32"}], - "hook": true, - "id": "1124355109590151269", - "name": "Mechabellum" - }, - { - "executables": [{"is_launcher": false, "name": "niffelheim/niffelheim.exe", "os": "win32"}], - "hook": true, - "id": "1124355111506952292", - "name": "Niffelheim" - }, - { - "executables": [{"is_launcher": false, "name": "len's island/len's island.exe", "os": "win32"}], - "hook": true, - "id": "1124355113209835582", - "name": "Len's Island" - }, - { - "executables": [{"is_launcher": false, "name": "salt/salt.exe", "os": "win32"}], - "hook": true, - "id": "1124355114778509463", - "name": "Salt" - }, - { - "executables": [{"is_launcher": false, "name": "duelyst ii/duelyst2.exe", "os": "win32"}], - "hook": true, - "id": "1124355116573667428", - "name": "Duelyst II" - }, - { - "executables": [{"is_launcher": false, "name": "rpg maker vx ace lite/rpgvxacelite.exe", "os": "win32"}], - "hook": true, - "id": "1124355118532411403", - "name": "RPG Maker VX Ace Lite" - }, - { - "executables": [{"is_launcher": false, "name": "manifold garden/manifoldgarden.exe", "os": "win32"}], - "hook": true, - "id": "1124355120415658065", - "name": "Manifold Garden" - }, - { - "executables": [{"is_launcher": false, "name": "mad games tycoon/madgamestycoon.exe", "os": "win32"}], - "hook": true, - "id": "1124355122001100810", - "name": "Mad Games Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "ape out/apeout.exe", "os": "win32"}], - "hook": true, - "id": "1124355123573960794", - "name": "APE OUT" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "amazingcultivationsimulator/amazing cultivation simulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124355125281050716", - "name": "Amazing Cultivation Simulator" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "super dragon ball heroes world mission/sdbheroes_worldmission.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124355126983929989", - "name": "SUPER DRAGON BALL HEROES WORLD MISSION" - }, - { - "executables": [{"is_launcher": false, "name": "bannersofruin/bannersofruin.exe", "os": "win32"}], - "hook": true, - "id": "1124355128938483712", - "name": "Banners of Ruin" - }, - { - "executables": [{"is_launcher": false, "name": "material girl/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355130486173886", - "name": "Material Girl" - }, - { - "executables": [{"is_launcher": false, "name": "after the fall/afterthefall.exe", "os": "win32"}], - "hook": true, - "id": "1124355132419756182", - "name": "After The Fall" - }, - { - "executables": [{"is_launcher": false, "name": "milmo/milmo.exe", "os": "win32"}], - "hook": true, - "id": "1124355134365909042", - "name": "MilMo" - }, - { - "executables": [{"is_launcher": false, "name": "picross touch/picross.exe", "os": "win32"}], - "hook": true, - "id": "1124355136576311397", - "name": "Picross Touch" - }, - { - "executables": [{"is_launcher": false, "name": "ultra fight da ! kyanta 2/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355138082058380", - "name": "Ultra Fight Da Kyanta 2" - }, - { - "executables": [{"is_launcher": false, "name": "superfighters deluxe/superfighters deluxe.exe", "os": "win32"}], - "hook": true, - "id": "1124355139772366929", - "name": "Superfighters Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "colony simulator/colony simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124355141269729340", - "name": "Colony Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "floaty flatmates/sad.exe", "os": "win32"}], - "hook": true, - "id": "1124355143169753119", - "name": "Sam & Dan: Floaty Flatmates" - }, - { - "executables": [{"is_launcher": false, "name": "terra nil/terra nil.exe", "os": "win32"}], - "hook": true, - "id": "1124355145015251034", - "name": "Terra Nil" - }, - { - "executables": [{"is_launcher": false, "name": "gamemaker studio 2/gamemaker.exe", "os": "win32"}], - "hook": true, - "id": "1124355146760077342", - "name": "GameMaker" - }, - { - "executables": [ - {"is_launcher": false, "name": "axis & allies online/axisandallies1942online.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355148358111342", - "name": "Axis & Allies 1942 Online" - }, - { - "executables": [{"is_launcher": false, "name": "guacamelee2/guac2_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124355150094549002", - "name": "Guacamelee! 2" - }, - { - "executables": [{"is_launcher": false, "name": "sentinels of the multiverse/sentinels.exe", "os": "win32"}], - "hook": true, - "id": "1124355151864541264", - "name": "Sentinels of the Multiverse" - }, - { - "executables": [{"is_launcher": false, "name": "eroico/eroico.exe", "os": "win32"}], - "hook": true, - "id": "1124355153357721670", - "name": "Eroico" - }, - { - "executables": [{"is_launcher": false, "name": "sound slide/soundslide.exe", "os": "win32"}], - "hook": true, - "id": "1124355155039629382", - "name": "Sound Slide" - }, - { - "executables": [{"is_launcher": false, "name": "expeditions viking/expeditions viking.exe", "os": "win32"}], - "hook": true, - "id": "1124355157208088766", - "name": "Expeditions: Viking" - }, - { - "executables": [{"is_launcher": false, "name": "hyperfight/hyperfight.exe", "os": "win32"}], - "hook": true, - "id": "1124355158940332032", - "name": "HYPERFIGHT" - }, - { - "executables": [{"is_launcher": false, "name": "win64/walkinthewoods-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355160664195092", - "name": "A Walk in the Woods" - }, - { - "executables": [{"is_launcher": false, "name": "wildfrost/wildfrost.exe", "os": "win32"}], - "hook": true, - "id": "1124355162409029723", - "name": "Wildfrost" - }, - { - "executables": [{"is_launcher": false, "name": "king arthur knight's tale/ka_kt.exe", "os": "win32"}], - "hook": true, - "id": "1124355164225159218", - "name": "King Arthur: Knight's Tale" - }, - { - "executables": [{"is_launcher": false, "name": "prodeus/prodeus.exe", "os": "win32"}], - "hook": true, - "id": "1124355165923848214", - "name": "Prodeus" - }, - { - "executables": [{"is_launcher": false, "name": "smallworld2/smallworld.exe", "os": "win32"}], - "hook": true, - "id": "1124355167551242320", - "name": "Small World" - }, - { - "executables": [{"is_launcher": false, "name": "exapunks/exapunks.exe", "os": "win32"}], - "hook": true, - "id": "1124355169287680030", - "name": "EXAPUNKS" - }, - { - "executables": [{"is_launcher": false, "name": "eldest souls/eldest souls.exe", "os": "win32"}], - "hook": true, - "id": "1124355171011547166", - "name": "Eldest Souls" - }, - { - "executables": [ - {"is_launcher": false, "name": "lego the incredibles/lego the incredibles_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355172609568849", - "name": "LEGO\u00ae The Incredibles" - }, - { - "executables": [{"is_launcher": false, "name": "ty the tasmanian tiger/ty.exe", "os": "win32"}], - "hook": true, - "id": "1124355174463459439", - "name": "TY the Tasmanian Tiger" - }, - { - "executables": [{"is_launcher": false, "name": "chkn/chkn.exe", "os": "win32"}], - "hook": true, - "id": "1124355176338305094", - "name": "CHKN" - }, - { - "executables": [{"is_launcher": false, "name": "serena/dagon64.exe", "os": "win32"}], - "hook": true, - "id": "1124355178502570064", - "name": "Serena" - }, - { - "executables": [{"is_launcher": false, "name": "journeys in middle-earth/jime.exe", "os": "win32"}], - "hook": true, - "id": "1124355181463744512", - "name": "The Lord of the Rings: Journeys in Middle-earth" - }, - { - "executables": [{"is_launcher": false, "name": "river city girls/rivercitygirls.exe", "os": "win32"}], - "hook": true, - "id": "1124355183225360435", - "name": "River City Girls" - }, - { - "executables": [{"is_launcher": false, "name": "farmd/farmd.exe", "os": "win32"}], - "hook": true, - "id": "1124355184995352689", - "name": "FarmD" - }, - { - "executables": [{"is_launcher": false, "name": "booty farm/booty farm.exe", "os": "win32"}], - "hook": true, - "id": "1124355187079925860", - "name": "Booty Farm" - }, - { - "executables": [{"is_launcher": false, "name": "acceleration of suguri 2/aos2.exe", "os": "win32"}], - "hook": true, - "id": "1124355188652781738", - "name": "Acceleration of SUGURI 2" - }, - { - "executables": [{"is_launcher": false, "name": "carrier command 2/carrier_command.exe", "os": "win32"}], - "hook": true, - "id": "1124355190229848094", - "name": "Carrier Command 2" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "resident evil village biohazard village gameplay demo/re8demo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124355191932727296", - "name": "Resident Evil Village Gameplay Demo" - }, - { - "executables": [{"is_launcher": false, "name": "ghost of a tale/goat.exe", "os": "win32"}], - "hook": true, - "id": "1124355197439856660", - "name": "Ghost of a Tale" - }, - { - "executables": [{"is_launcher": false, "name": "gatewalkersalpha/gatewalkers.exe", "os": "win32"}], - "hook": true, - "id": "1124355199117561956", - "name": "Gatewalkers (Alpha)" - }, - { - "executables": [{"is_launcher": false, "name": "objectn/objectn.exe", "os": "win32"}], - "hook": true, - "id": "1124355200803688448", - "name": "Object N" - }, - { - "executables": [{"is_launcher": false, "name": "duckseason/duckseason.exe", "os": "win32"}], - "hook": true, - "id": "1124355202556899488", - "name": "Duck Season" - }, - { - "executables": [{"is_launcher": false, "name": "shipping/eocapp.exe", "os": "win32"}], - "hook": true, - "id": "1124355208395358328", - "name": "Divinity: Original Sin (Classic)" - }, - { - "executables": [{"is_launcher": false, "name": "yakuza 4/yakuza4.exe", "os": "win32"}], - "hook": true, - "id": "1124355211465605201", - "name": "Yakuza 4 Remastered" - }, - { - "executables": [ - {"is_launcher": false, "name": "legend of keepers prologue/legendofkeepersprologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355213168488569", - "name": "Legend of Keepers: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "baldi's basics plus/baldi.exe", "os": "win32"}], - "hook": true, - "id": "1124355215043350738", - "name": "Baldi's Basics Plus" - }, - { - "executables": [{"is_launcher": false, "name": "escape the clinic/office escape.exe", "os": "win32"}], - "hook": true, - "id": "1124355216612016310", - "name": "Escape the Clinic" - }, - { - "executables": [ - {"is_launcher": false, "name": "my friendly neighborhood demo/my friendly neighborhood.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355218105184256", - "name": "My Friendly Neighborhood Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kageroh-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355219539644486", - "name": "Shadow Corridor" - }, - { - "executables": [{"is_launcher": false, "name": "tails of iron/toi.exe", "os": "win32"}], - "hook": true, - "id": "1124355221250912256", - "name": "Tails of Iron" - }, - { - "executables": [{"is_launcher": false, "name": "gamemaker_studio/gamemakerplayer.exe", "os": "win32"}], - "hook": true, - "id": "1124355222848946237", - "name": "GameMaker: Studio" - }, - { - "executables": [{"is_launcher": false, "name": "seekgirl/seekgirl.exe", "os": "win32"}], - "hook": true, - "id": "1124355224363085967", - "name": "Seek Girl" - }, - { - "executables": [{"is_launcher": false, "name": "super seducer 2/superseducer2.exe", "os": "win32"}], - "hook": true, - "id": "1124355225998868490", - "name": "Super Seducer 2 : Advanced Seduction Tactics" - }, - { - "executables": [{"is_launcher": false, "name": "soccer manager 2019/soccer manager 2019.exe", "os": "win32"}], - "hook": true, - "id": "1124355227731120128", - "name": "Soccer Manager 2019" - }, - { - "executables": [{"is_launcher": false, "name": "ghost exorcism inc/ghost exorcism inc.exe", "os": "win32"}], - "hook": true, - "id": "1124355229173956728", - "name": "Ghost Exorcism INC." - }, - { - "executables": [{"is_launcher": false, "name": "gato roboto/gatoroboto.exe", "os": "win32"}], - "hook": true, - "id": "1124355230872653904", - "name": "Gato Roboto" - }, - { - "executables": [{"is_launcher": false, "name": "roguebook/roguebook.exe", "os": "win32"}], - "hook": true, - "id": "1124355232546177084", - "name": "Roguebook" - }, - { - "executables": [{"is_launcher": false, "name": "black rose/black rose.exe", "os": "win32"}], - "hook": true, - "id": "1124355234274234398", - "name": "Black Rose" - }, - { - "executables": [{"is_launcher": false, "name": "medieval kingdom wars/mkw.exe", "os": "win32"}], - "hook": true, - "id": "1124355235821924492", - "name": "Medieval Kingdom Wars" - }, - { - "executables": [{"is_launcher": false, "name": "ikaruga/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355237545791508", - "name": "Ikaruga" - }, - { - "executables": [ - {"is_launcher": false, "name": "quiplash 2 interlashional/quiplash 2 interlashional.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355241513598996", - "name": "Quiplash 2 InterLASHional" - }, - { - "executables": [{"is_launcher": false, "name": "enchain demo/enchain.exe", "os": "win32"}], - "hook": true, - "id": "1124355244671905864", - "name": "ENCHAIN Demo" - }, - { - "executables": [{"is_launcher": false, "name": "knights of pen and paper/knightspp.exe", "os": "win32"}], - "hook": true, - "id": "1124355247549202483", - "name": "Knights of Pen and Paper +1" - }, - { - "executables": [{"is_launcher": false, "name": "underworld idle/imp_inf.exe", "os": "win32"}], - "hook": true, - "id": "1124355268533301308", - "name": "Underworld Idle" - }, - { - "executables": [{"is_launcher": false, "name": "kreedzclimbing/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124355270223593552", - "name": "Kreedz Climbing" - }, - { - "executables": [ - {"is_launcher": false, "name": "incremental adventures/incrementaladventures.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355272006176879", - "name": "Incremental Adventures" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/sakura_dungeon.exe", "os": "win32"}], - "hook": true, - "id": "1124355273876852786", - "name": "Sakura Dungeon" - }, - { - "executables": [{"is_launcher": false, "name": "win64/expeditionsrome-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355275701371040", - "name": "Expeditions: Rome" - }, - { - "executables": [{"is_launcher": false, "name": "tadpole tales/tadpoletales.exe", "os": "win32"}], - "hook": true, - "id": "1124355277278425228", - "name": "Tadpole Tales" - }, - { - "executables": [{"is_launcher": false, "name": "win64/avencolony-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355278872264874", - "name": "Aven Colony" - }, - { - "executables": [ - {"is_launcher": false, "name": "car mechanic simulator 2015 demo/cms2015demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355280591933551", - "name": "Car Mechanic Simulator 2015 Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "luck be a landlord demo/luck be a landlord.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355284048031794", - "name": "Luck be a Landlord (DEMO)" - }, - { - "executables": [{"is_launcher": false, "name": "lake/lake.exe", "os": "win32"}], - "hook": true, - "id": "1124355285419577394", - "name": "Lake" - }, - { - "executables": [{"is_launcher": false, "name": "final fantasy ii pr/final fantasy ii.exe", "os": "win32"}], - "hook": true, - "id": "1124355287252484158", - "name": "FINAL FANTASY II" - }, - { - "executables": [{"is_launcher": false, "name": "boomerang fu/boomerang fu.exe", "os": "win32"}], - "hook": true, - "id": "1124355289093779456", - "name": "Boomerang Fu" - }, - { - "executables": [{"is_launcher": false, "name": "rollerchampions/roller.exe", "os": "win32"}], - "hook": true, - "id": "1124355290863779850", - "name": "Roller Champions\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "hentai puzzle/hentaipuzzle.exe", "os": "win32"}], - "hook": true, - "id": "1124355292591829002", - "name": "Hentai Puzzle" - }, - { - "executables": [{"is_launcher": false, "name": "gone home/gonehome.exe", "os": "win32"}], - "hook": true, - "id": "1124355294600904704", - "name": "Gone Home" - }, - { - "executables": [{"is_launcher": false, "name": "12ibt6hi/12ibt6.exe", "os": "win32"}], - "hook": true, - "id": "1124355296379285695", - "name": "12 is Better Than 6" - }, - { - "executables": [ - {"is_launcher": false, "name": "beast battle simulator/beastbattlesimulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355298203816028", - "name": "Beast Battle Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "deep sky derelicts/deep sky derelicts.exe", "os": "win32"}], - "hook": true, - "id": "1124355300225462392", - "name": "Deep Sky Derelicts" - }, - { - "executables": [ - {"is_launcher": false, "name": "yonder the cloud catcher chronicles/yonderccc.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355301878026391", - "name": "Yonder: The Cloud Catcher Chronicles" - }, - { - "executables": [{"is_launcher": false, "name": "unheard/unheard.exe", "os": "win32"}], - "hook": true, - "id": "1124355303656407151", - "name": "Unheard" - }, - { - "executables": [{"is_launcher": false, "name": "easy red 2/easy red 2.exe", "os": "win32"}], - "hook": true, - "id": "1124355305296375818", - "name": "Easy Red 2" - }, - { - "executables": [{"is_launcher": false, "name": "grow up/growup.exe", "os": "win32"}], - "hook": true, - "id": "1124355306978295819", - "name": "Grow Up" - }, - { - "executables": [{"is_launcher": false, "name": "the last campfire/the last campfire.exe", "os": "win32"}], - "hook": true, - "id": "1124355308676993115", - "name": "The Last Campfire" - }, - { - "executables": [{"is_launcher": false, "name": "need for speed shift/shift.exe", "os": "win32"}], - "hook": true, - "id": "1124355310363099176", - "name": "Need for Speed: SHIFT" - }, - { - "executables": [{"is_launcher": false, "name": "win64/overlook-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355312334417940", - "name": "The Suicide of Rachel Foster" - }, - { - "executables": [{"is_launcher": false, "name": "game/rebuild3.exe", "os": "win32"}], - "hook": true, - "id": "1124355314192498798", - "name": "Rebuild 3: Gangs of Deadsville" - }, - { - "executables": [ - {"is_launcher": false, "name": "haunt the house terrortown/hauntthehouseterrortown.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355315786330186", - "name": "Haunt the House: Terrortown" - }, - { - "executables": [{"is_launcher": false, "name": "win64/witches_x_warlocks-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355317581500506", - "name": "Witches x Warlocks" - }, - { - "executables": [{"is_launcher": false, "name": "rogue genesia/rogue genesia.exe", "os": "win32"}], - "hook": true, - "id": "1124355319364071444", - "name": "Rogue : Genesia" - }, - { - "executables": [{"is_launcher": false, "name": "nekopara vol. 4/nekopara_vol4.exe", "os": "win32"}], - "hook": true, - "id": "1124355321226346550", - "name": "NEKOPARA Vol. 4" - }, - { - "executables": [ - {"is_launcher": false, "name": "the house of da vinci/the house of da vinci.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355322732097596", - "name": "The House of Da Vinci" - }, - { - "executables": [{"is_launcher": false, "name": "thief simulator vr/thiefsimulatorvr.exe", "os": "win32"}], - "hook": true, - "id": "1124355324468543568", - "name": "Thief Simulator VR" - }, - { - "executables": [{"is_launcher": false, "name": "damned/damned.exe", "os": "win32"}], - "hook": true, - "id": "1124355325898797056", - "name": "Damned" - }, - { - "executables": [{"is_launcher": false, "name": "runes of magic/client.exe", "os": "win32"}], - "hook": true, - "id": "1124355327522000947", - "name": "Runes of Magic" - }, - { - "executables": [{"is_launcher": false, "name": "civilization iv colonization/colonization.exe", "os": "win32"}], - "hook": true, - "id": "1124355329312964749", - "name": "Sid Meier's Civilization IV: Colonization" - }, - { - "executables": [{"is_launcher": false, "name": "deadrealm/deadrealm.exe", "os": "win32"}], - "hook": true, - "id": "1124355330982293595", - "name": "Dead Realm" - }, - { - "executables": [{"is_launcher": false, "name": "total annihilation/totala.exe", "os": "win32"}], - "hook": true, - "id": "1124355332643246120", - "name": "Total Annihilation" - }, - { - "executables": [{"is_launcher": false, "name": "build/sexwithhitler.exe", "os": "win32"}], - "hook": true, - "id": "1124355334593593364", - "name": "SEX with HITLER" - }, - { - "executables": [{"is_launcher": false, "name": "holy potatoes! a weapon shop!/hpaws.exe", "os": "win32"}], - "hook": true, - "id": "1124355336233570344", - "name": "Holy Potatoes! A Weapon Shop?!" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon hunter champions/dhc.exe", "os": "win32"}], - "hook": true, - "id": "1124355337936453632", - "name": "Dungeon Hunter Champions" - }, - { - "executables": [{"is_launcher": false, "name": "among trees/among trees.exe", "os": "win32"}], - "hook": true, - "id": "1124355339576422530", - "name": "Among Trees" - }, - { - "executables": [ - {"is_launcher": false, "name": "you have 10 seconds/you have 10 secondsfinal.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355341103157328", - "name": "You Have 10 Seconds" - }, - { - "executables": [{"is_launcher": false, "name": "fapgoddess_steam/fapgoddess.exe", "os": "win32"}], - "hook": true, - "id": "1124355342915092540", - "name": "Fap Goddess" - }, - { - "executables": [{"is_launcher": false, "name": "the last stand aftermath demo/tlsa.exe", "os": "win32"}], - "hook": true, - "id": "1124355344559263786", - "name": "The Last Stand: Aftermath Demo" - }, - { - "executables": [{"is_launcher": false, "name": "legends of aria/legends of aria.exe", "os": "win32"}], - "hook": true, - "id": "1124355346127929395", - "name": "Legends of Aria" - }, - { - "executables": [{"is_launcher": false, "name": "wish/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355348015370291", - "name": "Wish" - }, - { - "executables": [{"is_launcher": false, "name": "amd64/redeclipse.exe", "os": "win32"}], - "hook": true, - "id": "1124355349881831504", - "name": "Red Eclipse 2" - }, - { - "executables": [{"is_launcher": false, "name": "radio commander/rc.exe", "os": "win32"}], - "hook": true, - "id": "1124355351505031229", - "name": "Radio Commander" - }, - { - "executables": [{"is_launcher": false, "name": "mandagon/mandagon.exe", "os": "win32"}], - "hook": true, - "id": "1124355353623146627", - "name": "Mandagon" - }, - { - "executables": [{"is_launcher": false, "name": "case animatronics/case.exe", "os": "win32"}], - "hook": true, - "id": "1124355355443482644", - "name": "CASE: Animatronics" - }, - { - "executables": [{"is_launcher": false, "name": "meltys quest/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124355356794044537", - "name": "Meltys Quest" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the incredible adventures of van helsing final cut/vanhelsing_x64_win10.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124355358413049886", - "name": "The Incredible Adventures of Van Helsing: Final Cut" - }, - { - "executables": [{"is_launcher": false, "name": "big pharma/big pharma.exe", "os": "win32"}], - "hook": true, - "id": "1124355360086573136", - "name": "Big Pharma" - }, - { - "executables": [ - {"is_launcher": false, "name": "senran kagura peach beach splash/skpeachbeachsplash.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355361860759683", - "name": "SENRAN KAGURA Peach Beach Splash" - }, - { - "executables": [{"is_launcher": false, "name": "omon simulator/omon simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124355363337162802", - "name": "OMON Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "bin/atg-steam-engine-demo.exe", "os": "win32"}], - "hook": true, - "id": "1124355364993904690", - "name": "Steam Engine Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "star renegades/star renegades.exe", "os": "win32"}], - "hook": true, - "id": "1124355366545801286", - "name": "Star Renegades" - }, - { - "executables": [{"is_launcher": false, "name": "turbo overkill demo/turbo overkill.exe", "os": "win32"}], - "hook": true, - "id": "1124355368311607396", - "name": "Turbo Overkill Demo" - }, - { - "executables": [{"is_launcher": false, "name": "exo one prologue/exo one.exe", "os": "win32"}], - "hook": true, - "id": "1124355370173870170", - "name": "Exo One: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "golden light/golden light.exe", "os": "win32"}], - "hook": true, - "id": "1124355372128423947", - "name": "Golden Light" - }, - { - "executables": [{"is_launcher": false, "name": "kuukiyomi_online/kyonline.exe", "os": "win32"}], - "hook": true, - "id": "1124355374854713385", - "name": "\u7a7a\u6c17\u8aad\u307f\u3002\u30aa\u30f3\u30e9\u30a4\u30f3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mxnext-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355376662462525", - "name": "MX vs ATV All Out" - }, - { - "executables": [{"is_launcher": false, "name": "planet centauri/planetcentauri.exe", "os": "win32"}], - "hook": true, - "id": "1124355378340179978", - "name": "Planet Centauri" - }, - { - "executables": [{"is_launcher": false, "name": "prison simulator/prison simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124355380131151902", - "name": "Prison Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "buriedbornes/buriedbornes.exe", "os": "win32"}], - "hook": true, - "id": "1124355381611737088", - "name": "Buriedbornes - Dungeon RPG" - }, - { - "executables": [{"is_launcher": false, "name": "blind trust/blindtrust.exe", "os": "win32"}], - "hook": true, - "id": "1124355383125885009", - "name": "Blind Trust" - }, - { - "executables": [{"is_launcher": false, "name": "dragons&titans/dnt.exe", "os": "win32"}], - "hook": true, - "id": "1124355384807804999", - "name": "Dragons and Titans" - }, - { - "executables": [{"is_launcher": false, "name": "traha global/trahaglobal_eac.exe", "os": "win32"}], - "hook": true, - "id": "1124355386355499108", - "name": "TRAHA Global" - }, - { - "executables": [{"is_launcher": false, "name": "wormsworldparty/w2.exe", "os": "win32"}], - "hook": true, - "id": "1124355388247134258", - "name": "Worms World Party Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "chip's challenge 1/chips1.exe", "os": "win32"}], - "hook": true, - "id": "1124355389778051143", - "name": "Chip's Challenge 1" - }, - { - "executables": [{"is_launcher": false, "name": "good company/goodcompany.exe", "os": "win32"}], - "hook": true, - "id": "1124355391556440125", - "name": "Good Company" - }, - { - "executables": [{"is_launcher": false, "name": "win64/nbaplaygrounds2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355393196408832", - "name": "NBA 2K Playgrounds 2" - }, - { - "executables": [{"is_launcher": false, "name": "postal brain damaged/postal brain damaged.exe", "os": "win32"}], - "hook": true, - "id": "1124355395377443017", - "name": "POSTAL Brain Damaged" - }, - { - "executables": [{"is_launcher": false, "name": "total tank simulator demo/totaltanksim.exe", "os": "win32"}], - "hook": true, - "id": "1124355397076144249", - "name": "Total Tank Simulator Demo" - }, - { - "executables": [{"is_launcher": false, "name": "megaman2/mmlc2.exe", "os": "win32"}], - "hook": true, - "id": "1124355398489620480", - "name": "Mega Man Legacy Collection 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lift-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355400213483550", - "name": "Portal Stories: VR" - }, - { - "executables": [{"is_launcher": false, "name": "climbey/climbey.exe", "os": "win32"}], - "hook": true, - "id": "1124355401857646695", - "name": "Climbey" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mantaswarbox-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355403627647086", - "name": "Warbox" - }, - { - "executables": [{"is_launcher": false, "name": "growing up/growing up.exe", "os": "win32"}], - "hook": true, - "id": "1124355405343109161", - "name": "Growing Up" - }, - { - "executables": [{"is_launcher": false, "name": "plug & play/pnp.exe", "os": "win32"}], - "hook": true, - "id": "1124355407004061826", - "name": "Plug & Play" - }, - { - "executables": [{"is_launcher": false, "name": "prehistoric kingdom/prehistoric kingdom.exe", "os": "win32"}], - "hook": true, - "id": "1124355408732106903", - "name": "Prehistoric Kingdom" - }, - { - "executables": [{"is_launcher": false, "name": "old world/oldworld.exe", "os": "win32"}], - "hook": true, - "id": "1124355410636324947", - "name": "Old World" - }, - { - "executables": [{"is_launcher": false, "name": "nebulous/nebulous.exe", "os": "win32"}], - "hook": true, - "id": "1124355412322430987", - "name": "NEBULOUS: Fleet Command" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mossgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355414046294096", - "name": "Moss" - }, - { - "executables": [{"is_launcher": false, "name": "merchant/merchant.exe", "os": "win32"}], - "hook": true, - "id": "1124355415799496704", - "name": "Merchant" - }, - { - "executables": [{"is_launcher": false, "name": "ridingclubchampionships/rcc.exe", "os": "win32"}], - "hook": true, - "id": "1124355417678557285", - "name": "Riding Club Championships" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pumpkinjack-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355419415007372", - "name": "Pumpkin Jack" - }, - { - "executables": [{"is_launcher": false, "name": "trophy fishing 2/trophy fishing 2.exe", "os": "win32"}], - "hook": true, - "id": "1124355421788975224", - "name": "Trophy Fishing 2" - }, - { - "executables": [{"is_launcher": false, "name": "stories untold/stories untold.exe", "os": "win32"}], - "hook": true, - "id": "1124355423508643990", - "name": "Stories Untold" - }, - { - "executables": [{"is_launcher": false, "name": "gladiator guild manager/gladiator manager.exe", "os": "win32"}], - "hook": true, - "id": "1124355425148612628", - "name": "Gladiator Guild Manager" - }, - { - "executables": [{"is_launcher": false, "name": "bugsnax/bugsnax.exe", "os": "win32"}], - "hook": true, - "id": "1124355427145105468", - "name": "Bugsnax" - }, - { - "executables": [{"is_launcher": false, "name": "another eden/anothereden.exe", "os": "win32"}], - "hook": true, - "id": "1124355428734742579", - "name": "ANOTHER EDEN" - }, - { - "executables": [{"is_launcher": false, "name": "win64/o2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355430290833529", - "name": "Oxygen: First Breath" - }, - { - "executables": [{"is_launcher": false, "name": "hashiriya drifter/hashiriya.exe", "os": "win32"}], - "hook": true, - "id": "1124355431993725028", - "name": "Hashiriya Drifter" - }, - { - "executables": [{"is_launcher": false, "name": "the genesis project/the genesis project.exe", "os": "win32"}], - "hook": true, - "id": "1124355433604329492", - "name": "The Genesis Project" - }, - { - "executables": [{"is_launcher": false, "name": "yur/yur.fit.windows.service.exe", "os": "win32"}], - "hook": true, - "id": "1124355437135941763", - "name": "YUR" - }, - { - "executables": [{"is_launcher": false, "name": "different strokes/differentstrokes.exe", "os": "win32"}], - "hook": true, - "id": "1124355439824482395", - "name": "Different Strokes" - }, - { - "executables": [{"is_launcher": false, "name": "blacksad - under the skin/blacksad.exe", "os": "win32"}], - "hook": true, - "id": "1124355443154763879", - "name": "Blacksad" - }, - { - "executables": [ - {"is_launcher": false, "name": "omon girl bottle royal/omon girl bottle royal.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355447323906128", - "name": "Hentai Police" - }, - { - "executables": [{"is_launcher": false, "name": "af2/afcgame.exe", "os": "win32"}], - "hook": true, - "id": "1124355450352185354", - "name": "Atom Fishing II" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hauntchaser-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355455288889464", - "name": "Haunt Chaser" - }, - { - "executables": [{"is_launcher": false, "name": "yakuza 6 - the song of life/yakuza6.exe", "os": "win32"}], - "hook": true, - "id": "1124355456966602822", - "name": "Yakuza 6: The Song of Life" - }, - { - "executables": [{"is_launcher": false, "name": "sairento vr/sairentovr.exe", "os": "win32"}], - "hook": true, - "id": "1124355458573029490", - "name": "Sairento VR" - }, - { - "executables": [ - {"is_launcher": false, "name": "prince of suburbia - part one/princeofsuburbiarewrite.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355460158472295", - "name": "Prince of Suburbia - Part 1" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/secondchance.exe", "os": "win32"}], - "hook": true, - "id": "1124355461941055658", - "name": "Second Chance" - }, - { - "executables": [{"is_launcher": false, "name": "fling to the finish/fling to the finish.exe", "os": "win32"}], - "hook": true, - "id": "1124355463740403753", - "name": "Fling to the Finish" - }, - { - "executables": [{"is_launcher": false, "name": "pathway/pathway.exe", "os": "win32"}], - "hook": true, - "id": "1124355465447489697", - "name": "Pathway" - }, - { - "executables": [{"is_launcher": false, "name": "the past within demo/thepastwithindemo.exe", "os": "win32"}], - "hook": true, - "id": "1124355467053904042", - "name": "The Past Within Demo" - }, - { - "executables": [{"is_launcher": false, "name": "alien shooter/alienshooter.exe", "os": "win32"}], - "hook": true, - "id": "1124355468714856458", - "name": "Alien Shooter" - }, - { - "executables": [{"is_launcher": false, "name": "bin/duke3d.exe", "os": "win32"}], - "hook": true, - "id": "1124355470379986944", - "name": "Duke Nukem 3D: Megaton Edition" - }, - { - "executables": [{"is_launcher": false, "name": "defiance 2050/glyphclientapp.exe", "os": "win32"}], - "hook": true, - "id": "1124355472154185749", - "name": "Defiance 2050" - }, - { - "executables": [{"is_launcher": false, "name": "somesome/somesome.exe", "os": "win32"}], - "hook": true, - "id": "1124355473836097657", - "name": "\uc378\uc378 \ud3b8\uc758\uc810" - }, - { - "executables": [{"is_launcher": false, "name": "mds/mds.exe", "os": "win32"}], - "hook": true, - "id": "1124355475715149855", - "name": "My dream setup" - }, - { - "executables": [{"is_launcher": false, "name": "bin/sw.exe", "os": "win32"}], - "hook": true, - "id": "1124355477409640550", - "name": "Shadow Warrior Classic Redux" - }, - { - "executables": [{"is_launcher": false, "name": "ultimate tic-tac-toe/ultimtictactoe.exe", "os": "win32"}], - "hook": true, - "id": "1124355479120924813", - "name": "Ultimate Tic-Tac-Toe" - }, - { - "executables": [{"is_launcher": false, "name": "trimps/trimps.exe", "os": "win32"}], - "hook": true, - "id": "1124355480656035992", - "name": "Trimps" - }, - { - "executables": [{"is_launcher": false, "name": "neveralone/never_alone.exe", "os": "win32"}], - "hook": true, - "id": "1124355482681888818", - "name": "Never Alone (Kisima Ingitchuna)" - }, - { - "executables": [ - {"is_launcher": false, "name": "gamedata/captain tsubasa rise of new champions.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355484577710161", - "name": "Captain Tsubasa - Rise of New Champions" - }, - { - "executables": [{"is_launcher": false, "name": "super chicken jumper/super chicken jumper.exe", "os": "win32"}], - "hook": true, - "id": "1124355486356090950", - "name": "SUPER CHICKEN JUMPER" - }, - { - "executables": [{"is_launcher": false, "name": "two worlds ii/twoworlds2_dx10.exe", "os": "win32"}], - "hook": true, - "id": "1124355487945736213", - "name": "Two Worlds II" - }, - { - "executables": [{"is_launcher": false, "name": "sexts/sexts.exe", "os": "win32"}], - "hook": true, - "id": "1124355489766060041", - "name": "SEXTS" - }, - { - "executables": [{"is_launcher": false, "name": "hd3/hd3.exe", "os": "win32"}], - "hook": true, - "id": "1124355491443785900", - "name": "HALF DEAD 3" - }, - { - "executables": [{"is_launcher": false, "name": "main/yakuza5.exe", "os": "win32"}], - "hook": true, - "id": "1124355493079560273", - "name": "Yakuza 5 Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "golgotha/golgotha.exe", "os": "win32"}], - "hook": true, - "id": "1124355494866341938", - "name": "Golgotha" - }, - { - "executables": [{"is_launcher": false, "name": "berserk and the band of the hawk/berserk.exe", "os": "win32"}], - "hook": true, - "id": "1124355496577609838", - "name": "BERSERK and the Band of the Hawk" - }, - { - "executables": [{"is_launcher": false, "name": "her new memory/hernewmemory.exe", "os": "win32"}], - "hook": true, - "id": "1124355498364391626", - "name": "Her New Memory" - }, - { - "executables": [{"is_launcher": false, "name": "nko dice/nkodice.exe", "os": "win32"}], - "hook": true, - "id": "1124355500046299337", - "name": "NKO DICE" - }, - { - "executables": [{"is_launcher": false, "name": "scrutinized/scrutinized.exe", "os": "win32"}], - "hook": true, - "id": "1124355501686276238", - "name": "Scrutinized" - }, - { - "executables": [{"is_launcher": false, "name": "win64/surroundead-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355503326244994", - "name": "SurrounDead" - }, - { - "executables": [{"is_launcher": false, "name": "shoppe keep/shoppe keep.exe", "os": "win32"}], - "hook": true, - "id": "1124355505058496623", - "name": "Shoppe Keep" - }, - { - "executables": [{"is_launcher": false, "name": "tale of toast/tot.exe", "os": "win32"}], - "hook": true, - "id": "1124355506702659644", - "name": "Tale of Toast" - }, - { - "executables": [{"is_launcher": false, "name": "bin/srs.exe", "os": "win32"}], - "hook": true, - "id": "1124355508195835904", - "name": "Street Racing Syndicate" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/pesterquest.exe", "os": "win32"}], - "hook": true, - "id": "1124355509655457812", - "name": "Pesterquest" - }, - { - "executables": [{"is_launcher": false, "name": "reignsgot/reignsgot.exe", "os": "win32"}], - "hook": true, - "id": "1124355511542886501", - "name": "Reigns: Game of Thrones" - }, - { - "executables": [{"is_launcher": false, "name": "wet girl/wetgirl.exe", "os": "win32"}], - "hook": true, - "id": "1124355513191256124", - "name": "Wet Girl" - }, - { - "executables": [{"is_launcher": false, "name": "legacy of kain soul reaver/kain2.exe", "os": "win32"}], - "hook": true, - "id": "1124355514864775218", - "name": "Legacy of Kain: Soul Reaver" - }, - { - "executables": [{"is_launcher": false, "name": "guardian chronicle/gameguard.des", "os": "win32"}], - "hook": true, - "id": "1124355516945158144", - "name": "Guardian Chronicle" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "a game of thrones the board game/agameofthronestheboardgame.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124355518606094477", - "name": "A Game of Thrones: The Board Game" - }, - { - "executables": [{"is_launcher": false, "name": "win64/animaliasurvival-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355520002805881", - "name": "Animalia Survival" - }, - { - "executables": [{"is_launcher": false, "name": "disgaea 2 pc/disgaea2.exe", "os": "win32"}], - "hook": true, - "id": "1124355521768599672", - "name": "Disgaea 2 PC" - }, - { - "executables": [{"is_launcher": false, "name": "war planet online/warplanetonline.exe", "os": "win32"}], - "hook": true, - "id": "1124355523538604183", - "name": "War Planet Online: Global Conquest" - }, - { - "executables": [{"is_launcher": false, "name": "the witch's house mv/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355525182767144", - "name": "The Witch's House MV" - }, - { - "executables": [{"is_launcher": false, "name": "hextechmayhem/hextechmayhem.exe", "os": "win32"}], - "hook": true, - "id": "1124355526692712458", - "name": "Hextech Mayhem: A League of Legends Story\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "thea the awakening/thea.exe", "os": "win32"}], - "hook": true, - "id": "1124355528236224532", - "name": "Thea: The Awakening" - }, - { - "executables": [{"is_launcher": false, "name": "adapt demo/adapt.exe", "os": "win32"}], - "hook": true, - "id": "1124355529922330644", - "name": "Adapt Demo" - }, - { - "executables": [{"is_launcher": false, "name": "condemned criminal origins/condemned.exe", "os": "win32"}], - "hook": true, - "id": "1124355531553918996", - "name": "Condemned: Criminal Origins" - }, - { - "executables": [{"is_launcher": false, "name": "aragami 2/aragami2.exe", "os": "win32"}], - "hook": true, - "id": "1124355540743635005", - "name": "Aragami 2" - }, - { - "executables": [{"is_launcher": false, "name": "handshakes/handshakes.exe", "os": "win32"}], - "hook": true, - "id": "1124355542622675084", - "name": "Handshakes" - }, - { - "executables": [{"is_launcher": false, "name": "warhammer underworlds online/wuo.exe", "os": "win32"}], - "hook": true, - "id": "1124355544946327695", - "name": "Warhammer Underworlds: Online" - }, - { - "executables": [{"is_launcher": false, "name": "corpse party/corpseparty.exe", "os": "win32"}], - "hook": true, - "id": "1124355546561130496", - "name": "Corpse Party" - }, - { - "executables": [ - {"is_launcher": false, "name": "richie's plank experience/richiesplankexperience.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355548553429093", - "name": "Richie's Plank Experience" - }, - { - "executables": [{"is_launcher": false, "name": "dinorundx/dino run dx.exe", "os": "win32"}], - "hook": true, - "id": "1124355550268903464", - "name": "Dino Run DX" - }, - { - "executables": [{"is_launcher": false, "name": "traitors in salem/traitorsinsalem.exe", "os": "win32"}], - "hook": true, - "id": "1124355551996948560", - "name": "Traitors in Salem" - }, - { - "executables": [{"is_launcher": false, "name": "hook/hook.exe", "os": "win32"}], - "hook": true, - "id": "1124355553741783161", - "name": "Hook" - }, - { - "executables": [{"is_launcher": false, "name": "flowscape/flowscape.exe", "os": "win32"}], - "hook": true, - "id": "1124355555453055037", - "name": "FlowScape" - }, - { - "executables": [{"is_launcher": false, "name": "lateralligator/lateralligator.exe", "os": "win32"}], - "hook": true, - "id": "1124355557004951582", - "name": "Later Alligator" - }, - { - "executables": [{"is_launcher": false, "name": "misao/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355558682677268", - "name": "Misao: Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "watsonscott/watsonscott.exe", "os": "win32"}], - "hook": true, - "id": "1124355560352006264", - "name": "The Watson-Scott Test" - }, - { - "executables": [{"is_launcher": false, "name": "win64/midnightghosthunt-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355561908088982", - "name": "Midnight Ghost Hunt" - }, - { - "executables": [{"is_launcher": false, "name": "influent/influent.exe", "os": "win32"}], - "hook": true, - "id": "1124355563736809604", - "name": "Influent" - }, - { - "executables": [ - {"is_launcher": false, "name": "power rangers battle for the grid/battleforthegrid.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355565406146781", - "name": "Power Rangers: Battle for the Grid" - }, - { - "executables": [{"is_launcher": false, "name": "tangledeep/tangledeep.exe", "os": "win32"}], - "hook": true, - "id": "1124355567666868315", - "name": "Tangledeep" - }, - { - "executables": [ - {"is_launcher": false, "name": "little witch nobeta demo/littlewitchnobeta_demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355569264906250", - "name": "Little Witch Nobeta Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "fluid engine pc live wallpaper demo/fluidenginedemo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355570510610562", - "name": "Fluid Engine PC Live Wallpaper Demo" - }, - { - "executables": [{"is_launcher": false, "name": "scourgebringer/scourgebringer.exe", "os": "win32"}], - "hook": true, - "id": "1124355572326748270", - "name": "ScourgeBringer" - }, - { - "executables": [{"is_launcher": false, "name": "system/revision.exe", "os": "win32"}], - "hook": true, - "id": "1124355574050603050", - "name": "Deus Ex: Revision" - }, - { - "executables": [{"is_launcher": false, "name": "warhammer chaos & conquest/warhammer.exe", "os": "win32"}], - "hook": true, - "id": "1124355575636045966", - "name": "Warhammer: Chaos & Conquest" - }, - { - "executables": [{"is_launcher": false, "name": "starbreak/mvmmoclient.exe", "os": "win32"}], - "hook": true, - "id": "1124355577338937464", - "name": "StarBreak" - }, - { - "executables": [{"is_launcher": false, "name": "shoppe keep 2 sp/shoppe keep 2.exe", "os": "win32"}], - "hook": true, - "id": "1124355578924380180", - "name": "Shoppe Keep 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fmf-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355580568555560", - "name": "Forgive Me Father" - }, - { - "executables": [{"is_launcher": false, "name": "lost egg 2 be together/lost egg 2.exe", "os": "win32"}], - "hook": true, - "id": "1124355582078492793", - "name": "LOST EGG 2: Be together" - }, - { - "executables": [{"is_launcher": false, "name": "half-life 2 downfall/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124355583714279544", - "name": "Half-Life 2: DownFall" - }, - { - "executables": [{"is_launcher": false, "name": "fps monitor/fpsmonitor.exe", "os": "win32"}], - "hook": true, - "id": "1124355585173901543", - "name": "FPS Monitor" - }, - { - "executables": [{"is_launcher": false, "name": "voidigo/voidigo.exe", "os": "win32"}], - "hook": true, - "id": "1124355587027779685", - "name": "Voidigo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/modernstoryteller01-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355588705505390", - "name": "The Forgotten City" - }, - { - "executables": [{"is_launcher": false, "name": "the mageseeker/the mageseeker.exe", "os": "win32"}], - "hook": true, - "id": "1124355590160924702", - "name": "The Mageseeker: A League of Legends Story\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "crashlands/crashlands.exe", "os": "win32"}], - "hook": true, - "id": "1124355591821860976", - "name": "Crashlands" - }, - { - "executables": [{"is_launcher": false, "name": "win64/witchshunt-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355593596063916", - "name": "Veneficium" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/seduce me official.exe", "os": "win32"}], - "hook": true, - "id": "1124355595407995011", - "name": "Seduce Me the Otome" - }, - { - "executables": [ - {"is_launcher": false, "name": "farming simulator 2013/farmingsimulator2013game.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355597031194805", - "name": "Farming Simulator 2013" - }, - { - "executables": [ - {"is_launcher": false, "name": "mago the villain's burger/mago villain burger.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355598822158406", - "name": "Mago: The Villain's Burger" - }, - { - "executables": [{"is_launcher": false, "name": "achievement clicker/achievementclicker.exe", "os": "win32"}], - "hook": true, - "id": "1124355600625713192", - "name": "Achievement Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "8bit fiesta steam/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124355602185990286", - "name": "8Bit Fiesta" - }, - { - "executables": [{"is_launcher": false, "name": "lust for darkness/lustfordarkness.exe", "os": "win32"}], - "hook": true, - "id": "1124355603809190049", - "name": "Lust for Darkness" - }, - { - "executables": [{"is_launcher": false, "name": "imtdwindows/idlemonstertd.exe", "os": "win32"}], - "hook": true, - "id": "1124355605650493440", - "name": "Idle Monster TD" - }, - { - "executables": [{"is_launcher": false, "name": "adventure climb vr/acvr.exe", "os": "win32"}], - "hook": true, - "id": "1124355607235932291", - "name": "Adventure Climb VR" - }, - { - "executables": [{"is_launcher": false, "name": "lost in random/lost in random.exe", "os": "win32"}], - "hook": true, - "id": "1124355608892686336", - "name": "Lost In Random" - }, - { - "executables": [{"is_launcher": false, "name": "slow and steady/slow and steady.exe", "os": "win32"}], - "hook": true, - "id": "1124355610645901372", - "name": "Slow and Steady" - }, - { - "executables": [{"is_launcher": false, "name": "tap wizard 2/tap wizard 2.exe", "os": "win32"}], - "hook": true, - "id": "1124355612428488905", - "name": "Tap Wizard 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/inheat-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355614047481987", - "name": "IN HEAT: Lustful Nights Demo" - }, - { - "executables": [{"is_launcher": false, "name": "legend of grimrock 2/grimrock2.exe", "os": "win32"}], - "hook": true, - "id": "1124355615662293112", - "name": "Legend of Grimrock 2" - }, - { - "executables": [{"is_launcher": false, "name": "suicide guy/suicideguy.exe", "os": "win32"}], - "hook": true, - "id": "1124355617096740976", - "name": "Suicide Guy" - }, - { - "executables": [{"is_launcher": false, "name": "pac-man/pac-man.exe", "os": "win32"}], - "hook": true, - "id": "1124355618602504232", - "name": "ARCADE GAME SERIES: PAC-MAN" - }, - { - "executables": [{"is_launcher": false, "name": "b100x/b100x.exe", "os": "win32"}], - "hook": true, - "id": "1124355620410245234", - "name": "B100X - Auto Dungeon RPG" - }, - { - "executables": [{"is_launcher": false, "name": "lego indiana jones 2/legoindy2.exe", "os": "win32"}], - "hook": true, - "id": "1124355623665029251", - "name": "LEGO\u00ae Indiana Jones\u2122 2: The Adventure Continues" - }, - { - "executables": [ - {"is_launcher": false, "name": "postal brain damaged demo/postal brain damaged.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355625120448572", - "name": "POSTAL Brain Damaged Demo" - }, - { - "executables": [{"is_launcher": false, "name": "gedonia/gedonia.exe", "os": "win32"}], - "hook": true, - "id": "1124355627070795796", - "name": "Gedonia" - }, - { - "executables": [{"is_launcher": false, "name": "win64/postmouse-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355628761108480", - "name": "Postmouse" - }, - { - "executables": [{"is_launcher": false, "name": "derail valley/derailvalley.exe", "os": "win32"}], - "hook": true, - "id": "1124355630312992838", - "name": "Derail Valley" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dropin.exe", "os": "win32"}], - "hook": true, - "id": "1124355632053633164", - "name": "Drop In - VR F2P" - }, - { - "executables": [ - {"is_launcher": false, "name": "circle empires multiplayer/circle empires rivals.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355637103579206", - "name": "Circle Empires Rivals" - }, - { - "executables": [{"is_launcher": false, "name": "dragon ball the breakers/start_game.exe", "os": "win32"}], - "hook": true, - "id": "1124355638793879572", - "name": "DRAGON BALL: THE BREAKERS" - }, - { - "executables": [{"is_launcher": false, "name": "rock life/rocklife.exe", "os": "win32"}], - "hook": true, - "id": "1124355640832307360", - "name": "Rock Life: The Rock Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "tools up!/tools up.exe", "os": "win32"}], - "hook": true, - "id": "1124355642669416479", - "name": "Tools Up!" - }, - { - "executables": [{"is_launcher": false, "name": "devil may cry 3/dmc3se.exe", "os": "win32"}], - "hook": true, - "id": "1124355644321968168", - "name": "Devil May Cry 3: Special Edition" - }, - { - "executables": [{"is_launcher": false, "name": "project arrhythmia/project arrhythmia.exe", "os": "win32"}], - "hook": true, - "id": "1124355646637232250", - "name": "Project Arrhythmia" - }, - { - "executables": [{"is_launcher": false, "name": "day of the tentacle remastered/dott.exe", "os": "win32"}], - "hook": true, - "id": "1124355648264613908", - "name": "Day of the Tentacle Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "achat/achat.exe", "os": "win32"}], - "hook": true, - "id": "1124355650265305220", - "name": "AChat" - }, - { - "executables": [{"is_launcher": false, "name": "planet s/plans.exe", "os": "win32"}], - "hook": true, - "id": "1124355652064653385", - "name": "Planet S" - }, - { - "executables": [{"is_launcher": false, "name": "forspoken/forspoken.exe", "os": "win32"}], - "hook": true, - "id": "1124355653738184765", - "name": "Forspoken" - }, - { - "executables": [ - {"is_launcher": false, "name": "ultimate zombie defense/ultimatezombiedefense_64.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355655193604187", - "name": "Ultimate Zombie Defense" - }, - { - "executables": [{"is_launcher": false, "name": "wild terra online/wild-terra.exe", "os": "win32"}], - "hook": true, - "id": "1124355657227845652", - "name": "Wild Terra Online" - }, - { - "executables": [{"is_launcher": false, "name": "p3p/p3p.exe", "os": "win32"}], - "hook": true, - "id": "1124355659274670201", - "name": "Persona 3 Portable" - }, - { - "executables": [{"is_launcher": false, "name": "out of the park baseball 22/ootp22_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124355660793004132", - "name": "Out of the Park Baseball 22" - }, - { - "executables": [{"is_launcher": false, "name": "galaga/galaga.exe", "os": "win32"}], - "hook": true, - "id": "1124355662667853915", - "name": "ARCADE GAME SERIES: GALAGA" - }, - { - "executables": [{"is_launcher": false, "name": "grime/grime.exe", "os": "win32"}], - "hook": true, - "id": "1124355664358166649", - "name": "GRIME" - }, - { - "executables": [{"is_launcher": false, "name": "super seducer/superseducer.exe", "os": "win32"}], - "hook": true, - "id": "1124355666115571822", - "name": "Super Seducer" - }, - { - "executables": [{"is_launcher": false, "name": "64/fc_64.exe", "os": "win32"}], - "hook": true, - "id": "1124355667659083826", - "name": "FortressCraft Evolved" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dd_mnm-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355669382938776", - "name": "Dark Deception: Monsters & Mortals" - }, - { - "executables": [ - {"is_launcher": false, "name": "agent 64 spies never die demo/agent 64 spies never die.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355670955798649", - "name": "Agent 64: Spies Never Die Demo" - }, - { - "executables": [{"is_launcher": false, "name": "ziggurat/ziggurat.exe", "os": "win32"}], - "hook": true, - "id": "1124355672822267974", - "name": "Ziggurat" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the haunted island a frog detective game/the_haunted_island.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124355674785198171", - "name": "The Haunted Island, a Frog Detective Game" - }, - { - "executables": [{"is_launcher": false, "name": "just a game to test your lq/justagame.exe", "os": "win32"}], - "hook": true, - "id": "1124355676618117170", - "name": "just a game to test your lQ" - }, - { - "executables": [{"is_launcher": false, "name": "castle of illusion/coi.exe", "os": "win32"}], - "hook": true, - "id": "1124355678308413531", - "name": "Castle of Illusion" - }, - { - "executables": [{"is_launcher": false, "name": "chained echoes/chained echoes.exe", "os": "win32"}], - "hook": true, - "id": "1124355679885479989", - "name": "Chained Echoes" - }, - { - "executables": [{"is_launcher": false, "name": "win32/pkhdgame-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355681554804736", - "name": "Painkiller Hell & Damnation" - }, - { - "executables": [{"is_launcher": false, "name": "ostriv/ostriv.exe", "os": "win32"}], - "hook": true, - "id": "1124355683316420848", - "name": "Ostriv" - }, - { - "executables": [{"is_launcher": false, "name": "moastray/moastray.exe", "os": "win32"}], - "hook": true, - "id": "1124355684952191037", - "name": "MO:Astray" - }, - { - "executables": [{"is_launcher": false, "name": "west of dead/westofdead.exe", "os": "win32"}], - "hook": true, - "id": "1124355686717997148", - "name": "West of Dead" - }, - { - "executables": [{"is_launcher": false, "name": "drakensang online/thinclient.exe", "os": "win32"}], - "hook": true, - "id": "1124355688513155082", - "name": "Drakensang Online" - }, - { - "executables": [{"is_launcher": false, "name": "win64/folklorehunter-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355690291544064", - "name": "Folklore Hunter" - }, - { - "executables": [{"is_launcher": false, "name": "creatures of aether/creaturesofaether.exe", "os": "win32"}], - "hook": true, - "id": "1124355692426448937", - "name": "Creatures of Aether" - }, - { - "executables": [{"is_launcher": false, "name": "just king/king.exe", "os": "win32"}], - "hook": true, - "id": "1124355694288711690", - "name": "Just King" - }, - { - "executables": [{"is_launcher": false, "name": "praey for the gods/praey for the gods.exe", "os": "win32"}], - "hook": true, - "id": "1124355696150986863", - "name": "Praey for the Gods" - }, - { - "executables": [{"is_launcher": false, "name": "knight online/knightonline.exe", "os": "win32"}], - "hook": true, - "id": "1124355697975505116", - "name": "Knight Online" - }, - { - "executables": [{"is_launcher": false, "name": "encased/encased.exe", "os": "win32"}], - "hook": true, - "id": "1124355699678396527", - "name": "Encased" - }, - { - "executables": [{"is_launcher": false, "name": "army men rts/amrts.exe", "os": "win32"}], - "hook": true, - "id": "1124355701620355233", - "name": "Army Men RTS" - }, - { - "executables": [{"is_launcher": false, "name": "frenzyretribution/frenzyretribution.exe", "os": "win32"}], - "hook": true, - "id": "1124355703264530512", - "name": "\u7f6a\u696d\u72c2\u8972FrenzyRetribution" - }, - { - "executables": [{"is_launcher": false, "name": "mighty party/mighty_party.exe", "os": "win32"}], - "hook": true, - "id": "1124355704904491048", - "name": "Mighty Party" - }, - { - "executables": [{"is_launcher": false, "name": "system/risen2.exe", "os": "win32"}], - "hook": true, - "id": "1124355707031011368", - "name": "Risen 2 - Dark Waters" - }, - { - "executables": [{"is_launcher": false, "name": "cities in motion 2/cim2.exe", "os": "win32"}], - "hook": true, - "id": "1124355708616454234", - "name": "Cities in Motion 2" - }, - { - "executables": [{"is_launcher": false, "name": "project zero deaths/project zero deaths.exe", "os": "win32"}], - "hook": true, - "id": "1124355710109634661", - "name": "Project Zero Deaths" - }, - { - "executables": [{"is_launcher": false, "name": "doodle god/doodlegod.exe", "os": "win32"}], - "hook": true, - "id": "1124355711632163027", - "name": "Doodle God" - }, - { - "executables": [{"is_launcher": false, "name": "apotheon arena/apotheonarena.exe", "os": "win32"}], - "hook": true, - "id": "1124355713184051320", - "name": "Apotheon Arena" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "oh my god, look at this knight/oh_my_god__look_at_this_knight.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124355714937278504", - "name": "OH MY GOD, LOOK AT THIS KNIGHT" - }, - { - "executables": [{"is_launcher": false, "name": "tokyo2020/musashi.exe", "os": "win32"}], - "hook": true, - "id": "1124355716703072376", - "name": "Olympic Games Tokyo 2020 \u2013 The Official Video Game\u2122" - }, - { - "executables": [ - {"is_launcher": false, "name": "batman the enemy within - the telltale series/batman2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355718376607845", - "name": "Batman: The Enemy Within - The Telltale Series" - }, - { - "executables": [ - {"is_launcher": false, "name": "autobahn police simulator 2/highwaypatrol2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355720008187904", - "name": "Autobahn Police Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "system/ut2004.exe", "os": "win32"}], - "hook": true, - "id": "1124355721652351149", - "name": "Unreal Tournament 2004" - }, - { - "executables": [{"is_launcher": false, "name": "hammerting/boot.exe", "os": "win32"}], - "hook": true, - "id": "1124355723908894780", - "name": "Hammerting" - }, - { - "executables": [{"is_launcher": false, "name": "spaceplan/spaceplan.exe", "os": "win32"}], - "hook": true, - "id": "1124355725695660082", - "name": "SPACEPLAN" - }, - { - "executables": [ - {"is_launcher": false, "name": "beyond two souls demo/beyondtwosouls_steam.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355727398555728", - "name": "Beyond: Two Souls Demo" - }, - { - "executables": [{"is_launcher": false, "name": "ship/marvel puzzle quest.exe", "os": "win32"}], - "hook": true, - "id": "1124355729013346425", - "name": "Marvel Puzzle Quest" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tscgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355730670100490", - "name": "The Sinking City" - }, - { - "executables": [ - {"is_launcher": false, "name": "street legal racing redline/streetlegal_redline.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355732486246420", - "name": "Street Legal Racing: Redline v2.3.1" - }, - { - "executables": [ - {"is_launcher": false, "name": "i'm on observation duty 5/i'm on observation duty 5.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355734012969091", - "name": "I'm on Observation Duty 5" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lay_proto-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355735459999836", - "name": "LAY" - }, - { - "executables": [ - {"is_launcher": false, "name": "star traders frontiers/startradersfrontiers.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355737225806004", - "name": "Star Traders: Frontiers" - }, - { - "executables": [{"is_launcher": false, "name": "backpack hero demo/backpack hero.exe", "os": "win32"}], - "hook": true, - "id": "1124355738937085993", - "name": "Backpack Hero Demo" - }, - { - "executables": [{"is_launcher": false, "name": "chronoshot/chronoshot.exe", "os": "win32"}], - "hook": true, - "id": "1124355740186984558", - "name": "CHRONOSHOT" - }, - { - "executables": [{"is_launcher": false, "name": "win32/homesweethome-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355741856321667", - "name": "Home Sweet Home" - }, - { - "executables": [{"is_launcher": false, "name": "kentuckyroutezero/kentuckyroutezero.exe", "os": "win32"}], - "hook": true, - "id": "1124355743341101106", - "name": "Kentucky Route Zero" - }, - { - "executables": [{"is_launcher": false, "name": "hmb/heavy metal babes.exe", "os": "win32"}], - "hook": true, - "id": "1124355744989458522", - "name": "Heavy Metal Babes" - }, - { - "executables": [{"is_launcher": false, "name": "enclave/enclave.exe", "os": "win32"}], - "hook": true, - "id": "1124355746625241158", - "name": "Enclave" - }, - { - "executables": [{"is_launcher": false, "name": "rustissimo/rustissimo.exe", "os": "win32"}], - "hook": true, - "id": "1124355748676259972", - "name": "Rustissimo" - }, - { - "executables": [{"is_launcher": false, "name": "goblin gearshop/ggs.exe", "os": "win32"}], - "hook": true, - "id": "1124355750265897002", - "name": "Goblin Gearshop" - }, - { - "executables": [{"is_launcher": false, "name": "builder simulator/builder simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124355752014925904", - "name": "Builder Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "4d miner demo/4d miner.exe", "os": "win32"}], - "hook": true, - "id": "1124355753243852960", - "name": "4D Miner Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/moba-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355754900598875", - "name": "Fangs" - }, - { - "executables": [ - {"is_launcher": false, "name": "happy's humble burger barn/happy's humble burger barn.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355756943229058", - "name": "Happy's Humble Burger Barn" - }, - { - "executables": [{"is_launcher": false, "name": "battle vs chess/battlevschess.exe", "os": "win32"}], - "hook": true, - "id": "1124355758709026816", - "name": "Battle vs Chess" - }, - { - "executables": [ - {"is_launcher": false, "name": "fights in tight spaces/fightsintightspaces.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355760286093392", - "name": "Fights in Tight Spaces" - }, - { - "executables": [{"is_launcher": false, "name": "killer7/killer7configurationtool.exe", "os": "win32"}], - "hook": true, - "id": "1124355761867341864", - "name": "killer7" - }, - { - "executables": [{"is_launcher": false, "name": "last cloudia/lastcloudia.exe", "os": "win32"}], - "hook": true, - "id": "1124355763607973888", - "name": "LAST CLOUDIA" - }, - { - "executables": [{"is_launcher": false, "name": "win64/burningdaylight.exe", "os": "win32"}], - "hook": true, - "id": "1124355765633826846", - "name": "Burning Daylight" - }, - { - "executables": [{"is_launcher": false, "name": "emergency 4 deluxe/em4.exe", "os": "win32"}], - "hook": true, - "id": "1124355767252832268", - "name": "EMERGENCY 4 Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "bin64/gujian3.exe", "os": "win32"}], - "hook": true, - "id": "1124355768934744065", - "name": "\u53e4\u5251\u5947\u8c2d\u4e09(Gujian3)" - }, - { - "executables": [{"is_launcher": false, "name": "atomega/atomega.exe", "os": "win32"}], - "hook": true, - "id": "1124355770511806617", - "name": "ATOMEGA" - }, - { - "executables": [{"is_launcher": false, "name": "fightnrage/fight_n_rage.exe", "os": "win32"}], - "hook": true, - "id": "1124355771900117064", - "name": "Fight'N Rage" - }, - { - "executables": [{"is_launcher": false, "name": "retrograde arena/retrograde arena.exe", "os": "win32"}], - "hook": true, - "id": "1124355773712060457", - "name": "Retrograde Arena" - }, - { - "executables": [{"is_launcher": false, "name": "treason/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124355775175868436", - "name": "Treason" - }, - { - "executables": [{"is_launcher": false, "name": "death trash demo/deathtrash.exe", "os": "win32"}], - "hook": true, - "id": "1124355776903925890", - "name": "Death Trash Demo" - }, - { - "executables": [{"is_launcher": false, "name": "knights of honor ii/sovereign.exe", "os": "win32"}], - "hook": true, - "id": "1124355778690691142", - "name": "Knights of Honor II: Sovereign" - }, - { - "executables": [{"is_launcher": false, "name": "win64/omt-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355782096470076", - "name": "Guns'n'Stories: Preface VR" - }, - { - "executables": [{"is_launcher": false, "name": "accountingplus/accountingplus.exe", "os": "win32"}], - "hook": true, - "id": "1124355783673524224", - "name": "Accounting+" - }, - { - "executables": [{"is_launcher": false, "name": "the swords of ditto/the_swords_of_ditto.exe", "os": "win32"}], - "hook": true, - "id": "1124355785351254126", - "name": "The Swords of Ditto: Mormo's Curse" - }, - { - "executables": [ - {"is_launcher": false, "name": "fights in tight spaces (prologue)/fightsintightspaces.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355786915725323", - "name": "Fights in Tight Spaces (Prologue)" - }, - { - "executables": [{"is_launcher": false, "name": "win64/theredstare-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355788320813086", - "name": "The Red Stare" - }, - { - "executables": [{"is_launcher": false, "name": "win64/twinstick-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355790153728170", - "name": "Red Solstice 2: Survivors" - }, - { - "executables": [{"is_launcher": false, "name": "death trash/deathtrash.exe", "os": "win32"}], - "hook": true, - "id": "1124355792674500718", - "name": "Death Trash" - }, - { - "executables": [{"is_launcher": false, "name": "virtual romance club/viroplayspace.exe", "os": "win32"}], - "hook": true, - "id": "1124355794113155152", - "name": "ViRo Playspace" - }, - { - "executables": [{"is_launcher": false, "name": "urban rivals/urban rivals.exe", "os": "win32"}], - "hook": true, - "id": "1124355795757314129", - "name": "Urban Rivals" - }, - { - "executables": [ - {"is_launcher": false, "name": "the darkside detective/thedarksidedetective.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355797565063249", - "name": "The Darkside Detective" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "nova lands emilia's mission/nova lands - emilia\u2019s mission.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124355799095980205", - "name": "Nova Lands: Emilia's Mission" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fna-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355800689823764", - "name": "Fishing: North Atlantic" - }, - { - "executables": [{"is_launcher": false, "name": "zup! z/zup! z.exe", "os": "win32"}], - "hook": true, - "id": "1124355802250100806", - "name": "Zup! Z" - }, - { - "executables": [ - {"is_launcher": false, "name": "mycatgirlmaidcomplete-1.0-pc/mycatgirlmaidcomplete.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355804053647420", - "name": "My Catgirl Maid Thinks She Runs the Place" - }, - { - "executables": [{"is_launcher": false, "name": "win64/gameproject-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355806083694662", - "name": "Laser League" - }, - { - "executables": [{"is_launcher": false, "name": "pandemic/pandemic.exe", "os": "win32"}], - "hook": true, - "id": "1124355807727857765", - "name": "Pandemic: The Board Game" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ard-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355809560776854", - "name": "A.R.D. Alien Removal Division" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tmdp-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355811267850421", - "name": "Truck Mechanic: Dangerous Paths - Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "lust from beyond/lust from beyond.exe", "os": "win32"}], - "hook": true, - "id": "1124355813260152914", - "name": "Lust from Beyond" - }, - { - "executables": [{"is_launcher": false, "name": "bit.trip runner/runner.exe", "os": "win32"}], - "hook": true, - "id": "1124355815025950740", - "name": "BIT.TRIP RUNNER" - }, - { - "executables": [{"is_launcher": false, "name": "win_x86/busdriver.exe", "os": "win32"}], - "hook": true, - "id": "1124355816682704986", - "name": "Bus Driver" - }, - { - "executables": [{"is_launcher": false, "name": "heavy bullets/heavy_bullets.exe", "os": "win32"}], - "hook": true, - "id": "1124355818494640280", - "name": "Heavy Bullets" - }, - { - "executables": [{"is_launcher": false, "name": "flower girl/flower girl.exe", "os": "win32"}], - "hook": true, - "id": "1124355820138803300", - "name": "\u82b1\u5996\u7269\u8bed/Flower girl" - }, - { - "executables": [{"is_launcher": false, "name": "drl simulator/drl simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124355821845889096", - "name": "The Drone Racing League Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dieselbrothers-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355823452311582", - "name": "Diesel Brothers: Truck Building Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "shredders/shredders.exe", "os": "win32"}], - "hook": true, - "id": "1124355825125834863", - "name": "Shredders" - }, - { - "executables": [{"is_launcher": false, "name": "win64/roa3-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355826790977587", - "name": "Rock of Ages 3: Make & Break" - }, - { - "executables": [{"is_launcher": false, "name": "yokus island express/yoku.exe", "os": "win32"}], - "hook": true, - "id": "1124355828502249592", - "name": "Yoku's Island Express" - }, - { - "executables": [{"is_launcher": false, "name": "win64/phantomabyss-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355830356127744", - "name": "Phantom Abyss" - }, - { - "executables": [{"is_launcher": false, "name": "deemo -reborn-/deemo -reborn-.exe", "os": "win32"}], - "hook": true, - "id": "1124355832100962344", - "name": "DEEMO -Reborn-" - }, - { - "executables": [{"is_launcher": false, "name": "makerking/makerking.exe", "os": "win32"}], - "hook": true, - "id": "1124355833887739974", - "name": "MakerKing" - }, - { - "executables": [{"is_launcher": false, "name": "citizen sleeper/citizen sleeper.exe", "os": "win32"}], - "hook": true, - "id": "1124355836911829063", - "name": "Citizen Sleeper" - }, - { - "executables": [{"is_launcher": false, "name": "win64/unbound-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355840372133928", - "name": "Unbound: Worlds Apart Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thematriarch-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355845359153162", - "name": "The Matriarch" - }, - { - "executables": [{"is_launcher": false, "name": "wolfpack/wolfpack.exe", "os": "win32"}], - "hook": true, - "id": "1124355848873984000", - "name": "Wolfpack" - }, - { - "executables": [{"is_launcher": false, "name": "the plan/the plan.exe", "os": "win32"}], - "hook": true, - "id": "1124355850987917454", - "name": "The Plan" - }, - { - "executables": [{"is_launcher": false, "name": "pac-man 256/pac-man256.exe", "os": "win32"}], - "hook": true, - "id": "1124355852913098843", - "name": "PAC-MAN 256" - }, - { - "executables": [{"is_launcher": false, "name": "under night in-birth exe late/uniel.exe", "os": "win32"}], - "hook": true, - "id": "1124355854574047303", - "name": "UNDER NIGHT IN-BIRTH Exe:Late" - }, - { - "executables": [{"is_launcher": false, "name": "house builder/housebuilder.exe", "os": "win32"}], - "hook": true, - "id": "1124355855983329381", - "name": "House Builder" - }, - { - "executables": [{"is_launcher": false, "name": "win64/advancedgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355857384222770", - "name": "BACKROOMS: NO RETURN Demo" - }, - { - "executables": [{"is_launcher": false, "name": "unearned bounty/unearnedbounty.exe", "os": "win32"}], - "hook": true, - "id": "1124355858986451085", - "name": "Unearned Bounty" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hellbladegamevr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355860760637641", - "name": "Hellblade: Senua's Sacrifice VR Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thedevilinme-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355862467727512", - "name": "The Dark Pictures Anthology: The Devil in Me" - }, - { - "executables": [{"is_launcher": false, "name": "if my heart had wings/advhd.exe", "os": "win32"}], - "hook": true, - "id": "1124355864346771556", - "name": "If My Heart Had Wings" - }, - { - "executables": [{"is_launcher": false, "name": "gloomwood/gloomwood.exe", "os": "win32"}], - "hook": true, - "id": "1124355866796240996", - "name": "Gloomwood" - }, - { - "executables": [{"is_launcher": false, "name": "drop alive/drop alive.exe", "os": "win32"}], - "hook": true, - "id": "1124355868570435635", - "name": "Drop Alive" - }, - { - "executables": [{"is_launcher": false, "name": "man of the house/man of the house.exe", "os": "win32"}], - "hook": true, - "id": "1124355870109741196", - "name": "Man of the House" - }, - { - "executables": [{"is_launcher": false, "name": "kelvin/fahrenheit.exe", "os": "win32"}], - "hook": true, - "id": "1124355871783272558", - "name": "Fahrenheit: Indigo Prophecy Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "smartphone tycoon/smartphone tycoon.exe", "os": "win32"}], - "hook": true, - "id": "1124355873402269776", - "name": "Smartphone Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "carto/carto.exe", "os": "win32"}], - "hook": true, - "id": "1124355875176464506", - "name": "Carto" - }, - { - "executables": [{"is_launcher": false, "name": "the painscreek killings/painscreek.exe", "os": "win32"}], - "hook": true, - "id": "1124355876891930814", - "name": "The Painscreek Killings" - }, - { - "executables": [{"is_launcher": false, "name": "dreadout/dreadout.exe", "os": "win32"}], - "hook": true, - "id": "1124355878372528280", - "name": "DreadOut" - }, - { - "executables": [{"is_launcher": false, "name": "win64/songofhorror-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355880054439987", - "name": "SONG OF HORROR" - }, - { - "executables": [{"is_launcher": false, "name": "heal & hurt/heal & hurt.exe", "os": "win32"}], - "hook": true, - "id": "1124355882264842272", - "name": "Heal & Hurt" - }, - { - "executables": [ - {"is_launcher": false, "name": "warhammer 40000 gladius - relics of war/autorun.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355883938361364", - "name": "Warhammer 40,000: Gladius - Relics of War" - }, - { - "executables": [{"is_launcher": false, "name": "tricking 0/tricking_0.exe", "os": "win32"}], - "hook": true, - "id": "1124355885771280515", - "name": "Tricking 0" - }, - { - "executables": [ - {"is_launcher": false, "name": "momo mother bird final story/momo is here 2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355887402856488", - "name": "Momo Mother Bird: Final Story" - }, - { - "executables": [{"is_launcher": false, "name": "zero escape/zero escape.exe", "os": "win32"}], - "hook": true, - "id": "1124355889059610654", - "name": "Zero Escape: Zero Time Dilemma" - }, - { - "executables": [{"is_launcher": false, "name": "yu escape monday/yu.exe", "os": "win32"}], - "hook": true, - "id": "1124355890452115468", - "name": "Yu Escape / Monday" - }, - { - "executables": [{"is_launcher": false, "name": "idle heist/idle heist.exe", "os": "win32"}], - "hook": true, - "id": "1124355892431831120", - "name": "Idle Heist" - }, - { - "executables": [{"is_launcher": false, "name": "silica/silica.exe", "os": "win32"}], - "hook": true, - "id": "1124355894361215047", - "name": "Silica" - }, - { - "executables": [{"is_launcher": false, "name": "lake demo/lake.exe", "os": "win32"}], - "hook": true, - "id": "1124355896131203072", - "name": "Lake Demo" - }, - { - "executables": [{"is_launcher": false, "name": "re-legend/relegend.exe", "os": "win32"}], - "hook": true, - "id": "1124355898077368320", - "name": "Re:Legend" - }, - { - "executables": [{"is_launcher": false, "name": "phobies/phobies.exe", "os": "win32"}], - "hook": true, - "id": "1124355899876716664", - "name": "Phobies" - }, - { - "executables": [{"is_launcher": false, "name": "rising front/rising front.exe", "os": "win32"}], - "hook": true, - "id": "1124355901487337502", - "name": "Rising Front" - }, - { - "executables": [ - {"is_launcher": false, "name": "shark attack deathmatch 2/shark attack deathmatch 2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355903064391710", - "name": "Shark Attack Deathmatch 2" - }, - { - "executables": [{"is_launcher": false, "name": "destined to die/destinedtodie.exe", "os": "win32"}], - "hook": true, - "id": "1124355905476112597", - "name": "Destined to Die" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thehiddenroom-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355907309027459", - "name": "The Hidden Room" - }, - { - "executables": [{"is_launcher": false, "name": "scooterflow/scooterflow.exe", "os": "win32"}], - "hook": true, - "id": "1124355908839952454", - "name": "ScooterFlow" - }, - { - "executables": [{"is_launcher": false, "name": "epic roller coasters/epic roller coasters.exe", "os": "win32"}], - "hook": true, - "id": "1124355910513471528", - "name": "Epic Roller Coasters" - }, - { - "executables": [{"is_launcher": false, "name": "walkabout mini golf/walkaboutminigolf.exe", "os": "win32"}], - "hook": true, - "id": "1124355912673542407", - "name": "Walkabout Mini Golf" - }, - { - "executables": [{"is_launcher": false, "name": "tetris_for_two/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355914338685008", - "name": "Tetris for Two" - }, - { - "executables": [{"is_launcher": false, "name": "dark deity/darkdeity.exe", "os": "win32"}], - "hook": true, - "id": "1124355916020592820", - "name": "Dark Deity" - }, - { - "executables": [{"is_launcher": false, "name": "win64/rime.exe", "os": "win32"}], - "hook": true, - "id": "1124355917937393765", - "name": "RiME" - }, - { - "executables": [{"is_launcher": false, "name": "strike.is the game/strikeis.exe", "os": "win32"}], - "hook": true, - "id": "1124355919946461287", - "name": "Strike.is: The Game" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ctg-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355921540300862", - "name": "6 Seasons And A Game" - }, - { - "executables": [{"is_launcher": false, "name": "simplerockets2/simplerockets2.exe", "os": "win32"}], - "hook": true, - "id": "1124355923213832314", - "name": "Juno: New Origins" - }, - { - "executables": [{"is_launcher": false, "name": "girls free/girls free.exe", "os": "win32"}], - "hook": true, - "id": "1124355924950265876", - "name": "Girls Free" - }, - { - "executables": [{"is_launcher": false, "name": "worldsadrifteditor/island_gen.exe", "os": "win32"}], - "hook": true, - "id": "1124355926372143255", - "name": "Worlds Adrift Island Creator" - }, - { - "executables": [{"is_launcher": false, "name": "drdr/drdr.exe", "os": "win32"}], - "hook": true, - "id": "1124355928100192387", - "name": "Star Wars: Droid Repair Bay" - }, - { - "executables": [{"is_launcher": false, "name": "pincremental/pincremental.exe", "os": "win32"}], - "hook": true, - "id": "1124355929735974962", - "name": "Pincremental" - }, - { - "executables": [{"is_launcher": false, "name": "summer memories/game.exe", "os": "win32"}], - "hook": true, - "id": "1124355931447242803", - "name": "Summer Memories" - }, - { - "executables": [{"is_launcher": false, "name": "altspacevr/altspacevr.exe", "os": "win32"}], - "hook": true, - "id": "1124355933288546394", - "name": "AltspaceVR" - }, - { - "executables": [{"is_launcher": false, "name": "cloud gardens/cloud gardens.exe", "os": "win32"}], - "hook": true, - "id": "1124355935100489758", - "name": "Cloud Gardens" - }, - { - "executables": [{"is_launcher": false, "name": "epic battle fantasy 4/ebf4.exe", "os": "win32"}], - "hook": true, - "id": "1124355936774013080", - "name": "Epic Battle Fantasy 4" - }, - { - "executables": [{"is_launcher": false, "name": "nexomon extinction/nexomon extinction.exe", "os": "win32"}], - "hook": true, - "id": "1124355938275569674", - "name": "Nexomon: Extinction" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fuser-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355940536303676", - "name": "FUSER" - }, - { - "executables": [{"is_launcher": false, "name": "halls of torment/hallsoftorment.exe", "os": "win32"}], - "hook": true, - "id": "1124355942327275711", - "name": "Halls of Torment" - }, - { - "executables": [{"is_launcher": false, "name": "holy potatoes! we're in space!/hpwis.exe", "os": "win32"}], - "hook": true, - "id": "1124355944227291198", - "name": "Holy Potatoes! We\u2019re in Space?!" - }, - { - "executables": [{"is_launcher": false, "name": "wayward/wayward.exe", "os": "win32"}], - "hook": true, - "id": "1124355946035032164", - "name": "Wayward" - }, - { - "executables": [{"is_launcher": false, "name": "commandos 2 men of courage/comm2.exe", "os": "win32"}], - "hook": true, - "id": "1124355948023140422", - "name": "Commandos 2: Men of Courage" - }, - { - "executables": [{"is_launcher": false, "name": "savage lands/savagelands.exe", "os": "win32"}], - "hook": true, - "id": "1124355949671497778", - "name": "Savage Lands" - }, - { - "executables": [{"is_launcher": false, "name": "the adventure pals/adventure pals.exe", "os": "win32"}], - "hook": true, - "id": "1124355951516995694", - "name": "The Adventure Pals" - }, - { - "executables": [{"is_launcher": false, "name": "bin32/enemyfront.exe", "os": "win32"}], - "hook": true, - "id": "1124355953203101727", - "name": "Enemy Front" - }, - { - "executables": [{"is_launcher": false, "name": "mms21/mms21.exe", "os": "win32"}], - "hook": true, - "id": "1124355954742407218", - "name": "Motorcycle Mechanic Simulator 2021" - }, - { - "executables": [{"is_launcher": false, "name": "chasm/chasm.exe", "os": "win32"}], - "hook": true, - "id": "1124355956256559104", - "name": "Chasm" - }, - { - "executables": [{"is_launcher": false, "name": "win64/robobuild-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355958039130292", - "name": "Main Assembly" - }, - { - "executables": [{"is_launcher": false, "name": "the hex/thehex.exe", "os": "win32"}], - "hook": true, - "id": "1124355959918182400", - "name": "The Hex" - }, - { - "executables": [{"is_launcher": false, "name": "akane_win64/akane.exe", "os": "win32"}], - "hook": true, - "id": "1124355961646231593", - "name": "Akane" - }, - { - "executables": [{"is_launcher": false, "name": "system/t3main.exe", "os": "win32"}], - "hook": true, - "id": "1124355964234125424", - "name": "Thief: Deadly Shadows" - }, - { - "executables": [{"is_launcher": false, "name": "guacamelee/guac.exe", "os": "win32"}], - "hook": true, - "id": "1124355965836345374", - "name": "Guacamelee! Gold Edition" - }, - { - "executables": [{"is_launcher": false, "name": "vr_dungeonknight content/vr dungeonknight.exe", "os": "win32"}], - "hook": true, - "id": "1124355967631503400", - "name": "VR Dungeon Knight" - }, - { - "executables": [{"is_launcher": false, "name": "flatout 4 total insanity/flatout.exe", "os": "win32"}], - "hook": true, - "id": "1124355969405698098", - "name": "FlatOut 4: Total Insanity" - }, - { - "executables": [{"is_launcher": false, "name": "dps idle/dps.exe", "os": "win32"}], - "hook": true, - "id": "1124355971033092246", - "name": "DPS IDLE" - }, - { - "executables": [{"is_launcher": false, "name": "driver booster 4/driverbooster.exe", "os": "win32"}], - "hook": true, - "id": "1124355972610142300", - "name": "Driver Booster 4 for Steam" - }, - { - "executables": [{"is_launcher": false, "name": "8bitb/8bb.exe", "os": "win32"}], - "hook": true, - "id": "1124355974015242340", - "name": "8-Bit Bayonetta" - }, - { - "executables": [{"is_launcher": false, "name": "shadows awakening/shadows.exe", "os": "win32"}], - "hook": true, - "id": "1124355976003334248", - "name": "Shadows: Awakening" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mortalonline2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355977710424205", - "name": "Mortal Online 2" - }, - { - "executables": [{"is_launcher": false, "name": "max gentlemen sexy business!/business.exe", "os": "win32"}], - "hook": true, - "id": "1124355979383943238", - "name": "Max Gentlemen Sexy Business!" - }, - { - "executables": [{"is_launcher": false, "name": "how fish is made/how fish is made.exe", "os": "win32"}], - "hook": true, - "id": "1124355981179113542", - "name": "How Fish Is Made" - }, - { - "executables": [ - {"is_launcher": false, "name": "mosaique neko waifus 4/mosaique neko waifus 4.exe", "os": "win32"} - ], - "hook": true, - "id": "1124355982995239036", - "name": "Mosaique Neko Waifus 4" - }, - { - "executables": [{"is_launcher": false, "name": "win64/twds-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355984425504778", - "name": "Truck World: Driving School" - }, - { - "executables": [{"is_launcher": false, "name": "neon drive/neon drive.exe", "os": "win32"}], - "hook": true, - "id": "1124355986149355611", - "name": "Neon Drive" - }, - { - "executables": [{"is_launcher": false, "name": "nice jumper/nicejumper.exe", "os": "win32"}], - "hook": true, - "id": "1124355987869028473", - "name": "Nice Jumper" - }, - { - "executables": [{"is_launcher": false, "name": "h1z1 king of the kill test server/h1z1_be.exe", "os": "win32"}], - "hook": true, - "id": "1124355989806792724", - "name": "H1Z1: Test Server" - }, - { - "executables": [{"is_launcher": false, "name": "nekopara extra/nekopara_extra.exe", "os": "win32"}], - "hook": true, - "id": "1124355991564202004", - "name": "NEKOPARA Extra" - }, - { - "executables": [{"is_launcher": false, "name": "soccer manager 2018/soccer manager 2018.exe", "os": "win32"}], - "hook": true, - "id": "1124355993141268582", - "name": "Soccer Manager 2018" - }, - { - "executables": [{"is_launcher": false, "name": "win64/override-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124355994571522208", - "name": "Override" - }, - { - "executables": [{"is_launcher": false, "name": "lucid dream/lucid_dream_r.exe", "os": "win32"}], - "hook": true, - "id": "1124355996286996563", - "name": "Lucid Dream" - }, - { - "executables": [{"is_launcher": false, "name": "dealerslife/dealer's life.exe", "os": "win32"}], - "hook": true, - "id": "1124355998006653030", - "name": "Dealer's Life" - }, - { - "executables": [{"is_launcher": false, "name": "system/xiii.exe", "os": "win32"}], - "hook": true, - "id": "1124355999847960659", - "name": "XIII - Classic" - }, - { - "executables": [{"is_launcher": false, "name": "dramatical murder/dmmd_en_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124356001911550124", - "name": "DRAMAtical Murder" - }, - { - "executables": [{"is_launcher": false, "name": "roadwarden/roadwarden.exe", "os": "win32"}], - "hook": true, - "id": "1124356003719303238", - "name": "Roadwarden" - }, - { - "executables": [{"is_launcher": false, "name": "quake 4/quake4.exe", "os": "win32"}], - "hook": true, - "id": "1124356005438959749", - "name": "Quake 4" - }, - { - "executables": [{"is_launcher": false, "name": "minds of nations/minds of nations.exe", "os": "win32"}], - "hook": true, - "id": "1124356007141851226", - "name": "Minds of Nations" - }, - { - "executables": [{"is_launcher": false, "name": "mini battlegrounds/crazyshooter.exe", "os": "win32"}], - "hook": true, - "id": "1124356008811188254", - "name": "Mini Battlegrounds" - }, - { - "executables": [ - {"is_launcher": false, "name": "stickman trench wars demo/stickman trenches.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356010321129483", - "name": "Stickman: Trench Wars Demo" - }, - { - "executables": [{"is_launcher": false, "name": "riot/riot.exe", "os": "win32"}], - "hook": true, - "id": "1124356013278118088", - "name": "RIOT - Civil Unrest" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lis-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356017216565279", - "name": "Life is Strange Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "knights of honor/koh.exe", "os": "win32"}], - "hook": true, - "id": "1124356018990764172", - "name": "Knights of Honor" - }, - { - "executables": [{"is_launcher": false, "name": "evoland/evoland.exe", "os": "win32"}], - "hook": true, - "id": "1124356020714614854", - "name": "Evoland" - }, - { - "executables": [{"is_launcher": false, "name": "death squared/deathsquared.exe", "os": "win32"}], - "hook": true, - "id": "1124356022404927488", - "name": "Death Squared" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/coming-out-on-top.exe", "os": "win32"}], - "hook": true, - "id": "1124356024174919710", - "name": "Coming Out on Top" - }, - { - "executables": [{"is_launcher": false, "name": "win64/seniorproject-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356026095906826", - "name": "KillSteel" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mariana-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356027664580668", - "name": "Dreamscaper: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/sakura swim club.exe", "os": "win32"}], - "hook": true, - "id": "1124356029472329779", - "name": "Sakura Swim Club" - }, - { - "executables": [{"is_launcher": false, "name": "hexcells plus/hexcells plus.exe", "os": "win32"}], - "hook": true, - "id": "1124356031007440967", - "name": "Hexcells Plus" - }, - { - "executables": [{"is_launcher": false, "name": "executive assault 2/executiveassault2.exe", "os": "win32"}], - "hook": true, - "id": "1124356032500609024", - "name": "Executive Assault 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/test_c.exe", "os": "win32"}], - "hook": true, - "id": "1124356034199306363", - "name": "PROJECT QUARANTINE Demo" - }, - { - "executables": [{"is_launcher": false, "name": "scanner sombre/scanner sombre.exe", "os": "win32"}], - "hook": true, - "id": "1124356035818311750", - "name": "Scanner Sombre" - }, - { - "executables": [{"is_launcher": false, "name": "tribal wars/tribalwars.exe", "os": "win32"}], - "hook": true, - "id": "1124356037860929608", - "name": "Tribal Wars" - }, - { - "executables": [ - {"is_launcher": false, "name": "car dealership simulator/car dealership simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356039723204608", - "name": "Car Dealership Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "bits & bops demo/bits & bops.exe", "os": "win32"}], - "hook": true, - "id": "1124356041870692452", - "name": "Bits & Bops Demo" - }, - { - "executables": [{"is_launcher": false, "name": "zup! 2/zup! 2.exe", "os": "win32"}], - "hook": true, - "id": "1124356043531628695", - "name": "Zup! 2" - }, - { - "executables": [{"is_launcher": false, "name": "hotshot racing/hotshotracing.exe", "os": "win32"}], - "hook": true, - "id": "1124356045263884389", - "name": "Hotshot Racing" - }, - { - "executables": [{"is_launcher": false, "name": "win/tidesofnumenera.exe", "os": "win32"}], - "hook": true, - "id": "1124356046929014825", - "name": "Torment: Tides of Numenera" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon siege iii/dungeon siege iii.exe", "os": "win32"}], - "hook": true, - "id": "1124356048623521833", - "name": "Dungeon Siege III" - }, - { - "executables": [{"is_launcher": false, "name": "cultic demo/cultic.exe", "os": "win32"}], - "hook": true, - "id": "1124356050213158992", - "name": "CULTIC Demo" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/biahh.exe", "os": "win32"}], - "hook": true, - "id": "1124356051924439171", - "name": "Brothers in Arms: Hell's Highway" - }, - { - "executables": [{"is_launcher": false, "name": "saurian/saurian.exe", "os": "win32"}], - "hook": true, - "id": "1124356053518270554", - "name": "Saurian" - }, - { - "executables": [{"is_launcher": false, "name": "ball at work/ball at work.exe", "os": "win32"}], - "hook": true, - "id": "1124356055170830418", - "name": "Ball at Work" - }, - { - "executables": [{"is_launcher": false, "name": "pentiment/pentiment.exe", "os": "win32"}], - "hook": true, - "id": "1124356056886292551", - "name": "Pentiment" - }, - { - "executables": [{"is_launcher": false, "name": "gun devil/gun devil.exe", "os": "win32"}], - "hook": true, - "id": "1124356058530467910", - "name": "Gun Devil" - }, - { - "executables": [{"is_launcher": false, "name": "introvert a teenager simulator/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124356060778606633", - "name": "Introvert: A Teenager Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "selaco demo/selaco.exe", "os": "win32"}], - "hook": true, - "id": "1124356062422782113", - "name": "Selaco Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/awl.exe", "os": "win32"}], - "hook": true, - "id": "1124356064171798608", - "name": "Anarchy: Wolf's law : Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "desktop kanojo/desktopkanojo.exe", "os": "win32"}], - "hook": true, - "id": "1124356065950187590", - "name": "Desktop Kanojo" - }, - { - "executables": [{"is_launcher": false, "name": "natsuno-kanata/natsuno-kanata.exe", "os": "win32"}], - "hook": true, - "id": "1124356067795685376", - "name": "\u30ca\u30c4\u30ce\u30ab\u30ca\u30bf" - }, - { - "executables": [{"is_launcher": false, "name": "obscure/obscure.exe", "os": "win32"}], - "hook": true, - "id": "1124356069481787443", - "name": "Obscure" - }, - { - "executables": [{"is_launcher": false, "name": "lostruins/lostruins.exe", "os": "win32"}], - "hook": true, - "id": "1124356071113379902", - "name": "Lost Ruins" - }, - { - "executables": [{"is_launcher": false, "name": "mars horizon/mars horizon.exe", "os": "win32"}], - "hook": true, - "id": "1124356072862396466", - "name": "Mars Horizon" - }, - { - "executables": [{"is_launcher": false, "name": "megadimension neptunia vii/neptuniavii.exe", "os": "win32"}], - "hook": true, - "id": "1124356074384937152", - "name": "Megadimension Neptunia VII" - }, - { - "executables": [{"is_launcher": false, "name": "as far as the eye/as far as the eye.exe", "os": "win32"}], - "hook": true, - "id": "1124356076557582447", - "name": "As Far As The Eye" - }, - { - "executables": [{"is_launcher": false, "name": "tgvvoyages/standalone.exe", "os": "win32"}], - "hook": true, - "id": "1124356078533103667", - "name": "TGV Voyages Train Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "life goes on/life goes on.exe", "os": "win32"}], - "hook": true, - "id": "1124356080017883186", - "name": "Life Goes On" - }, - { - "executables": [{"is_launcher": false, "name": "farm manager 2018/farm manager 2018.exe", "os": "win32"}], - "hook": true, - "id": "1124356081741746186", - "name": "Farm Manager 2018" - }, - { - "executables": [{"is_launcher": false, "name": "among the sleep demo/among the sleep demo.exe", "os": "win32"}], - "hook": true, - "id": "1124356083692089515", - "name": "Among the Sleep Demo" - }, - { - "executables": [{"is_launcher": false, "name": "strider/striderx64_r.exe", "os": "win32"}], - "hook": true, - "id": "1124356085017497712", - "name": "Strider" - }, - { - "executables": [{"is_launcher": false, "name": "killstreak.tv/killstreak.tv.exe", "os": "win32"}], - "hook": true, - "id": "1124356086900732044", - "name": "KillStreak.tv" - }, - { - "executables": [{"is_launcher": false, "name": "fly corp demo/fly corp.exe", "os": "win32"}], - "hook": true, - "id": "1124356088708485250", - "name": "Fly Corp Demo" - }, - { - "executables": [{"is_launcher": false, "name": "orwell ignorance is strength/ignorance.exe", "os": "win32"}], - "hook": true, - "id": "1124356090172293131", - "name": "Orwell: Ignorance is Strength" - }, - { - "executables": [{"is_launcher": false, "name": "thea 2 the shattering/thea2.exe", "os": "win32"}], - "hook": true, - "id": "1124356091891953727", - "name": "Thea 2: The Shattering" - }, - { - "executables": [{"is_launcher": false, "name": "rogue/rogue.exe", "os": "win32"}], - "hook": true, - "id": "1124356093624209438", - "name": "STAR WARS\u2122: Rogue Squadron 3D" - }, - { - "executables": [{"is_launcher": false, "name": "forced/forced.exe", "os": "win32"}], - "hook": true, - "id": "1124356095536803860", - "name": "FORCED" - }, - { - "executables": [{"is_launcher": false, "name": "pharaoh a new era/pharaoh.exe", "os": "win32"}], - "hook": true, - "id": "1124356097264865413", - "name": "Pharaoh: A New Era" - }, - { - "executables": [{"is_launcher": false, "name": "win64/warhaven-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356098867085462", - "name": "Warhaven" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2019 touch/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124356100364447824", - "name": "Football Manager 2019 Touch" - }, - { - "executables": [{"is_launcher": false, "name": "train valley 2/trainvalley2.exe", "os": "win32"}], - "hook": true, - "id": "1124356102121869322", - "name": "Train Valley 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pirates-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356103690534952", - "name": "Pirates" - }, - { - "executables": [{"is_launcher": false, "name": "automation empire/automationempire.exe", "os": "win32"}], - "hook": true, - "id": "1124356105485701150", - "name": "Automation Empire" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "vampire the masquerade - coteries of new york/vtm coteries of new york.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356106878205993", - "name": "Vampire: The Masquerade - Coteries of New York" - }, - { - "executables": [{"is_launcher": false, "name": "hentai arena battle royale/hentai arena.exe", "os": "win32"}], - "hook": true, - "id": "1124356108509786252", - "name": "Hentai Arena | Battle Royale" - }, - { - "executables": [{"is_launcher": false, "name": "zup! 6/zup! 6.exe", "os": "win32"}], - "hook": true, - "id": "1124356110141374525", - "name": "Zup! 6" - }, - { - "executables": [{"is_launcher": false, "name": "dp wallpaper master/configdlg.exe", "os": "win32"}], - "hook": true, - "id": "1124356111554850946", - "name": "Live Wallpaper Master" - }, - { - "executables": [{"is_launcher": false, "name": "five dates/fivedates.exe", "os": "win32"}], - "hook": true, - "id": "1124356113190633562", - "name": "Five Dates" - }, - { - "executables": [{"is_launcher": false, "name": "shadownest/projects 1 echo.exe", "os": "win32"}], - "hook": true, - "id": "1124356115094851614", - "name": "Shadownest" - }, - { - "executables": [{"is_launcher": false, "name": "flotsam/flotsam.exe", "os": "win32"}], - "hook": true, - "id": "1124356117049389116", - "name": "Flotsam" - }, - { - "executables": [{"is_launcher": false, "name": "popup dungeon/popup dungeon.exe", "os": "win32"}], - "hook": true, - "id": "1124356118764867594", - "name": "Popup Dungeon" - }, - { - "executables": [{"is_launcher": false, "name": "win64/driftexperiencejapan.exe", "os": "win32"}], - "hook": true, - "id": "1124356120346112101", - "name": "Drift Experience Japan" - }, - { - "executables": [ - {"is_launcher": false, "name": "lakeview cabin collection/lakeview cabin collection.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356121952534698", - "name": "Lakeview Cabin Collection" - }, - { - "executables": [{"is_launcher": false, "name": "win64/azurlane-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356124129382471", - "name": "Azur Lane: Crosswave" - }, - { - "executables": [ - {"is_launcher": false, "name": "neighbours back from hell/neighbours back from hell.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356125811294348", - "name": "Neighbours back From Hell" - }, - { - "executables": [{"is_launcher": false, "name": "magic 2014/dotp_d14.exe", "os": "win32"}], - "hook": true, - "id": "1124356127421911060", - "name": "Magic 2014" - }, - { - "executables": [{"is_launcher": false, "name": "empty shell prologue/emptyshell.exe", "os": "win32"}], - "hook": true, - "id": "1124356128717946930", - "name": "EMPTY SHELL: PROLOGUE" - }, - { - "executables": [{"is_launcher": false, "name": "turnsignal/turnsignal.exe", "os": "win32"}], - "hook": true, - "id": "1124356130546667520", - "name": "TurnSignal" - }, - { - "executables": [{"is_launcher": false, "name": "supercuponline/supercuponline.exe", "os": "win32"}], - "hook": true, - "id": "1124356132249546952", - "name": "SupercupOnline" - }, - { - "executables": [{"is_launcher": false, "name": "lost/lost.exe", "os": "win32"}], - "hook": true, - "id": "1124356134103437403", - "name": "Lost" - }, - { - "executables": [{"is_launcher": false, "name": "war on the sea/waronthesea.exe", "os": "win32"}], - "hook": true, - "id": "1124356136632598598", - "name": "War on the Sea" - }, - { - "executables": [{"is_launcher": false, "name": "win32/desertbusvr.exe", "os": "win32"}], - "hook": true, - "id": "1124356138343870464", - "name": "Desert Bus VR" - }, - { - "executables": [{"is_launcher": false, "name": "volzerk/volzerk.exe", "os": "win32"}], - "hook": true, - "id": "1124356139950297098", - "name": "Volzerk : Monsters and Lands Unknown" - }, - { - "executables": [{"is_launcher": false, "name": "crypt/crypt.exe", "os": "win32"}], - "hook": true, - "id": "1124356141686730864", - "name": "Crypt" - }, - { - "executables": [{"is_launcher": false, "name": "mxgp/mxgp.exe", "os": "win32"}], - "hook": true, - "id": "1124356143414788206", - "name": "MXGP - The Official Motocross Videogame" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "wait! life is beautiful! prologue/wait! life is beautiful!.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356145054756934", - "name": "Wait! Life is Beautiful! Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "false front/falsefront.exe", "os": "win32"}], - "hook": true, - "id": "1124356146673762374", - "name": "False Front" - }, - { - "executables": [{"is_launcher": false, "name": "tacoma/tacoma.exe", "os": "win32"}], - "hook": true, - "id": "1124356148468908172", - "name": "Tacoma" - }, - { - "executables": [{"is_launcher": false, "name": "pc/chicory.exe", "os": "win32"}], - "hook": true, - "id": "1124356150238920854", - "name": "Chicory: A Colorful Tale" - }, - { - "executables": [ - {"is_launcher": false, "name": "deep space waifu fantasy/deep space waifu fantasy.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356151589482558", - "name": "DEEP SPACE WAIFU: FANTASY" - }, - { - "executables": [{"is_launcher": false, "name": "dpet/dpet.exe", "os": "win32"}], - "hook": true, - "id": "1124356153288183848", - "name": "DPET : Desktop Pet Engine" - }, - { - "executables": [{"is_launcher": false, "name": "dark elf/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356154743603390", - "name": "Dark Elf" - }, - { - "executables": [{"is_launcher": false, "name": "win64/supercross3-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356156559732956", - "name": "Monster Energy Supercross - The Official Videogame 3" - }, - { - "executables": [{"is_launcher": false, "name": "wild west saga/wildwest.exe", "os": "win32"}], - "hook": true, - "id": "1124356158384263248", - "name": "Wild West Saga" - }, - { - "executables": [{"is_launcher": false, "name": "weedcraft/weedcraft inc.exe", "os": "win32"}], - "hook": true, - "id": "1124356160129085480", - "name": "Weedcraft Inc" - }, - { - "executables": [{"is_launcher": false, "name": "theimpossiblegame/impossiblegame.exe", "os": "win32"}], - "hook": true, - "id": "1124356161798426756", - "name": "The Impossible Game" - }, - { - "executables": [{"is_launcher": false, "name": "plokoth/plokoth.exe", "os": "win32"}], - "hook": true, - "id": "1124356163413229568", - "name": "Plokoth" - }, - { - "executables": [{"is_launcher": false, "name": "mercenary_kings/mercenarykings.exe", "os": "win32"}], - "hook": true, - "id": "1124356165074178198", - "name": "Mercenary Kings" - }, - { - "executables": [ - {"is_launcher": false, "name": "dreams of desire definitive edition/dreamsofdesire.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356166881918976", - "name": "Dreams of Desire: Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "infested planet/infestedplanet.exe", "os": "win32"}], - "hook": true, - "id": "1124356168425427014", - "name": "Infested Planet" - }, - { - "executables": [ - {"is_launcher": false, "name": "might and magic clash of heroes/clashofheroes.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356170002481252", - "name": "Might & Magic: Clash of Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "bin/ghpc.exe", "os": "win32"}], - "hook": true, - "id": "1124356171730538556", - "name": "Gunner, HEAT, PC!" - }, - { - "executables": [{"is_launcher": false, "name": "phantom brigade/phantombrigade.exe", "os": "win32"}], - "hook": true, - "id": "1124356173487943831", - "name": "Phantom Brigade" - }, - { - "executables": [{"is_launcher": false, "name": "textorcist/textorcist.exe", "os": "win32"}], - "hook": true, - "id": "1124356175270531112", - "name": "The Textorcist: The Story of Ray Bibbia" - }, - { - "executables": [{"is_launcher": false, "name": "helmet heroes/helmet heroes.exe", "os": "win32"}], - "hook": true, - "id": "1124356176860168232", - "name": "Helmet Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "roots of pacha/roots of pacha.exe", "os": "win32"}], - "hook": true, - "id": "1124356178642751518", - "name": "Roots of Pacha" - }, - { - "executables": [{"is_launcher": false, "name": "prolog/lightmatter.exe", "os": "win32"}], - "hook": true, - "id": "1124356180408545411", - "name": "Lightmatter" - }, - { - "executables": [{"is_launcher": false, "name": "iron league/ironleague.exe", "os": "win32"}], - "hook": true, - "id": "1124356182203711528", - "name": "Iron League" - }, - { - "executables": [{"is_launcher": false, "name": "project cars 3/pcars3.exe", "os": "win32"}], - "hook": true, - "id": "1124356183889817640", - "name": "Project CARS 3" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "super jigsaw puzzle generations/super jigsaw puzzle generations.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356185605296138", - "name": "Super Jigsaw Puzzle: Generations" - }, - { - "executables": [{"is_launcher": false, "name": "fate extella/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356187299786823", - "name": "Fate/EXTELLA" - }, - { - "executables": [{"is_launcher": false, "name": "super fancy pants adventure/sfpa.exe", "os": "win32"}], - "hook": true, - "id": "1124356188801355887", - "name": "Super Fancy Pants Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "heat/heat.exe", "os": "win32"}], - "hook": true, - "id": "1124356190466490388", - "name": "Heat" - }, - { - "executables": [{"is_launcher": false, "name": "survive on raft/survive on raft.exe", "os": "win32"}], - "hook": true, - "id": "1124356192362319973", - "name": "Survive on Raft" - }, - { - "executables": [{"is_launcher": false, "name": "overcrowd/overcrowd.exe", "os": "win32"}], - "hook": true, - "id": "1124356193834516491", - "name": "Overcrowd: A Commute 'Em Up" - }, - { - "executables": [{"is_launcher": false, "name": "madison/madison.exe", "os": "win32"}], - "hook": true, - "id": "1124356195587739668", - "name": "MADiSON" - }, - { - "executables": [{"is_launcher": false, "name": "seaofsolitude/seaofsolitude.exe", "os": "win32"}], - "hook": true, - "id": "1124356197294813334", - "name": "Sea of Solitude" - }, - { - "executables": [{"is_launcher": false, "name": "hentai furry/hentai furry.exe", "os": "win32"}], - "hook": true, - "id": "1124356199043846164", - "name": "Hentai Furry" - }, - { - "executables": [{"is_launcher": false, "name": "cosmicbreak/cosmicbreak.exe", "os": "win32"}], - "hook": true, - "id": "1124356200679616603", - "name": "CosmicBreak Universal" - }, - { - "executables": [{"is_launcher": false, "name": "riff racer/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356202235711570", - "name": "Riff Racer" - }, - { - "executables": [{"is_launcher": false, "name": "win64/shco.exe", "os": "win32"}], - "hook": true, - "id": "1124356203875680296", - "name": "Sherlock Holmes Chapter One" - }, - { - "executables": [{"is_launcher": false, "name": "rocket bot royale/rocketbotroyale.exe", "os": "win32"}], - "hook": true, - "id": "1124356205297545286", - "name": "Rocket Bot Royale" - }, - { - "executables": [{"is_launcher": false, "name": "toy story 3/game-ts3.exe", "os": "win32"}], - "hook": true, - "id": "1124356207105294467", - "name": "Toy Story 3" - }, - { - "executables": [{"is_launcher": false, "name": "lossless scaling/losslessscaling.exe", "os": "win32"}], - "hook": true, - "id": "1124356208988532856", - "name": "Lossless Scaling" - }, - { - "executables": [ - {"is_launcher": false, "name": "capcom arcade 2nd stadium/capcomarcade2ndstadium.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356210540433550", - "name": "Capcom Arcade 2nd Stadium" - }, - { - "executables": [{"is_launcher": false, "name": "judgment/judgment.exe", "os": "win32"}], - "hook": true, - "id": "1124356212067156139", - "name": "Judgment: Apocalypse Survival Simulation" - }, - { - "executables": [{"is_launcher": false, "name": "star chef 2 cooking game/star chef 2.exe", "os": "win32"}], - "hook": true, - "id": "1124356216198541352", - "name": "Star Chef 2: Cooking Game" - }, - { - "executables": [{"is_launcher": false, "name": "hidden/hidden.exe", "os": "win32"}], - "hook": true, - "id": "1124356220103442484", - "name": "Hidden Through Time" - }, - { - "executables": [{"is_launcher": false, "name": "wetherevolution/we.therevolution_x86_64.exe", "os": "win32"}], - "hook": true, - "id": "1124356224058671104", - "name": "We. The Revolution" - }, - { - "executables": [ - {"is_launcher": false, "name": "lust from beyond scarlet/lust from beyond - scarlet.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356225556033676", - "name": "Lust from Beyond: Scarlet" - }, - { - "executables": [{"is_launcher": false, "name": "neoverse/neoverse.exe", "os": "win32"}], - "hook": true, - "id": "1124356227116322836", - "name": "NEOVERSE" - }, - { - "executables": [ - {"is_launcher": false, "name": "fetish locator week two/fetishlocatorweek2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356228840173619", - "name": "Fetish Locator Week Two" - }, - { - "executables": [{"is_launcher": false, "name": "digimon survive/digimonsurvive.exe", "os": "win32"}], - "hook": true, - "id": "1124356230475956294", - "name": "Digimon Survive" - }, - { - "executables": [{"is_launcher": false, "name": "halcyon 6 lightspeed edition/h6.exe", "os": "win32"}], - "hook": true, - "id": "1124356232535363666", - "name": "Halcyon 6: Lightspeed Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "kukoro stream chat games/kukoro stream chat games.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356237010681856", - "name": "Kukoro: Stream chat games" - }, - { - "executables": [{"is_launcher": false, "name": "castle clicker/castleclicker.exe", "os": "win32"}], - "hook": true, - "id": "1124356240483561564", - "name": "Castle Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "battle cry of freedom/bcof.exe", "os": "win32"}], - "hook": true, - "id": "1124356243658653828", - "name": "Battle Cry of Freedom" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hacker_simulator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356245273456740", - "name": "Hacker Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "madrun/madrun.exe", "os": "win32"}], - "hook": true, - "id": "1124356249077698631", - "name": "Madrun" - }, - { - "executables": [{"is_launcher": false, "name": "obsideo/obsideo.exe", "os": "win32"}], - "hook": true, - "id": "1124356251984343110", - "name": "Obsideo" - }, - { - "executables": [ - {"is_launcher": false, "name": "old coin pusher friends/kosen pusher friends.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356253649485916", - "name": "\u53e4\u92ad\u30d7\u30c3\u30b7\u30e3\u30fc\u30d5\u30ec\u30f3\u30ba" - }, - { - "executables": [{"is_launcher": false, "name": "downtown drift/downtown drift.exe", "os": "win32"}], - "hook": true, - "id": "1124356255738253432", - "name": "Downtown Drift" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "spacelines prologue/spacelines from the far out flight school.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356257436938331", - "name": "Spacelines from the Far Out - Captain's Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "bin/shooter_win64_release.exe", "os": "win32"}], - "hook": true, - "id": "1124356259248881814", - "name": "X-Morph: Defense" - }, - { - "executables": [{"is_launcher": false, "name": "nba 2k16/nba2k16.exe", "os": "win32"}], - "hook": true, - "id": "1124356260926599268", - "name": "NBA 2K16" - }, - { - "executables": [{"is_launcher": false, "name": "automachef/automachef.exe", "os": "win32"}], - "hook": true, - "id": "1124356262516248756", - "name": "Automachef" - }, - { - "executables": [{"is_launcher": false, "name": "win64/orvillefangame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356264550469652", - "name": "The Orville - Interactive Fan Experience" - }, - { - "executables": [{"is_launcher": false, "name": "kona/kona.exe", "os": "win32"}], - "hook": true, - "id": "1124356266244984932", - "name": "Kona" - }, - { - "executables": [{"is_launcher": false, "name": "chuchel/chuchel.exe", "os": "win32"}], - "hook": true, - "id": "1124356267834622002", - "name": "CHUCHEL" - }, - { - "executables": [{"is_launcher": false, "name": "doka 2/doka2.exe", "os": "win32"}], - "hook": true, - "id": "1124356269722054796", - "name": "DOKA 2 KISHKI EDITION" - }, - { - "executables": [{"is_launcher": false, "name": "unrailed! demo/unrailedgamedemo.exe", "os": "win32"}], - "hook": true, - "id": "1124356271244595210", - "name": "Unrailed! Demo" - }, - { - "executables": [{"is_launcher": false, "name": "yolomouse/yolomouse.exe", "os": "win32"}], - "hook": true, - "id": "1124356272565796945", - "name": "YoloMouse" - }, - { - "executables": [{"is_launcher": false, "name": "nights into dreams/nights.exe", "os": "win32"}], - "hook": true, - "id": "1124356274495180903", - "name": "NiGHTS into Dreams..." - }, - { - "executables": [{"is_launcher": false, "name": "win64/legendarytales-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356276193870004", - "name": "Legendary Tales" - }, - { - "executables": [ - {"is_launcher": false, "name": "icommissionedsomebees0/icommissionedsomebees0.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356277884178554", - "name": "I commissioned some bees 0" - }, - { - "executables": [{"is_launcher": false, "name": "lust academy/lust-academy.exe", "os": "win32"}], - "hook": true, - "id": "1124356279540920360", - "name": "Lust Academy" - }, - { - "executables": [{"is_launcher": false, "name": "en_trick & treat/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356281537413191", - "name": "Trick & Treat" - }, - { - "executables": [{"is_launcher": false, "name": "sucker for love/sucker for love.exe", "os": "win32"}], - "hook": true, - "id": "1124356283097690273", - "name": "Sucker for Love" - }, - { - "executables": [{"is_launcher": false, "name": "dinoscape/dinoscape.exe", "os": "win32"}], - "hook": true, - "id": "1124356284934799370", - "name": "DinoScape" - }, - { - "executables": [{"is_launcher": false, "name": "game of thrones/thrones.exe", "os": "win32"}], - "hook": true, - "id": "1124356286507667546", - "name": "Game of Thrones - A Telltale Games Series" - }, - { - "executables": [{"is_launcher": false, "name": "uhd/uhd.exe", "os": "win32"}], - "hook": true, - "id": "1124356289523367947", - "name": "ULTIMATE HARDBASS DEFENCE" - }, - { - "executables": [{"is_launcher": false, "name": "killing room/killingroom.exe", "os": "win32"}], - "hook": true, - "id": "1124356291415003240", - "name": "Killing Room" - }, - { - "executables": [{"is_launcher": false, "name": "the pirate plague of the dead/thepirate2.exe", "os": "win32"}], - "hook": true, - "id": "1124356293038194790", - "name": "The Pirate: Plague of the Dead" - }, - { - "executables": [{"is_launcher": false, "name": "exploratombe/tombrumble.exe", "os": "win32"}], - "hook": true, - "id": "1124356294485225573", - "name": "Tomb Rumble" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dreamscaper-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356296985039018", - "name": "Dreamscaper" - }, - { - "executables": [{"is_launcher": false, "name": "synthriders/synthriders.exe", "os": "win32"}], - "hook": true, - "id": "1124356298578870333", - "name": "Synth Riders" - }, - { - "executables": [{"is_launcher": false, "name": "gods will be watching/gwbw.exe", "os": "win32"}], - "hook": true, - "id": "1124356300160118944", - "name": "Gods Will Be Watching" - }, - { - "executables": [{"is_launcher": false, "name": "leafling online/leafling client.exe", "os": "win32"}], - "hook": true, - "id": "1124356301825265684", - "name": "Leafling Online" - }, - { - "executables": [{"is_launcher": false, "name": "blightbound/blightbound.exe", "os": "win32"}], - "hook": true, - "id": "1124356303628808283", - "name": "Blightbound" - }, - { - "executables": [{"is_launcher": false, "name": "win64/earthfall-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356305256206336", - "name": "Earthfall" - }, - { - "executables": [ - {"is_launcher": false, "name": "dead island epidemic/dead island epidemic - crib.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356306787123240", - "name": "Dead Island: Epidemic" - }, - { - "executables": [{"is_launcher": false, "name": "audioshield/audioshield.exe", "os": "win32"}], - "hook": true, - "id": "1124356308678750218", - "name": "Audioshield" - }, - { - "executables": [ - {"is_launcher": false, "name": "riding to bounce city/riding to bounce city.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356310264205373", - "name": "Riding to Bounce City" - }, - { - "executables": [{"is_launcher": false, "name": "fate extella link/fateextellalink.exe", "os": "win32"}], - "hook": true, - "id": "1124356312059359262", - "name": "Fate/EXTELLA LINK" - }, - { - "executables": [{"is_launcher": false, "name": "run zeus run/zeusrunner.exe", "os": "win32"}], - "hook": true, - "id": "1124356313581899816", - "name": "Run Zeus Run" - }, - { - "executables": [{"is_launcher": false, "name": "win64/jigsaw-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356315339305022", - "name": "Jigsaw Puzzle Dreams" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fantasyblacksmith-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356317046390895", - "name": "Fantasy Blacksmith" - }, - { - "executables": [ - {"is_launcher": false, "name": "gemcraft frostborn wrath/gemcraft frostborn wrath.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356318690562188", - "name": "GemCraft - Frostborn Wrath" - }, - { - "executables": [{"is_launcher": false, "name": "warriors orochi 4/wo4.exe", "os": "win32"}], - "hook": true, - "id": "1124356320196313088", - "name": "WARRIORS OROCHI 4 - \u7121\u53ccOROCHI\uff13" - }, - { - "executables": [{"is_launcher": false, "name": "basement/the basement collection.exe", "os": "win32"}], - "hook": true, - "id": "1124356322012442695", - "name": "The Basement Collection" - }, - { - "executables": [{"is_launcher": false, "name": "princess maker 2 refine/pm2.exe", "os": "win32"}], - "hook": true, - "id": "1124356323665006632", - "name": "Princess Maker 2 Refine" - }, - { - "executables": [ - {"is_launcher": false, "name": "lust from beyond - prologue/lust from beyond - prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356325246251109", - "name": "Lust from Beyond: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "stowaway/stowaway.exe", "os": "win32"}], - "hook": true, - "id": "1124356326697488484", - "name": "Stowaway" - }, - { - "executables": [{"is_launcher": false, "name": "win64/astrocolony-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356328077410424", - "name": "Astro Colony" - }, - { - "executables": [{"is_launcher": false, "name": "retail/hitman3.exe", "os": "win32"}], - "hook": true, - "id": "1124356329818050640", - "name": "HITMAN 3" - }, - { - "executables": [{"is_launcher": false, "name": "metal slug defense/msdf-steam.exe", "os": "win32"}], - "hook": true, - "id": "1124356331441242222", - "name": "METAL SLUG DEFENSE" - }, - { - "executables": [{"is_launcher": false, "name": "frozen flame/frozenflame.exe", "os": "win32"}], - "hook": true, - "id": "1124356333181874176", - "name": "Frozen Flame" - }, - { - "executables": [{"is_launcher": false, "name": "estranged act i/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124356335119646760", - "name": "Estranged: Act I" - }, - { - "executables": [{"is_launcher": false, "name": "monster prom demo/monsterpromdemo.exe", "os": "win32"}], - "hook": true, - "id": "1124356336696701029", - "name": "Monster Prom Demo" - }, - { - "executables": [{"is_launcher": false, "name": "godhood/godhood.exe", "os": "win32"}], - "hook": true, - "id": "1124356338617700362", - "name": "Godhood" - }, - { - "executables": [{"is_launcher": false, "name": "the last of waifus/the last of waifus.exe", "os": "win32"}], - "hook": true, - "id": "1124356340148617258", - "name": "The Last of Waifus" - }, - { - "executables": [{"is_launcher": false, "name": "circuit superstars/circuit-superstars.exe", "os": "win32"}], - "hook": true, - "id": "1124356341834731591", - "name": "Circuit Superstars" - }, - { - "executables": [{"is_launcher": false, "name": "moe ninja girls/moeninjagirls.exe", "os": "win32"}], - "hook": true, - "id": "1124356343562776666", - "name": "Moe! Ninja Girls" - }, - { - "executables": [ - {"is_launcher": false, "name": "rogue heroes ruins of tasos demo/rogue heroes.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356345211142264", - "name": "Rogue Heroes: Ruins of Tasos Demo" - }, - { - "executables": [{"is_launcher": false, "name": "wrc 10 fia world rally championship/wrc10.exe", "os": "win32"}], - "hook": true, - "id": "1124356346784002108", - "name": "WRC 10 FIA World Rally Championship" - }, - { - "executables": [{"is_launcher": false, "name": "evil bank manager/evilbankmanager.exe", "os": "win32"}], - "hook": true, - "id": "1124356348386234460", - "name": "Evil Bank Manager" - }, - { - "executables": [ - {"is_launcher": false, "name": "the walking dead michonne/walkingdeadmichonne.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356350038782022", - "name": "The Walking Dead: Michonne" - }, - { - "executables": [{"is_launcher": false, "name": "shipping/nxsteam.exe", "os": "win32"}], - "hook": true, - "id": "1124356351783620759", - "name": "Ghost in the Shell: Stand Alone Complex - First Assault Online" - }, - { - "executables": [{"is_launcher": false, "name": "out of the park baseball 21/ootp21.exe", "os": "win32"}], - "hook": true, - "id": "1124356353423589457", - "name": "Out of the Park Baseball 21" - }, - { - "executables": [ - {"is_launcher": false, "name": "senran kagura shinovi versus/skshinoviversus.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356355097112667", - "name": "SENRAN KAGURA SHINOVI VERSUS" - }, - { - "executables": [ - {"is_launcher": false, "name": "7 days to end with you/seven days to end with you.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356356649013419", - "name": "7 Days to End with You" - }, - { - "executables": [{"is_launcher": false, "name": "hrot/hrot.exe", "os": "win32"}], - "hook": true, - "id": "1124356358473527356", - "name": "HROT" - }, - { - "executables": [{"is_launcher": false, "name": "out of reach/outofreach.exe", "os": "win32"}], - "hook": true, - "id": "1124356360029618367", - "name": "Out of Reach" - }, - { - "executables": [{"is_launcher": false, "name": "win32/frogbath-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356361619255307", - "name": "Frog Bath" - }, - { - "executables": [ - {"is_launcher": false, "name": "deep space waifu justice/deep space waifu flat justice.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356365004050442", - "name": "DEEP SPACE WAIFU: FLAT JUSTICE" - }, - { - "executables": [{"is_launcher": false, "name": "chess evolved online/ceo.exe", "os": "win32"}], - "hook": true, - "id": "1124356366757277778", - "name": "Chess Evolved Online" - }, - { - "executables": [{"is_launcher": false, "name": "rog citadel xv/rog citadel xv.exe", "os": "win32"}], - "hook": true, - "id": "1124356368355311676", - "name": "ROG CITADEL XV" - }, - { - "executables": [{"is_launcher": false, "name": "warmsnow/warmsnow.exe", "os": "win32"}], - "hook": true, - "id": "1124356370028843121", - "name": "\u6696\u96ea Warm Snow" - }, - { - "executables": [{"is_launcher": false, "name": "system/elex2.exe", "os": "win32"}], - "hook": true, - "id": "1124356371727528036", - "name": "ELEX II" - }, - { - "executables": [{"is_launcher": false, "name": "defensegridtheawakening/defensegrid.exe", "os": "win32"}], - "hook": true, - "id": "1124356373292011621", - "name": "Defense Grid: The Awakening" - }, - { - "executables": [{"is_launcher": false, "name": "game/anomalyzone.exe", "os": "win32"}], - "hook": true, - "id": "1124356375024255036", - "name": "Anomaly Zone" - }, - { - "executables": [{"is_launcher": false, "name": "win64/proa34-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356376932667513", - "name": "Blue Fire" - }, - { - "executables": [{"is_launcher": false, "name": "turbo pug dx/turbopugdx.exe", "os": "win32"}], - "hook": true, - "id": "1124356378690072739", - "name": "Turbo Pug DX" - }, - { - "executables": [{"is_launcher": false, "name": "binary/secret_of_mana.exe", "os": "win32"}], - "hook": true, - "id": "1124356380342632498", - "name": "Secret of Mana" - }, - { - "executables": [{"is_launcher": false, "name": "inmost/inmost.exe", "os": "win32"}], - "hook": true, - "id": "1124356382100041849", - "name": "INMOST" - }, - { - "executables": [{"is_launcher": false, "name": "survivals battle royale/client.exe", "os": "win32"}], - "hook": true, - "id": "1124356383861657641", - "name": "Battle Royale: Survivors" - }, - { - "executables": [{"is_launcher": false, "name": "simulacra pipe dreams/pipedreams.exe", "os": "win32"}], - "hook": true, - "id": "1124356385572925500", - "name": "SIMULACRA: Pipe Dreams" - }, - { - "executables": [{"is_launcher": false, "name": "windows_content/horror squad.exe", "os": "win32"}], - "hook": true, - "id": "1124356387733000304", - "name": "Horror Squad" - }, - { - "executables": [{"is_launcher": false, "name": "space beast terror fright/sbtf_pub.exe", "os": "win32"}], - "hook": true, - "id": "1124356390765477898", - "name": "Space Beast Terror Fright" - }, - { - "executables": [{"is_launcher": false, "name": "tvo/tvo.exe", "os": "win32"}], - "hook": true, - "id": "1124356395404374128", - "name": "Tv\u00f6" - }, - { - "executables": [{"is_launcher": false, "name": "deponia doomsday/deponia4.exe", "os": "win32"}], - "hook": true, - "id": "1124356398604632138", - "name": "Deponia Doomsday" - }, - { - "executables": [{"is_launcher": false, "name": "hitman codename 47/hitman.exe", "os": "win32"}], - "hook": true, - "id": "1124356400307515514", - "name": "Hitman: Codename 47" - }, - { - "executables": [{"is_launcher": false, "name": "minecraftlegends/minecraftlegends.windows.exe", "os": "win32"}], - "hook": true, - "id": "1124356402102685828", - "name": "Minecraft Legends" - }, - { - "executables": [ - {"is_launcher": false, "name": "geometry may. i swear it's a nice free game/nw.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356403662962839", - "name": "Geometry May. I swear it's a nice free game" - }, - { - "executables": [{"is_launcher": false, "name": "stand out/standout.exe", "os": "win32"}], - "hook": true, - "id": "1124356405252608050", - "name": "STAND OUT" - }, - { - "executables": [{"is_launcher": false, "name": "ub/ub.exe", "os": "win32"}], - "hook": true, - "id": "1124356407651741726", - "name": "The Ultimatest Battle" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tree-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356409312694272", - "name": "TREE" - }, - { - "executables": [{"is_launcher": false, "name": "klocki/klocki.exe", "os": "win32"}], - "hook": true, - "id": "1124356411162374164", - "name": "klocki" - }, - { - "executables": [{"is_launcher": false, "name": "apotheon/apotheon.exe", "os": "win32"}], - "hook": true, - "id": "1124356412726857838", - "name": "Apotheon" - }, - { - "executables": [{"is_launcher": false, "name": "ultimate tag/ultimate tag.exe", "os": "win32"}], - "hook": true, - "id": "1124356414316494938", - "name": "Ultimate Tag" - }, - { - "executables": [{"is_launcher": false, "name": "win64/combots-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356415818051665", - "name": "Combots" - }, - { - "executables": [{"is_launcher": false, "name": "second galaxy/secondgalaxy.exe", "os": "win32"}], - "hook": true, - "id": "1124356418003288074", - "name": "Second Galaxy" - }, - { - "executables": [{"is_launcher": false, "name": "octogeddon/octogeddon.exe", "os": "win32"}], - "hook": true, - "id": "1124356419882340532", - "name": "Octogeddon" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bgg-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356421568442419", - "name": "171" - }, - { - "executables": [{"is_launcher": false, "name": "bin/zombiedriverhd.exe", "os": "win32"}], - "hook": true, - "id": "1124356423418134568", - "name": "Zombie Driver HD" - }, - { - "executables": [{"is_launcher": false, "name": "win64/moonman-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356424902910003", - "name": "Deliver Us The Moon" - }, - { - "executables": [{"is_launcher": false, "name": "species alre/species.exe", "os": "win32"}], - "hook": true, - "id": "1124356426568061008", - "name": "Species: Artificial Life, Real Evolution" - }, - { - "executables": [{"is_launcher": false, "name": "big bang empire/big bang empire.exe", "os": "win32"}], - "hook": true, - "id": "1124356428098977792", - "name": "Big Bang Empire" - }, - { - "executables": [{"is_launcher": false, "name": "the pedestrian/theped_win_64.exe", "os": "win32"}], - "hook": true, - "id": "1124356429667643392", - "name": "The Pedestrian" - }, - { - "executables": [{"is_launcher": false, "name": "chef/chefgame.exe", "os": "win32"}], - "hook": true, - "id": "1124356431404093440", - "name": "Chef" - }, - { - "executables": [{"is_launcher": false, "name": "wytchwood/wytchwood.exe", "os": "win32"}], - "hook": true, - "id": "1124356433291522128", - "name": "Wytchwood" - }, - { - "executables": [ - {"is_launcher": false, "name": "steamworld build demo/steamworld build demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356436852494491", - "name": "SteamWorld Build Demo" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "handy harry's haunted house services/handy harry's haunted house services.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356439440371762", - "name": "Handy Harry's Haunted House Services" - }, - { - "executables": [{"is_launcher": false, "name": "blade assault/bladeassault.exe", "os": "win32"}], - "hook": true, - "id": "1124356441277481040", - "name": "Blade Assault" - }, - { - "executables": [{"is_launcher": false, "name": "shipping/dcapp.exe", "os": "win32"}], - "hook": true, - "id": "1124356442963595305", - "name": "Divinity: Dragon Commander" - }, - { - "executables": [{"is_launcher": false, "name": "fe/fe.exe", "os": "win32"}], - "hook": true, - "id": "1124356444674867270", - "name": "Fe" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "thelaststandlegacycollection.app/thelaststandlegacycollection.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356446696517642", - "name": "The Last Stand Legacy Collection" - }, - { - "executables": [{"is_launcher": false, "name": "a bird story/a bird story.exe", "os": "win32"}], - "hook": true, - "id": "1124356448319701046", - "name": "A Bird Story" - }, - { - "executables": [{"is_launcher": false, "name": "hello charlotte/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356449938718760", - "name": "Hello Charlotte" - }, - { - "executables": [{"is_launcher": false, "name": "pro cycling manager 2020/pcm64.exe", "os": "win32"}], - "hook": true, - "id": "1124356451721302137", - "name": "Pro Cycling Manager 2020" - }, - { - "executables": [ - {"is_launcher": false, "name": "doraemon story of seasons/doraemon story of seasons.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356453268996126", - "name": "DORAEMON STORY OF SEASONS" - }, - { - "executables": [ - {"is_launcher": false, "name": "amnesia the bunker demo/amnesiathebunker_demo_steam.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356454653112434", - "name": "Amnesia: The Bunker Demo" - }, - { - "executables": [{"is_launcher": false, "name": "rumble/rumble.exe", "os": "win32"}], - "hook": true, - "id": "1124356456213401710", - "name": "RUMBLE" - }, - { - "executables": [{"is_launcher": false, "name": "field of glory ii/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124356458692227193", - "name": "Field of Glory II" - }, - { - "executables": [{"is_launcher": false, "name": "geometry wars 3 - dimensions/gw3.exe", "os": "win32"}], - "hook": true, - "id": "1124356460244127764", - "name": "Geometry Wars 3: Dimensions Evolved" - }, - { - "executables": [ - {"is_launcher": false, "name": "wrc generations - the fia wrc official game/wrcg.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356462001537054", - "name": "WRC Generations - The FIA WRC Official Game" - }, - { - "executables": [{"is_launcher": false, "name": "geometry wars/geometrywars.exe", "os": "win32"}], - "hook": true, - "id": "1124356463469539460", - "name": "Geometry Wars: Retro Evolved" - }, - { - "executables": [ - {"is_launcher": false, "name": "super amazing wagon adventure/wagonadventure.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356465113714718", - "name": "Super Amazing Wagon Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "westerado/westeradodb.exe", "os": "win32"}], - "hook": true, - "id": "1124356466917257247", - "name": "Westerado: Double Barreled" - }, - { - "executables": [{"is_launcher": false, "name": "270 two seventy us election/270.exe", "os": "win32"}], - "hook": true, - "id": "1124356468473352282", - "name": "270 | Two Seventy US Election" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tabletopbase-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356470423695470", - "name": "Trials of Fire" - }, - { - "executables": [{"is_launcher": false, "name": "zup! 7/zup! 7.exe", "os": "win32"}], - "hook": true, - "id": "1124356472101421156", - "name": "Zup! 7" - }, - { - "executables": [{"is_launcher": false, "name": "breachandclear/bnc.exe", "os": "win32"}], - "hook": true, - "id": "1124356473674281142", - "name": "Breach & Clear" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "i'm on observation duty 2 timothy's revenge/i'm on observation duty 2 timothy's revenge.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356475557531769", - "name": "I'm on Observation Duty 2: Timothy's Revenge" - }, - { - "executables": [{"is_launcher": false, "name": "aviary attorney/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124356477231054949", - "name": "Aviary Attorney" - }, - { - "executables": [{"is_launcher": false, "name": "win32/trygame-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356479227547658", - "name": "Quantum Conundrum" - }, - { - "executables": [{"is_launcher": false, "name": "fingered/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124356480963985498", - "name": "Fingered" - }, - { - "executables": [{"is_launcher": false, "name": "port royale 3/portroyale3.exe", "os": "win32"}], - "hook": true, - "id": "1124356482494902443", - "name": "Port Royale 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/weirdwest-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356483975499826", - "name": "Weird West" - }, - { - "executables": [{"is_launcher": false, "name": "tdp4team battle/tdp4air.exe", "os": "win32"}], - "hook": true, - "id": "1124356485607075932", - "name": "TDP4:Team Battle" - }, - { - "executables": [{"is_launcher": false, "name": "stick rpg 2/stick rpg 2 director's cut.exe", "os": "win32"}], - "hook": true, - "id": "1124356487108640859", - "name": "Stick RPG 2" - }, - { - "executables": [{"is_launcher": false, "name": "outpost/outpost.exe", "os": "win32"}], - "hook": true, - "id": "1124356488731840552", - "name": "Outpost" - }, - { - "executables": [{"is_launcher": false, "name": "drill deal first borehole/dealdrill.exe", "os": "win32"}], - "hook": true, - "id": "1124356490300506263", - "name": "Drill Deal: Borehole Alpha" - }, - { - "executables": [ - {"is_launcher": false, "name": "gladiator guild manager prologue/gladiator manager.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356491869171772", - "name": "Gladiator Guild Manager: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "tactics ogre reborn/tactics ogre reborn.exe", "os": "win32"}], - "hook": true, - "id": "1124356493483987046", - "name": "Tactics Ogre: Reborn" - }, - { - "executables": [{"is_launcher": false, "name": "furidashi drift cyber sport/furidashi.exe", "os": "win32"}], - "hook": true, - "id": "1124356495262367894", - "name": "FURIDASHI: Drift Cyber Sport" - }, - { - "executables": [{"is_launcher": false, "name": "armajet/armajet.exe", "os": "win32"}], - "hook": true, - "id": "1124356497216917565", - "name": "Armajet" - }, - { - "executables": [{"is_launcher": false, "name": "win64/likeadragonishin-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356498911412334", - "name": "Like a Dragon: Ishin!" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/eternalhour_goldenhour.exe", "os": "win32"}], - "hook": true, - "id": "1124356500433940600", - "name": "Eternal Hour: Golden Hour" - }, - { - "executables": [{"is_launcher": false, "name": "win64/incursion-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356502484959342", - "name": "Killing Floor: Incursion" - }, - { - "executables": [{"is_launcher": false, "name": "railroad tycoon 3/rt3.exe", "os": "win32"}], - "hook": true, - "id": "1124356504221397112", - "name": "Railroad Tycoon 3" - }, - { - "executables": [{"is_launcher": false, "name": "demeo/demeo.exe", "os": "win32"}], - "hook": true, - "id": "1124356516066103387", - "name": "Demeo" - }, - { - "executables": [{"is_launcher": false, "name": "virtualcast/virtualcast.exe", "os": "win32"}], - "hook": true, - "id": "1124356521007001641", - "name": "VirtualCast" - }, - { - "executables": [{"is_launcher": false, "name": "mr shifty/mrshifty.exe", "os": "win32"}], - "hook": true, - "id": "1124356526505738322", - "name": "Mr Shifty" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thebus.exe", "os": "win32"}], - "hook": true, - "id": "1124356532168044564", - "name": "The Bus" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/grimmgame.exe", "os": "win32"}], - "hook": true, - "id": "1124356535888400506", - "name": "Grimm" - }, - { - "executables": [{"is_launcher": false, "name": "in other waters/in other waters.exe", "os": "win32"}], - "hook": true, - "id": "1124356539919118336", - "name": "In Other Waters" - }, - { - "executables": [{"is_launcher": false, "name": "scream collector/screamcollector.exe", "os": "win32"}], - "hook": true, - "id": "1124356544008573009", - "name": "Scream Collector" - }, - { - "executables": [{"is_launcher": false, "name": "samorost 3/samorost3.exe", "os": "win32"}], - "hook": true, - "id": "1124356549435994192", - "name": "Samorost 3" - }, - { - "executables": [{"is_launcher": false, "name": "ai war 2/aiwar2.exe", "os": "win32"}], - "hook": true, - "id": "1124356554204926062", - "name": "AI War 2" - }, - { - "executables": [{"is_launcher": false, "name": "king of the castle/kingofthecastle.exe", "os": "win32"}], - "hook": true, - "id": "1124356555958140928", - "name": "King Of The Castle" - }, - { - "executables": [{"is_launcher": false, "name": "driver4vr/driver4vr.exe", "os": "win32"}], - "hook": true, - "id": "1124356557551980554", - "name": "Driver4VR" - }, - { - "executables": [{"is_launcher": false, "name": "pacifish/pacifish.exe", "os": "win32"}], - "hook": true, - "id": "1124356559112253460", - "name": "Pacifish" - }, - { - "executables": [{"is_launcher": false, "name": "dragonsin/dragonsin.exe", "os": "win32"}], - "hook": true, - "id": "1124356563088457809", - "name": "Dragon Sin" - }, - { - "executables": [{"is_launcher": false, "name": "win64/breathe-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356564820709427", - "name": "BREATHE" - }, - { - "executables": [{"is_launcher": false, "name": "zaccaria pinball/zaccariapinball.exe", "os": "win32"}], - "hook": true, - "id": "1124356566401957988", - "name": "Zaccaria Pinball" - }, - { - "executables": [{"is_launcher": false, "name": "umineko/umineko1to4.exe", "os": "win32"}], - "hook": true, - "id": "1124356568125820980", - "name": "Umineko When They Cry - Question Arcs" - }, - { - "executables": [{"is_launcher": false, "name": "shotgun witch/shotgun witch.exe", "os": "win32"}], - "hook": true, - "id": "1124356570164248597", - "name": "Shotgun Witch" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "beat me! - puppetonia tournament/beat me - puppetonia tournament.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356571741310976", - "name": "Beat Me! - Puppetonia Tournament" - }, - { - "executables": [{"is_launcher": false, "name": "smbbm/smbbm.exe", "os": "win32"}], - "hook": true, - "id": "1124356573276422237", - "name": "Super Monkey Ball Banana Mania" - }, - { - "executables": [{"is_launcher": false, "name": "doom vfr/doomvfrx64.exe", "os": "win32"}], - "hook": true, - "id": "1124356574928973914", - "name": "DOOM VFR" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tenmilestosafety-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356576459903026", - "name": "10 Miles To Safety" - }, - { - "executables": [{"is_launcher": false, "name": "castlevania advance collection/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356578485743626", - "name": "Castlevania Advance Collection" - }, - { - "executables": [ - {"is_launcher": false, "name": "when ski lifts go wrong/when ski lifts go wrong.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356580104753322", - "name": "When Ski Lifts Go Wrong" - }, - { - "executables": [{"is_launcher": false, "name": "zoombinis/zoombinis.exe", "os": "win32"}], - "hook": true, - "id": "1124356581975404695", - "name": "Zoombinis" - }, - { - "executables": [{"is_launcher": false, "name": "30xx/30xx.exe", "os": "win32"}], - "hook": true, - "id": "1124356583514718268", - "name": "30XX" - }, - { - "executables": [{"is_launcher": false, "name": "toyboxturbos/toyboxturbos.exe", "os": "win32"}], - "hook": true, - "id": "1124356585225990274", - "name": "Toybox Turbos" - }, - { - "executables": [{"is_launcher": false, "name": "jackpot poker by pokerstars/jackpotpoker.exe", "os": "win32"}], - "hook": true, - "id": "1124356586874359880", - "name": "Jackpot Poker by PokerStars" - }, - { - "executables": [{"is_launcher": false, "name": "win64/karnagevr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356588438827110", - "name": "Karnage Chronicles" - }, - { - "executables": [{"is_launcher": false, "name": "fantasy grounds unity demo/fguwebinstall.exe", "os": "win32"}], - "hook": true, - "id": "1124356590166888538", - "name": "Fantasy Grounds Unity Demo" - }, - { - "executables": [{"is_launcher": false, "name": "vikings - wolves of midgard/vikings.exe", "os": "win32"}], - "hook": true, - "id": "1124356592234672159", - "name": "Vikings - Wolves of Midgard" - }, - { - "executables": [{"is_launcher": false, "name": "storm chasers/storm chasers.exe", "os": "win32"}], - "hook": true, - "id": "1124356593765601433", - "name": "Storm Chasers" - }, - { - "executables": [{"is_launcher": false, "name": "sonic the hedgehog 4 ep 1/sonic_vis.exe", "os": "win32"}], - "hook": true, - "id": "1124356595426537623", - "name": "SONIC THE HEDGEHOG 4 Episode I" - }, - { - "executables": [{"is_launcher": false, "name": "sevgilim/sevgilim.exe", "os": "win32"}], - "hook": true, - "id": "1124356597116850216", - "name": "Sevgilim Olur musun ?" - }, - { - "executables": [{"is_launcher": false, "name": "win64/clay_3-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356598815535104", - "name": "Garten of Banban 3" - }, - { - "executables": [{"is_launcher": false, "name": "force of nature 2/forceofnature.exe", "os": "win32"}], - "hook": true, - "id": "1124356600140943421", - "name": "Force of Nature 2" - }, - { - "executables": [{"is_launcher": false, "name": "street fighter x tekken/sftk.exe", "os": "win32"}], - "hook": true, - "id": "1124356601558601748", - "name": "Street Fighter X Tekken" - }, - { - "executables": [{"is_launcher": false, "name": "mini healer/minihealer.exe", "os": "win32"}], - "hook": true, - "id": "1124356603508969522", - "name": "Mini Healer" - }, - { - "executables": [{"is_launcher": false, "name": "classic racers/classic_racers.exe", "os": "win32"}], - "hook": true, - "id": "1124356605165711442", - "name": "Classic Racers" - }, - { - "executables": [{"is_launcher": false, "name": "lonely mountains - downhill/lmd_win_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124356606910546010", - "name": "Lonely Mountains: Downhill" - }, - { - "executables": [{"is_launcher": false, "name": "spaz2/spaz2_64.exe", "os": "win32"}], - "hook": true, - "id": "1124356609016090844", - "name": "Space Pirates and Zombies 2" - }, - { - "executables": [{"is_launcher": false, "name": "drift horizon online/drift horizon.exe", "os": "win32"}], - "hook": true, - "id": "1124356610823823480", - "name": "Drift Horizon Online" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "survivalist invisible strain/survivalist invisible strain.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356612262477854", - "name": "Survivalist: Invisible Strain" - }, - { - "executables": [{"is_launcher": false, "name": "lara croft go/lara croft go.exe", "os": "win32"}], - "hook": true, - "id": "1124356613734674532", - "name": "Lara Croft GO" - }, - { - "executables": [{"is_launcher": false, "name": "quatro!/quatro!.exe", "os": "win32"}], - "hook": true, - "id": "1124356615404011561", - "name": "Quatro!" - }, - { - "executables": [{"is_launcher": false, "name": "metal unit/metalunit.exe", "os": "win32"}], - "hook": true, - "id": "1124356617090125845", - "name": "Metal Unit" - }, - { - "executables": [{"is_launcher": false, "name": "icelakes/icelakes.exe", "os": "win32"}], - "hook": true, - "id": "1124356618625232897", - "name": "Ice Lakes" - }, - { - "executables": [{"is_launcher": false, "name": "my sticker book/my sticker book.exe", "os": "win32"}], - "hook": true, - "id": "1124356620294574152", - "name": "My Sticker Book" - }, - { - "executables": [{"is_launcher": false, "name": "coloring book/coloring book for adults.exe", "os": "win32"}], - "hook": true, - "id": "1124356622353969162", - "name": "Coloring Book" - }, - { - "executables": [{"is_launcher": false, "name": "win64/supersmash-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356623801012244", - "name": "SuperSmash" - }, - { - "executables": [{"is_launcher": false, "name": "monster roadtrip demo/monsterroadtripdemo.exe", "os": "win32"}], - "hook": true, - "id": "1124356625600360548", - "name": "Monster Prom 3: Monster Roadtrip Demo" - }, - { - "executables": [{"is_launcher": false, "name": "thief_2/thief2.exe", "os": "win32"}], - "hook": true, - "id": "1124356627387142284", - "name": "Thief 2" - }, - { - "executables": [{"is_launcher": false, "name": "cube racer 2/cuberacer2.exe", "os": "win32"}], - "hook": true, - "id": "1124356629127774268", - "name": "Cube Racer 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/carrumble-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356630776139816", - "name": "CARRUMBLE" - }, - { - "executables": [{"is_launcher": false, "name": "fly dangerous/flydangerous.exe", "os": "win32"}], - "hook": true, - "id": "1124356632378355743", - "name": "Fly Dangerous" - }, - { - "executables": [{"is_launcher": false, "name": "minigolf mania/minigolfmania.exe", "os": "win32"}], - "hook": true, - "id": "1124356634290962443", - "name": "MiniGolf Mania" - }, - { - "executables": [{"is_launcher": false, "name": "crown trick/crowntrick.exe", "os": "win32"}], - "hook": true, - "id": "1124356636048379964", - "name": "Crown Trick" - }, - { - "executables": [{"is_launcher": false, "name": "shootas blood teef/shootasbloodandteef.exe", "os": "win32"}], - "hook": true, - "id": "1124356637411524768", - "name": "Warhammer 40,000: Shootas, Blood & Teef" - }, - { - "executables": [{"is_launcher": false, "name": "tavern master - prologue/tavern master.exe", "os": "win32"}], - "hook": true, - "id": "1124356639210877050", - "name": "Tavern Master - Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "costume quest/cq.exe", "os": "win32"}], - "hook": true, - "id": "1124356640708251748", - "name": "Costume Quest" - }, - { - "executables": [{"is_launcher": false, "name": "above snakes prologue/above snakes.exe", "os": "win32"}], - "hook": true, - "id": "1124356642415329361", - "name": "Above Snakes: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "my child lebensborn/my child lebensborn.exe", "os": "win32"}], - "hook": true, - "id": "1124356643963031653", - "name": "My Child Lebensborn" - }, - { - "executables": [{"is_launcher": false, "name": "the shrouded isle/theshroudedisle.exe", "os": "win32"}], - "hook": true, - "id": "1124356645493948466", - "name": "The Shrouded Isle" - }, - { - "executables": [{"is_launcher": false, "name": "bullet roulette vr/saloon spin.exe", "os": "win32"}], - "hook": true, - "id": "1124356647242977280", - "name": "Bullet Roulette VR" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/brokendreamers.exe", "os": "win32"}], - "hook": true, - "id": "1124356648987799593", - "name": "City of Broken Dreamers: Book One" - }, - { - "executables": [{"is_launcher": false, "name": "cat cafe manager/catcafe.exe", "os": "win32"}], - "hook": true, - "id": "1124356650820714516", - "name": "Cat Cafe Manager" - }, - { - "executables": [{"is_launcher": false, "name": "eternal edge plus prologue/eternal edge +.exe", "os": "win32"}], - "hook": true, - "id": "1124356652422942780", - "name": "Eternal Edge Plus Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/frostbite_alexo-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356654033547285", - "name": "FROSTBITE: Deadly Climate" - }, - { - "executables": [{"is_launcher": false, "name": "win64/paradisekiller-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356655879045170", - "name": "Paradise Killer" - }, - { - "executables": [{"is_launcher": false, "name": "dragon quest builders 2/dqb2_eu.exe", "os": "win32"}], - "hook": true, - "id": "1124356657632268338", - "name": "DRAGON QUEST BUILDERS\u2122 2" - }, - { - "executables": [{"is_launcher": false, "name": "fruitninjavr/fruitninja.exe", "os": "win32"}], - "hook": true, - "id": "1124356659234488400", - "name": "Fruit Ninja VR" - }, - { - "executables": [{"is_launcher": false, "name": "cyber hook demo/cyberhook.exe", "os": "win32"}], - "hook": true, - "id": "1124356660870271037", - "name": "Cyber Hook Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "white day a labyrinth named school/whiteday.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356662480879637", - "name": "White Day: A Labyrinth Named School" - }, - { - "executables": [{"is_launcher": false, "name": "alba/alba.exe", "os": "win32"}], - "hook": true, - "id": "1124356664053739563", - "name": "Alba: A Wildlife Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "release/fun hospital.exe", "os": "win32"}], - "hook": true, - "id": "1124356665551114310", - "name": "Fun Hospital" - }, - { - "executables": [{"is_launcher": false, "name": "darq/darq.exe", "os": "win32"}], - "hook": true, - "id": "1124356667404984451", - "name": "DARQ" - }, - { - "executables": [{"is_launcher": false, "name": "clanfolk/clanfolk.exe", "os": "win32"}], - "hook": true, - "id": "1124356668998828042", - "name": "Clanfolk" - }, - { - "executables": [{"is_launcher": false, "name": "gunscape/gunscape.exe", "os": "win32"}], - "hook": true, - "id": "1124356670416498899", - "name": "Gunscape" - }, - { - "executables": [{"is_launcher": false, "name": "ultimate admiral age of sail/build.exe", "os": "win32"}], - "hook": true, - "id": "1124356671960010822", - "name": "Ultimate Admiral: Age of Sail" - }, - { - "executables": [{"is_launcher": false, "name": "zup! zero/zup! zero.exe", "os": "win32"}], - "hook": true, - "id": "1124356673780334722", - "name": "Zup! Zero" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "truck and logistics simulator/truck & logistics simulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356675323834469", - "name": "Truck and Logistics Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "demeo - pc edition/demeo.exe", "os": "win32"}], - "hook": true, - "id": "1124356677420990495", - "name": "Demeo - PC Edition" - }, - { - "executables": [{"is_launcher": false, "name": "glass masquerade/glass.exe", "os": "win32"}], - "hook": true, - "id": "1124356679262285965", - "name": "Glass Masquerade" - }, - { - "executables": [{"is_launcher": false, "name": "hylics 2/hylics2_windows.exe", "os": "win32"}], - "hook": true, - "id": "1124356680902266920", - "name": "Hylics 2" - }, - { - "executables": [{"is_launcher": false, "name": "robosquare/robosquare.exe", "os": "win32"}], - "hook": true, - "id": "1124356682596761690", - "name": "RoboSquare" - }, - { - "executables": [{"is_launcher": false, "name": "heliborne/heliborne.exe", "os": "win32"}], - "hook": true, - "id": "1124356684266098848", - "name": "Heliborne" - }, - { - "executables": [{"is_launcher": false, "name": "win32/enslaved.exe", "os": "win32"}], - "hook": true, - "id": "1124356685838958682", - "name": "ENSLAVED\u2122: Odyssey to the West\u2122 Premium Edition" - }, - { - "executables": [{"is_launcher": false, "name": "anime standing/anime standing.exe", "os": "win32"}], - "hook": true, - "id": "1124356687432790066", - "name": "ANIME STANDING" - }, - { - "executables": [{"is_launcher": false, "name": "ring of titans/ring of titans.exe", "os": "win32"}], - "hook": true, - "id": "1124356688896610364", - "name": "Ring of Titans" - }, - { - "executables": [{"is_launcher": false, "name": "angel legion/angellegion.exe", "os": "win32"}], - "hook": true, - "id": "1124356690633043999", - "name": "Angel Legion - Idle RPG" - }, - { - "executables": [{"is_launcher": false, "name": "nex machina/nex_machina.exe", "os": "win32"}], - "hook": true, - "id": "1124356692361101492", - "name": "Nex Machina" - }, - { - "executables": [{"is_launcher": false, "name": "infectonator-3-apocalypse/infectonator3.exe", "os": "win32"}], - "hook": true, - "id": "1124356694051401841", - "name": "Infectonator 3: Apocalypse" - }, - { - "executables": [{"is_launcher": false, "name": "kiwi clicker/kiwi clicker.exe", "os": "win32"}], - "hook": true, - "id": "1124356695569748129", - "name": "Kiwi Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "rpg paper maker/rpg paper maker.exe", "os": "win32"}], - "hook": true, - "id": "1124356697360707715", - "name": "RPG Paper Maker" - }, - { - "executables": [{"is_launcher": false, "name": "zup! 5/zup! 5.exe", "os": "win32"}], - "hook": true, - "id": "1124356698883248168", - "name": "Zup! 5" - }, - { - "executables": [ - {"is_launcher": false, "name": "desperados wanted dead or alive/desperados.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356700644851722", - "name": "Desperados - Wanted Dead or Alive" - }, - { - "executables": [{"is_launcher": false, "name": "rc plane 3/rc plane 3.exe", "os": "win32"}], - "hook": true, - "id": "1124356702599401563", - "name": "RC Plane 3" - }, - { - "executables": [{"is_launcher": false, "name": "build/ir.exe", "os": "win32"}], - "hook": true, - "id": "1124356704247754823", - "name": "Interstellar Rift" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mxgp4-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356706089062471", - "name": "MXGP PRO" - }, - { - "executables": [{"is_launcher": false, "name": "oriental empires/oriental empires.exe", "os": "win32"}], - "hook": true, - "id": "1124356707737419878", - "name": "Oriental Empires" - }, - { - "executables": [{"is_launcher": false, "name": "mergecrafter/mergecrafter.exe", "os": "win32"}], - "hook": true, - "id": "1124356709545160774", - "name": "MergeCrafter" - }, - { - "executables": [{"is_launcher": false, "name": "tormented souls/tormentedsouls.exe", "os": "win32"}], - "hook": true, - "id": "1124356711403245568", - "name": "Tormented Souls" - }, - { - "executables": [{"is_launcher": false, "name": "impossible runner/impossible runner.exe", "os": "win32"}], - "hook": true, - "id": "1124356713252925511", - "name": "Impossible Runner" - }, - { - "executables": [{"is_launcher": false, "name": "win64/projectboundarysteam-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356715006148668", - "name": "Boundary" - }, - { - "executables": [{"is_launcher": false, "name": "runningwithriflesdemo/rwr_config.exe", "os": "win32"}], - "hook": true, - "id": "1124356716780343327", - "name": "RUNNING WITH RIFLES Demo" - }, - { - "executables": [{"is_launcher": false, "name": "press any button/pab.exe", "os": "win32"}], - "hook": true, - "id": "1124356718265122886", - "name": "Press Any Button" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mxgp3-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356719963820132", - "name": "MXGP3 - The Official Motocross Videogame" - }, - { - "executables": [{"is_launcher": false, "name": "grow song of the evertree/grow.exe", "os": "win32"}], - "hook": true, - "id": "1124356721595400272", - "name": "Grow: Song of the Evertree" - }, - { - "executables": [{"is_launcher": false, "name": "purefarming/purefarming.exe", "os": "win32"}], - "hook": true, - "id": "1124356723176648744", - "name": "Pure Farming 2018" - }, - { - "executables": [{"is_launcher": false, "name": "kane and lynch dead men/kaneandlynch.exe", "os": "win32"}], - "hook": true, - "id": "1124356724745326632", - "name": "Kane & Lynch: Dead Men" - }, - { - "executables": [{"is_launcher": false, "name": "awol/awol.exe", "os": "win32"}], - "hook": true, - "id": "1124356726431432815", - "name": "A.W.O.L." - }, - { - "executables": [{"is_launcher": false, "name": "win64/dr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356728511811654", - "name": "Last Tide" - }, - { - "executables": [{"is_launcher": false, "name": "electronicsuperjoy2/esj2.exe", "os": "win32"}], - "hook": true, - "id": "1124356730239860939", - "name": "Electronic Super Joy 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/frostfall-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356731846283383", - "name": "Winter Survival: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "darkstory online/darkstory.exe", "os": "win32"}], - "hook": true, - "id": "1124356733582721064", - "name": "DarkStory Online" - }, - { - "executables": [{"is_launcher": false, "name": "coma/bad dream coma.exe", "os": "win32"}], - "hook": true, - "id": "1124356735176552598", - "name": "Bad Dream: Coma" - }, - { - "executables": [{"is_launcher": false, "name": "win64/zookeepersimulator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356736778780724", - "name": "ZooKeeper Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "ys origin/yso_win.exe", "os": "win32"}], - "hook": true, - "id": "1124356738297114684", - "name": "Ys Origin" - }, - { - "executables": [{"is_launcher": false, "name": "american fugitive/americanfugitive.exe", "os": "win32"}], - "hook": true, - "id": "1124356739953873048", - "name": "American Fugitive" - }, - { - "executables": [{"is_launcher": false, "name": "win64/runnerproject-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356741627392131", - "name": "Wild Dive" - }, - { - "executables": [{"is_launcher": false, "name": "granage/client_r.exe", "os": "win32"}], - "hook": true, - "id": "1124356742994722948", - "name": "GranAge" - }, - { - "executables": [{"is_launcher": false, "name": "karryn's prison/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124356744575991889", - "name": "Karryn's Prison" - }, - { - "executables": [{"is_launcher": false, "name": "elderborn/elderborn.exe", "os": "win32"}], - "hook": true, - "id": "1124356746325012642", - "name": "ELDERBORN" - }, - { - "executables": [ - {"is_launcher": false, "name": "hotline miami 2 wrong number digital comic/hlm2comics.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356747948216430", - "name": "Hotline Miami 2: Wrong Number Digital Comic" - }, - { - "executables": [ - {"is_launcher": false, "name": "the backrooms survival/the backrooms survival.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356749521076388", - "name": "The Backrooms: Survival" - }, - { - "executables": [{"is_launcher": false, "name": "railroad tycoon 2 platinum/rt2_plat.exe", "os": "win32"}], - "hook": true, - "id": "1124356751140073502", - "name": "Railroad Tycoon 2: Platinum" - }, - { - "executables": [{"is_launcher": false, "name": "windows64/nimbatusdronecreator.exe", "os": "win32"}], - "hook": true, - "id": "1124356752545173564", - "name": "Nimbatus - Drone Creator" - }, - { - "executables": [{"is_launcher": false, "name": "ak-xolotl demo/ak-xolotl.exe", "os": "win32"}], - "hook": true, - "id": "1124356754017370222", - "name": "AK-xolotl Demo" - }, - { - "executables": [{"is_launcher": false, "name": "sapiens/sapiens.exe", "os": "win32"}], - "hook": true, - "id": "1124356755690901504", - "name": "Sapiens" - }, - { - "executables": [{"is_launcher": false, "name": "bin/protolion.exe", "os": "win32"}], - "hook": true, - "id": "1124356757507026944", - "name": "TROUBLESHOOTER: Abandoned Children" - }, - { - "executables": [{"is_launcher": false, "name": "win64/cepheusprotocol-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356758991818783", - "name": "Cepheus Protocol" - }, - { - "executables": [{"is_launcher": false, "name": "win64/gg2game.exe", "os": "win32"}], - "hook": true, - "id": "1124356760761806878", - "name": "Gal*Gun: Double Peace" - }, - { - "executables": [{"is_launcher": false, "name": "taur/taur.exe", "os": "win32"}], - "hook": true, - "id": "1124356762401787904", - "name": "Taur" - }, - { - "executables": [{"is_launcher": false, "name": "tumblestone/tumblestone.exe", "os": "win32"}], - "hook": true, - "id": "1124356764012392649", - "name": "Tumblestone" - }, - { - "executables": [ - {"is_launcher": false, "name": "innocence or money - prelude/innocenceormoney.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356765723676682", - "name": "Innocence Or Money - Prelude" - }, - { - "executables": [{"is_launcher": false, "name": "dead estate demo/dead estate.exe", "os": "win32"}], - "hook": true, - "id": "1124356767598522439", - "name": "Dead Estate Demo" - }, - { - "executables": [{"is_launcher": false, "name": "paradise cleaning!/cleaner.exe", "os": "win32"}], - "hook": true, - "id": "1124356769032982528", - "name": "Paradise Cleaning!" - }, - { - "executables": [{"is_launcher": false, "name": "phogs! demo/phogs.exe", "os": "win32"}], - "hook": true, - "id": "1124356770610032772", - "name": "PHOGS! Demo" - }, - { - "executables": [{"is_launcher": false, "name": "neptunia u/neptunia.exe", "os": "win32"}], - "hook": true, - "id": "1124356772174512199", - "name": "Hyperdimension Neptunia U: Action Unleashed" - }, - { - "executables": [ - {"is_launcher": false, "name": "little kitty, big city demo/little kitty, big city.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356774238105781", - "name": "Little Kitty, Big City Demo" - }, - { - "aliases": ["Blair Witch"], - "executables": [{"is_launcher": false, "name": "win64/blairwitch-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356775915831326", - "name": "Blair Witch" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mother_simulator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356777752932543", - "name": "Mother Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "imscared/imscared.exe", "os": "win32"}], - "hook": true, - "id": "1124356779480989796", - "name": "IMSCARED" - }, - { - "executables": [{"is_launcher": false, "name": "tinkertown/tinkertown.exe", "os": "win32"}], - "hook": true, - "id": "1124356781284544693", - "name": "Tinkertown" - }, - { - "executables": [{"is_launcher": false, "name": "botanicula/botanicula.exe", "os": "win32"}], - "hook": true, - "id": "1124356782924509355", - "name": "Botanicula" - }, - { - "executables": [{"is_launcher": false, "name": "annomutationem/anno_mutationem.exe", "os": "win32"}], - "hook": true, - "id": "1124356784686125136", - "name": "ANNO: Mutationem Demo" - }, - { - "executables": [{"is_launcher": false, "name": "crea/crea.exe", "os": "win32"}], - "hook": true, - "id": "1124356786493862041", - "name": "Crea" - }, - { - "executables": [{"is_launcher": false, "name": "fausts alptraum/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356788150620160", - "name": "Fausts Alptraum" - }, - { - "executables": [{"is_launcher": false, "name": "gamecraft/gamecraft.exe", "os": "win32"}], - "hook": true, - "id": "1124356793041170462", - "name": "Gamecraft" - }, - { - "executables": [{"is_launcher": false, "name": "syberia 2/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356794848923748", - "name": "Syberia 2" - }, - { - "executables": [{"is_launcher": false, "name": "turbo pug/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356796325314722", - "name": "Turbo Pug" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fictorum-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356798778978384", - "name": "Fictorum" - }, - { - "executables": [{"is_launcher": false, "name": "arx fatalis/arx.exe", "os": "win32"}], - "hook": true, - "id": "1124356800343461949", - "name": "Arx Fatalis" - }, - { - "executables": [{"is_launcher": false, "name": "drift gear/drift gear.exe", "os": "win32"}], - "hook": true, - "id": "1124356802021179593", - "name": "Drift GEAR Racing Free" - }, - { - "executables": [{"is_launcher": false, "name": "a building full of cats/building.exe", "os": "win32"}], - "hook": true, - "id": "1124356803912814682", - "name": "A Building Full of Cats" - }, - { - "executables": [{"is_launcher": false, "name": "orbusvr/vrclient.exe", "os": "win32"}], - "hook": true, - "id": "1124356805523419196", - "name": "OrbusVR" - }, - { - "executables": [ - {"is_launcher": false, "name": "the witcher adventure game/thewitcheradventuregame.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356807159201843", - "name": "The Witcher Adventure Game" - }, - { - "executables": [{"is_launcher": false, "name": "nomad survival/nomad survival.exe", "os": "win32"}], - "hook": true, - "id": "1124356808782393374", - "name": "Nomad Survival" - }, - { - "executables": [{"is_launcher": false, "name": "neverbreakup/neverbreakupbeta.exe", "os": "win32"}], - "hook": true, - "id": "1124356810678222858", - "name": "Never BreakUp Beta" - }, - { - "executables": [{"is_launcher": false, "name": "dlc quest/dlc.exe", "os": "win32"}], - "hook": true, - "id": "1124356812519526500", - "name": "DLC Quest" - }, - { - "executables": [{"is_launcher": false, "name": "arc apellago/arc apellago.exe", "os": "win32"}], - "hook": true, - "id": "1124356814109163660", - "name": "Arc Apellago" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sackboy-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356815690420344", - "name": "Sackboy\u2122: A Big Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "win64/abbeycore_win32_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124356817267474534", - "name": "Renowned Explorers: International Society" - }, - { - "executables": [{"is_launcher": false, "name": "win64/nbaplaygrounds-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356819058438184", - "name": "NBA Playgrounds" - }, - { - "executables": [{"is_launcher": false, "name": "atma/atma_v1.1.3.exe", "os": "win32"}], - "hook": true, - "id": "1124356820622921789", - "name": "Atma" - }, - { - "executables": [{"is_launcher": false, "name": "lakeburg legacies demo/lakeburg legacies.exe", "os": "win32"}], - "hook": true, - "id": "1124356822426464306", - "name": "Lakeburg Legacies Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/stranger-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356825689620641", - "name": "StrangerZ Demo" - }, - { - "executables": [{"is_launcher": false, "name": "idle bouncer/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124356829128962048", - "name": "Idle Bouncer" - }, - { - "executables": [{"is_launcher": false, "name": "ys viii lacrimosa of dana/ys8.exe", "os": "win32"}], - "hook": true, - "id": "1124356832195002439", - "name": "Ys VIII: Lacrimosa of Dana" - }, - { - "executables": [{"is_launcher": false, "name": "river city ransom underground/rcru.exe", "os": "win32"}], - "hook": true, - "id": "1124356837010059265", - "name": "River City Ransom: Underground" - }, - { - "executables": [{"is_launcher": false, "name": "black skylands/blackskylands.exe", "os": "win32"}], - "hook": true, - "id": "1124356838633259078", - "name": "Black Skylands" - }, - { - "executables": [{"is_launcher": false, "name": "motherless - season 1/steam.motherless.exe", "os": "win32"}], - "hook": true, - "id": "1124356840407453747", - "name": "Motherless - Season 1" - }, - { - "executables": [{"is_launcher": false, "name": "drift of the hill/drift of the hill.exe", "os": "win32"}], - "hook": true, - "id": "1124356842307465245", - "name": "Drift Of The Hill" - }, - { - "executables": [{"is_launcher": false, "name": "artist idle/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356843746119750", - "name": "Artist Idle" - }, - { - "executables": [{"is_launcher": false, "name": "tastemaker/tastemaker.exe", "os": "win32"}], - "hook": true, - "id": "1124356845239287878", - "name": "Tastemaker" - }, - { - "executables": [{"is_launcher": false, "name": "win64/submerged-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356847076397056", - "name": "Submerged" - }, - { - "executables": [{"is_launcher": false, "name": "totemori_win64/totemori_win64.exe", "os": "win32"}], - "hook": true, - "id": "1124356848833802391", - "name": "Totemori" - }, - { - "executables": [{"is_launcher": false, "name": "broken ground/brokenground.exe", "os": "win32"}], - "hook": true, - "id": "1124356850603802684", - "name": "Broken Ground" - }, - { - "executables": [ - {"is_launcher": false, "name": "win64/aliensdarkdescentgamesteam-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356852239577128", - "name": "Aliens: Dark Descent" - }, - { - "executables": [{"is_launcher": false, "name": "jar wars/jarwars.exe", "os": "win32"}], - "hook": true, - "id": "1124356854080884796", - "name": "Jar Wars" - }, - { - "executables": [{"is_launcher": false, "name": "boyfriend dungeon/boyfrienddungeon.exe", "os": "win32"}], - "hook": true, - "id": "1124356855880233000", - "name": "Boyfriend Dungeon" - }, - { - "executables": [{"is_launcher": false, "name": "timespinner/timespinner.exe", "os": "win32"}], - "hook": true, - "id": "1124356857813815461", - "name": "Timespinner" - }, - { - "executables": [{"is_launcher": false, "name": "gatekeeper eclipse/gatekeeper eclipse.exe", "os": "win32"}], - "hook": true, - "id": "1124356859625750548", - "name": "Gatekeeper: Eclipse" - }, - { - "executables": [{"is_launcher": false, "name": "alina of the arena/alina of the arena.exe", "os": "win32"}], - "hook": true, - "id": "1124356861349613598", - "name": "Alina of the Arena" - }, - { - "executables": [{"is_launcher": false, "name": "kingdoms/kingdoms.exe", "os": "win32"}], - "hook": true, - "id": "1124356867209052231", - "name": "Kingdoms" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "i am your president prologue/i am your president prologue.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356868920324187", - "name": "I Am Your President: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "tag the power of paint/tag.exe", "os": "win32"}], - "hook": true, - "id": "1124356870447054908", - "name": "Tag: The Power of Paint" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mxgp5-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356872036700210", - "name": "MXGP 2019 - The Official Motocross Videogame" - }, - { - "executables": [{"is_launcher": false, "name": "footsies/footsies.exe", "os": "win32"}], - "hook": true, - "id": "1124356873596977212", - "name": "FOOTSIES" - }, - { - "executables": [{"is_launcher": false, "name": "eldritch/eldritch.exe", "os": "win32"}], - "hook": true, - "id": "1124356875585081414", - "name": "Eldritch" - }, - { - "executables": [ - {"is_launcher": false, "name": "when the past was around/when past was around.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356877204078714", - "name": "When The Past Was Around" - }, - { - "executables": [{"is_launcher": false, "name": "bio prototype/bio prototype.exe", "os": "win32"}], - "hook": true, - "id": "1124356879036993617", - "name": "Bio Prototype" - }, - { - "executables": [{"is_launcher": false, "name": "summer in mara/summer in mara.exe", "os": "win32"}], - "hook": true, - "id": "1124356880655986719", - "name": "Summer in Mara" - }, - { - "executables": [ - {"is_launcher": false, "name": "mosaique neko waifus 2/mosaique neko waifus 2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356882254024734", - "name": "Mosaique Neko Waifus 2" - }, - { - "executables": [{"is_launcher": false, "name": "fos/fos.exe", "os": "win32"}], - "hook": true, - "id": "1124356886389604372", - "name": "FOS" - }, - { - "executables": [{"is_launcher": false, "name": "replica/replica.exe", "os": "win32"}], - "hook": true, - "id": "1124356887983444101", - "name": "Replica" - }, - { - "executables": [{"is_launcher": false, "name": "fruit postal service/fruitpostalservice.exe", "os": "win32"}], - "hook": true, - "id": "1124356889489195170", - "name": "Fruit Postal Service" - }, - { - "executables": [{"is_launcher": false, "name": "over 9000 zombies!/over9000zombies.exe", "os": "win32"}], - "hook": true, - "id": "1124356891120783360", - "name": "Over 9000 Zombies!" - }, - { - "executables": [{"is_launcher": false, "name": "win64/prophunter-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356892676866229", - "name": "PropHunter" - }, - { - "executables": [{"is_launcher": false, "name": "mojo hanako/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356894279094412", - "name": "Mojo: Hanako" - }, - { - "executables": [{"is_launcher": false, "name": "idle wasteland/idle wasteland.exe", "os": "win32"}], - "hook": true, - "id": "1124356895721930904", - "name": "Idle Wasteland" - }, - { - "executables": [{"is_launcher": false, "name": "bootleg/bootleg.exe", "os": "win32"}], - "hook": true, - "id": "1124356897345130516", - "name": "Devolver Bootleg" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vzlom_jopi-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356899031236688", - "name": "\u0412\u0417\u041b\u041e\u041c \u0416\u041e\u041f\u042b" - }, - { - "executables": [{"is_launcher": false, "name": "the swapper/theswapper.exe", "os": "win32"}], - "hook": true, - "id": "1124356900591521955", - "name": "The Swapper" - }, - { - "executables": [{"is_launcher": false, "name": "synthetik 2/synthetik2.exe", "os": "win32"}], - "hook": true, - "id": "1124356902504116224", - "name": "SYNTHETIK 2" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/dp.exe", "os": "win32"}], - "hook": true, - "id": "1124356904316063774", - "name": "Deadpool" - }, - { - "executables": [ - {"is_launcher": false, "name": "old coin pusher friends 2/oldcoinpusherfriends2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356909164670976", - "name": "\u53e4\u92ad\u30d7\u30c3\u30b7\u30e3\u30fc\u30d5\u30ec\u30f3\u30ba\uff12" - }, - { - "executables": [{"is_launcher": false, "name": "bin64/crysis3remastered.exe", "os": "win32"}], - "hook": true, - "id": "1124356910611714108", - "name": "Crysis 3 Remastered" - }, - { - "executables": [ - {"is_launcher": false, "name": "the black masses demo/the black masses demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356912201351188", - "name": "The Black Masses Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/theyarehere-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356913916817418", - "name": "They Are Here Demo" - }, - { - "executables": [{"is_launcher": false, "name": "teleglitchdme/teleglitch.exe", "os": "win32"}], - "hook": true, - "id": "1124356915548405780", - "name": "Teleglitch: Die More Edition" - }, - { - "executables": [{"is_launcher": false, "name": "lollipop!/lollipop!.exe", "os": "win32"}], - "hook": true, - "id": "1124356917121265785", - "name": "LOLLIPOP!" - }, - { - "executables": [{"is_launcher": false, "name": "pro evolution soccer 2018 lite/pes2018.exe", "os": "win32"}], - "hook": true, - "id": "1124356918782218301", - "name": "PRO EVOLUTION SOCCER 2018 LITE" - }, - { - "executables": [{"is_launcher": false, "name": "one way heroics/game.exe", "os": "win32"}], - "hook": true, - "id": "1124356920694812752", - "name": "One Way Heroics" - }, - { - "executables": [{"is_launcher": false, "name": "hellsign/hellsign.exe", "os": "win32"}], - "hook": true, - "id": "1124356922473201804", - "name": "HellSign" - }, - { - "executables": [{"is_launcher": false, "name": "clown house/clownhouse.exe", "os": "win32"}], - "hook": true, - "id": "1124356924268359700", - "name": "Clown House (Palya\u00e7o Evi)" - }, - { - "executables": [ - {"is_launcher": false, "name": "senran kagura burst renewal/skburstrenewal.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356926118051840", - "name": "SENRAN KAGURA Burst Re:Newal" - }, - { - "executables": [{"is_launcher": false, "name": "barro 2020/barro 2020.exe", "os": "win32"}], - "hook": true, - "id": "1124356927707689000", - "name": "Barro 2020" - }, - { - "executables": [{"is_launcher": false, "name": "theexperimentescaperoom/the experiment.exe", "os": "win32"}], - "hook": true, - "id": "1124356929045680209", - "name": "The Experiment: Escape Room" - }, - { - "executables": [{"is_launcher": false, "name": "ruinarch/ruinarch.exe", "os": "win32"}], - "hook": true, - "id": "1124356930601763007", - "name": "Ruinarch" - }, - { - "executables": [{"is_launcher": false, "name": "clickteam fusion 2.5 free edition/mmf2u.exe", "os": "win32"}], - "hook": true, - "id": "1124356932208185474", - "name": "Clickteam Fusion 2.5 Free Edition" - }, - { - "executables": [{"is_launcher": false, "name": "rustler/rustler.exe", "os": "win32"}], - "hook": true, - "id": "1124356933705547856", - "name": "Rustler" - }, - { - "executables": [{"is_launcher": false, "name": "bin/shank2.exe", "os": "win32"}], - "hook": true, - "id": "1124356935702032514", - "name": "Shank 2" - }, - { - "executables": [{"is_launcher": false, "name": "convoy/convoy.exe", "os": "win32"}], - "hook": true, - "id": "1124356937417511082", - "name": "Convoy" - }, - { - "executables": [{"is_launcher": false, "name": "night delivery/nightdelivery.exe", "os": "win32"}], - "hook": true, - "id": "1124356939132977213", - "name": "Night Delivery | \u4f8b\u5916\u914d\u9054" - }, - { - "executables": [{"is_launcher": false, "name": "win64/galgun2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356940726808586", - "name": "Gal*Gun 2" - }, - { - "executables": [{"is_launcher": false, "name": "evil_tag/evil_tag.exe", "os": "win32"}], - "hook": true, - "id": "1124356942417121300", - "name": "Evil Tag" - }, - { - "executables": [{"is_launcher": false, "name": "win64/duoexplore-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356944124199023", - "name": "Malum" - }, - { - "executables": [{"is_launcher": false, "name": "kingspray graffiti/kingspray.exe", "os": "win32"}], - "hook": true, - "id": "1124356945881616534", - "name": "Kingspray Graffiti" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vikingoyunu-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356947441889430", - "name": "Land of the Vikings" - }, - { - "executables": [{"is_launcher": false, "name": "suspects/suspects.exe", "os": "win32"}], - "hook": true, - "id": "1124356949073477704", - "name": "Suspects: Mystery Mansion" - }, - { - "executables": [{"is_launcher": false, "name": "museswipr/museswipr.exe", "os": "win32"}], - "hook": true, - "id": "1124356950524702821", - "name": "MuseSwipr" - }, - { - "executables": [{"is_launcher": false, "name": "receiver 2/receiver2.exe", "os": "win32"}], - "hook": true, - "id": "1124356952152096778", - "name": "Receiver 2" - }, - { - "executables": [{"is_launcher": false, "name": "hellevatorbuild/hellevator.exe", "os": "win32"}], - "hook": true, - "id": "1124356955276853359", - "name": "Hellevator" - }, - { - "executables": [{"is_launcher": false, "name": "pets hotel prologue/pets hotel.exe", "os": "win32"}], - "hook": true, - "id": "1124356956967161888", - "name": "Pets Hotel: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "old man's journey/old mans journey.exe", "os": "win32"}], - "hook": true, - "id": "1124356958531633282", - "name": "Old Man's Journey" - }, - { - "executables": [ - {"is_launcher": false, "name": "dinosaur hunt africa contract/dinosaurhunterwin.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356960163213432", - "name": "Dinosaur Hunt" - }, - { - "executables": [{"is_launcher": false, "name": "half-life restored/restored.exe", "os": "win32"}], - "hook": true, - "id": "1124356961794801735", - "name": "Half-Life: Restored" - }, - { - "executables": [{"is_launcher": false, "name": "hbdie the nonce 2/hbdie the nonce 2.exe", "os": "win32"}], - "hook": true, - "id": "1124356963367669830", - "name": "HBDIE: The Nonce 2" - }, - { - "executables": [{"is_launcher": false, "name": "monster camp demo/monstercampdemo.exe", "os": "win32"}], - "hook": true, - "id": "1124356965464813578", - "name": "Monster Prom 2: Monster Camp Demo" - }, - { - "executables": [{"is_launcher": false, "name": "commander keen/base1/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124356967209652224", - "name": "Commander Keen Complete Pack" - }, - { - "executables": [{"is_launcher": false, "name": "narcissu2/narci2.exe", "os": "win32"}], - "hook": true, - "id": "1124356968707014677", - "name": "Narcissu 1st & 2nd" - }, - { - "executables": [{"is_launcher": false, "name": "electrician simulator/electrician.exe", "os": "win32"}], - "hook": true, - "id": "1124356970372149428", - "name": "Electrician Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "the dummy experiment/thedummyexperiment.exe", "os": "win32"}], - "hook": true, - "id": "1124356971840163840", - "name": "The Dummy Experiment" - }, - { - "executables": [{"is_launcher": false, "name": "until we die/until we die.exe", "os": "win32"}], - "hook": true, - "id": "1124356973425602631", - "name": "Until We Die" - }, - { - "executables": [ - {"is_launcher": false, "name": "incremental epic hero 2/incremental epic hero 2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124356975166242936", - "name": "Incremental Epic Hero 2" - }, - { - "executables": [{"is_launcher": false, "name": "sam & max save the world/sammax100.exe", "os": "win32"}], - "hook": true, - "id": "1124356976806219836", - "name": "Sam & Max Save the World" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "chernobyl liquidators simulator demo/chernobyl liquidators simulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356978798505994", - "name": "Chernobyl Liquidators Simulator Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/jivana-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356980295880704", - "name": "Jivana" - }, - { - "executables": [{"is_launcher": false, "name": "half minute hero/hmh.exe", "os": "win32"}], - "hook": true, - "id": "1124356981906485349", - "name": "Half Minute Hero: Super Mega Neo Climax Ultimate Boy" - }, - { - "executables": [{"is_launcher": false, "name": "win64/einar-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124356983580016671", - "name": "Einar" - }, - { - "executables": [{"is_launcher": false, "name": "zero idle/zeroidle.exe", "os": "win32"}], - "hook": true, - "id": "1124356985278705748", - "name": "Zero IDLE" - }, - { - "executables": [{"is_launcher": false, "name": "bin/supertux2.exe", "os": "win32"}], - "hook": true, - "id": "1124356986910294196", - "name": "SuperTux" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the escapists the walking dead/the escapists - the walking dead.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124356989540126782", - "name": "The Escapists: The Walking Dead" - }, - { - "executables": [{"is_launcher": false, "name": "zombotron/zombotron.exe", "os": "win32"}], - "hook": true, - "id": "1124356991356256366", - "name": "Zombotron" - }, - { - "executables": [{"is_launcher": false, "name": "eternal battlefield/legion.exe", "os": "win32"}], - "hook": true, - "id": "1124356993017196624", - "name": "Eternal Battlefield" - }, - { - "executables": [{"is_launcher": false, "name": "win64/etherealestate.exe", "os": "win32"}], - "hook": true, - "id": "1124356994619424799", - "name": "Ethereal Estate" - }, - { - "executables": [{"is_launcher": false, "name": "rungore beginner experience/rungore.exe", "os": "win32"}], - "hook": true, - "id": "1124356996213256253", - "name": "RUNGORE: Beginner Experience" - }, - { - "executables": [{"is_launcher": false, "name": "valfaris/valfaris.exe", "os": "win32"}], - "hook": true, - "id": "1124356998041976913", - "name": "Valfaris" - }, - { - "executables": [{"is_launcher": false, "name": "minoria/minoria.exe", "os": "win32"}], - "hook": true, - "id": "1124356999946195044", - "name": "Minoria" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the life and suffering of sir brante prologue/brante_demo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357001678438522", - "name": "The Life and Suffering of Sir Brante \u2014 Chapter 1&2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/anacrusis-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357003142246552", - "name": "The Anacrusis" - }, - { - "executables": [{"is_launcher": false, "name": "football manager touch 2018/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124357004828360785", - "name": "Football Manager Touch 2018" - }, - { - "executables": [{"is_launcher": false, "name": "insoundmind/in sound mind.exe", "os": "win32"}], - "hook": true, - "id": "1124357006355083294", - "name": "In Sound Mind" - }, - { - "executables": [{"is_launcher": false, "name": "yu crossing animals/yu crossing animals.exe", "os": "win32"}], - "hook": true, - "id": "1124357008049590452", - "name": "Yu Crossing Animals" - }, - { - "executables": [{"is_launcher": false, "name": "hell yeah/hellyeah.exe", "os": "win32"}], - "hook": true, - "id": "1124357009731498074", - "name": "Hell Yeah!" - }, - { - "executables": [{"is_launcher": false, "name": "dead effect 2/deadeffect2.exe", "os": "win32"}], - "hook": true, - "id": "1124357011858014321", - "name": "Dead Effect 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "monster hunter stories 2 trial version/installermessage.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357013686734999", - "name": "Monster Hunter Stories 2: Wings of Ruin Trial Version" - }, - { - "executables": [{"is_launcher": false, "name": "solar 2/solar2.exe", "os": "win32"}], - "hook": true, - "id": "1124357015431561318", - "name": "Solar 2" - }, - { - "executables": [{"is_launcher": false, "name": "voxeltycoon/voxeltycoon.exe", "os": "win32"}], - "hook": true, - "id": "1124357017008615494", - "name": "Voxel Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "amazing frog v3/amazingfrog.exe", "os": "win32"}], - "hook": true, - "id": "1124357018577289216", - "name": "Amazing Frog ? V3" - }, - { - "executables": [{"is_launcher": false, "name": "impostor factory/impostorfactory.exe", "os": "win32"}], - "hook": true, - "id": "1124357020087234681", - "name": "Impostor Factory" - }, - { - "executables": [{"is_launcher": false, "name": "oasis/oasis.exe", "os": "win32"}], - "hook": true, - "id": "1124357021664301187", - "name": "Oasis VR" - }, - { - "executables": [{"is_launcher": false, "name": "engine evolution/engine evolution.exe", "os": "win32"}], - "hook": true, - "id": "1124357023476232202", - "name": "Engine Evolution" - }, - { - "executables": [{"is_launcher": false, "name": "the political process/thepoliticalprocess.exe", "os": "win32"}], - "hook": true, - "id": "1124357024973606973", - "name": "The Political Process" - }, - { - "executables": [{"is_launcher": false, "name": "win64/rad.exe", "os": "win32"}], - "hook": true, - "id": "1124357026731012167", - "name": "RAD" - }, - { - "executables": [{"is_launcher": false, "name": "compound/compound.exe", "os": "win32"}], - "hook": true, - "id": "1124357028454879403", - "name": "COMPOUND" - }, - { - "executables": [{"is_launcher": false, "name": "win64/borderlands2vr.exe", "os": "win32"}], - "hook": true, - "id": "1124357030610743306", - "name": "Borderlands 2 VR" - }, - { - "executables": [{"is_launcher": false, "name": "black skylands origins/blackskylands.exe", "os": "win32"}], - "hook": true, - "id": "1124357032334610542", - "name": "Black Skylands: Origins" - }, - { - "executables": [{"is_launcher": false, "name": "win64/punishingjumpergame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357033827778711", - "name": "Bouncy Goat Climb" - }, - { - "executables": [{"is_launcher": false, "name": "jet island/jetisland.exe", "os": "win32"}], - "hook": true, - "id": "1124357035635527761", - "name": "Jet Island" - }, - { - "executables": [{"is_launcher": false, "name": "wild animal racing/wild animal racing.exe", "os": "win32"}], - "hook": true, - "id": "1124357037262913546", - "name": "Wild Animal Racing" - }, - { - "executables": [{"is_launcher": false, "name": "crying suns demo/cs.exe", "os": "win32"}], - "hook": true, - "id": "1124357038789636127", - "name": "Crying Suns Demo" - }, - { - "executables": [{"is_launcher": false, "name": "ssss/ssss.exe", "os": "win32"}], - "hook": true, - "id": "1124357040702246982", - "name": "Saint Seiya: Soldiers' Soul" - }, - { - "executables": [{"is_launcher": false, "name": "mist legacy/mist legacy.exe", "os": "win32"}], - "hook": true, - "id": "1124357042358992986", - "name": "Mist Legacy" - }, - { - "executables": [{"is_launcher": false, "name": "not a hero/not a hero.exe", "os": "win32"}], - "hook": true, - "id": "1124357044263211128", - "name": "NOT A HERO" - }, - { - "executables": [{"is_launcher": false, "name": "boobs saga/boobs saga.exe", "os": "win32"}], - "hook": true, - "id": "1124357045823488140", - "name": "BOOBS SAGA: Prepare To Hentai Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "night of the full moon/night of the full moon.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357047480242266", - "name": "Night of the Full Moon" - }, - { - "executables": [{"is_launcher": false, "name": "ash of gods redemption/terminus.exe", "os": "win32"}], - "hook": true, - "id": "1124357049304756234", - "name": "Ash of Gods: Redemption" - }, - { - "executables": [{"is_launcher": false, "name": "win64/toysworkshop-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357050906988655", - "name": "Smart Factory Tycoon: Beginnings" - }, - { - "executables": [{"is_launcher": false, "name": "playavr/playavr.exe", "os": "win32"}], - "hook": true, - "id": "1124357052286910584", - "name": "PLAY'A VR Video Player" - }, - { - "executables": [{"is_launcher": false, "name": "theblu/theblu.exe", "os": "win32"}], - "hook": true, - "id": "1124357054438592613", - "name": "theBlu" - }, - { - "executables": [{"is_launcher": false, "name": "through the ages/throughtheages_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124357056107921408", - "name": "Through the Ages" - }, - { - "executables": [{"is_launcher": false, "name": "kitty ball/kitty ball.exe", "os": "win32"}], - "hook": true, - "id": "1124357058096025741", - "name": "Kitty Ball" - }, - { - "executables": [{"is_launcher": false, "name": "king's bounty - the legend/kb.exe", "os": "win32"}], - "hook": true, - "id": "1124357059790516264", - "name": "King's Bounty: The Legend" - }, - { - "executables": [{"is_launcher": false, "name": "sword of the necromancer - prologue/sotn.exe", "os": "win32"}], - "hook": true, - "id": "1124357061375971479", - "name": "Sword of the Necromancer - Prologue" - }, - { - "executables": [ - {"is_launcher": false, "name": "blackout z slaughterhouse edition/blackout z.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357063032713329", - "name": "Blackout Z: Slaughterhouse Edition" - }, - { - "executables": [{"is_launcher": false, "name": "splitsecond/splitsecond.exe", "os": "win32"}], - "hook": true, - "id": "1124357064999845989", - "name": "Split/Second" - }, - { - "executables": [{"is_launcher": false, "name": "gloria victis siege/siegesurvival.exe", "os": "win32"}], - "hook": true, - "id": "1124357066631426139", - "name": "Siege Survival: Gloria Victis" - }, - { - "executables": [{"is_launcher": false, "name": "neurovoider/neurovoider.exe", "os": "win32"}], - "hook": true, - "id": "1124357068225269830", - "name": "NeuroVoider" - }, - { - "executables": [{"is_launcher": false, "name": "win64/liquidatortest-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357069936541747", - "name": "Liquidators" - }, - { - "executables": [{"is_launcher": false, "name": "observation/observation.exe", "os": "win32"}], - "hook": true, - "id": "1124357071832371240", - "name": "Observation" - }, - { - "executables": [{"is_launcher": false, "name": "boxvr/boxvr.exe", "os": "win32"}], - "hook": true, - "id": "1124357073510088744", - "name": "BOXVR" - }, - { - "executables": [{"is_launcher": false, "name": "luciusii/luciusii.exe", "os": "win32"}], - "hook": true, - "id": "1124357075326226562", - "name": "Lucius II" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/twfc.exe", "os": "win32"}], - "hook": true, - "id": "1124357076852949074", - "name": "Transformers: War for Cybertron" - }, - { - "executables": [{"is_launcher": false, "name": "battlestick/battlestick.exe", "os": "win32"}], - "hook": true, - "id": "1124357078228676740", - "name": "BattleStick" - }, - { - "executables": [{"is_launcher": false, "name": "uberstrike/uberstrike.exe", "os": "win32"}], - "hook": true, - "id": "1124357080158060584", - "name": "UberStrike" - }, - { - "executables": [ - {"is_launcher": false, "name": "deep space waifu nekomimi/deep space waifu nekomimi.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357081974198372", - "name": "DEEP SPACE WAIFU: NEKOMIMI" - }, - { - "executables": [ - {"is_launcher": false, "name": "just a humble swordsmith/just a humble swordsmith.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357083534475294", - "name": "Just A Humble Swordsmith" - }, - { - "executables": [{"is_launcher": false, "name": "homewind/home wind.exe", "os": "win32"}], - "hook": true, - "id": "1124357085203812443", - "name": "HomeWind" - }, - { - "executables": [{"is_launcher": false, "name": "aground/aground.exe", "os": "win32"}], - "hook": true, - "id": "1124357087166742539", - "name": "Aground" - }, - { - "executables": [{"is_launcher": false, "name": "durka simulator/durkasimulator.exe", "os": "win32"}], - "hook": true, - "id": "1124357088987066368", - "name": "Durka Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "halospartanstrike/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357091042279555", - "name": "Halo: Spartan Strike" - }, - { - "executables": [{"is_launcher": false, "name": "nobody/nobody.exe", "os": "win32"}], - "hook": true, - "id": "1124357092938100877", - "name": "Nobody - The Turnaround Demo" - }, - { - "executables": [{"is_launcher": false, "name": "munchkin digital/munchkin.exe", "os": "win32"}], - "hook": true, - "id": "1124357094791987241", - "name": "Munchkin Digital" - }, - { - "executables": [{"is_launcher": false, "name": "thecatlady/thecatlady.exe", "os": "win32"}], - "hook": true, - "id": "1124357096163520652", - "name": "The Cat Lady" - }, - { - "executables": [{"is_launcher": false, "name": "myworld/myworld.exe", "os": "win32"}], - "hook": true, - "id": "1124357097816084630", - "name": "RPG World - Action RPG Maker" - }, - { - "executables": [{"is_launcher": false, "name": "particle fleet emergence/particlefleet.exe", "os": "win32"}], - "hook": true, - "id": "1124357099699318841", - "name": "Particle Fleet: Emergence" - }, - { - "executables": [{"is_launcher": false, "name": "dragon marked for death/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357101565792516", - "name": "Dragon Marked For Death" - }, - { - "executables": [{"is_launcher": false, "name": "swarmlake/swarmlake.exe", "os": "win32"}], - "hook": true, - "id": "1124357104371777536", - "name": "Swarmlake" - }, - { - "executables": [{"is_launcher": false, "name": "super mega baseball 2/supermegabaseball.exe", "os": "win32"}], - "hook": true, - "id": "1124357106242429028", - "name": "Super Mega Baseball 2" - }, - { - "executables": [{"is_launcher": false, "name": "the way of life/thewayoflifedemowindows.exe", "os": "win32"}], - "hook": true, - "id": "1124357107894992966", - "name": "The Way of Life Free Edition" - }, - { - "executables": [{"is_launcher": false, "name": "binary domain/binarydomainconfiguration.exe", "os": "win32"}], - "hook": true, - "id": "1124357109442687016", - "name": "Binary Domain" - }, - { - "executables": [{"is_launcher": false, "name": "gun/gun.exe", "os": "win32"}], - "hook": true, - "id": "1124357111086862387", - "name": "GUN" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the king of fighters'98 ultimate match/kingoffighters98um_x64.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357113007845426", - "name": "THE KING OF FIGHTERS '98 ULTIMATE MATCH FINAL EDITION" - }, - { - "executables": [{"is_launcher": false, "name": "witch hunt/witch_hunt.exe", "os": "win32"}], - "hook": true, - "id": "1124357114656215100", - "name": "Witch Hunt" - }, - { - "executables": [{"is_launcher": false, "name": "robocraft royale/robocraftroyale.exe", "os": "win32"}], - "hook": true, - "id": "1124357116283596861", - "name": "Robocraft Royale" - }, - { - "executables": [{"is_launcher": false, "name": "simmiland/simmiland.exe", "os": "win32"}], - "hook": true, - "id": "1124357117843886131", - "name": "Simmiland" - }, - { - "executables": [{"is_launcher": false, "name": "inversus/inversus.exe", "os": "win32"}], - "hook": true, - "id": "1124357119311888505", - "name": "INVERSUS Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "deathcoming/xdeath.exe", "os": "win32"}], - "hook": true, - "id": "1124357121178345592", - "name": "DeathComing" - }, - { - "executables": [{"is_launcher": false, "name": "tokyo xanadu ex+/tokyoxanadu.exe", "os": "win32"}], - "hook": true, - "id": "1124357122935771267", - "name": "Tokyo Xanadu eX+" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the disappearing of gensokyo/the disappearing of gensokyo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357124554768385", - "name": "\u6c38\u9060\u6d88\u5931\u7684\u5e7b\u60f3\u9109 \uff5e The Disappearing of Gensokyo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/aperion-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357126144413787", - "name": "Godfall" - }, - { - "executables": [{"is_launcher": false, "name": "will glow the wisp/will glow the wisp.exe", "os": "win32"}], - "hook": true, - "id": "1124357128161865841", - "name": "Will Glow the Wisp" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hideandseek-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357130410016858", - "name": "Hide vs. Seek" - }, - { - "executables": [ - {"is_launcher": false, "name": "occupy mars the game demo/occupymars-prolog.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357131991273522", - "name": "Occupy Mars: The Game Demo" - }, - { - "executables": [{"is_launcher": false, "name": "hentaigirlkaren/hentaigirlkaren.exe", "os": "win32"}], - "hook": true, - "id": "1124357133526384761", - "name": "Hentai Girl Karen" - }, - { - "executables": [ - {"is_launcher": false, "name": "madness project nexus demo/madness project nexus demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357135753564170", - "name": "MADNESS: Project Nexus Demo" - }, - { - "executables": [{"is_launcher": false, "name": "project rtd/rtd.exe", "os": "win32"}], - "hook": true, - "id": "1124357137640996894", - "name": "\ud504\ub85c\uc81d\ud2b8 \ub79c\ud0c0\ub514: \uba40\ud2f0 \ub300\uc804 \ub514\ud39c\uc2a4" - }, - { - "executables": [{"is_launcher": false, "name": "win64/omammouth_unreal-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357139427774605", - "name": "The Odyssey of the Mammoth" - }, - { - "executables": [{"is_launcher": false, "name": "ynab 4/ynab 4.exe", "os": "win32"}], - "hook": true, - "id": "1124357141009018982", - "name": "You Need A Budget 4 (YNAB)" - }, - { - "executables": [{"is_launcher": false, "name": "ironwolf/iw.exe", "os": "win32"}], - "hook": true, - "id": "1124357142779019334", - "name": "IronWolf VR" - }, - { - "executables": [{"is_launcher": false, "name": "otaku project/lovedelivery.exe", "os": "win32"}], - "hook": true, - "id": "1124357144532242472", - "name": "\ub7ec\ube0c \ub51c\ub9ac\ubc84\ub9ac" - }, - { - "executables": [{"is_launcher": false, "name": "mdc/mdc.exe", "os": "win32"}], - "hook": true, - "id": "1124357146159624312", - "name": "Mineirinho Director's Cut" - }, - { - "executables": [{"is_launcher": false, "name": "the room vr/theroomvr.exe", "os": "win32"}], - "hook": true, - "id": "1124357147812184064", - "name": "The Room VR: A Dark Matter" - }, - { - "executables": [{"is_launcher": false, "name": "call to exist/call to exist.exe", "os": "win32"}], - "hook": true, - "id": "1124357149552816218", - "name": "TOKYO GHOUL\uff1are [CALL to EXIST]" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sao utils.exe", "os": "win32"}], - "hook": true, - "id": "1124357151889051728", - "name": "SAO Utils 2: Progressive" - }, - { - "executables": [{"is_launcher": false, "name": "win64/supercross-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357153612902460", - "name": "Monster Energy Supercross - The Official Videogame" - }, - { - "executables": [{"is_launcher": false, "name": "kitaria fables/kitaria fables.exe", "os": "win32"}], - "hook": true, - "id": "1124357155269660742", - "name": "Kitaria Fables" - }, - { - "executables": [{"is_launcher": false, "name": "pro cycling manager 2019/pcm64.exe", "os": "win32"}], - "hook": true, - "id": "1124357159799500881", - "name": "Pro Cycling Manager 2019" - }, - { - "executables": [{"is_launcher": false, "name": "bin/carmageddon_max_damage.exe", "os": "win32"}], - "hook": true, - "id": "1124357161393344512", - "name": "Carmageddon: Max Damage" - }, - { - "executables": [{"is_launcher": false, "name": "high hell/highhell.exe", "os": "win32"}], - "hook": true, - "id": "1124357164115439626", - "name": "High Hell" - }, - { - "executables": [{"is_launcher": false, "name": "media/judgment.exe", "os": "win32"}], - "hook": true, - "id": "1124357165642174514", - "name": "Judgment" - }, - { - "executables": [{"is_launcher": false, "name": "the little red lie/the little red lie.exe", "os": "win32"}], - "hook": true, - "id": "1124357167319892090", - "name": "The Little Red Lie" - }, - { - "executables": [{"is_launcher": false, "name": "princess remedy/remedy_gm7.exe", "os": "win32"}], - "hook": true, - "id": "1124357169194749992", - "name": "Princess Remedy in a World of Hurt" - }, - { - "executables": [{"is_launcher": false, "name": "eternal winter/arctico.exe", "os": "win32"}], - "hook": true, - "id": "1124357170851495965", - "name": "Arctico" - }, - { - "executables": [{"is_launcher": false, "name": "fallen aces demo/fallen aces demo.exe", "os": "win32"}], - "hook": true, - "id": "1124357172634079355", - "name": "Fallen Aces Demo" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/friendshipwithbenefits.exe", "os": "win32"}], - "hook": true, - "id": "1124357174248878090", - "name": "Friendship with Benefits" - }, - { - "executables": [{"is_launcher": false, "name": "64bit/nolimits2stm.exe", "os": "win32"}], - "hook": true, - "id": "1124357175934992484", - "name": "NoLimits 2 Roller Coaster Simulation" - }, - { - "executables": [{"is_launcher": false, "name": "degrees of separation/dofs.exe", "os": "win32"}], - "hook": true, - "id": "1124357177914708110", - "name": "Degrees of Separation" - }, - { - "executables": [{"is_launcher": false, "name": "backtobed/backtobed.exe", "os": "win32"}], - "hook": true, - "id": "1124357179860860978", - "name": "Back to Bed" - }, - { - "executables": [{"is_launcher": false, "name": "master of orion 2/dosbox/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124357181475659886", - "name": "Master of Orion 2" - }, - { - "executables": [{"is_launcher": false, "name": "price/price.exe", "os": "win32"}], - "hook": true, - "id": "1124357183165976657", - "name": "PRICE" - }, - { - "executables": [{"is_launcher": false, "name": "grid legends/gridlegends.exe", "os": "win32"}], - "hook": true, - "id": "1124357184910798918", - "name": "GRID Legends" - }, - { - "executables": [{"is_launcher": false, "name": "bin64/gujianol.exe", "os": "win32"}], - "hook": true, - "id": "1124357186953433108", - "name": "Swords of Legends Online" - }, - { - "executables": [{"is_launcher": false, "name": "coppercube 6/coppercube.exe", "os": "win32"}], - "hook": true, - "id": "1124357188744392817", - "name": "CopperCube 6 Game Engine" - }, - { - "executables": [ - {"is_launcher": false, "name": "win64/totalconflictresistance-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357190506004612", - "name": "Total Conflict: Resistance Demo" - }, - { - "executables": [{"is_launcher": false, "name": "trimmer tycoon/trimmer.exe", "os": "win32"}], - "hook": true, - "id": "1124357192238256189", - "name": "Trimmer Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "sword x hime/sword_hime.exe", "os": "win32"}], - "hook": true, - "id": "1124357193874026577", - "name": "Sword x Hime" - }, - { - "executables": [{"is_launcher": false, "name": "bin/syrianwarfare.exe", "os": "win32"}], - "hook": true, - "id": "1124357195484643388", - "name": "Syrian Warfare" - }, - { - "executables": [{"is_launcher": false, "name": "eastside hockey manager/ehm.exe", "os": "win32"}], - "hook": true, - "id": "1124357197086863410", - "name": "Eastside Hockey Manager" - }, - { - "executables": [{"is_launcher": false, "name": "god awe-full clicker/gac.exe", "os": "win32"}], - "hook": true, - "id": "1124357198701678592", - "name": "God Awe-full Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "star wars - rebellion/rebexe.exe", "os": "win32"}], - "hook": true, - "id": "1124357200417140817", - "name": "STAR WARS\u2122 Rebellion" - }, - { - "executables": [{"is_launcher": false, "name": "metal slug 2/mslug2.exe", "os": "win32"}], - "hook": true, - "id": "1124357202036150412", - "name": "METAL SLUG 2" - }, - { - "executables": [{"is_launcher": false, "name": "age of decadence/aod64.exe", "os": "win32"}], - "hook": true, - "id": "1124357203768393789", - "name": "The Age of Decadence" - }, - { - "executables": [{"is_launcher": false, "name": "sexyairlines/sexyairlines.exe", "os": "win32"}], - "hook": true, - "id": "1124357205450305536", - "name": "Sexy Airlines" - }, - { - "executables": [{"is_launcher": false, "name": "fortress forever/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124357207094476900", - "name": "Fortress Forever" - }, - { - "executables": [{"is_launcher": false, "name": "huntdown/huntdown.exe", "os": "win32"}], - "hook": true, - "id": "1124357208986112260", - "name": "Huntdown" - }, - { - "executables": [{"is_launcher": false, "name": "deathtrap/deathtrap_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124357210764492871", - "name": "Deathtrap" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mid-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357212773560381", - "name": "Martha Is Dead" - }, - { - "executables": [{"is_launcher": false, "name": "scott pilgrim vs the world/scott.exe", "os": "win32"}], - "hook": true, - "id": "1124357214551953408", - "name": "Scott Pilgrim vs The World" - }, - { - "executables": [{"is_launcher": false, "name": "isles of limbo/islesoflimbo.exe", "os": "win32"}], - "hook": true, - "id": "1124357216514879590", - "name": "Isles of Limbo" - }, - { - "executables": [{"is_launcher": false, "name": "win/kingsquest.exe", "os": "win32"}], - "hook": true, - "id": "1124357218289074187", - "name": "King's Quest" - }, - { - "executables": [{"is_launcher": false, "name": "shortest trip to earth/st earth.exe", "os": "win32"}], - "hook": true, - "id": "1124357219874517082", - "name": "Shortest Trip to Earth" - }, - { - "executables": [{"is_launcher": false, "name": "belko vr/belkovr.exe", "os": "win32"}], - "hook": true, - "id": "1124357221631934554", - "name": "Belko VR: An Escape Room Experiment" - }, - { - "executables": [{"is_launcher": false, "name": "win64/modandplay-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357223347408957", - "name": "Mod and Play" - }, - { - "executables": [{"is_launcher": false, "name": "conflict_desert_storm/desertstorm.exe", "os": "win32"}], - "hook": true, - "id": "1124357225184505886", - "name": "Conflict Desert Storm" - }, - { - "executables": [{"is_launcher": false, "name": "dark devotion/darkdevotion.exe", "os": "win32"}], - "hook": true, - "id": "1124357226971283516", - "name": "Dark Devotion" - }, - { - "executables": [{"is_launcher": false, "name": "infraspace/infraspace.exe", "os": "win32"}], - "hook": true, - "id": "1124357228573503518", - "name": "InfraSpace" - }, - { - "executables": [{"is_launcher": false, "name": "warhammer 40000 sanctus reach/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124357230238646422", - "name": "Warhammer 40,000: Sanctus Reach" - }, - { - "executables": [{"is_launcher": false, "name": "bin64/crysis2remastered.exe", "os": "win32"}], - "hook": true, - "id": "1124357231807311943", - "name": "Crysis 2 Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "pine/pine.exe", "os": "win32"}], - "hook": true, - "id": "1124357233438904360", - "name": "Pine" - }, - { - "executables": [{"is_launcher": false, "name": "warplanes ww1 sky aces/ww1.exe", "os": "win32"}], - "hook": true, - "id": "1124357235326337094", - "name": "Warplanes: WW1 Sky Aces" - }, - { - "executables": [{"is_launcher": false, "name": "barro f/barro f.exe", "os": "win32"}], - "hook": true, - "id": "1124357237150855269", - "name": "Barro F" - }, - { - "executables": [{"is_launcher": false, "name": "resident evil reverse beta/reverse.exe", "os": "win32"}], - "hook": true, - "id": "1124357238602092614", - "name": "Resident Evil Re:Verse Beta" - }, - { - "executables": [{"is_launcher": false, "name": "dawn of fantasy/dof.exe", "os": "win32"}], - "hook": true, - "id": "1124357240271421480", - "name": "Kingdom Wars" - }, - { - "executables": [{"is_launcher": false, "name": "pro 11/pro11.exe", "os": "win32"}], - "hook": true, - "id": "1124357241894613102", - "name": "Pro 11" - }, - { - "executables": [{"is_launcher": false, "name": "thecave/cave.exe", "os": "win32"}], - "hook": true, - "id": "1124357243652034590", - "name": "The Cave" - }, - { - "executables": [{"is_launcher": false, "name": "driver booster/driverbooster.exe", "os": "win32"}], - "hook": true, - "id": "1124357245178757211", - "name": "Driver Booster 3 for STEAM" - }, - { - "executables": [{"is_launcher": false, "name": "win64/doggonehungry-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357246416072824", - "name": "Doggone Hungry" - }, - { - "executables": [{"is_launcher": false, "name": "rutonychat/rutonychat.exe", "os": "win32"}], - "hook": true, - "id": "1124357248173490317", - "name": "RutonyChat" - }, - { - "executables": [{"is_launcher": false, "name": "ubermosh/ubermosh.exe", "os": "win32"}], - "hook": true, - "id": "1124357249842827354", - "name": "UBERMOSH" - }, - { - "executables": [{"is_launcher": false, "name": "rollerdrome/rollerdrome.exe", "os": "win32"}], - "hook": true, - "id": "1124357251365355671", - "name": "Rollerdrome" - }, - { - "executables": [{"is_launcher": false, "name": "binaries/singularity.exe", "os": "win32"}], - "hook": true, - "id": "1124357253030490162", - "name": "Singularity" - }, - { - "executables": [{"is_launcher": false, "name": "wrc 8 fia world rally championship/wrc8.exe", "os": "win32"}], - "hook": true, - "id": "1124357254695637183", - "name": "WRC 8 FIA World Rally Championship" - }, - { - "executables": [ - {"is_launcher": false, "name": "cuckold simulator life as a beta male/cuckoldsimulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357256008450188", - "name": "CUCKOLD SIMULATOR: Life as a Beta Male Cuck" - }, - { - "executables": [{"is_launcher": false, "name": "it steals/it steals.exe", "os": "win32"}], - "hook": true, - "id": "1124357257640038450", - "name": "It Steals" - }, - { - "executables": [{"is_launcher": false, "name": "bin/sniperelitev2.exe", "os": "win32"}], - "hook": true, - "id": "1124357259338723358", - "name": "Sniper Elite V2" - }, - { - "executables": [{"is_launcher": false, "name": "ride - game/ridex64.exe", "os": "win32"}], - "hook": true, - "id": "1124357261175836717", - "name": "RIDE: Game" - }, - { - "executables": [{"is_launcher": false, "name": "warsaw/warsaw.exe", "os": "win32"}], - "hook": true, - "id": "1124357262736113804", - "name": "WARSAW" - }, - { - "executables": [{"is_launcher": false, "name": "blood bowl chaos edition/bb_chaos.exe", "os": "win32"}], - "hook": true, - "id": "1124357264426414160", - "name": "Blood Bowl: Chaos Edition" - }, - { - "executables": [{"is_launcher": false, "name": "coffee talk demo/coffeetalk.exe", "os": "win32"}], - "hook": true, - "id": "1124357266062196786", - "name": "Coffee Talk Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "fairy fencer f advent dark force/fairyfencerad.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357267697971260", - "name": "Fairy Fencer F Advent Dark Force" - }, - { - "executables": [{"is_launcher": false, "name": "pictopix/pictopix.exe", "os": "win32"}], - "hook": true, - "id": "1124357269501530134", - "name": "Pictopix" - }, - { - "executables": [{"is_launcher": false, "name": "seekgirltwo/seekgirltwo.exe", "os": "win32"}], - "hook": true, - "id": "1124357271250546688", - "name": "Seek Girl \u2161" - }, - { - "executables": [{"is_launcher": false, "name": "between the stars/betweenthestars.exe", "os": "win32"}], - "hook": true, - "id": "1124357272693395486", - "name": "Between the Stars" - }, - { - "executables": [{"is_launcher": false, "name": "grim nights/grimnights.exe", "os": "win32"}], - "hook": true, - "id": "1124357275436466277", - "name": "Grim Nights" - }, - { - "executables": [ - {"is_launcher": false, "name": "hentai sniper middle east/hentai sniper middle east.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357277042888804", - "name": "HENTAI SNIPER: Middle East" - }, - { - "executables": [{"is_launcher": false, "name": "incline/incline.exe", "os": "win32"}], - "hook": true, - "id": "1124357278427005118", - "name": "Incline" - }, - { - "executables": [{"is_launcher": false, "name": "takoyaki party survival/takopasurvival.exe", "os": "win32"}], - "hook": true, - "id": "1124357280108925008", - "name": "\u305f\u3053\u30d1 \u30b5\u30d0\u30a4\u30d0\u30eb" - }, - { - "executables": [{"is_launcher": false, "name": "64.0/64.0.exe", "os": "win32"}], - "hook": true, - "id": "1124357281564344400", - "name": "64.0" - }, - { - "executables": [{"is_launcher": false, "name": "no plan b - prologue/noplanb.exe", "os": "win32"}], - "hook": true, - "id": "1124357283376287744", - "name": "No Plan B: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "q remastered/q.exe", "os": "win32"}], - "hook": true, - "id": "1124357284768792676", - "name": "Q REMASTERED" - }, - { - "executables": [{"is_launcher": false, "name": "little witch academia/lwa.exe", "os": "win32"}], - "hook": true, - "id": "1124357286379409549", - "name": "Little Witch Academia: Chamber of Time" - }, - { - "executables": [ - {"is_launcher": false, "name": "super fantasy kingdom demo/super fantasy kingdom.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357288292003880", - "name": "Super Fantasy Kingdom Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "castlevania lords of shadow - mirror of fate hd/cmof.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357290011672646", - "name": "Castlevania: Lords of Shadow \u2013 Mirror of Fate HD" - }, - { - "executables": [{"is_launcher": false, "name": "supply chain idle/supplychainidle.exe", "os": "win32"}], - "hook": true, - "id": "1124357291580338176", - "name": "Supply Chain Idle" - }, - { - "executables": [{"is_launcher": false, "name": "eagle/eagle.exe", "os": "win32"}], - "hook": true, - "id": "1124357293287428106", - "name": "Project Eagle" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/snowdaze.exe", "os": "win32"}], - "hook": true, - "id": "1124357294952562768", - "name": "Snow Daze" - }, - { - "executables": [{"is_launcher": false, "name": "koboldkare/koboldkare.exe", "os": "win32"}], - "hook": true, - "id": "1124357298609999882", - "name": "KoboldKare" - }, - { - "executables": [{"is_launcher": false, "name": "win64/oasis-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357303487963286", - "name": "Ready Player One: OASIS beta" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kona-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357308483391548", - "name": "Trials on Tatooine" - }, - { - "executables": [{"is_launcher": false, "name": "panzer corps/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124357312484753438", - "name": "Panzer Corps" - }, - { - "executables": [{"is_launcher": false, "name": "half-life 2 year long alarm/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124357316444172438", - "name": "Half-Life 2: Year Long Alarm" - }, - { - "executables": [{"is_launcher": false, "name": "ev3 - drag racing/ev3.exe", "os": "win32"}], - "hook": true, - "id": "1124357318381944944", - "name": "EV3 - Drag Racing" - }, - { - "executables": [{"is_launcher": false, "name": "shrine2/shrine2.exe", "os": "win32"}], - "hook": true, - "id": "1124357320105808002", - "name": "Shrine II" - }, - { - "executables": [{"is_launcher": false, "name": "how_do_you_do_it/how do you do it.exe", "os": "win32"}], - "hook": true, - "id": "1124357321905156106", - "name": "how do you Do It?" - }, - { - "executables": [{"is_launcher": false, "name": "thegreatwar/clientg64.exe", "os": "win32"}], - "hook": true, - "id": "1124357323532554351", - "name": "The Great War: Western Front\u2122" - }, - { - "executables": [ - {"is_launcher": false, "name": "skybox vr video player/steamvr_sourcevrplayer.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357325503873118", - "name": "SKYBOX VR Video Player" - }, - { - "executables": [{"is_launcher": false, "name": "murder by numbers/murderbynumbers.exe", "os": "win32"}], - "hook": true, - "id": "1124357327219347576", - "name": "Murder by Numbers" - }, - { - "executables": [{"is_launcher": false, "name": "win64/cobblestone-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357328821567548", - "name": "Bone Voyage" - }, - { - "executables": [{"is_launcher": false, "name": "okipullup/ok i pull up.exe", "os": "win32"}], - "hook": true, - "id": "1124357330474119168", - "name": "OkIPullUp" - }, - { - "executables": [{"is_launcher": false, "name": "win32/netneutrality-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357332093124659", - "name": "404Sight" - }, - { - "executables": [{"is_launcher": false, "name": "way of the samurai 4/wayofthesamurai4.exe", "os": "win32"}], - "hook": true, - "id": "1124357333691150448", - "name": "Way of the Samurai 4" - }, - { - "executables": [{"is_launcher": false, "name": "bittriprunner2/runner2.exe", "os": "win32"}], - "hook": true, - "id": "1124357335373070466", - "name": "BIT.TRIP Presents... Runner2: Future Legend of Rhythm Alien" - }, - { - "executables": [ - {"is_launcher": false, "name": "battlestations midway/battlestationsmidway.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357336916570132", - "name": "Battlestations: Midway" - }, - { - "executables": [{"is_launcher": false, "name": "mashinky/mashinky.exe", "os": "win32"}], - "hook": true, - "id": "1124357338917261383", - "name": "Mashinky" - }, - { - "executables": [{"is_launcher": false, "name": "loek/loek.exe", "os": "win32"}], - "hook": true, - "id": "1124357340611752067", - "name": "LOEK" - }, - { - "executables": [{"is_launcher": false, "name": "kill la kill -if/killlakill_if.exe", "os": "win32"}], - "hook": true, - "id": "1124357342394335324", - "name": "KILL la KILL -IF" - }, - { - "executables": [{"is_launcher": false, "name": "murder house/murder house.exe", "os": "win32"}], - "hook": true, - "id": "1124357344101412904", - "name": "Murder House" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vgdfinal-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357345691058337", - "name": "Mutant Ops" - }, - { - "executables": [{"is_launcher": false, "name": "undead horde/undeadhorde.exe", "os": "win32"}], - "hook": true, - "id": "1124357347360395374", - "name": "Undead Horde" - }, - { - "executables": [{"is_launcher": false, "name": "love sucks night one/lovesucks.exe", "os": "win32"}], - "hook": true, - "id": "1124357349075861685", - "name": "Love Sucks: Night One" - }, - { - "executables": [{"is_launcher": false, "name": "adom/adom.exe", "os": "win32"}], - "hook": true, - "id": "1124357350741004368", - "name": "ADOM (Ancient Domains Of Mystery)" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hsho-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357352397746327", - "name": "Home Sweet Home : Online" - }, - { - "executables": [ - {"is_launcher": false, "name": "slay the princess demo/slaytheprincessdemo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357354083860490", - "name": "Slay the Princess Demo" - }, - { - "executables": [{"is_launcher": false, "name": "bin/shank.exe", "os": "win32"}], - "hook": true, - "id": "1124357355681894580", - "name": "Shank" - }, - { - "executables": [ - {"is_launcher": false, "name": "steven universe save the light/save the light.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357357485441155", - "name": "Steven Universe: Save the Light" - }, - { - "executables": [{"is_launcher": false, "name": "win64/qube-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357359137992714", - "name": "Q.U.B.E. 2" - }, - { - "executables": [{"is_launcher": false, "name": "ship simulator extremes/splash.exe", "os": "win32"}], - "hook": true, - "id": "1124357361134489652", - "name": "Ship Simulator Extremes" - }, - { - "executables": [{"is_launcher": false, "name": "babbdi/babbdi.exe", "os": "win32"}], - "hook": true, - "id": "1124357363466514563", - "name": "BABBDI" - }, - { - "executables": [{"is_launcher": false, "name": "countersnipe/countersnipe.exe", "os": "win32"}], - "hook": true, - "id": "1124357365140045987", - "name": "Countersnipe" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "date a live rio reincarnation/date a live rio-reincarnation.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357367153307698", - "name": "DATE A LIVE: Rio Reincarnation" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "car trader simulator - welcome to the business/cts_prologue.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357368738762882", - "name": "Car Trader Simulator - Welcome to the Business" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "voiceofcardstheisledragonroarsdemo/voiceofcardstheisledragonroarsdemo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357370399703111", - "name": "Voice of Cards: The Isle Dragon Roars Demo" - }, - { - "executables": [{"is_launcher": false, "name": "pizza connection 3/pizza connection 3.exe", "os": "win32"}], - "hook": true, - "id": "1124357372140335155", - "name": "Pizza Connection 3" - }, - { - "executables": [{"is_launcher": false, "name": "shelter/shelter.exe", "os": "win32"}], - "hook": true, - "id": "1124357373646098532", - "name": "Shelter 1" - }, - { - "executables": [{"is_launcher": false, "name": "one punch man a hero nobody knows/opm.exe", "os": "win32"}], - "hook": true, - "id": "1124357375369953320", - "name": "ONE PUNCH MAN: A HERO NOBODY KNOWS" - }, - { - "executables": [{"is_launcher": false, "name": "chippy/chippy.exe", "os": "win32"}], - "hook": true, - "id": "1124357375881654413", - "name": "Chippy" - }, - { - "executables": [{"is_launcher": false, "name": "vault of the void/vaultofthevoid.exe", "os": "win32"}], - "hook": true, - "id": "1124357377655853056", - "name": "Vault of the Void" - }, - { - "executables": [{"is_launcher": false, "name": "jaded/jaded.exe", "os": "win32"}], - "hook": true, - "id": "1124357379367121017", - "name": "Jaded" - }, - { - "executables": [{"is_launcher": false, "name": "realm revolutions/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357380944183387", - "name": "Realm Revolutions" - }, - { - "executables": [{"is_launcher": false, "name": "rogue reaper/roguereaper.exe", "os": "win32"}], - "hook": true, - "id": "1124357383162966136", - "name": "Rogue Reaper" - }, - { - "executables": [{"is_launcher": false, "name": "win64/titan-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357384765194335", - "name": "Industries of Titan" - }, - { - "executables": [{"is_launcher": false, "name": "alien shooter 2 - reloaded/alienshooter.exe", "os": "win32"}], - "hook": true, - "id": "1124357386602295296", - "name": "Alien Shooter 2: Reloaded" - }, - { - "executables": [{"is_launcher": false, "name": "hellcard/hellcard.exe", "os": "win32"}], - "hook": true, - "id": "1124357388045144235", - "name": "HELLCARD" - }, - { - "executables": [{"is_launcher": false, "name": "warstone td/warstone.exe", "os": "win32"}], - "hook": true, - "id": "1124357389659947118", - "name": "Warstone TD" - }, - { - "executables": [{"is_launcher": false, "name": "heaven's vault/heaven's vault.exe", "os": "win32"}], - "hook": true, - "id": "1124357391341867068", - "name": "Heaven's Vault" - }, - { - "executables": [{"is_launcher": false, "name": "project name/project name.exe", "os": "win32"}], - "hook": true, - "id": "1124357393308987392", - "name": "Project: Name" - }, - { - "executables": [{"is_launcher": false, "name": "windows_content/border officer.exe", "os": "win32"}], - "hook": true, - "id": "1124357394932187236", - "name": "Border Officer" - }, - { - "executables": [{"is_launcher": false, "name": "imnotamonster/imnotamonster.exe", "os": "win32"}], - "hook": true, - "id": "1124357396450521208", - "name": "I\u2019m not a Monster" - }, - { - "executables": [{"is_launcher": false, "name": "trainz railroad simulator 2019/trs19.exe", "os": "win32"}], - "hook": true, - "id": "1124357398233108520", - "name": "Trainz Railroad Simulator 2019" - }, - { - "executables": [ - {"is_launcher": false, "name": "black clover quartet knights/quartetknights.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357399898239057", - "name": "BLACK CLOVER: QUARTET KNIGHTS" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon royale/dungeonroyale.exe", "os": "win32"}], - "hook": true, - "id": "1124357401970229348", - "name": "Dungeon Royale" - }, - { - "executables": [{"is_launcher": false, "name": "win64/th-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357403765395608", - "name": "Treasure Hunter Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "idle racing go/idle racing go.exe", "os": "win32"}], - "hook": true, - "id": "1124357405522804847", - "name": "Idle Racing GO: Car Clicker Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "hitman go/hitmango.exe", "os": "win32"}], - "hook": true, - "id": "1124357406953058375", - "name": "Hitman GO: Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "martial arts brutality/dojo.exe", "os": "win32"}], - "hook": true, - "id": "1124357410400784536", - "name": "Martial Arts Brutality" - }, - { - "executables": [{"is_launcher": false, "name": "blast zone! tournament/bz.exe", "os": "win32"}], - "hook": true, - "id": "1124357412124639282", - "name": "Blast Zone! Tournament" - }, - { - "executables": [{"is_launcher": false, "name": "win64/nekopara.exe", "os": "win32"}], - "hook": true, - "id": "1124357413739442276", - "name": "NEKOPALIVE" - }, - { - "executables": [{"is_launcher": false, "name": "prismata/prismata.exe", "os": "win32"}], - "hook": true, - "id": "1124357415358451752", - "name": "Prismata" - }, - { - "executables": [{"is_launcher": false, "name": "tailor tales/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124357417006809168", - "name": "Tailor Tales" - }, - { - "executables": [ - {"is_launcher": false, "name": "king of the couch zoovival/king_of_the_couch_zoovival.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357418659369091", - "name": "King of the Couch: Zoovival" - }, - { - "executables": [{"is_launcher": false, "name": "win64/apocclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357420307722381", - "name": "Ashes of Creation Apocalypse" - }, - { - "executables": [{"is_launcher": false, "name": "a legionary's life/legionary.exe", "os": "win32"}], - "hook": true, - "id": "1124357421981253823", - "name": "A Legionary's Life" - }, - { - "executables": [{"is_launcher": false, "name": "prolog/stubbsthezombie.exe", "os": "win32"}], - "hook": true, - "id": "1124357423872888913", - "name": "Stubbs the Zombie in Rebel Without a Pulse" - }, - { - "executables": [{"is_launcher": false, "name": "lunacid/lunacid.exe", "os": "win32"}], - "hook": true, - "id": "1124357425290559609", - "name": "Lunacid" - }, - { - "executables": [{"is_launcher": false, "name": "win64/beatboxers.exe", "os": "win32"}], - "hook": true, - "id": "1124357426863427694", - "name": "Beat Boxers" - }, - { - "executables": [{"is_launcher": false, "name": "onetrollarmy/ota.exe", "os": "win32"}], - "hook": true, - "id": "1124357428629221586", - "name": "One Troll Army" - }, - { - "executables": [{"is_launcher": false, "name": "bin32/gasguzzlers.exe", "os": "win32"}], - "hook": true, - "id": "1124357430348890272", - "name": "Gas Guzzlers Extreme" - }, - { - "executables": [{"is_launcher": false, "name": "frog fighters/frog fighters.exe", "os": "win32"}], - "hook": true, - "id": "1124357431942721536", - "name": "Frog Fighters" - }, - { - "executables": [{"is_launcher": false, "name": "wauies/wauies.exe", "os": "win32"}], - "hook": true, - "id": "1124357433804996760", - "name": "Wauies" - }, - { - "executables": [ - {"is_launcher": false, "name": "lost planet extreme condition/lostplanetdx9.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357435382050976", - "name": "Lost Planet: Extreme Condition" - }, - { - "executables": [{"is_launcher": false, "name": "red planet farming/redplanetfarming.exe", "os": "win32"}], - "hook": true, - "id": "1124357436996866108", - "name": "Red Planet Farming" - }, - { - "executables": [ - {"is_launcher": false, "name": "the political machine 2020/the political machine 2020.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357438875906048", - "name": "The Political Machine 2020" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "fetish locator week one - extended edition/fetishlocator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357440482332722", - "name": "Fetish Locator Week One - Extended Edition" - }, - { - "executables": [{"is_launcher": false, "name": "the dream machine/the_dream_machine.exe", "os": "win32"}], - "hook": true, - "id": "1124357441879031828", - "name": "The Dream Machine" - }, - { - "executables": [{"is_launcher": false, "name": "copa petrobras de marcas/marcas.exe", "os": "win32"}], - "hook": true, - "id": "1124357443397365770", - "name": "Copa Petrobras de Marcas" - }, - { - "executables": [{"is_launcher": false, "name": "zetria/zetria.exe", "os": "win32"}], - "hook": true, - "id": "1124357444953460846", - "name": "Zetria" - }, - { - "executables": [{"is_launcher": false, "name": "xxx puzzle/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357446492762203", - "name": "XXX Puzzle" - }, - { - "executables": [{"is_launcher": false, "name": "girl and goblin/girl and goblin.exe", "os": "win32"}], - "hook": true, - "id": "1124357448153714748", - "name": "Girl and Goblin" - }, - { - "executables": [{"is_launcher": false, "name": "mondealy day one/mondealy.exe", "os": "win32"}], - "hook": true, - "id": "1124357450099863572", - "name": "Mondealy: Day One" - }, - { - "executables": [{"is_launcher": false, "name": "milfs of sunville/milfsofsunville.exe", "os": "win32"}], - "hook": true, - "id": "1124357451806949436", - "name": "MILFs of Sunville" - }, - { - "executables": [{"is_launcher": false, "name": "aloft demo/aloft.exe", "os": "win32"}], - "hook": true, - "id": "1124357453396594820", - "name": "Aloft Demo" - }, - { - "executables": [{"is_launcher": false, "name": "patrick's parabox/patrick's parabox.exe", "os": "win32"}], - "hook": true, - "id": "1124357455044948000", - "name": "Patrick's Parabox" - }, - { - "executables": [{"is_launcher": false, "name": "angry video game nerd adventures/avgn.exe", "os": "win32"}], - "hook": true, - "id": "1124357456793976902", - "name": "Angry Video Game Nerd Adventures" - }, - { - "executables": [{"is_launcher": false, "name": "aidungeon/ai dungeon.exe", "os": "win32"}], - "hook": true, - "id": "1124357458593329272", - "name": "AI Dungeon" - }, - { - "executables": [{"is_launcher": false, "name": "tales from candlekeep/talescandlekeep.exe", "os": "win32"}], - "hook": true, - "id": "1124357460350746624", - "name": "Tales from Candlekeep: Tomb of Annihilation" - }, - { - "executables": [{"is_launcher": false, "name": "buildstuff/hoghunter2021.exe", "os": "win32"}], - "hook": true, - "id": "1124357461965549619", - "name": "Hog Hunter 2021" - }, - { - "executables": [{"is_launcher": false, "name": "archvale/archvale.exe", "os": "win32"}], - "hook": true, - "id": "1124357463857184788", - "name": "Archvale" - }, - { - "executables": [{"is_launcher": false, "name": "one deck dungeon/onedeckdungeon.exe", "os": "win32"}], - "hook": true, - "id": "1124357465526522007", - "name": "One Deck Dungeon" - }, - { - "executables": [{"is_launcher": false, "name": "melatonin demo/melatonin.exe", "os": "win32"}], - "hook": true, - "id": "1124357467212628069", - "name": "Melatonin Demo" - }, - { - "executables": [{"is_launcher": false, "name": "cultic/cultic.exe", "os": "win32"}], - "hook": true, - "id": "1124357468617715854", - "name": "CULTIC" - }, - { - "executables": [{"is_launcher": false, "name": "brick-force row/infernumlogin.exe", "os": "win32"}], - "hook": true, - "id": "1124357470165422111", - "name": "Brick-Force" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "fears to fathom - episode 3/fears to fathom - carson house.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357471805386822", - "name": "Fears to Fathom - Episode 3" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2015/fm.exe", "os": "win32"}], - "hook": true, - "id": "1124357473868992522", - "name": "Football Manager 2015" - }, - { - "executables": [{"is_launcher": false, "name": "airborne kingdom/airbornekingdom.exe", "os": "win32"}], - "hook": true, - "id": "1124357475701899324", - "name": "Airborne Kingdom" - }, - { - "executables": [{"is_launcher": false, "name": ".autorun/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124357477417373756", - "name": "Passing Pineview Forest" - }, - { - "executables": [{"is_launcher": false, "name": "win64/crashbandicoot4.exe", "os": "win32"}], - "hook": true, - "id": "1124357479057338519", - "name": "Crash Bandicoot\u2122 4: It\u2019s About Time" - }, - { - "executables": [{"is_launcher": false, "name": "train station renovation/tsr_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124357480546324602", - "name": "Train Station Renovation" - }, - { - "executables": [{"is_launcher": false, "name": "rhq/rhq.exe", "os": "win32"}], - "hook": true, - "id": "1124357482022715453", - "name": "Rescue HQ - The Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "tower and sword succubus/succubus_sword.exe", "os": "win32"}], - "hook": true, - "id": "1124357483578798190", - "name": "Tower and Sword of Succubus" - }, - { - "executables": [{"is_launcher": false, "name": "delores/delores.exe", "os": "win32"}], - "hook": true, - "id": "1124357485160058931", - "name": "Delores: A Thimbleweed Park Mini-Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/trick and treat.exe", "os": "win32"}], - "hook": true, - "id": "1124357486661615737", - "name": "Trick and Treat - Visual Novel" - }, - { - "executables": [ - {"is_launcher": false, "name": "hand simulator rendezvous/hand simulator rendezvous.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357488578416760", - "name": "Hand Simulator: Rendezvous" - }, - { - "executables": [{"is_launcher": false, "name": "the coma recut/thecomarecut.exe", "os": "win32"}], - "hook": true, - "id": "1124357490306461870", - "name": "The Coma: Recut" - }, - { - "executables": [{"is_launcher": false, "name": "amongripples/amongripples.exe", "os": "win32"}], - "hook": true, - "id": "1124357491963219978", - "name": "Among Ripples" - }, - { - "executables": [{"is_launcher": false, "name": "win/nebuchadnezzar.exe", "os": "win32"}], - "hook": true, - "id": "1124357493498331197", - "name": "Nebuchadnezzar" - }, - { - "executables": [ - {"is_launcher": false, "name": "the lego movie 2 videogame/lego the lego movie 2_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357495159279746", - "name": "The LEGO\u00ae Movie 2 - Videogame" - }, - { - "executables": [{"is_launcher": false, "name": "build/aspproject.exe", "os": "win32"}], - "hook": true, - "id": "1124357496786665563", - "name": "Ruins of Albion" - }, - { - "executables": [{"is_launcher": false, "name": "win64/inertia-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357498674106399", - "name": "Inertia" - }, - { - "executables": [{"is_launcher": false, "name": "signalsimulator/signalsimulator.exe", "os": "win32"}], - "hook": true, - "id": "1124357500360208494", - "name": "Signal Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "no umbrellas allowed/no umbrellas allowed.exe", "os": "win32"}], - "hook": true, - "id": "1124357502281203772", - "name": "No Umbrellas Allowed" - }, - { - "executables": [{"is_launcher": false, "name": "polygoneer/polygoneer.exe", "os": "win32"}], - "hook": true, - "id": "1124357503807934585", - "name": "Polygoneer" - }, - { - "executables": [{"is_launcher": false, "name": "nubarron/nubarron.exe", "os": "win32"}], - "hook": true, - "id": "1124357505309491320", - "name": "Nubarron: The adventure of an unlucky gnome" - }, - { - "executables": [{"is_launcher": false, "name": "frame of mind/frame of mind.exe", "os": "win32"}], - "hook": true, - "id": "1124357507083686030", - "name": "Frame of Mind" - }, - { - "executables": [{"is_launcher": false, "name": "honeyselect2libido dx/initial settings.exe", "os": "win32"}], - "hook": true, - "id": "1124357508782370877", - "name": "HoneySelect2Libido DX" - }, - { - "executables": [{"is_launcher": false, "name": "simulacra 2/simulacra2.exe", "os": "win32"}], - "hook": true, - "id": "1124357510376214628", - "name": "SIMULACRA 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/beatshooter-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357512494329977", - "name": "Soundfall" - }, - { - "executables": [{"is_launcher": false, "name": "hats and hand grenades/corridor.exe", "os": "win32"}], - "hook": true, - "id": "1124357514071396462", - "name": "Hats and Hand Grenades" - }, - { - "executables": [{"is_launcher": false, "name": "endoparasitic/endoparasitic.exe", "os": "win32"}], - "hook": true, - "id": "1124357515732332675", - "name": "Endoparasitic" - }, - { - "executables": [{"is_launcher": false, "name": "gourdlets demo/windows.exe", "os": "win32"}], - "hook": true, - "id": "1124357517414252605", - "name": "Gourdlets Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pixelheist-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357519071006810", - "name": "Perfect Heist" - }, - { - "executables": [{"is_launcher": false, "name": "out of the park baseball 23/ootp23_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124357520702586900", - "name": "Out of the Park Baseball 23" - }, - { - "executables": [{"is_launcher": false, "name": "cover fire/cover fire.exe", "os": "win32"}], - "hook": true, - "id": "1124357522602602507", - "name": "Cover Fire" - }, - { - "executables": [{"is_launcher": false, "name": "clickteam fusion 2.5/mmf2u.exe", "os": "win32"}], - "hook": true, - "id": "1124357524515209327", - "name": "Clickteam Fusion 2.5" - }, - { - "executables": [ - {"is_launcher": false, "name": "heretic shadow of the serpent riders/base/dosbox.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357526163566684", - "name": "Heretic: Shadow of the Serpent Riders" - }, - { - "executables": [{"is_launcher": false, "name": "todo today/todo-today.exe", "os": "win32"}], - "hook": true, - "id": "1124357528076177468", - "name": "//TODO: today" - }, - { - "executables": [{"is_launcher": false, "name": "idle pins/idle pins.exe", "os": "win32"}], - "hook": true, - "id": "1124357529523208292", - "name": "Idle Pins" - }, - { - "executables": [{"is_launcher": false, "name": "rims/rims.exe", "os": "win32"}], - "hook": true, - "id": "1124357531217711245", - "name": "RiMS Racing" - }, - { - "executables": [{"is_launcher": false, "name": "wrath/wrath.exe", "os": "win32"}], - "hook": true, - "id": "1124357532920590416", - "name": "WRATH: Aeon of Ruin" - }, - { - "executables": [{"is_launcher": false, "name": "ragnarok clicker heroes/ragnarok clicker.exe", "os": "win32"}], - "hook": true, - "id": "1124357534501847070", - "name": "Ragnarok Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "a normal lost phone/anlp.exe", "os": "win32"}], - "hook": true, - "id": "1124357536368308325", - "name": "A Normal Lost Phone" - }, - { - "executables": [{"is_launcher": false, "name": "braveland/braveland.exe", "os": "win32"}], - "hook": true, - "id": "1124357537970540706", - "name": "Braveland" - }, - { - "executables": [{"is_launcher": false, "name": "dig dug/dig dug.exe", "os": "win32"}], - "hook": true, - "id": "1124357540017356830", - "name": "ARCADE GAME SERIES: DIG DUG" - }, - { - "executables": [{"is_launcher": false, "name": "jesus christ rpg/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357541648936970", - "name": "Jesus Christ RPG Trilogy" - }, - { - "executables": [{"is_launcher": false, "name": "curiouscases/curiouscases.exe", "os": "win32"}], - "hook": true, - "id": "1124357546086518905", - "name": "Curious Cases" - }, - { - "executables": [{"is_launcher": false, "name": "win64/examplegame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357549257408553", - "name": "Redeemer" - }, - { - "executables": [{"is_launcher": false, "name": "urtuk the desolation/urtuk.exe", "os": "win32"}], - "hook": true, - "id": "1124357551123869767", - "name": "Urtuk: The Desolation" - }, - { - "executables": [{"is_launcher": false, "name": "forgedbattalion/clientg.exe", "os": "win32"}], - "hook": true, - "id": "1124357552776429680", - "name": "Forged Battalion" - }, - { - "executables": [{"is_launcher": false, "name": "almost home now/almosthomenow.exe", "os": "win32"}], - "hook": true, - "id": "1124357554579976372", - "name": "Almost Home Now" - }, - { - "executables": [{"is_launcher": false, "name": "zup! 4/zup! 4.exe", "os": "win32"}], - "hook": true, - "id": "1124357556480000010", - "name": "Zup! 4" - }, - { - "executables": [{"is_launcher": false, "name": "zombie estate 2/zombie estate 2.exe", "os": "win32"}], - "hook": true, - "id": "1124357557939613798", - "name": "Zombie Estate 2" - }, - { - "executables": [{"is_launcher": false, "name": "ludo online/ludo-online.exe", "os": "win32"}], - "hook": true, - "id": "1124357559713808465", - "name": "Ludo Online" - }, - { - "executables": [{"is_launcher": false, "name": "win32/thhdgame.exe", "os": "win32"}], - "hook": true, - "id": "1124357561462837298", - "name": "Tony Hawk's Pro Skater HD" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "leisure suit larry - magna cum laude uncut and uncensored/larry.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357563014725652", - "name": "Leisure Suit Larry - Magna Cum Laude Uncut and Uncensored" - }, - { - "executables": [{"is_launcher": false, "name": "majotori/majotori.exe", "os": "win32"}], - "hook": true, - "id": "1124357564725997709", - "name": "Majotori" - }, - { - "executables": [{"is_launcher": false, "name": "red wings/red wings aces of the sky.exe", "os": "win32"}], - "hook": true, - "id": "1124357566282092595", - "name": "Red Wings" - }, - { - "executables": [{"is_launcher": false, "name": "gentlemen's club/gentlemens-club.exe", "os": "win32"}], - "hook": true, - "id": "1124357568102412348", - "name": "Gentlemen's Club" - }, - { - "executables": [{"is_launcher": false, "name": "bus driver simulator/bus driver simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124357569893384352", - "name": "Bus Driver Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "noheroeshere/nhh_build.exe", "os": "win32"}], - "hook": true, - "id": "1124357571516575884", - "name": "No Heroes Here" - }, - { - "executables": [{"is_launcher": false, "name": "system/dx2main.exe", "os": "win32"}], - "hook": true, - "id": "1124357573198495805", - "name": "Deus Ex: Invisible War" - }, - { - "executables": [{"is_launcher": false, "name": "purrfect date/purrfect date.exe", "os": "win32"}], - "hook": true, - "id": "1124357574851047514", - "name": "Purrfect Date" - }, - { - "executables": [{"is_launcher": false, "name": "verlet swing/verlet swing.exe", "os": "win32"}], - "hook": true, - "id": "1124357576570716272", - "name": "Verlet Swing" - }, - { - "executables": [{"is_launcher": false, "name": "infinity kingdom/infinity kingdom.exe", "os": "win32"}], - "hook": true, - "id": "1124357578227462176", - "name": "Infinity Kingdom" - }, - { - "executables": [{"is_launcher": false, "name": "battle islands/battleislands.exe", "os": "win32"}], - "hook": true, - "id": "1124357579829694604", - "name": "Battle Islands" - }, - { - "executables": [{"is_launcher": false, "name": "bin/frontend.exe", "os": "win32"}], - "hook": true, - "id": "1124357581578715257", - "name": "Tiger Knight: Empire War" - }, - { - "executables": [{"is_launcher": false, "name": "fight crab/fightcrab.exe", "os": "win32"}], - "hook": true, - "id": "1124357583298383912", - "name": "Fight Crab" - }, - { - "executables": [ - {"is_launcher": false, "name": "somewhere in the shadow/somewhere in the shadow.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357584724439090", - "name": "Somewhere in the Shadow" - }, - { - "executables": [{"is_launcher": false, "name": "win32/mkhdgame.exe", "os": "win32"}], - "hook": true, - "id": "1124357586536382515", - "name": "Mortal Kombat Kollection" - }, - { - "executables": [{"is_launcher": false, "name": "vigil the longest night/vigil.exe", "os": "win32"}], - "hook": true, - "id": "1124357588264439921", - "name": "Vigil: The Longest Night" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ewtp_too-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357589984096346", - "name": "Emily Wants to Play Too" - }, - { - "executables": [{"is_launcher": false, "name": "winkeltje/shopkeeper.exe", "os": "win32"}], - "hook": true, - "id": "1124357591590523032", - "name": "Winkeltje: The Little Shop" - }, - { - "executables": [{"is_launcher": false, "name": "metalwaltz/sherman.exe", "os": "win32"}], - "hook": true, - "id": "1124357593150799992", - "name": "Metal Waltz" - }, - { - "executables": [{"is_launcher": false, "name": "brawlout/brawlout.exe", "os": "win32"}], - "hook": true, - "id": "1124357595067600946", - "name": "Brawlout" - }, - { - "executables": [{"is_launcher": false, "name": "who needs a hero/who needs a hero.exe", "os": "win32"}], - "hook": true, - "id": "1124357596699181247", - "name": "Who Needs a Hero?" - }, - { - "executables": [{"is_launcher": false, "name": "chicken farm 2k17/cfs_2k17_v2.exe", "os": "win32"}], - "hook": true, - "id": "1124357598313992248", - "name": "Chicken Farm 2K17" - }, - { - "executables": [{"is_launcher": false, "name": "draw a stickman epic 2/epic2.exe", "os": "win32"}], - "hook": true, - "id": "1124357600046231622", - "name": "Draw a Stickman: EPIC 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/harvestella-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357601908510790", - "name": "HARVESTELLA" - }, - { - "executables": [{"is_launcher": false, "name": "x64/samsm.exe", "os": "win32"}], - "hook": true, - "id": "1124357603489759262", - "name": "Serious Sam: Siberian Mayhem" - }, - { - "executables": [{"is_launcher": false, "name": "birthdays the beginning/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357605117145119", - "name": "Birthdays the Beginning" - }, - { - "executables": [{"is_launcher": false, "name": "th16/th16.exe", "os": "win32"}], - "hook": true, - "id": "1124357606778097744", - "name": "\u6771\u65b9\u5929\u7a7a\u748b \uff5e Hidden Star in Four Seasons." - }, - { - "executables": [ - {"is_launcher": false, "name": "jedi knight mysteries of the sith/jediknightm.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357608686497914", - "name": "STAR WARS\u2122 Jedi Knight: Mysteries of the Sith\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "miss neko 2/miss neko 2.exe", "os": "win32"}], - "hook": true, - "id": "1124357610271953007", - "name": "Miss Neko 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "swords and sandals 2 redux/swords and sandals 2 redux.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357611660263555", - "name": "Swords and Sandals 2 Redux" - }, - { - "executables": [{"is_launcher": false, "name": "below/belowd3d11steam_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124357613145042954", - "name": "BELOW" - }, - { - "executables": [{"is_launcher": false, "name": "urbek/urbek.exe", "os": "win32"}], - "hook": true, - "id": "1124357614604668988", - "name": "Urbek City Builder" - }, - { - "executables": [{"is_launcher": false, "name": "dont_get_lost/dont-get-lost.exe", "os": "win32"}], - "hook": true, - "id": "1124357616060088370", - "name": "Don't get lost" - }, - { - "executables": [ - {"is_launcher": false, "name": "ultimate general gettysburg/ultimate general gettysburg.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357617809117254", - "name": "Ultimate General: Gettysburg" - }, - { - "executables": [{"is_launcher": false, "name": "midnight castle succubus/game_s.exe", "os": "win32"}], - "hook": true, - "id": "1124357619532972082", - "name": "Midnight Castle Succubus" - }, - { - "executables": [{"is_launcher": false, "name": "hentai memory/hentai memory.exe", "os": "win32"}], - "hook": true, - "id": "1124357621219086427", - "name": "Hentai Memory" - }, - { - "executables": [{"is_launcher": false, "name": "sexyspaceairlines/sexyspaceairlines.exe", "os": "win32"}], - "hook": true, - "id": "1124357622670311434", - "name": "Sexy Space Airlines" - }, - { - "executables": [{"is_launcher": false, "name": "potion explosion/potionexplosion.exe", "os": "win32"}], - "hook": true, - "id": "1124357624599687339", - "name": "Potion Explosion" - }, - { - "executables": [ - {"is_launcher": false, "name": "resonance of the ocean/resonance of the ocean.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357626583597246", - "name": "Resonance of the Ocean" - }, - { - "executables": [{"is_launcher": false, "name": "win64/likeadragonishindemo-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357628173242429", - "name": "Like a Dragon: Ishin! Combat Demo" - }, - { - "executables": [{"is_launcher": false, "name": "oddworld abes exoddus/exoddus.exe", "os": "win32"}], - "hook": true, - "id": "1124357629855154350", - "name": "Oddworld: Abe's Exoddus" - }, - { - "executables": [{"is_launcher": false, "name": "i hate this game/i hate this game.exe", "os": "win32"}], - "hook": true, - "id": "1124357631503511562", - "name": "I hate this game" - }, - { - "executables": [ - {"is_launcher": false, "name": "akiba's trip undead & undressed/akibauu_config.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357633239957614", - "name": "AKIBA'S TRIP: Undead & Undressed" - }, - { - "executables": [{"is_launcher": false, "name": "the stillness of the wind/stillnesswin.exe", "os": "win32"}], - "hook": true, - "id": "1124357634955423774", - "name": "The Stillness of the Wind" - }, - { - "executables": [{"is_launcher": false, "name": "ballisticng/ballisticng.exe", "os": "win32"}], - "hook": true, - "id": "1124357636641538218", - "name": "BallisticNG" - }, - { - "executables": [{"is_launcher": false, "name": "win64/shipgraveyard2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357638218592426", - "name": "Ship Graveyard Simulator 2: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "rail route/rail route.exe", "os": "win32"}], - "hook": true, - "id": "1124357639720161300", - "name": "Rail Route" - }, - { - "executables": [{"is_launcher": false, "name": "the colonists/thecolonists.exe", "os": "win32"}], - "hook": true, - "id": "1124357641234296964", - "name": "The Colonists" - }, - { - "executables": [{"is_launcher": false, "name": "super naughty maid 2/supernaughtymaid!2.exe", "os": "win32"}], - "hook": true, - "id": "1124357642790391938", - "name": "Super Naughty Maid 2" - }, - { - "executables": [{"is_launcher": false, "name": "spiderheck demo/spiderheck_demo.exe", "os": "win32"}], - "hook": true, - "id": "1124357644371640320", - "name": "SpiderHeck Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bbc_vrspacewalk-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357645818671175", - "name": "Home - A VR Spacewalk" - }, - { - "executables": [{"is_launcher": false, "name": "la-mulana/lamulanawin.exe", "os": "win32"}], - "hook": true, - "id": "1124357647907438632", - "name": "La-Mulana" - }, - { - "executables": [{"is_launcher": false, "name": "to the top/tothetop.exe", "os": "win32"}], - "hook": true, - "id": "1124357649467715605", - "name": "TO THE TOP" - }, - { - "executables": [ - {"is_launcher": false, "name": "eternal hope prologue/eternal hope prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357651539705856", - "name": "Eternal Hope: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "lowmagicage/low_magic_age.exe", "os": "win32"}], - "hook": true, - "id": "1124357653200654336", - "name": "Low Magic Age" - }, - { - "executables": [{"is_launcher": false, "name": "toy soldiers complete/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357654970642442", - "name": "Toy Soldiers: Complete" - }, - { - "executables": [{"is_launcher": false, "name": "glitch/glitch.exe", "os": "win32"}], - "hook": true, - "id": "1124357656614817832", - "name": "Glitch" - }, - { - "executables": [ - {"is_launcher": false, "name": "puppet master the game/puppet master the game.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357659181723828", - "name": "Puppet Master: The Game" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wweplaygrounds-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357660746207302", - "name": "WWE 2K BATTLEGROUNDS" - }, - { - "executables": [{"is_launcher": false, "name": "becalm/becalm.exe", "os": "win32"}], - "hook": true, - "id": "1124357662579113994", - "name": "Becalm" - }, - { - "executables": [{"is_launcher": false, "name": "360 no scope arena/360noscopearena.exe", "os": "win32"}], - "hook": true, - "id": "1124357664227471472", - "name": "360 No Scope Arena" - }, - { - "executables": [{"is_launcher": false, "name": "zuma deluxe/zuma.exe", "os": "win32"}], - "hook": true, - "id": "1124357665980694590", - "name": "Zuma Deluxe Demo" - }, - { - "executables": [{"is_launcher": false, "name": "dontescape/dontescape.exe", "os": "win32"}], - "hook": true, - "id": "1124357667700355143", - "name": "Don't Escape: 4 Days to Survive" - }, - { - "executables": [{"is_launcher": false, "name": "thronefall demo/thronefall.exe", "os": "win32"}], - "hook": true, - "id": "1124357669239672983", - "name": "Thronefall Demo" - }, - { - "executables": [{"is_launcher": false, "name": "the fishing club 3d/the fishing club 3d.exe", "os": "win32"}], - "hook": true, - "id": "1124357670854475907", - "name": "The Fishing Club 3D" - }, - { - "executables": [{"is_launcher": false, "name": "the ship remasted/theshipremasted.exe", "os": "win32"}], - "hook": true, - "id": "1124357672586727585", - "name": "The Ship: Remasted" - }, - { - "executables": [{"is_launcher": false, "name": "source sdk base 2007/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124357674243473438", - "name": "Age of Chivalry" - }, - { - "executables": [{"is_launcher": false, "name": "hyperdemon/hyperdemon.exe", "os": "win32"}], - "hook": true, - "id": "1124357675971530913", - "name": "HYPER DEMON" - }, - { - "executables": [{"is_launcher": false, "name": "lumberjacks dynasty/lumberjacksdynasty.exe", "os": "win32"}], - "hook": true, - "id": "1124357677473087579", - "name": "Lumberjack's Dynasty" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fpsmultiplayer-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357679234699285", - "name": "GRANDMA" - }, - { - "executables": [{"is_launcher": false, "name": "home wars/home wars.exe", "os": "win32"}], - "hook": true, - "id": "1124357680761417829", - "name": "Home Wars" - }, - { - "executables": [{"is_launcher": false, "name": "thimbleweed park/thimbleweedpark.exe", "os": "win32"}], - "hook": true, - "id": "1124357682325897348", - "name": "Thimbleweed Park" - }, - { - "executables": [{"is_launcher": false, "name": "mind scanners/mind scanners.exe", "os": "win32"}], - "hook": true, - "id": "1124357683869397044", - "name": "Mind Scanners" - }, - { - "executables": [{"is_launcher": false, "name": "sucker for love prelude/sucker for love.exe", "os": "win32"}], - "hook": true, - "id": "1124357685651984517", - "name": "Sucker for Love: Prelude" - }, - { - "executables": [{"is_launcher": false, "name": "phantasmal/phantasmal.exe", "os": "win32"}], - "hook": true, - "id": "1124357687103209492", - "name": "Phantasmal" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sexwithstalin-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357688621551638", - "name": "Sex with Stalin" - }, - { - "executables": [{"is_launcher": false, "name": "oninaki demo/oninaki demo.exe", "os": "win32"}], - "hook": true, - "id": "1124357690089549854", - "name": "ONINAKI Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/blood_spear-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357691612090388", - "name": "Blood Spear" - }, - { - "executables": [{"is_launcher": false, "name": "merge nymphs/merge nymphs.exe", "os": "win32"}], - "hook": true, - "id": "1124357693637931008", - "name": "Merge Nymphs" - }, - { - "executables": [{"is_launcher": false, "name": "golden axed/gaxd.exe", "os": "win32"}], - "hook": true, - "id": "1124357695340822528", - "name": "Golden Axed: A Cancelled Prototype" - }, - { - "executables": [ - {"is_launcher": false, "name": "minecraft story mode - season two/minecraft2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357696926273586", - "name": "Minecraft: Story Mode - Season Two" - }, - { - "executables": [{"is_launcher": false, "name": "underhero/underhero.exe", "os": "win32"}], - "hook": true, - "id": "1124357698490744862", - "name": "Underhero" - }, - { - "executables": [ - {"is_launcher": false, "name": "bravery and greed demo/bravery and greed demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357700680167515", - "name": "Bravery and Greed Demo" - }, - { - "executables": [{"is_launcher": false, "name": "lovewish/lovewish.exe", "os": "win32"}], - "hook": true, - "id": "1124357702332727428", - "name": "Love wish" - }, - { - "executables": [{"is_launcher": false, "name": "tasty blue/tastyblue.exe", "os": "win32"}], - "hook": true, - "id": "1124357703838478426", - "name": "Tasty Blue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/september_7th-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357706111799377", - "name": "September 7th" - }, - { - "executables": [{"is_launcher": false, "name": "teslagrad/teslagrad.exe", "os": "win32"}], - "hook": true, - "id": "1124357707751768214", - "name": "Teslagrad" - }, - { - "executables": [{"is_launcher": false, "name": "fae tactics/fae_tactics.exe", "os": "win32"}], - "hook": true, - "id": "1124357709312045156", - "name": "Fae Tactics" - }, - { - "executables": [{"is_launcher": false, "name": "heartbound/heartbound.exe", "os": "win32"}], - "hook": true, - "id": "1124357710943633499", - "name": "Heartbound" - }, - { - "executables": [{"is_launcher": false, "name": "gachi heroes/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124357712461967400", - "name": "Gachi Heroes" - }, - { - "executables": [ - {"is_launcher": false, "name": "ghostbusters the video game remastered/ghost.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357714127114341", - "name": "Ghostbusters: The Video Game Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "ironbrigade/ironbrigade.exe", "os": "win32"}], - "hook": true, - "id": "1124357715515424778", - "name": "Iron Brigade" - }, - { - "executables": [{"is_launcher": false, "name": "win64/flickerofhope-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357718761816165", - "name": "Flicker of Hope" - }, - { - "executables": [{"is_launcher": false, "name": "imagwzii/z0mb1es.exe", "os": "win32"}], - "hook": true, - "id": "1124357720355655741", - "name": "I MAED A GAM3 W1TH Z0MB1ES 1NIT!!!1" - }, - { - "executables": [{"is_launcher": false, "name": "frog_detective_2/frog_detective_2.exe", "os": "win32"}], - "hook": true, - "id": "1124357721689440407", - "name": "Frog Detective 2: The Case of the Invisible Wizard" - }, - { - "executables": [ - {"is_launcher": false, "name": "townsmen - a kingdom rebuilt/townsmenrebuilt.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357723476209815", - "name": "Townsmen - A Kingdom Rebuilt" - }, - { - "executables": [{"is_launcher": false, "name": "majesty 2 collection/majesty2.exe", "os": "win32"}], - "hook": true, - "id": "1124357725111996436", - "name": "Majesty 2 Collection" - }, - { - "executables": [{"is_launcher": false, "name": "gnomoria/gnomoria.exe", "os": "win32"}], - "hook": true, - "id": "1124357726886178847", - "name": "Gnomoria" - }, - { - "executables": [{"is_launcher": false, "name": "rolling line/rollingline.exe", "os": "win32"}], - "hook": true, - "id": "1124357728534548530", - "name": "Rolling Line" - }, - { - "executables": [{"is_launcher": false, "name": "the silent age/thesilentage.exe", "os": "win32"}], - "hook": true, - "id": "1124357730224844841", - "name": "The Silent Age" - }, - { - "executables": [ - {"is_launcher": false, "name": "lost lands a hidden object adventure/lostlandsf2p.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357731906769116", - "name": "Lost Lands: A Hidden Object Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hyperjamsteam.exe", "os": "win32"}], - "hook": true, - "id": "1124357733454462996", - "name": "Hyper Jam" - }, - { - "executables": [{"is_launcher": false, "name": "black forest/black forest.exe", "os": "win32"}], - "hook": true, - "id": "1124357735178317966", - "name": "Black Forest" - }, - { - "executables": [{"is_launcher": false, "name": "ancient dungeon vr/ancient_dungeon.exe", "os": "win32"}], - "hook": true, - "id": "1124357737002844210", - "name": "Ancient Dungeon VR" - }, - { - "executables": [{"is_launcher": false, "name": "desktop farm/desktopfarm.exe", "os": "win32"}], - "hook": true, - "id": "1124357738567315456", - "name": "Desktop Farm" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mlbss-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357739926278214", - "name": "My Little Blacksmith Shop" - }, - { - "executables": [{"is_launcher": false, "name": "tape to tape/tape to tape.exe", "os": "win32"}], - "hook": true, - "id": "1124357741570441346", - "name": "Tape to Tape" - }, - { - "executables": [{"is_launcher": false, "name": "life of a pizza/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124357743281721345", - "name": "Life On A Pizza" - }, - { - "executables": [{"is_launcher": false, "name": "abandon ship/abandonship.exe", "os": "win32"}], - "hook": true, - "id": "1124357744644866109", - "name": "Abandon Ship" - }, - { - "executables": [{"is_launcher": false, "name": "regiments/regiments.exe", "os": "win32"}], - "hook": true, - "id": "1124357746414858290", - "name": "Regiments" - }, - { - "executables": [{"is_launcher": false, "name": "ragnarok/ragnarok.exe", "os": "win32"}], - "hook": true, - "id": "1124357748134527119", - "name": "Ragnarok" - }, - { - "executables": [{"is_launcher": false, "name": "battletoads/battletoads.exe", "os": "win32"}], - "hook": true, - "id": "1124357750491730000", - "name": "Battletoads" - }, - { - "executables": [{"is_launcher": false, "name": "bin64/lichdombattlemage.exe", "os": "win32"}], - "hook": true, - "id": "1124357752223973426", - "name": "Lichdom: Battlemage" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wrenchgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357754082045972", - "name": "Wrench" - }, - { - "executables": [{"is_launcher": false, "name": "win64/purerockcrawling-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357755759775875", - "name": "Pure Rock Crawling" - }, - { - "executables": [{"is_launcher": false, "name": "alicemare/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357757500403852", - "name": "Alicemare" - }, - { - "executables": [{"is_launcher": false, "name": "rakuen/engine.exe", "os": "win32"}], - "hook": true, - "id": "1124357759270404206", - "name": "Rakuen" - }, - { - "executables": [{"is_launcher": false, "name": "wrestling empire/wrestling empire.exe", "os": "win32"}], - "hook": true, - "id": "1124357760985878528", - "name": "Wrestling Empire" - }, - { - "executables": [{"is_launcher": false, "name": "scarlet maiden/scarletmaiden.exe", "os": "win32"}], - "hook": true, - "id": "1124357762692956260", - "name": "Scarlet Maiden" - }, - { - "executables": [{"is_launcher": false, "name": "havocado/havocado.exe", "os": "win32"}], - "hook": true, - "id": "1124357764265824276", - "name": "Havocado" - }, - { - "executables": [{"is_launcher": false, "name": "oh...sir! the hollywood roast/ohsirthr.exe", "os": "win32"}], - "hook": true, - "id": "1124357766006456470", - "name": "Oh...Sir! The Hollywood Roast" - }, - { - "executables": [{"is_launcher": false, "name": "star valor/star valor.exe", "os": "win32"}], - "hook": true, - "id": "1124357767692562432", - "name": "Star Valor" - }, - { - "executables": [ - {"is_launcher": false, "name": "jerma's big adventure/jerma's big adventure.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357769449980014", - "name": "Jerma's Big Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "maid of sker/maid of sker.exe", "os": "win32"}], - "hook": true, - "id": "1124357771425501245", - "name": "Maid of Sker" - }, - { - "executables": [{"is_launcher": false, "name": "phogs!/phogs.exe", "os": "win32"}], - "hook": true, - "id": "1124357773145161728", - "name": "PHOGS!" - }, - { - "executables": [{"is_launcher": false, "name": "ao international tennis 2/tennis2.exe", "os": "win32"}], - "hook": true, - "id": "1124357774634135582", - "name": "AO Tennis 2" - }, - { - "executables": [{"is_launcher": false, "name": "keo/keo.exe", "os": "win32"}], - "hook": true, - "id": "1124357776567713802", - "name": "KEO" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ironconflict.exe", "os": "win32"}], - "hook": true, - "id": "1124357778241245205", - "name": "Iron Conflict" - }, - { - "executables": [{"is_launcher": false, "name": "citystate/citystate.exe", "os": "win32"}], - "hook": true, - "id": "1124357779734413393", - "name": "Citystate" - }, - { - "executables": [{"is_launcher": false, "name": "steelrising/steelrising.exe", "os": "win32"}], - "hook": true, - "id": "1124357781395361883", - "name": "Steelrising" - }, - { - "executables": [{"is_launcher": false, "name": "a game about/agameabout.exe", "os": "win32"}], - "hook": true, - "id": "1124357782947250216", - "name": "A Game About" - }, - { - "executables": [{"is_launcher": false, "name": "nova-life/nova-life.exe", "os": "win32"}], - "hook": true, - "id": "1124357784775970836", - "name": "Nova-Life: Amboise" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "pewdiepie legend of the brofist/pewdiepielegendofthebrofist.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124357786235584572", - "name": "PewDiePie: Legend of the Brofist" - }, - { - "executables": [{"is_launcher": false, "name": "heavy rain demo/heavyrain.exe", "os": "win32"}], - "hook": true, - "id": "1124357787938467840", - "name": "Heavy Rain Demo" - }, - { - "executables": [{"is_launcher": false, "name": "age of conan/conanpatcher.exe", "os": "win32"}], - "hook": true, - "id": "1124357789477785662", - "name": "Age of Conan: Unchained" - }, - { - "executables": [{"is_launcher": false, "name": "football tactics/game64.exe", "os": "win32"}], - "hook": true, - "id": "1124357791243583518", - "name": "Football, Tactics & Glory" - }, - { - "executables": [{"is_launcher": false, "name": "patch quest/patch quest.exe", "os": "win32"}], - "hook": true, - "id": "1124357792795471912", - "name": "Patch Quest" - }, - { - "executables": [ - {"is_launcher": false, "name": "gremlins_vs_automatons/gremlins_vs_automatons.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357794213154889", - "name": "Gremlins vs Automatons" - }, - { - "executables": [{"is_launcher": false, "name": "x64/talos_vr.exe", "os": "win32"}], - "hook": true, - "id": "1124357795895062678", - "name": "The Talos Principle VR" - }, - { - "executables": [{"is_launcher": false, "name": "the case of the golden idol/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357797849612368", - "name": "The Case of the Golden Idol" - }, - { - "executables": [{"is_launcher": false, "name": "robin/robin.exe", "os": "win32"}], - "hook": true, - "id": "1124357799799967864", - "name": "Robin" - }, - { - "executables": [{"is_launcher": false, "name": "rayman raving rabbids/settingsapplication.exe", "os": "win32"}], - "hook": true, - "id": "1124357805546156132", - "name": "Rayman: Raving Rabbids" - }, - { - "executables": [{"is_launcher": false, "name": "davigo demo/davigo.exe", "os": "win32"}], - "hook": true, - "id": "1124357807303573635", - "name": "Davigo Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/uncrashed-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357808905793727", - "name": "Uncrashed : FPV Drone Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "win64/toiletchronicles-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357810503827597", - "name": "Toilet Chronicles" - }, - { - "executables": [{"is_launcher": false, "name": "harvest moon/harvest moon light of hope.exe", "os": "win32"}], - "hook": true, - "id": "1124357812244467762", - "name": "Harvest Moon: Light of Hope" - }, - { - "executables": [{"is_launcher": false, "name": "simutrans/simpreloader.exe", "os": "win32"}], - "hook": true, - "id": "1124357813951541318", - "name": "Simutrans" - }, - { - "executables": [{"is_launcher": false, "name": "cassette beasts/cassettebeasts.exe", "os": "win32"}], - "hook": true, - "id": "1124357815734124624", - "name": "Cassette Beasts" - }, - { - "executables": [{"is_launcher": false, "name": "sacred gold/sacred.exe", "os": "win32"}], - "hook": true, - "id": "1124357817420238992", - "name": "Sacred Gold" - }, - { - "executables": [{"is_launcher": false, "name": "mages of mystralia/build.exe", "os": "win32"}], - "hook": true, - "id": "1124357819123122287", - "name": "Mages of Mystralia" - }, - { - "executables": [{"is_launcher": false, "name": "higurashi 02 - watanagashi/higurashiep02.exe", "os": "win32"}], - "hook": true, - "id": "1124357820658233435", - "name": "Higurashi When They Cry Hou - Ch.2 Watanagashi" - }, - { - "executables": [{"is_launcher": false, "name": "frigore/ateeee.exe", "os": "win32"}], - "hook": true, - "id": "1124357822369517630", - "name": "Frigore" - }, - { - "executables": [{"is_launcher": false, "name": "divekick/divekickd3d11.exe", "os": "win32"}], - "hook": true, - "id": "1124357824328249374", - "name": "Divekick" - }, - { - "executables": [ - {"is_launcher": false, "name": "leisure suit larry - wet dreams don't dry/larry.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357825754320976", - "name": "Leisure Suit Larry - Wet Dreams Don't Dry" - }, - { - "executables": [{"is_launcher": false, "name": "escapefirst2/escapefirst2.exe", "os": "win32"}], - "hook": true, - "id": "1124357827339763732", - "name": "Escape First 2" - }, - { - "executables": [{"is_launcher": false, "name": "noble fates/noble fates.exe", "os": "win32"}], - "hook": true, - "id": "1124357829248168068", - "name": "Noble Fates" - }, - { - "executables": [{"is_launcher": false, "name": "911 first responders/em4.exe", "os": "win32"}], - "hook": true, - "id": "1124357830837813258", - "name": "911: First Responders" - }, - { - "executables": [ - {"is_launcher": false, "name": "i'm on observation duty 3/i'm on observation duty 3.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357832549085306", - "name": "I'm on Observation Duty 3" - }, - { - "executables": [{"is_launcher": false, "name": "thedishwashervampiresmile/vampiresmile.exe", "os": "win32"}], - "hook": true, - "id": "1124357833979351050", - "name": "The Dishwasher: Vampire Smile" - }, - { - "executables": [{"is_launcher": false, "name": "rocketbirds_hardboiled/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357835388633088", - "name": "Rocketbirds: Hardboiled Chicken" - }, - { - "executables": [{"is_launcher": false, "name": "yorgio/yorgio.exe", "os": "win32"}], - "hook": true, - "id": "1124357836961501215", - "name": "YORG.io" - }, - { - "executables": [{"is_launcher": false, "name": "the testament of sherlock holmes/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357838651797615", - "name": "The Testament of Sherlock Holmes" - }, - { - "executables": [{"is_launcher": false, "name": "turbo overkill/turbo overkill.exe", "os": "win32"}], - "hook": true, - "id": "1124357840048509090", - "name": "Turbo Overkill" - }, - { - "executables": [{"is_launcher": false, "name": "exec/sonicorigins.exe", "os": "win32"}], - "hook": true, - "id": "1124357841524887653", - "name": "Sonic Origins" - }, - { - "executables": [{"is_launcher": false, "name": "planets under attack/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357843202617384", - "name": "Planets Under Attack" - }, - { - "executables": [{"is_launcher": false, "name": "volgarr/volgarr.exe", "os": "win32"}], - "hook": true, - "id": "1124357845027147796", - "name": "Volgarr the Viking" - }, - { - "executables": [{"is_launcher": false, "name": "tyranobuilder/tyranobuilder.exe", "os": "win32"}], - "hook": true, - "id": "1124357846549676092", - "name": "TyranoBuilder Visual Novel Studio" - }, - { - "executables": [{"is_launcher": false, "name": "win32/lostplanetgame.exe", "os": "win32"}], - "hook": true, - "id": "1124357848185458719", - "name": "Lost Planet 3" - }, - { - "executables": [{"is_launcher": false, "name": "flinthook/flinthook.exe", "os": "win32"}], - "hook": true, - "id": "1124357850190331904", - "name": "Flinthook" - }, - { - "executables": [{"is_launcher": false, "name": "atari vault/atarivault.exe", "os": "win32"}], - "hook": true, - "id": "1124357851696083014", - "name": "Atari Vault" - }, - { - "executables": [{"is_launcher": false, "name": "keeperrl/keeper.exe", "os": "win32"}], - "hook": true, - "id": "1124357853193457724", - "name": "KeeperRL" - }, - { - "executables": [{"is_launcher": false, "name": "marufusha/marfusha.exe", "os": "win32"}], - "hook": true, - "id": "1124357854950862988", - "name": "\u6eb6\u9244\u306e\u30de\u30eb\u30d5\u30fc\u30b7\u30e3" - }, - { - "executables": [{"is_launcher": false, "name": "monument valley/monument valley.exe", "os": "win32"}], - "hook": true, - "id": "1124357856565674167", - "name": "Monument Valley" - }, - { - "executables": [{"is_launcher": false, "name": "ty the tasmanian tiger 2/ty2.exe", "os": "win32"}], - "hook": true, - "id": "1124357858406969395", - "name": "TY the Tasmanian Tiger 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "espresso tycoon prologue/espresso tycoon prologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357859812069453", - "name": "Espresso Tycoon Prologue: Underwater" - }, - { - "executables": [{"is_launcher": false, "name": "prime world defenders 2/defenders2.exe", "os": "win32"}], - "hook": true, - "id": "1124357861707886674", - "name": "Prime World: Defenders 2" - }, - { - "executables": [{"is_launcher": false, "name": "wwe2k17/wwe2k17_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124357863536611380", - "name": "WWE 2K17" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sb2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357865117859881", - "name": "SpaceBourne 2" - }, - { - "executables": [{"is_launcher": false, "name": "heart of crown/crownpc.exe", "os": "win32"}], - "hook": true, - "id": "1124357866460033115", - "name": "Heart of Crown PC" - }, - { - "executables": [{"is_launcher": false, "name": "train fever/trainfever.exe", "os": "win32"}], - "hook": true, - "id": "1124357867953213471", - "name": "Train Fever" - }, - { - "executables": [{"is_launcher": false, "name": "commandos 3 destination berlin/commandos3.exe", "os": "win32"}], - "hook": true, - "id": "1124357869551239298", - "name": "Commandos 3: Destination Berlin" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bb3-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357871124099103", - "name": "Blood Bowl 3" - }, - { - "executables": [{"is_launcher": false, "name": "sorcery!/sorcery!.exe", "os": "win32"}], - "hook": true, - "id": "1124357872785051658", - "name": "Sorcery! Parts 1 & 2" - }, - { - "executables": [{"is_launcher": false, "name": "the crooked man/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357874492129332", - "name": "The Crooked Man" - }, - { - "executables": [{"is_launcher": false, "name": "quasimorphosis captivus/quasimorph.exe", "os": "win32"}], - "hook": true, - "id": "1124357875922383040", - "name": "Quasimorph: End of Dream" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon hunter 5/dh5.exe", "os": "win32"}], - "hook": true, - "id": "1124357877759492257", - "name": "Dungeon Hunter 5" - }, - { - "executables": [{"is_launcher": false, "name": "gg_achbuild/grapple gear.exe", "os": "win32"}], - "hook": true, - "id": "1124357879558844516", - "name": "Grapple Gear" - }, - { - "executables": [{"is_launcher": false, "name": "cave digger/cavedigger.exe", "os": "win32"}], - "hook": true, - "id": "1124357881173655642", - "name": "Cave Digger" - }, - { - "executables": [{"is_launcher": false, "name": "fitforce/fitforce.exe", "os": "win32"}], - "hook": true, - "id": "1124357882993987584", - "name": "Fitforce" - }, - { - "executables": [ - {"is_launcher": false, "name": "spellbook demonslayers prologue/spellbook demonslayers.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357884789141534", - "name": "Spellbook Demonslayers Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "radiator 2/radiator2_steam_windows.exe", "os": "win32"}], - "hook": true, - "id": "1124357886492033094", - "name": "Radiator 2: Anniversary Edition" - }, - { - "executables": [{"is_launcher": false, "name": "fabledom/fabledom.exe", "os": "win32"}], - "hook": true, - "id": "1124357888119427142", - "name": "Fabledom" - }, - { - "executables": [{"is_launcher": false, "name": "cake bash demo/cakebash_win64_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124357889935552562", - "name": "Cake Bash Demo" - }, - { - "executables": [{"is_launcher": false, "name": "galactic junk league/gjl.exe", "os": "win32"}], - "hook": true, - "id": "1124357891722330213", - "name": "Galactic Junk League" - }, - { - "executables": [{"is_launcher": false, "name": "adventure escape mysteries/aem.exe", "os": "win32"}], - "hook": true, - "id": "1124357893261635626", - "name": "Adventure Escape Mysteries" - }, - { - "executables": [{"is_launcher": false, "name": "syberia3/syberia3.exe", "os": "win32"}], - "hook": true, - "id": "1124357894951944332", - "name": "Syberia 3" - }, - { - "executables": [ - {"is_launcher": false, "name": "where the water tastes like wine/wtwtlw_64.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357896357031996", - "name": "Where the Water Tastes Like Wine" - }, - { - "executables": [{"is_launcher": false, "name": "neotokyo/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124357897791492226", - "name": "NEOTOKYO\u00b0" - }, - { - "executables": [{"is_launcher": false, "name": "hakuoki kyoto winds/hakuokiwin.exe", "os": "win32"}], - "hook": true, - "id": "1124357899456622674", - "name": "Hakuoki: Kyoto Winds" - }, - { - "executables": [{"is_launcher": false, "name": "mydockfinder/dock_64.exe", "os": "win32"}], - "hook": true, - "id": "1124357900933025882", - "name": "MyDockFinder" - }, - { - "executables": [ - {"is_launcher": false, "name": "dead island retro revenge/deadislandretrorevenge.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357902510075955", - "name": "Dead Island Retro Revenge" - }, - { - "executables": [{"is_launcher": false, "name": "soundodger/soundodgerplus.exe", "os": "win32"}], - "hook": true, - "id": "1124357904041005136", - "name": "Soundodger+" - }, - { - "executables": [{"is_launcher": false, "name": "nimby rails/nimbyrails.exe", "os": "win32"}], - "hook": true, - "id": "1124357905546756096", - "name": "NIMBY Rails" - }, - { - "executables": [{"is_launcher": false, "name": "bin/nascar15.exe", "os": "win32"}], - "hook": true, - "id": "1124357907190919329", - "name": "NASCAR '15 Victory Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bravely_default_ii-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357908822511616", - "name": "BRAVELY DEFAULT II" - }, - { - "executables": [{"is_launcher": false, "name": "pokerlegends/pokerlegends.exe", "os": "win32"}], - "hook": true, - "id": "1124357910445703281", - "name": "Poker Legends: Tournaments" - }, - { - "executables": [{"is_launcher": false, "name": "warlords/civ4warlords.exe", "os": "win32"}], - "hook": true, - "id": "1124357912287006741", - "name": "Sid Meier's Civilization IV: Warlords" - }, - { - "executables": [{"is_launcher": false, "name": "fungiman/f\u00fcngiman.exe", "os": "win32"}], - "hook": true, - "id": "1124357914048610455", - "name": "Fungiman" - }, - { - "executables": [{"is_launcher": false, "name": "atom rpg trudograd/trudograd_win64.exe", "os": "win32"}], - "hook": true, - "id": "1124357915843776663", - "name": "ATOM RPG Trudograd" - }, - { - "executables": [ - {"is_launcher": false, "name": "touhou mystia izakaya/touhou mystia izakaya.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357917496328313", - "name": "Touhou Mystia's Izakaya" - }, - { - "executables": [{"is_launcher": false, "name": "win64/steelrats-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357919115333753", - "name": "Steel Rats" - }, - { - "executables": [{"is_launcher": false, "name": "tower of time/toweroftime.exe", "os": "win32"}], - "hook": true, - "id": "1124357920587530260", - "name": "Tower of Time" - }, - { - "executables": [{"is_launcher": false, "name": "zooicide/zooicide.exe", "os": "win32"}], - "hook": true, - "id": "1124357922365911121", - "name": "Zooicide" - }, - { - "executables": [{"is_launcher": false, "name": "table manners/tablemanners.exe", "os": "win32"}], - "hook": true, - "id": "1124357923942977546", - "name": "Table Manners" - }, - { - "executables": [{"is_launcher": false, "name": "guns, gore and cannoli 2/ggc2.exe", "os": "win32"}], - "hook": true, - "id": "1124357925574553671", - "name": "Guns, Gore and Cannoli 2" - }, - { - "executables": [{"is_launcher": false, "name": "fantasy grounds unity/fguwebinstall.exe", "os": "win32"}], - "hook": true, - "id": "1124357927151620146", - "name": "Fantasy Grounds Unity" - }, - { - "executables": [{"is_launcher": false, "name": "win64/formata-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357929160687696", - "name": "Formata" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon warfare/dw.exe", "os": "win32"}], - "hook": true, - "id": "1124357930825822328", - "name": "Dungeon Warfare" - }, - { - "executables": [{"is_launcher": false, "name": "fear & hunger 2 termina/game.exe", "os": "win32"}], - "hook": true, - "id": "1124357935976435833", - "name": "Fear & Hunger 2: Termina" - }, - { - "executables": [ - {"is_launcher": false, "name": "halls of torment prelude/hallsoftorment_demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357937419272193", - "name": "Halls of Torment Prelude" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/negligee.exe", "os": "win32"}], - "hook": true, - "id": "1124357938895663154", - "name": "Negligee" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lightbladevr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357940661473340", - "name": "Lightblade VR" - }, - { - "executables": [{"is_launcher": false, "name": "touchstarved demo/touchstarved.exe", "os": "win32"}], - "hook": true, - "id": "1124357942347575336", - "name": "TOUCHSTARVED: Demo" - }, - { - "executables": [{"is_launcher": false, "name": "kitaria fables demo/kitaria fables demo.exe", "os": "win32"}], - "hook": true, - "id": "1124357943920443453", - "name": "Kitaria Fables Demo" - }, - { - "executables": [{"is_launcher": false, "name": "seek or die/seek or die.exe", "os": "win32"}], - "hook": true, - "id": "1124357945359085678", - "name": "Seek Or Die" - }, - { - "executables": [{"is_launcher": false, "name": "distant worlds universe/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124357967920234516", - "name": "Distant Worlds: Universe" - }, - { - "executables": [{"is_launcher": false, "name": "magequit/magequit.exe", "os": "win32"}], - "hook": true, - "id": "1124357969694437599", - "name": "MageQuit" - }, - { - "executables": [{"is_launcher": false, "name": "plane mechanic simulator/pms_build.exe", "os": "win32"}], - "hook": true, - "id": "1124357971493802166", - "name": "Plane Mechanic Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bob-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357973171515542", - "name": "Bang-On Balls: Chronicles" - }, - { - "executables": [{"is_launcher": false, "name": "win64/find_yourself-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357974773743646", - "name": "Find Yourself" - }, - { - "executables": [{"is_launcher": false, "name": "golf defied/golf defied.exe", "os": "win32"}], - "hook": true, - "id": "1124357976338215043", - "name": "Golf Defied" - }, - { - "executables": [{"is_launcher": false, "name": "legacy of kain soul reaver 2/sr2.exe", "os": "win32"}], - "hook": true, - "id": "1124357977860751461", - "name": "Legacy of Kain: Soul Reaver 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/rhome-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124357979739795557", - "name": "Rhome" - }, - { - "executables": [{"is_launcher": false, "name": "sexy mystic survivors/sexymysticsurvivors.exe", "os": "win32"}], - "hook": true, - "id": "1124357981367189594", - "name": "Sexy Mystic Survivors" - }, - { - "executables": [{"is_launcher": false, "name": "turing complete/turing complete.exe", "os": "win32"}], - "hook": true, - "id": "1124357983120412703", - "name": "Turing Complete" - }, - { - "executables": [{"is_launcher": false, "name": "sdata/shadows.exe", "os": "win32"}], - "hook": true, - "id": "1124357984751988877", - "name": "STAR WARS\u2122: Shadows of the Empire" - }, - { - "executables": [{"is_launcher": false, "name": "toem/toem.exe", "os": "win32"}], - "hook": true, - "id": "1124357991123144704", - "name": "TOEM" - }, - { - "executables": [{"is_launcher": false, "name": "80 days/80 days.exe", "os": "win32"}], - "hook": true, - "id": "1124357992884744192", - "name": "80 Days" - }, - { - "executables": [{"is_launcher": false, "name": "evenicle/evenicle.exe", "os": "win32"}], - "hook": true, - "id": "1124357994323398806", - "name": "Evenicle" - }, - { - "executables": [ - {"is_launcher": false, "name": "paint the town red demo/paintthetownreddemo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124357996084998314", - "name": "Paint the Town Red Demo" - }, - { - "executables": [{"is_launcher": false, "name": "he needs his medicine/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124357997813059784", - "name": "He Needs His Medicine" - }, - { - "executables": [{"is_launcher": false, "name": "win64/operationairsoft.exe", "os": "win32"}], - "hook": true, - "id": "1124357999285256262", - "name": "Operation Airsoft" - }, - { - "executables": [{"is_launcher": false, "name": "pro cycling manager 2021/pcm64.exe", "os": "win32"}], - "hook": true, - "id": "1124358000719704096", - "name": "Pro Cycling Manager 2021" - }, - { - "executables": [{"is_launcher": false, "name": "gobang/gobang.exe", "os": "win32"}], - "hook": true, - "id": "1124358002309353554", - "name": "\uc624\ubaa9 \uac00\uc790" - }, - { - "executables": [{"is_launcher": false, "name": "ace combat assault horizon/ace combat_ah.exe", "os": "win32"}], - "hook": true, - "id": "1124358003953512588", - "name": "ACE COMBAT\u2122 ASSAULT HORIZON Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "apex point/apex point.exe", "os": "win32"}], - "hook": true, - "id": "1124358005526384670", - "name": "Apex Point" - }, - { - "executables": [{"is_launcher": false, "name": "steamworld quest/quest.exe", "os": "win32"}], - "hook": true, - "id": "1124358007103434762", - "name": "SteamWorld Quest: Hand of Gilgamech" - }, - { - "executables": [{"is_launcher": false, "name": "hard reset redux/hr.x64.exe", "os": "win32"}], - "hook": true, - "id": "1124358008441426001", - "name": "Hard Reset Redux" - }, - { - "executables": [{"is_launcher": false, "name": "fraymakers/fraymakers.exe", "os": "win32"}], - "hook": true, - "id": "1124358010182058066", - "name": "Fraymakers" - }, - { - "executables": [{"is_launcher": false, "name": "olliolli world/olliolli world.exe", "os": "win32"}], - "hook": true, - "id": "1124358011817840723", - "name": "OlliOlli World" - }, - { - "executables": [{"is_launcher": false, "name": "cossacks ii battle for europe/engine.exe", "os": "win32"}], - "hook": true, - "id": "1124358013361340417", - "name": "Cossacks II: Battle for Europe" - }, - { - "executables": [{"is_launcher": false, "name": "win64/strangecreatures-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358015236190288", - "name": "Strange Creatures" - }, - { - "executables": [ - {"is_launcher": false, "name": "innocence or money - v 0.0.3/innocenceormoney.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358016951664733", - "name": "Innocence Or Money - V 0.0.3" - }, - { - "executables": [{"is_launcher": false, "name": "summer in mara prologue/summer in mara.exe", "os": "win32"}], - "hook": true, - "id": "1124358018264477798", - "name": "Summer in Mara Prologue" - }, - { - "executables": [ - {"is_launcher": false, "name": "love, money, rock-n-roll/love, money, rock'n'roll.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358019749269554", - "name": "Love, Money, Rock'n'Roll" - }, - { - "executables": [{"is_launcher": false, "name": "chicken invaders 5/ci5.exe", "os": "win32"}], - "hook": true, - "id": "1124358021355683911", - "name": "Chicken Invaders 5" - }, - { - "executables": [{"is_launcher": false, "name": "to the rescue!/to the rescue!.exe", "os": "win32"}], - "hook": true, - "id": "1124358022945321092", - "name": "To The Rescue!" - }, - { - "executables": [{"is_launcher": false, "name": "raid world war ii/raid_win64_d3d9_release.exe", "os": "win32"}], - "hook": true, - "id": "1124358024732098661", - "name": "RAID: World War II" - }, - { - "executables": [{"is_launcher": false, "name": "dkonline/dkonline.exe", "os": "win32"}], - "hook": true, - "id": "1124358026351104081", - "name": "DK Online" - }, - { - "executables": [{"is_launcher": false, "name": "diner bros/diner bros.exe", "os": "win32"}], - "hook": true, - "id": "1124358028074958889", - "name": "Diner Bros" - }, - { - "executables": [{"is_launcher": false, "name": "rainwallpaper/rainwallpaper.exe", "os": "win32"}], - "hook": true, - "id": "1124358029756878889", - "name": "RainWallpaper" - }, - { - "executables": [{"is_launcher": false, "name": "poly bridge 3/poly bridge 3.exe", "os": "win32"}], - "hook": true, - "id": "1124358031635918949", - "name": "Poly Bridge 3" - }, - { - "executables": [{"is_launcher": false, "name": "plunder panic/plunder panic.exe", "os": "win32"}], - "hook": true, - "id": "1124358033301065950", - "name": "Plunder Panic" - }, - { - "executables": [{"is_launcher": false, "name": "mirror maker/mirror maker.exe", "os": "win32"}], - "hook": true, - "id": "1124358034815201422", - "name": "Mirror Maker" - }, - { - "executables": [{"is_launcher": false, "name": "win64/triangle_strategy-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358036778139781", - "name": "TRIANGLE STRATEGY" - }, - { - "executables": [{"is_launcher": false, "name": "understand/understand.exe", "os": "win32"}], - "hook": true, - "id": "1124358038267113523", - "name": "Understand" - }, - { - "executables": [{"is_launcher": false, "name": "win32/kravenmanor.exe", "os": "win32"}], - "hook": true, - "id": "1124358040146165811", - "name": "Kraven Manor" - }, - { - "executables": [{"is_launcher": false, "name": "dwarfs - f2p/dwarfs.exe", "os": "win32"}], - "hook": true, - "id": "1124358042000044032", - "name": "Dwarfs F2P" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hypesquad-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358043547746304", - "name": "HypeSquad Demo" - }, - { - "executables": [{"is_launcher": false, "name": "dead bits/dead bits.exe", "os": "win32"}], - "hook": true, - "id": "1124358045795889182", - "name": "Dead Bits" - }, - { - "executables": [ - {"is_launcher": false, "name": "dragon quest builders 2 jumbo demo/dqb2_eu_trial.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358048761270282", - "name": "DRAGON QUEST BUILDERS 2 JUMBO DEMO" - }, - { - "executables": [{"is_launcher": false, "name": "king4steam/wheelie king 4 pc.exe", "os": "win32"}], - "hook": true, - "id": "1124358050212495450", - "name": "Wheelie King Online" - }, - { - "executables": [{"is_launcher": false, "name": "exe64/wb.exe", "os": "win32"}], - "hook": true, - "id": "1124358051860860938", - "name": "Wonder Boy: The Dragon's Trap" - }, - { - "executables": [{"is_launcher": false, "name": "garbage hobo prophecy/garbage.exe", "os": "win32"}], - "hook": true, - "id": "1124358053467275357", - "name": "Garbage: Hobo Prophecy" - }, - { - "executables": [{"is_launcher": false, "name": "deadly days/deadly days.exe", "os": "win32"}], - "hook": true, - "id": "1124358055086280744", - "name": "Deadly Days" - }, - { - "executables": [{"is_launcher": false, "name": "1982/1982.exe", "os": "win32"}], - "hook": true, - "id": "1124358056575254688", - "name": "1982" - }, - { - "executables": [{"is_launcher": false, "name": "patch/tos.exe", "os": "win32"}], - "hook": true, - "id": "1124358058194251898", - "name": "Tree of Savior (Japanese Ver.)" - }, - { - "executables": [{"is_launcher": false, "name": "agarest generations of war/agarest.exe", "os": "win32"}], - "hook": true, - "id": "1124358059746152619", - "name": "Agarest: Generations of War" - }, - { - "executables": [{"is_launcher": false, "name": "hentai neighbors/hentai neighbors.exe", "os": "win32"}], - "hook": true, - "id": "1124358061314818138", - "name": "Hentai Neighbors" - }, - { - "executables": [{"is_launcher": false, "name": "hauntedmemories/hm.exe", "os": "win32"}], - "hook": true, - "id": "1124358062954786836", - "name": "Haunted Memories" - }, - { - "executables": [{"is_launcher": false, "name": "save jesus/save jesus.exe", "os": "win32"}], - "hook": true, - "id": "1124358064884174908", - "name": "Save Jesus" - }, - { - "executables": [{"is_launcher": false, "name": "elven assassin/elven assassin.exe", "os": "win32"}], - "hook": true, - "id": "1124358066553499679", - "name": "Elven Assassin" - }, - { - "executables": [{"is_launcher": false, "name": "win64/project.exe", "os": "win32"}], - "hook": true, - "id": "1124358068231225364", - "name": "Shattered Lights" - }, - { - "executables": [{"is_launcher": false, "name": "fireboy & watergirl elements/fbwg.exe", "os": "win32"}], - "hook": true, - "id": "1124358070202552360", - "name": "Fireboy & Watergirl: Elements" - }, - { - "executables": [{"is_launcher": false, "name": "200 mixed juice!/200mj.exe", "os": "win32"}], - "hook": true, - "id": "1124358071733465180", - "name": "200% Mixed Juice!" - }, - { - "executables": [{"is_launcher": false, "name": "granny chapter two/granny chapter two.exe", "os": "win32"}], - "hook": true, - "id": "1124358073260199936", - "name": "Granny: Chapter Two" - }, - { - "executables": [{"is_launcher": false, "name": "skydome/skydome.exe", "os": "win32"}], - "hook": true, - "id": "1124358074753368145", - "name": "Skydome" - }, - { - "executables": [{"is_launcher": false, "name": "zeepkist/zeepkist.exe", "os": "win32"}], - "hook": true, - "id": "1124358076590469140", - "name": "Zeepkist" - }, - { - "executables": [{"is_launcher": false, "name": "godsbane idle/godsbane.exe", "os": "win32"}], - "hook": true, - "id": "1124358078259806238", - "name": "Godsbane Idle" - }, - { - "executables": [{"is_launcher": false, "name": "arcana heart 3 love max/ah3lm.exe", "os": "win32"}], - "hook": true, - "id": "1124358079878811798", - "name": "Arcana Heart 3 LOVE MAX!!!!!" - }, - { - "executables": [{"is_launcher": false, "name": "deflector specimen zero/deflector.exe", "os": "win32"}], - "hook": true, - "id": "1124358081485221970", - "name": "Deflector: Specimen Zero" - }, - { - "executables": [{"is_launcher": false, "name": "shiningresonancerefrain/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358083074867242", - "name": "Shining Resonance Refrain" - }, - { - "executables": [{"is_launcher": false, "name": "office space idle profits/officespace.exe", "os": "win32"}], - "hook": true, - "id": "1124358084651921528", - "name": "Office Space: Idle Profits" - }, - { - "executables": [ - {"is_launcher": false, "name": "pathfinder adventures/pathfinderadventures.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358086459674624", - "name": "Pathfinder Adventures" - }, - { - "executables": [{"is_launcher": false, "name": "notruf 2 showroom/notruf 2 showroom.exe", "os": "win32"}], - "hook": true, - "id": "1124358087990591499", - "name": "Notruf 112 - Die Feuerwehr Simulation 2: Showroom" - }, - { - "executables": [{"is_launcher": false, "name": "warlord britannia/warlord britannia.exe", "os": "win32"}], - "hook": true, - "id": "1124358089303404655", - "name": "Warlord: Britannia" - }, - { - "executables": [{"is_launcher": false, "name": "the drift challenge/the drift challenge.exe", "os": "win32"}], - "hook": true, - "id": "1124358091140513822", - "name": "The Drift Challenge" - }, - { - "executables": [{"is_launcher": false, "name": "kawaii neko girls 2/kawaii neko girls 2.exe", "os": "win32"}], - "hook": true, - "id": "1124358092872765450", - "name": "Kawaii Neko Girls 2" - }, - { - "executables": [{"is_launcher": false, "name": "gunman and the witch/gunman and the witch.exe", "os": "win32"}], - "hook": true, - "id": "1124358094470791299", - "name": "Gunman And The Witch" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thecenozoicera-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358096081408040", - "name": "The Cenozoic Era" - }, - { - "executables": [{"is_launcher": false, "name": "war robots vr the skirmish/wr-vr.exe", "os": "win32"}], - "hook": true, - "id": "1124358097973031072", - "name": "War Robots VR: The Skirmish" - }, - { - "executables": [ - {"is_launcher": false, "name": "super meat boy forever/supermeatboyforever.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358099906613299", - "name": "Super Meat Boy Forever" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tactics-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358101383004231", - "name": "Shardbound" - }, - { - "executables": [{"is_launcher": false, "name": "demoncrawl/demoncrawl.exe", "os": "win32"}], - "hook": true, - "id": "1124358103245279333", - "name": "DemonCrawl" - }, - { - "executables": [{"is_launcher": false, "name": "dandyace/dandyace.exe", "os": "win32"}], - "hook": true, - "id": "1124358104805556446", - "name": "Dandy Ace" - }, - { - "executables": [{"is_launcher": false, "name": "garou mark of the wolves/garou.exe", "os": "win32"}], - "hook": true, - "id": "1124358106160312420", - "name": "GAROU: MARK OF THE WOLVES" - }, - { - "executables": [{"is_launcher": false, "name": "progressbar95/progressbar95.exe", "os": "win32"}], - "hook": true, - "id": "1124358107674464327", - "name": "Progressbar95" - }, - { - "executables": [{"is_launcher": false, "name": "win64/zombiesbeyondme-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358109134073866", - "name": "Zombies Beyond Me" - }, - { - "executables": [{"is_launcher": false, "name": "oddworld munchs oddysee/munch.exe", "os": "win32"}], - "hook": true, - "id": "1124358110966988882", - "name": "Oddworld: Munch's Oddysee" - }, - { - "executables": [{"is_launcher": false, "name": "the unfinished swan/tus.exe", "os": "win32"}], - "hook": true, - "id": "1124358112858615870", - "name": "The Unfinished Swan" - }, - { - "executables": [{"is_launcher": false, "name": "besetup/setup_battleyearmagold.exe", "os": "win32"}], - "hook": true, - "id": "1124358114376962168", - "name": "Arma: Gold Edition" - }, - { - "executables": [{"is_launcher": false, "name": "zup! 9/zup! 9.exe", "os": "win32"}], - "hook": true, - "id": "1124358116172120144", - "name": "Zup! 9" - }, - { - "executables": [{"is_launcher": false, "name": "miska's cave/miska's cave.exe", "os": "win32"}], - "hook": true, - "id": "1124358117950501016", - "name": "Miska's Cave" - }, - { - "executables": [{"is_launcher": false, "name": "microworks/microworks.exe", "os": "win32"}], - "hook": true, - "id": "1124358119804387378", - "name": "MicroWorks" - }, - { - "executables": [{"is_launcher": false, "name": "terraformers/terraformers.exe", "os": "win32"}], - "hook": true, - "id": "1124358121259814942", - "name": "Terraformers" - }, - { - "executables": [{"is_launcher": false, "name": "win64/jointwar-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358122929139804", - "name": "Joint War" - }, - { - "executables": [ - {"is_launcher": false, "name": "mosaique neko waifus 3/mosaique neko waifus 3.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358124657197127", - "name": "Mosaique Neko Waifus 3" - }, - { - "executables": [ - {"is_launcher": false, "name": "star chef cooking & restaurant game/star chef.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358126137782382", - "name": "Star Chef: Cooking & Restaurant Game" - }, - { - "executables": [{"is_launcher": false, "name": "battle of empires 1914-1918/boe-1914.exe", "os": "win32"}], - "hook": true, - "id": "1124358127786147840", - "name": "Battle of Empires : 1914-1918" - }, - { - "executables": [{"is_launcher": false, "name": "the descendant/descendant_windows.exe", "os": "win32"}], - "hook": true, - "id": "1124358129430306837", - "name": "The Descendant" - }, - { - "executables": [{"is_launcher": false, "name": "missing translation/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124358131225477120", - "name": "Missing Translation" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/fujiwarab.exe", "os": "win32"}], - "hook": true, - "id": "1124358132794142720", - "name": "Fujiwara Bittersweet" - }, - { - "executables": [{"is_launcher": false, "name": "accident/accident.exe", "os": "win32"}], - "hook": true, - "id": "1124358134752886927", - "name": "Accident" - }, - { - "executables": [{"is_launcher": false, "name": "fate the cursed king/fate.exe", "os": "win32"}], - "hook": true, - "id": "1124358136304775168", - "name": "FATE: The Cursed King" - }, - { - "executables": [{"is_launcher": false, "name": "edge/edge.exe", "os": "win32"}], - "hook": true, - "id": "1124358138074779758", - "name": "EDGE" - }, - { - "executables": [{"is_launcher": false, "name": "airscape/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124358139702165574", - "name": "Airscape: The Fall of Gravity" - }, - { - "executables": [{"is_launcher": false, "name": "war dust/wardust.exe", "os": "win32"}], - "hook": true, - "id": "1124358141497323631", - "name": "WAR DUST" - }, - { - "executables": [{"is_launcher": false, "name": "the ship single player/ship.exe", "os": "win32"}], - "hook": true, - "id": "1124358146681491599", - "name": "The Ship Single Player" - }, - { - "executables": [{"is_launcher": false, "name": "galimulator/galimulator-windows-64bit.exe", "os": "win32"}], - "hook": true, - "id": "1124358148749279252", - "name": "Galimulator" - }, - { - "executables": [{"is_launcher": false, "name": "destined/destined.exe", "os": "win32"}], - "hook": true, - "id": "1124358150456365116", - "name": "Destined" - }, - { - "executables": [{"is_launcher": false, "name": "bin/hellgate_sp_x86.exe", "os": "win32"}], - "hook": true, - "id": "1124358152255713390", - "name": "HELLGATE: London" - }, - { - "executables": [ - {"is_launcher": false, "name": "yooka-laylee and the impossible lair/ylilwin64.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358154189291670", - "name": "Yooka-Laylee and the Impossible Lair" - }, - { - "executables": [{"is_launcher": false, "name": "tower 3d pro/tower3d.exe", "os": "win32"}], - "hook": true, - "id": "1124358155959283762", - "name": "Tower!3D Pro" - }, - { - "executables": [{"is_launcher": false, "name": "bard idle/bard.exe", "os": "win32"}], - "hook": true, - "id": "1124358157498597507", - "name": "Bard Idle" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "spirit hunters infinite horde/spirit hunters infinite horde.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358159058882621", - "name": "Spirit Hunters: Infinite Horde" - }, - { - "executables": [{"is_launcher": false, "name": "win64/unrealgame.exe", "os": "win32"}], - "hook": true, - "id": "1124358160891785278", - "name": "The Last Job" - }, - { - "executables": [{"is_launcher": false, "name": "shrine/shrine.exe", "os": "win32"}], - "hook": true, - "id": "1124358162720505957", - "name": "Shrine" - }, - { - "executables": [{"is_launcher": false, "name": "they bleed pixels/they bleed pixels pc.exe", "os": "win32"}], - "hook": true, - "id": "1124358164058484736", - "name": "They Bleed Pixels" - }, - { - "executables": [{"is_launcher": false, "name": "santavn/santa.exe", "os": "win32"}], - "hook": true, - "id": "1124358166214365225", - "name": "Adolescent Santa Claus" - }, - { - "executables": [{"is_launcher": false, "name": "ghost master/ghost.exe", "os": "win32"}], - "hook": true, - "id": "1124358167711727697", - "name": "Ghost Master" - }, - { - "executables": [{"is_launcher": false, "name": "increlution/increlution.exe", "os": "win32"}], - "hook": true, - "id": "1124358169196515509", - "name": "Increlution" - }, - { - "executables": [{"is_launcher": false, "name": "marble world/marble world.exe", "os": "win32"}], - "hook": true, - "id": "1124358170786152538", - "name": "Marble World" - }, - { - "executables": [{"is_launcher": false, "name": "storyteller/storyteller.exe", "os": "win32"}], - "hook": true, - "id": "1124358172434518056", - "name": "Storyteller" - }, - { - "executables": [{"is_launcher": false, "name": "decent icons/decenticonswpf.exe", "os": "win32"}], - "hook": true, - "id": "1124358173915103262", - "name": "Decent Icons" - }, - { - "executables": [{"is_launcher": false, "name": "x64/samtlh.exe", "os": "win32"}], - "hook": true, - "id": "1124358175420862625", - "name": "Serious Sam VR: The Last Hope" - }, - { - "executables": [{"is_launcher": false, "name": "axiom content/axiom.exe", "os": "win32"}], - "hook": true, - "id": "1124358177035665470", - "name": "Axiom" - }, - { - "executables": [ - {"is_launcher": false, "name": "spellbook demonslayers/spellbook demonslayers.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358178885357669", - "name": "Spellbook Demonslayers" - }, - { - "executables": [{"is_launcher": false, "name": "rebirthmr wang/rebirth mr wang.exe", "os": "win32"}], - "hook": true, - "id": "1124358180449829054", - "name": "Rebirth:Mr Wang" - }, - { - "executables": [{"is_launcher": false, "name": "transport inc/transportinc.exe", "os": "win32"}], - "hook": true, - "id": "1124358182446313502", - "name": "Transport INC" - }, - { - "executables": [{"is_launcher": false, "name": "fantasy girl/fantasy girl.exe", "os": "win32"}], - "hook": true, - "id": "1124358184119844964", - "name": "Fantasy Girl" - }, - { - "executables": [{"is_launcher": false, "name": "win64/predecessorclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358185470406746", - "name": "Predecessor" - }, - { - "executables": [ - {"is_launcher": false, "name": "love, money, rock-n-roll demo/love, money, rock'n'roll.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358187185881099", - "name": "Love, Money, Rock'n'Roll Demo" - }, - { - "executables": [{"is_launcher": false, "name": "caveblazers together/caveblazers.exe", "os": "win32"}], - "hook": true, - "id": "1124358188863598683", - "name": "Caveblazers Together" - }, - { - "executables": [{"is_launcher": false, "name": "ronin/ronin.exe", "os": "win32"}], - "hook": true, - "id": "1124358190482604072", - "name": "RONIN" - }, - { - "executables": [ - {"is_launcher": false, "name": "dogs organized neatly/dogs organized neatly.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358192277762078", - "name": "Dogs Organized Neatly" - }, - { - "executables": [ - {"is_launcher": false, "name": "gothic 3 forsaken gods/gothic iii forsaken gods.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358193817079868", - "name": "Gothic 3 Forsaken Gods Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "construct2-win64/construct2.exe", "os": "win32"}], - "hook": true, - "id": "1124358195507376158", - "name": "Construct 2 Free" - }, - { - "executables": [{"is_launcher": false, "name": "miss neko 3/miss neko 3.exe", "os": "win32"}], - "hook": true, - "id": "1124358197138964573", - "name": "Miss Neko 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fractalfury.exe", "os": "win32"}], - "hook": true, - "id": "1124358198590189648", - "name": "Fractal Fury" - }, - { - "executables": [{"is_launcher": false, "name": "instruments of destruction/instruments.exe", "os": "win32"}], - "hook": true, - "id": "1124358200024649778", - "name": "Instruments of Destruction" - }, - { - "executables": [{"is_launcher": false, "name": "tokyo dark/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124358201622675506", - "name": "Tokyo Dark" - }, - { - "executables": [{"is_launcher": false, "name": "barrier x/barrierx.exe", "os": "win32"}], - "hook": true, - "id": "1124358203388473354", - "name": "BARRIER X" - }, - { - "executables": [{"is_launcher": false, "name": "total miner/studioforge.totalminer.exe", "os": "win32"}], - "hook": true, - "id": "1124358204906819694", - "name": "Total Miner" - }, - { - "executables": [{"is_launcher": false, "name": "starwhal/starwhal.exe", "os": "win32"}], - "hook": true, - "id": "1124358206462898278", - "name": "STARWHAL" - }, - { - "executables": [{"is_launcher": false, "name": "live2dviewerex/update.exe", "os": "win32"}], - "hook": true, - "id": "1124358208136433787", - "name": "Live2DViewerEX" - }, - { - "executables": [{"is_launcher": false, "name": "game corp dx/gamecorpdx.exe", "os": "win32"}], - "hook": true, - "id": "1124358210149691472", - "name": "Game Corp DX" - }, - { - "executables": [{"is_launcher": false, "name": "win64/gunsmithproject-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358211684814950", - "name": "Gunsmith" - }, - { - "executables": [{"is_launcher": false, "name": "distancingexe/distancing.exe", "os": "win32"}], - "hook": true, - "id": "1124358213249286285", - "name": "Distancing" - }, - { - "executables": [{"is_launcher": false, "name": "fortressv2/fortressv2.exe", "os": "win32"}], - "hook": true, - "id": "1124358215094784151", - "name": "\ud3ec\ud2b8\ub9ac\uc2a4 V2" - }, - { - "executables": [{"is_launcher": false, "name": "atlantic fleet/atlanticfleet.exe", "os": "win32"}], - "hook": true, - "id": "1124358216827023370", - "name": "Atlantic Fleet" - }, - { - "executables": [{"is_launcher": false, "name": "dynasty warriors 9/dw9.exe", "os": "win32"}], - "hook": true, - "id": "1124358218827714600", - "name": "DYNASTY WARRIORS 9" - }, - { - "executables": [{"is_launcher": false, "name": "gnog/gnog.exe", "os": "win32"}], - "hook": true, - "id": "1124358220387979314", - "name": "GNOG" - }, - { - "executables": [{"is_launcher": false, "name": "ja2_wildfire/wf6.exe", "os": "win32"}], - "hook": true, - "id": "1124358222141206528", - "name": "Jagged Alliance 2 - Wildfire" - }, - { - "executables": [{"is_launcher": false, "name": "x invader prologue/x invader.exe", "os": "win32"}], - "hook": true, - "id": "1124358223961538630", - "name": "X Invader: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "siralim ultimate/siralimultimate.exe", "os": "win32"}], - "hook": true, - "id": "1124358225920282785", - "name": "Siralim Ultimate" - }, - { - "executables": [{"is_launcher": false, "name": "showdown bandit/showdown bandit.exe", "os": "win32"}], - "hook": true, - "id": "1124358227476365322", - "name": "Showdown Bandit" - }, - { - "executables": [{"is_launcher": false, "name": "64bit/nolimits2app.exe", "os": "win32"}], - "hook": true, - "id": "1124358229158285372", - "name": "NoLimits 2 Roller Coaster Simulation Demo" - }, - { - "executables": [{"is_launcher": false, "name": "wooloop/wooloop.exe", "os": "win32"}], - "hook": true, - "id": "1124358230475292772", - "name": "WooLoop" - }, - { - "executables": [{"is_launcher": false, "name": "pool nation/pool.exe", "os": "win32"}], - "hook": true, - "id": "1124358232039764099", - "name": "Pool Nation" - }, - { - "executables": [{"is_launcher": false, "name": "win64/projectagartha-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358233587470386", - "name": "Expedition Agartha" - }, - { - "executables": [{"is_launcher": false, "name": "conan unconquered/clientg.exe", "os": "win32"}], - "hook": true, - "id": "1124358235470704782", - "name": "Conan Unconquered" - }, - { - "executables": [{"is_launcher": false, "name": "godstrigger/godstrigger.exe", "os": "win32"}], - "hook": true, - "id": "1124358237190377602", - "name": "God's Trigger" - }, - { - "executables": [{"is_launcher": false, "name": "card shark/card_shark.exe", "os": "win32"}], - "hook": true, - "id": "1124358238738071633", - "name": "Card Shark" - }, - { - "executables": [{"is_launcher": false, "name": "nation red/nationred.exe", "os": "win32"}], - "hook": true, - "id": "1124358240331903077", - "name": "Nation Red" - }, - { - "executables": [{"is_launcher": false, "name": "only if/only if.exe", "os": "win32"}], - "hook": true, - "id": "1124358242085126224", - "name": "Only If" - }, - { - "executables": [{"is_launcher": false, "name": "it lurks below/ilb.exe", "os": "win32"}], - "hook": true, - "id": "1124358244165496883", - "name": "It Lurks Below" - }, - { - "executables": [{"is_launcher": false, "name": "automobilista 2 demo/ams2demoavx.exe", "os": "win32"}], - "hook": true, - "id": "1124358245826449550", - "name": "Automobilista 2 Demo VW TSI Cup" - }, - { - "executables": [{"is_launcher": false, "name": "sons of valhalla demo/sov.exe", "os": "win32"}], - "hook": true, - "id": "1124358247298646117", - "name": "Sons of Valhalla Demo" - }, - { - "executables": [{"is_launcher": false, "name": "nexomon/nexomon.exe", "os": "win32"}], - "hook": true, - "id": "1124358249123172432", - "name": "Nexomon" - }, - { - "executables": [{"is_launcher": false, "name": "breadsticks/breadsticks.exe", "os": "win32"}], - "hook": true, - "id": "1124358250746363934", - "name": "Breadsticks" - }, - { - "executables": [ - {"is_launcher": false, "name": "shirenthewanderer5plus/shirenthewanderer5plus.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358252281483334", - "name": "\u4e0d\u601d\u8b70\u306e\u30c0\u30f3\u30b8\u30e7\u30f3 \u98a8\u6765\u306e\u30b7\u30ec\u30f35plus \u30d5\u30a9\u30fc\u30c1\u30e5\u30f3\u30bf\u30ef\u30fc\u3068\u904b\u547d\u306e\u30c0\u30a4\u30b9" - }, - { - "executables": [{"is_launcher": false, "name": "lewdapocalypse demo/lewdapocalypse demo.exe", "os": "win32"}], - "hook": true, - "id": "1124358253707542558", - "name": "LEWDAPOCALYPSE Demo" - }, - { - "executables": [{"is_launcher": false, "name": "zs/zs.exe", "os": "win32"}], - "hook": true, - "id": "1124358255125213184", - "name": "Zombie Survival" - }, - { - "executables": [{"is_launcher": false, "name": "casual desktop game/dnycasualdeskgame.exe", "os": "win32"}], - "hook": true, - "id": "1124358256610001080", - "name": "Casual Desktop Game" - }, - { - "executables": [{"is_launcher": false, "name": "1bitheart/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358258258366594", - "name": "1bitHeart" - }, - { - "executables": [{"is_launcher": false, "name": "crystal maidens/crystal maidens.exe", "os": "win32"}], - "hook": true, - "id": "1124358260187742268", - "name": "Crystal Maidens" - }, - { - "executables": [{"is_launcher": false, "name": "amnesia the bunker/amnesiathebunker.exe", "os": "win32"}], - "hook": true, - "id": "1124358261987102851", - "name": "Amnesia: The Bunker" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mxgp6-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358263832592475", - "name": "MXGP 2020 - The Official Motocross Videogame" - }, - { - "executables": [{"is_launcher": false, "name": "tangle tower/tangle tower.exe", "os": "win32"}], - "hook": true, - "id": "1124358265464172664", - "name": "Tangle Tower" - }, - { - "executables": [{"is_launcher": false, "name": "cart racer/cart_racer.exe", "os": "win32"}], - "hook": true, - "id": "1124358267221594192", - "name": "Cart Racer" - }, - { - "executables": [{"is_launcher": false, "name": "white noise online/whitenoiseonline.exe", "os": "win32"}], - "hook": true, - "id": "1124358268869951570", - "name": "White Noise Online" - }, - { - "executables": [ - {"is_launcher": false, "name": "virtual villagers origins 2/virtual villagers origins 2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358270803521628", - "name": "Virtual Villagers Origins 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/slopecrashershome-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358272628052029", - "name": "Slopecrashers Demo" - }, - { - "executables": [{"is_launcher": false, "name": "horror night/horror night.exe", "os": "win32"}], - "hook": true, - "id": "1124358274293182615", - "name": "Horror Night" - }, - { - "executables": [{"is_launcher": false, "name": "atomzombiesmasher/atomzombiesmasher.exe", "os": "win32"}], - "hook": true, - "id": "1124358276130295828", - "name": "Atom Zombie Smasher" - }, - { - "executables": [{"is_launcher": false, "name": "streamer daily/streamer daily.exe", "os": "win32"}], - "hook": true, - "id": "1124358277023678615", - "name": "Streamer Daily" - }, - { - "executables": [{"is_launcher": false, "name": "agent a a puzzle in disguise/agenta.exe", "os": "win32"}], - "hook": true, - "id": "1124358278655266917", - "name": "Agent A: A puzzle in disguise" - }, - { - "executables": [{"is_launcher": false, "name": "fate undiscovered realms/fate.exe", "os": "win32"}], - "hook": true, - "id": "1124358280320397412", - "name": "FATE: Undiscovered Realms" - }, - { - "executables": [{"is_launcher": false, "name": "cthulhu saves the world/cstw.exe", "os": "win32"}], - "hook": true, - "id": "1124358281851326474", - "name": "Cthulhu Saves the World" - }, - { - "executables": [{"is_launcher": false, "name": "breakarts 2/ba2.exe", "os": "win32"}], - "hook": true, - "id": "1124358282669211649", - "name": "BREAK ARTS II" - }, - { - "executables": [{"is_launcher": false, "name": "hexen/base/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124358284455981117", - "name": "HeXen: Beyond Heretic" - }, - { - "executables": [{"is_launcher": false, "name": "the complex/thecomplex.exe", "os": "win32"}], - "hook": true, - "id": "1124358286188236891", - "name": "The Complex" - }, - { - "executables": [{"is_launcher": false, "name": "starpoint gemini 2/starpointgemini2.exe", "os": "win32"}], - "hook": true, - "id": "1124358288436379779", - "name": "Starpoint Gemini 2" - }, - { - "executables": [{"is_launcher": false, "name": "fields of battle/fob.exe", "os": "win32"}], - "hook": true, - "id": "1124358290013433989", - "name": "Fields of Battle" - }, - { - "executables": [{"is_launcher": false, "name": "molek-syntez/molek-syntez.exe", "os": "win32"}], - "hook": true, - "id": "1124358291653410929", - "name": "MOLEK-SYNTEZ" - }, - { - "executables": [{"is_launcher": false, "name": "executable/riskysrevenge.exe", "os": "win32"}], - "hook": true, - "id": "1124358293586980894", - "name": "Shantae: Risky's Revenge - Director's Cut" - }, - { - "executables": [{"is_launcher": false, "name": "duckseasonpc/duckseasonpc.exe", "os": "win32"}], - "hook": true, - "id": "1124358295600255056", - "name": "Duck Season PC" - }, - { - "executables": [ - {"is_launcher": false, "name": "lonely mountains downhill - demo/lmd_demo_win_x64.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358297487687800", - "name": "Lonely Mountains: Downhill Demo" - }, - { - "executables": [{"is_launcher": false, "name": "blocks/blocks.exe", "os": "win32"}], - "hook": true, - "id": "1124358298800500926", - "name": "Blocks" - }, - { - "executables": [{"is_launcher": false, "name": "exoblast/exoblast.exe", "os": "win32"}], - "hook": true, - "id": "1124358300474036354", - "name": "Exoblast" - }, - { - "executables": [ - {"is_launcher": false, "name": "shovel knight - shovel of hope/shovelofhope.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358304190185555", - "name": "Shovel Knight: Shovel of Hope" - }, - { - "executables": [{"is_launcher": false, "name": "win64/edfir-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358305788211230", - "name": "EARTH DEFENSE FORCE: IRON RAIN" - }, - { - "executables": [{"is_launcher": false, "name": "win64/nomads-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358307746955344", - "name": "Nomads of Driftland" - }, - { - "executables": [{"is_launcher": false, "name": "fate the traitor soul/fate.exe", "os": "win32"}], - "hook": true, - "id": "1124358309231734804", - "name": "FATE: The Traitor Soul" - }, - { - "executables": [{"is_launcher": false, "name": "hentaiminesweeper/hentai minesweeper.exe", "os": "win32"}], - "hook": true, - "id": "1124358311232426086", - "name": "Hentai MineSweeper" - }, - { - "executables": [{"is_launcher": false, "name": "escape academy/escape academy.exe", "os": "win32"}], - "hook": true, - "id": "1124358313124048976", - "name": "Escape Academy" - }, - { - "executables": [{"is_launcher": false, "name": "cute honey 2/cutehoney2.exe", "os": "win32"}], - "hook": true, - "id": "1124358314902437969", - "name": "Cute Honey 2" - }, - { - "executables": [{"is_launcher": false, "name": "guilty gear x2 #reload/ggx2.exe", "os": "win32"}], - "hook": true, - "id": "1124358316596940810", - "name": "Guilty Gear X2 #Reload" - }, - { - "executables": [{"is_launcher": false, "name": "wildfire/wildfire.exe", "os": "win32"}], - "hook": true, - "id": "1124358318350155877", - "name": "Wildfire" - }, - { - "executables": [{"is_launcher": false, "name": "merchant of the skies/merchant.exe", "os": "win32"}], - "hook": true, - "id": "1124358320032075877", - "name": "Merchant of the Skies" - }, - { - "executables": [{"is_launcher": false, "name": "press x to not die/press x to not die.exe", "os": "win32"}], - "hook": true, - "id": "1124358321562992740", - "name": "Press X to Not Die" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "medieval shopkeeper simulator/medieval shopkeeper simulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358323144241244", - "name": "Medieval Shopkeeper Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "lust epidemic/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358324691947751", - "name": "Lust Epidemic" - }, - { - "executables": [{"is_launcher": false, "name": "after the inferno/aftertheinferno.exe", "os": "win32"}], - "hook": true, - "id": "1124358326508077066", - "name": "After the Inferno" - }, - { - "executables": [{"is_launcher": false, "name": "lunar's chosen/lunarschosen.exe", "os": "win32"}], - "hook": true, - "id": "1124358328420683887", - "name": "Lunar's Chosen" - }, - { - "executables": [{"is_launcher": false, "name": "license/license.exe", "os": "win32"}], - "hook": true, - "id": "1124358330043871312", - "name": "ZONE OF THE ENDERS THE 2nd RUNNER : MARS / ANUBIS ZONE OF THE ENDERS : MARS" - }, - { - "executables": [{"is_launcher": false, "name": "slipways/slipways.exe", "os": "win32"}], - "hook": true, - "id": "1124358331839041566", - "name": "Slipways" - }, - { - "executables": [{"is_launcher": false, "name": "the test hypothesis rising/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358333495783484", - "name": "The Test: Hypothesis Rising" - }, - { - "executables": [{"is_launcher": false, "name": "goodbye deponia/deponia3.exe", "os": "win32"}], - "hook": true, - "id": "1124358335228039188", - "name": "Goodbye Deponia" - }, - { - "aliases": ["GameGuru"], - "executables": [{"is_launcher": false, "name": "game guru/gameguru.exe", "os": "win32"}], - "hook": true, - "id": "1124358336821870724", - "name": "GameGuru" - }, - { - "executables": [{"is_launcher": false, "name": "mimpi dreams/mimpidreams.exe", "os": "win32"}], - "hook": true, - "id": "1124358338507984935", - "name": "Mimpi Dreams" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bebee-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358340189892668", - "name": "Bee Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "montaro re/montaro re.exe", "os": "win32"}], - "hook": true, - "id": "1124358341796315247", - "name": "Montaro : RE" - }, - { - "executables": [{"is_launcher": false, "name": "fingerbones/fingerbones.exe", "os": "win32"}], - "hook": true, - "id": "1124358343499198494", - "name": "Fingerbones" - }, - { - "executables": [{"is_launcher": false, "name": "dontbitemebro_pc/dontbitemebro_pc.exe", "os": "win32"}], - "hook": true, - "id": "1124358344996573315", - "name": "Don't Bite Me Bro! +" - }, - { - "executables": [{"is_launcher": false, "name": "i expect you to die 2/ieytd2.exe", "os": "win32"}], - "hook": true, - "id": "1124358348456865903", - "name": "I Expect You To Die 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/typhonhunter.exe", "os": "win32"}], - "hook": true, - "id": "1124358351527104652", - "name": "Prey: Typhon Hunter" - }, - { - "executables": [{"is_launcher": false, "name": "win64/priest_simulator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358353422925934", - "name": "Priest Simulator: Heavy Duty" - }, - { - "executables": [{"is_launcher": false, "name": "dv rings of saturn/delta-v.exe", "os": "win32"}], - "hook": true, - "id": "1124358355130011798", - "name": "\u0394V: Rings of Saturn" - }, - { - "executables": [{"is_launcher": false, "name": "momotype-2.1-market/momotype.exe", "os": "win32"}], - "hook": true, - "id": "1124358356765786143", - "name": "Momotype" - }, - { - "executables": [{"is_launcher": false, "name": "out of the park baseball 20/ootp20.exe", "os": "win32"}], - "hook": true, - "id": "1124358358477066330", - "name": "Out of the Park Baseball 20" - }, - { - "executables": [{"is_launcher": false, "name": "win64/peepo_island-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358361601818724", - "name": "Peepo Island" - }, - { - "executables": [{"is_launcher": false, "name": "vox machinae/vm.exe", "os": "win32"}], - "hook": true, - "id": "1124358363199852625", - "name": "Vox Machinae" - }, - { - "executables": [{"is_launcher": false, "name": "lucy -the eternity she wished for-/lucy.exe", "os": "win32"}], - "hook": true, - "id": "1124358364944679055", - "name": "Lucy -The Eternity She Wished For-" - }, - { - "executables": [{"is_launcher": false, "name": "overload/overload.exe", "os": "win32"}], - "hook": true, - "id": "1124358367083778128", - "name": "Overload" - }, - { - "aliases": ["Hentai Girl Hime"], - "executables": [{"is_launcher": false, "name": "hentaigirlhime/hentaigirlhime.exe", "os": "win32"}], - "hook": true, - "id": "1124358369315139704", - "name": "Hentai Girl Hime" - }, - { - "executables": [ - {"is_launcher": false, "name": "finnish army simulator demo/finnish army simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358370766377020", - "name": "Finnish Army Simulator Demo" - }, - { - "executables": [{"is_launcher": false, "name": "oh trap!/oh trap!.exe", "os": "win32"}], - "hook": true, - "id": "1124358372263739584", - "name": "Oh Trap!" - }, - { - "executables": [{"is_launcher": false, "name": "quern - undying thoughts/quern.exe", "os": "win32"}], - "hook": true, - "id": "1124358374180540476", - "name": "Quern - Undying Thoughts" - }, - { - "executables": [{"is_launcher": false, "name": "exe/mmbn_lc2.exe", "os": "win32"}], - "hook": true, - "id": "1124358375875031160", - "name": "\u30ed\u30c3\u30af\u30de\u30f3\u30a8\u30b0\u30bc \u30a2\u30c9\u30d0\u30f3\u30b9\u30c9\u30b3\u30ec\u30af\u30b7\u30e7\u30f3 Vol.2" - }, - { - "executables": [{"is_launcher": false, "name": "evergarden/evergarden.exe", "os": "win32"}], - "hook": true, - "id": "1124358377611481199", - "name": "Evergarden" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dodgeit2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358379264028853", - "name": "Dodge It! 2" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "nitroplus blasterz heroines infinite duel/nitroplus blasterz.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358380648157224", - "name": "Nitroplus Blasterz: Heroines Infinite Duel" - }, - { - "executables": [{"is_launcher": false, "name": "west sweety/west sweety.exe", "os": "win32"}], - "hook": true, - "id": "1124358382380400690", - "name": "West Sweety" - }, - { - "executables": [{"is_launcher": false, "name": "tower tactics liberation/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358384104263751", - "name": "Tower Tactics: Liberation" - }, - { - "executables": [{"is_launcher": false, "name": "hacktag/hacktag.exe", "os": "win32"}], - "hook": true, - "id": "1124358385748422676", - "name": "Hacktag" - }, - { - "executables": [{"is_launcher": false, "name": "cricket 19/ashes.exe", "os": "win32"}], - "hook": true, - "id": "1124358387384205332", - "name": "Cricket 19" - }, - { - "executables": [{"is_launcher": false, "name": "crayon physics deluxe/crayon.exe", "os": "win32"}], - "hook": true, - "id": "1124358388814458981", - "name": "Crayon Physics Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "machinecraft/mcncraft.exe", "os": "win32"}], - "hook": true, - "id": "1124358390425079948", - "name": "MachineCraft" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "microsoft.forzahorizon4demo_1.192.906.2_x64__8wekyb3d8bbwe/forzahorizon4demo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358392056655932", - "name": "Forza Horizon 4 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "genesis online/genesisonline.exe", "os": "win32"}], - "hook": true, - "id": "1124358393830854796", - "name": "Genesis Online" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tssgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358395336605797", - "name": "HumanitZ Demo" - }, - { - "executables": [{"is_launcher": false, "name": "gungodz/gungodz.exe", "os": "win32"}], - "hook": true, - "id": "1124358396842364998", - "name": "GUN GODZ" - }, - { - "executables": [{"is_launcher": false, "name": "corpse party rf/corpseparty.exe", "os": "win32"}], - "hook": true, - "id": "1124358398717214770", - "name": "Corpse Party (2021)" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dakar18game-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358400445272226", - "name": "Dakar 18" - }, - { - "executables": [{"is_launcher": false, "name": "timelie/timelie.exe", "os": "win32"}], - "hook": true, - "id": "1124358402068463707", - "name": "Timelie" - }, - { - "executables": [{"is_launcher": false, "name": "crustacean nations/crustaceannations.exe", "os": "win32"}], - "hook": true, - "id": "1124358403888775229", - "name": "Crustacean Nations" - }, - { - "executables": [{"is_launcher": false, "name": "onebit adventure/onebit adventure.exe", "os": "win32"}], - "hook": true, - "id": "1124358405402931210", - "name": "OneBit Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "lost lands mahjong/mahjong.exe", "os": "win32"}], - "hook": true, - "id": "1124358407160348844", - "name": "Lost Lands: Mahjong" - }, - { - "executables": [ - {"is_launcher": false, "name": "toejam & earl back in the groove/backinthegroove.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358408838066187", - "name": "ToeJam & Earl: Back in the Groove" - }, - { - "executables": [{"is_launcher": false, "name": "mushihimesama/default.exe", "os": "win32"}], - "hook": true, - "id": "1124358410499014686", - "name": "Mushihimesama" - }, - { - "executables": [{"is_launcher": false, "name": "aaero/aaero.exe", "os": "win32"}], - "hook": true, - "id": "1124358412474536146", - "name": "Aaero" - }, - { - "executables": [{"is_launcher": false, "name": "win64/touristbussimulator.exe", "os": "win32"}], - "hook": true, - "id": "1124358414169026831", - "name": "Tourist Bus Simulator" - }, - { - "executables": [ - {"is_launcher": false, "name": "spark the electric jester/spark the electric jester.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358415662207177", - "name": "Spark the Electric Jester" - }, - { - "executables": [ - {"is_launcher": false, "name": "railroad corporation/railroadcorporationsteam.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358417620938874", - "name": "Railroad Corporation" - }, - { - "executables": [{"is_launcher": false, "name": "palace-of-cards/palace.exe", "os": "win32"}], - "hook": true, - "id": "1124358419088953485", - "name": "Palace of Cards" - }, - { - "executables": [{"is_launcher": false, "name": "aqtion/q2pro.exe", "os": "win32"}], - "hook": true, - "id": "1124358420779249704", - "name": "AQtion" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/sakura beach.exe", "os": "win32"}], - "hook": true, - "id": "1124358422482141185", - "name": "Sakura Beach" - }, - { - "executables": [{"is_launcher": false, "name": "grime demo/grime.exe", "os": "win32"}], - "hook": true, - "id": "1124358424080167034", - "name": "GRIME Demo" - }, - { - "executables": [{"is_launcher": false, "name": "midas gold plus/midas gold plus.exe", "os": "win32"}], - "hook": true, - "id": "1124358425472684062", - "name": "Midas Gold Plus" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/sunrideracademy.exe", "os": "win32"}], - "hook": true, - "id": "1124358427032961105", - "name": "Sunrider Academy" - }, - { - "executables": [{"is_launcher": false, "name": "win64/theinvincible-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358428526129293", - "name": "The Invincible" - }, - { - "executables": [{"is_launcher": false, "name": "creeper world/creeperworld.exe", "os": "win32"}], - "hook": true, - "id": "1124358430208049264", - "name": "Creeper World Anniversary Edition" - }, - { - "executables": [{"is_launcher": false, "name": "nomnomgalaxy/nomnomgalaxy.exe", "os": "win32"}], - "hook": true, - "id": "1124358431868989440", - "name": "Nom Nom Galaxy" - }, - { - "executables": [{"is_launcher": false, "name": "drift king demo/driftking demo.exe", "os": "win32"}], - "hook": true, - "id": "1124358433441861632", - "name": "Drift King Demo" - }, - { - "executables": [{"is_launcher": false, "name": "port royale 4/portroyale4.exe", "os": "win32"}], - "hook": true, - "id": "1124358435379622048", - "name": "Port Royale 4" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pa_ue4-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358436885385316", - "name": "Paranormal Activity: The Lost Soul" - }, - { - "executables": [{"is_launcher": false, "name": "win64/redfall.exe", "os": "win32"}], - "hook": true, - "id": "1124358438504378519", - "name": "Redfall" - }, - { - "executables": [{"is_launcher": false, "name": "power & revolution 2019 edition/_start.exe", "os": "win32"}], - "hook": true, - "id": "1124358440177909862", - "name": "Power & Revolution 2019 Edition" - }, - { - "executables": [{"is_launcher": false, "name": "electronauts/electronauts.exe", "os": "win32"}], - "hook": true, - "id": "1124358441666883624", - "name": "Electronauts" - }, - { - "executables": [{"is_launcher": false, "name": "blitzkrieg/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358443348807740", - "name": "Blitzkrieg Anthology" - }, - { - "executables": [{"is_launcher": false, "name": "splasher/splasher.exe", "os": "win32"}], - "hook": true, - "id": "1124358444988776458", - "name": "Splasher" - }, - { - "executables": [ - {"is_launcher": false, "name": "the ditzy demons are in love with me/ditzydemons.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358446792323135", - "name": "The Ditzy Demons Are in Love With Me" - }, - { - "executables": [{"is_launcher": false, "name": "dead or school/deadorschool.exe", "os": "win32"}], - "hook": true, - "id": "1124358448180645918", - "name": "Dead or School" - }, - { - "executables": [{"is_launcher": false, "name": "deepdungeonsofdoom/ddd.exe", "os": "win32"}], - "hook": true, - "id": "1124358449820610590", - "name": "Deep Dungeons of Doom" - }, - { - "executables": [{"is_launcher": false, "name": "ziggurat 2/ziggurat2.exe", "os": "win32"}], - "hook": true, - "id": "1124358451431231588", - "name": "Ziggurat 2" - }, - { - "executables": [{"is_launcher": false, "name": "the black masses/the black masses.exe", "os": "win32"}], - "hook": true, - "id": "1124358453176057856", - "name": "The Black Masses" - }, - { - "executables": [{"is_launcher": false, "name": "apico demo/apico.exe", "os": "win32"}], - "hook": true, - "id": "1124358454845386824", - "name": "APICO Demo" - }, - { - "executables": [{"is_launcher": false, "name": "soul hackers2/soul hackers2.exe", "os": "win32"}], - "hook": true, - "id": "1124358456908988448", - "name": "Soul Hackers 2" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "super dragon ball heroes world mission demo version/sdbheroes_worldmission_demo.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358458523791503", - "name": "SUPER DRAGON BALL HEROES WORLD MISSION Demo Version" - }, - { - "executables": [{"is_launcher": false, "name": "overclocked/overclocked.exe", "os": "win32"}], - "hook": true, - "id": "1124358460146995320", - "name": "Overclocked" - }, - { - "executables": [{"is_launcher": false, "name": "nite team 4/nt4.exe", "os": "win32"}], - "hook": true, - "id": "1124358461854072902", - "name": "NITE Team 4" - }, - { - "executables": [{"is_launcher": false, "name": "lumencraft/lumencraft.exe", "os": "win32"}], - "hook": true, - "id": "1124358463519215646", - "name": "Lumencraft" - }, - { - "executables": [{"is_launcher": false, "name": "metamorphos/metamorphos.exe", "os": "win32"}], - "hook": true, - "id": "1124358465020772445", - "name": "Metamorphos" - }, - { - "executables": [{"is_launcher": false, "name": "resident evil reverse/reverse.exe", "os": "win32"}], - "hook": true, - "id": "1124358466614612169", - "name": "Resident Evil Re:Verse" - }, - { - "executables": [{"is_launcher": false, "name": "the legend of korra/lok.exe", "os": "win32"}], - "hook": true, - "id": "1124358468195860490", - "name": "The Legend of Korra\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "thumper/thumper_win8.exe", "os": "win32"}], - "hook": true, - "id": "1124358469860995172", - "name": "Thumper" - }, - { - "executables": [{"is_launcher": false, "name": "tiaw/slg.exe", "os": "win32"}], - "hook": true, - "id": "1124358471907823696", - "name": "Trip In Another World" - }, - { - "executables": [{"is_launcher": false, "name": "tormented souls demo/tormentedsoulsdemo.exe", "os": "win32"}], - "hook": true, - "id": "1124358473463902218", - "name": "Tormented Souls Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thecorridor-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358474827059351", - "name": "THE CORRIDOR" - }, - { - "executables": [{"is_launcher": false, "name": "screeps/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124358476433469451", - "name": "Screeps" - }, - { - "executables": [{"is_launcher": false, "name": "deisim/deisim.exe", "os": "win32"}], - "hook": true, - "id": "1124358478014730381", - "name": "Deisim" - }, - { - "executables": [ - {"is_launcher": false, "name": "command & conquer red alert 3 demo/ra3demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358479688249395", - "name": "Red Alert 3 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "mylittlefarmies/mylittlefarmies.exe", "os": "win32"}], - "hook": true, - "id": "1124358481164652606", - "name": "My Little Farmies" - }, - { - "executables": [ - {"is_launcher": false, "name": "the ouroboros king demo/the ouroboros king.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358482645237861", - "name": "The Ouroboros King Demo" - }, - { - "executables": [{"is_launcher": false, "name": "hexagon knockout/hexagon knockout.exe", "os": "win32"}], - "hook": true, - "id": "1124358484155191457", - "name": "Hexagon Knockout" - }, - { - "executables": [{"is_launcher": false, "name": "visual novel maker/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124358485832904855", - "name": "Visual Novel Maker" - }, - { - "executables": [{"is_launcher": false, "name": "fairy tail/fairy_tail.exe", "os": "win32"}], - "hook": true, - "id": "1124358487347052595", - "name": "FAIRY TAIL" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/summerwithmias1.exe", "os": "win32"}], - "hook": true, - "id": "1124358488974438553", - "name": "Summer with Mia Season 1" - }, - { - "executables": [{"is_launcher": false, "name": "universe sandbox/universe sandbox.exe", "os": "win32"}], - "hook": true, - "id": "1124358490429870132", - "name": "Universe Sandbox Legacy" - }, - { - "executables": [{"is_launcher": false, "name": "nosferatu the wrath of malachi/nosferatu.exe", "os": "win32"}], - "hook": true, - "id": "1124358492069838979", - "name": "Nosferatu: The Wrath of Malachi" - }, - { - "executables": [{"is_launcher": false, "name": "make it rain love of money/loveofmoney.exe", "os": "win32"}], - "hook": true, - "id": "1124358493793693736", - "name": "Make It Rain: Love of Money" - }, - { - "executables": [{"is_launcher": false, "name": "villagerhapsody/village.exe", "os": "win32"}], - "hook": true, - "id": "1124358495362371695", - "name": "\u4e61\u6751\u72c2\u60f3\u66f2" - }, - { - "executables": [{"is_launcher": false, "name": "happygame/happygame.exe", "os": "win32"}], - "hook": true, - "id": "1124358496901673041", - "name": "Happy Game" - }, - { - "executables": [{"is_launcher": false, "name": "bin/florensiaen.exe", "os": "win32"}], - "hook": true, - "id": "1124358498814283928", - "name": "Florensia" - }, - { - "executables": [{"is_launcher": false, "name": "win64/billiebustup-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358500634603521", - "name": "Billie Bust Up Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "ages of conflict world war simulator/ages of conflict.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358502085840946", - "name": "Ages of Conflict: World War Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "nordic ashes/nordic ashes.exe", "os": "win32"}], - "hook": true, - "id": "1124358503952298146", - "name": "Nordic Ashes" - }, - { - "executables": [{"is_launcher": false, "name": "mojo xxx/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358505697132595", - "name": "Mojo XXX" - }, - { - "executables": [{"is_launcher": false, "name": "h-sniper world war ii/h-sniper ww2.exe", "os": "win32"}], - "hook": true, - "id": "1124358507249021008", - "name": "H-SNIPER: World War II" - }, - { - "executables": [ - {"is_launcher": false, "name": "fish tycoon 2 virtual aquarium/virtual fish tycoon.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358508717035590", - "name": "Fish Tycoon 2: Virtual Aquarium" - }, - { - "executables": [{"is_launcher": false, "name": "planet of lana demo/planet of lana.exe", "os": "win32"}], - "hook": true, - "id": "1124358510449279016", - "name": "Planet of Lana Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/superdrinkbros-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358512173133844", - "name": "SUPER DRINK BROS" - }, - { - "executables": [{"is_launcher": false, "name": "win64/chasedbydarkness-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358513796333588", - "name": "Chased by Darkness" - }, - { - "executables": [{"is_launcher": false, "name": "handydandywindows/handydandyhandy2020.exe", "os": "win32"}], - "hook": true, - "id": "1124358515507613766", - "name": "Handy Dandy" - }, - { - "executables": [{"is_launcher": false, "name": "operator/operator.exe", "os": "win32"}], - "hook": true, - "id": "1124358517126606878", - "name": "Operator" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "megatagmension blanc + neptune vs zombies/megatagmension blanc.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358518812708964", - "name": "MegaTagmension Blanc + Neptune VS Zombies" - }, - { - "executables": [{"is_launcher": false, "name": "hanyo/hanyo.exe", "os": "win32"}], - "hook": true, - "id": "1124358520578519080", - "name": "Hanyo" - }, - { - "executables": [{"is_launcher": false, "name": "win32/roa.exe", "os": "win32"}], - "hook": true, - "id": "1124358522130415727", - "name": "Rock of Ages" - }, - { - "executables": [{"is_launcher": false, "name": "banana hell/banana_hell.exe", "os": "win32"}], - "hook": true, - "id": "1124358523904602112", - "name": "Banana Hell" - }, - { - "executables": [{"is_launcher": false, "name": "pawnbarian/pawnbarian.exe", "os": "win32"}], - "hook": true, - "id": "1124358525624270858", - "name": "Pawnbarian" - }, - { - "executables": [{"is_launcher": false, "name": "kings bounty crossworlds/kb.exe", "os": "win32"}], - "hook": true, - "id": "1124358527096475658", - "name": "King's Bounty: Crossworlds" - }, - { - "executables": [{"is_launcher": false, "name": "magic 2013/dotp_d13.exe", "os": "win32"}], - "hook": true, - "id": "1124358528694501497", - "name": "Magic: The Gathering - Duels of the Planeswalkers 2013" - }, - { - "executables": [{"is_launcher": false, "name": "crashday/crashday.exe", "os": "win32"}], - "hook": true, - "id": "1124358530015703070", - "name": "Crashday Redline Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win32/unloved-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358531655680060", - "name": "UNLOVED" - }, - { - "executables": [{"is_launcher": false, "name": "devotion/devotion.exe", "os": "win32"}], - "hook": true, - "id": "1124358533262102538", - "name": "Devotion" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the incredible adventures of van helsing ii/vanhelsing_x64.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358534633635860", - "name": "The Incredible Adventures of Van Helsing II" - }, - { - "executables": [ - {"is_launcher": false, "name": "the bard's tale trilogy/thebardstaletrilogy.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358536441376788", - "name": "The Bard's Tale Trilogy" - }, - { - "executables": [{"is_launcher": false, "name": "bloodbowldeathzone/bbdz.exe", "os": "win32"}], - "hook": true, - "id": "1124358538114912386", - "name": "Blood Bowl: Death Zone" - }, - { - "executables": [{"is_launcher": false, "name": "win64/newgundambreaker.exe", "os": "win32"}], - "hook": true, - "id": "1124358539796824064", - "name": "New Gundam Breaker" - }, - { - "executables": [{"is_launcher": false, "name": "train mechanic simulator 2017/tms.exe", "os": "win32"}], - "hook": true, - "id": "1124358541571018773", - "name": "Train Mechanic Simulator 2017" - }, - { - "executables": [{"is_launcher": false, "name": "garden story/${garden story}.exe", "os": "win32"}], - "hook": true, - "id": "1124358543185817740", - "name": "Garden Story" - }, - { - "executables": [{"is_launcher": false, "name": "win64/project_flames-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358544821600296", - "name": "Into The Flames" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "climber sky is the limit - free trial/climber sky is the limit.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358546671292436", - "name": "Climber: Sky is the Limit - Free Trial" - }, - { - "executables": [{"is_launcher": false, "name": "memories_windows/memories.exe", "os": "win32"}], - "hook": true, - "id": "1124358548470644756", - "name": "memories" - }, - { - "executables": [ - {"is_launcher": false, "name": "wizard and minion idle/wizard and minion idle.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358550551023666", - "name": "Wizard And Minion Idle" - }, - { - "executables": [{"is_launcher": false, "name": "prettyneko/prettyneko.exe", "os": "win32"}], - "hook": true, - "id": "1124358552354566164", - "name": "Pretty Neko" - }, - { - "executables": [{"is_launcher": false, "name": "tiny town vr/tiny town vr.exe", "os": "win32"}], - "hook": true, - "id": "1124358553726111775", - "name": "Tiny Town VR" - }, - { - "executables": [ - {"is_launcher": false, "name": "kika & daigo a curious tale/kika & daigo a curious tale.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358555454156851", - "name": "Kika & Daigo: A Curious Tale" - }, - { - "executables": [{"is_launcher": false, "name": "win64/myst-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358557232545812", - "name": "Myst" - }, - { - "executables": [{"is_launcher": false, "name": "a new life/a new life.exe", "os": "win32"}], - "hook": true, - "id": "1124358559317119017", - "name": "a new life." - }, - { - "executables": [ - {"is_launcher": false, "name": "atri -my dear moments-/atri-mydearmoments-.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358560780927076", - "name": "ATRI -My Dear Moments-" - }, - { - "executables": [{"is_launcher": false, "name": "dead in vinland/dead in vinland.exe", "os": "win32"}], - "hook": true, - "id": "1124358562483810416", - "name": "Dead In Vinland" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wizards-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358564161540186", - "name": "The Wizards" - }, - { - "executables": [{"is_launcher": false, "name": "blaze rush/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358565805703281", - "name": "BlazeRush" - }, - { - "executables": [{"is_launcher": false, "name": "tactical craft online/tc.exe", "os": "win32"}], - "hook": true, - "id": "1124358567353397259", - "name": "Tactical Craft Online" - }, - { - "executables": [ - {"is_launcher": false, "name": "the king of fighters '97 global match/kof97.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358569228255262", - "name": "THE KING OF FIGHTERS '97 GLOBAL MATCH" - }, - { - "executables": [{"is_launcher": false, "name": "infra/infra.exe", "os": "win32"}], - "hook": true, - "id": "1124358570683674664", - "name": "INFRA" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fushimiinari-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358572109746316", - "name": "Explore Fushimi Inari" - }, - { - "executables": [{"is_launcher": false, "name": "kaion tale mmorpg/kaiontale.exe", "os": "win32"}], - "hook": true, - "id": "1124358573875539989", - "name": "Kaion Tale MMORPG" - }, - { - "executables": [ - {"is_launcher": false, "name": "mad experiments escape room/mad experiments escape room.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358575536488529", - "name": "Mad Experiments: Escape Room" - }, - { - "executables": [{"is_launcher": false, "name": "runo/runo.exe", "os": "win32"}], - "hook": true, - "id": "1124358577377783868", - "name": "Runo" - }, - { - "executables": [{"is_launcher": false, "name": "paratopicam001/paratopic.exe", "os": "win32"}], - "hook": true, - "id": "1124358579063898223", - "name": "Paratopic" - }, - { - "executables": [{"is_launcher": false, "name": "scp nukalypse/scp nukalypse.exe", "os": "win32"}], - "hook": true, - "id": "1124358580632572015", - "name": "SCP: Nukalypse" - }, - { - "executables": [{"is_launcher": false, "name": "ikkiunite/ikki unite.exe", "os": "win32"}], - "hook": true, - "id": "1124358582272536706", - "name": "\u3044\u3063\u304d\u56e3\u7d50" - }, - { - "executables": [{"is_launcher": false, "name": "rounds of zombies/zombie.exe", "os": "win32"}], - "hook": true, - "id": "1124358583799271465", - "name": "Rounds of Zombies" - }, - { - "executables": [ - {"is_launcher": false, "name": "megacraft hentai edition/megacraft hentai edition.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358585397293186", - "name": "Megacraft Hentai Edition" - }, - { - "executables": [{"is_launcher": false, "name": "skyisland/skyisland.exe", "os": "win32"}], - "hook": true, - "id": "1124358586823360592", - "name": "SkyIsland" - }, - { - "executables": [{"is_launcher": false, "name": "decent icons 2/decenticons.exe", "os": "win32"}], - "hook": true, - "id": "1124358588454948955", - "name": "Decent Icons 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "pixel puzzles ultimate/pixel puzzles ultimate.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358589776150660", - "name": "Pixel Puzzles Ultimate" - }, - { - "executables": [{"is_launcher": false, "name": "jupiter hell/jh.exe", "os": "win32"}], - "hook": true, - "id": "1124358591487430686", - "name": "Jupiter Hell" - }, - { - "executables": [{"is_launcher": false, "name": "dinosaurs a prehistoric adventure/dapa.exe", "os": "win32"}], - "hook": true, - "id": "1124358592917684244", - "name": "Dinosaurs A Prehistoric Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "bin/framed.exe", "os": "win32"}], - "hook": true, - "id": "1124358594587021443", - "name": "FRAMED Collection" - }, - { - "executables": [{"is_launcher": false, "name": "spacefarmers/spacefarmers.exe", "os": "win32"}], - "hook": true, - "id": "1124358596365389924", - "name": "Space Farmers" - }, - { - "executables": [{"is_launcher": false, "name": "idle big devil/dmw.exe", "os": "win32"}], - "hook": true, - "id": "1124358597967630376", - "name": "Idle Big Devil" - }, - { - "executables": [{"is_launcher": false, "name": "disciples liberation/disciples_liberation.exe", "os": "win32"}], - "hook": true, - "id": "1124358599615983627", - "name": "Disciples: Liberation" - }, - { - "executables": [{"is_launcher": false, "name": "outtheresomewhere/ots.exe", "os": "win32"}], - "hook": true, - "id": "1124358601146912900", - "name": "Out There Somewhere" - }, - { - "executables": [{"is_launcher": false, "name": "top speed 2/top speed 2.exe", "os": "win32"}], - "hook": true, - "id": "1124358602740740106", - "name": "Top Speed 2: Racing Legends" - }, - { - "executables": [{"is_launcher": false, "name": "will you snail/will you snail.exe", "os": "win32"}], - "hook": true, - "id": "1124358604380721193", - "name": "Will You Snail?" - }, - { - "executables": [{"is_launcher": false, "name": "star wars the clone wars/republic heroes.exe", "os": "win32"}], - "hook": true, - "id": "1124358606201040947", - "name": "STAR WARS\u2122: The Clone Wars - Republic Heroes\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "full throttle remastered/throttle.exe", "os": "win32"}], - "hook": true, - "id": "1124358608197537982", - "name": "Full Throttle Remastered" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "marvel's guardians of the galaxy the telltale series/guardians.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358610114330746", - "name": "Marvel's Guardians of the Galaxy: The Telltale Series" - }, - { - "executables": [{"is_launcher": false, "name": "win64/raji-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358611628470354", - "name": "Raji: An Ancient Epic Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "mob factory windows demo/mobfarm.exe", "os": "win32"}], - "hook": true, - "id": "1124358613373305016", - "name": "Mob Factory Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "mega city police prelude/mega city police prelude.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358615097167913", - "name": "Mega City Police: Prelude" - }, - { - "executables": [{"is_launcher": false, "name": "prettyangel/prettyangel.exe", "os": "win32"}], - "hook": true, - "id": "1124358616749715637", - "name": "Pretty Angel" - }, - { - "executables": [{"is_launcher": false, "name": "laz3rz/laz3rz.exe", "os": "win32"}], - "hook": true, - "id": "1124358618150621224", - "name": "LAZ3RZ" - }, - { - "executables": [{"is_launcher": false, "name": "playclaw 7/playclawapp64.exe", "os": "win32"}], - "hook": true, - "id": "1124358619836723210", - "name": "PlayClaw 7" - }, - { - "executables": [{"is_launcher": false, "name": "dead effect 2 vr/deadeffect2.exe", "os": "win32"}], - "hook": true, - "id": "1124358621095022652", - "name": "Dead Effect 2 VR" - }, - { - "executables": [{"is_launcher": false, "name": "sniper art of victory/sniper.exe", "os": "win32"}], - "hook": true, - "id": "1124358622810488973", - "name": "Sniper Art of Victory" - }, - { - "executables": [{"is_launcher": false, "name": "a castle full of cats/castle.exe", "os": "win32"}], - "hook": true, - "id": "1124358624521760858", - "name": "A Castle Full of Cats" - }, - { - "executables": [{"is_launcher": false, "name": "all is dust/allisdust.exe", "os": "win32"}], - "hook": true, - "id": "1124358626606338118", - "name": "All Is Dust" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "grand tactician the civil war (1861-1865)/the civil war (1861-1865).exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358628275662929", - "name": "Grand Tactician: The Civil War (1861-1865)" - }, - { - "executables": [{"is_launcher": false, "name": "colt canyon/coltcanyon.exe", "os": "win32"}], - "hook": true, - "id": "1124358629894672465", - "name": "Colt Canyon" - }, - { - "executables": [{"is_launcher": false, "name": "penumbra black plague/oalinst.exe", "os": "win32"}], - "hook": true, - "id": "1124358631316537417", - "name": "Penumbra: Black Plague" - }, - { - "executables": [{"is_launcher": false, "name": "stronghold 2/stronghold2.exe", "os": "win32"}], - "hook": true, - "id": "1124358632985866273", - "name": "Stronghold 2" - }, - { - "executables": [{"is_launcher": false, "name": "hentai girl division/hentai girl division.exe", "os": "win32"}], - "hook": true, - "id": "1124358634739093554", - "name": "Hentai Girl Division" - }, - { - "executables": [{"is_launcher": false, "name": "a good snowman is hard to build/snowman.exe", "os": "win32"}], - "hook": true, - "id": "1124358636177735770", - "name": "A Good Snowman Is Hard To Build" - }, - { - "executables": [{"is_launcher": false, "name": "one hand clapping/one hand clapping.exe", "os": "win32"}], - "hook": true, - "id": "1124358637788344360", - "name": "One Hand Clapping" - }, - { - "executables": [{"is_launcher": false, "name": "win64/memoriesofmars.exe", "os": "win32"}], - "hook": true, - "id": "1124358639285715104", - "name": "Memories of Mars" - }, - { - "executables": [{"is_launcher": false, "name": "win64/engarde-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358640959238154", - "name": "En Garde! Demo" - }, - { - "executables": [{"is_launcher": false, "name": "ydkj_vol1xl/ydkj32.jbg", "os": "win32"}], - "hook": true, - "id": "1124358643270303754", - "name": "YOU DON'T KNOW JACK Vol. 1 XL" - }, - { - "aliases": ["Hentai Girl Linda"], - "executables": [{"is_launcher": false, "name": "hentaigirllinda/hentaigirllinda.exe", "os": "win32"}], - "hook": true, - "id": "1124358645010935888", - "name": "Hentai Girl Linda" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mxgame2021-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358646432813106", - "name": "MX vs ATV Legends" - }, - { - "executables": [{"is_launcher": false, "name": "sea of stars demo/seaofstars.exe", "os": "win32"}], - "hook": true, - "id": "1124358648076976189", - "name": "Sea of Stars Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "myths and legends online/myths and legends online.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358649524006984", - "name": "Mitos y Leyendas" - }, - { - "executables": [{"is_launcher": false, "name": "otaku's adventure/play.exe", "os": "win32"}], - "hook": true, - "id": "1124358651105263627", - "name": "Otaku's Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "mi scusi/miscusi.exe", "os": "win32"}], - "hook": true, - "id": "1124358652661346455", - "name": "Mi Scusi" - }, - { - "executables": [{"is_launcher": false, "name": "lovecraft's untold stories/lus.exe", "os": "win32"}], - "hook": true, - "id": "1124358654271963136", - "name": "Lovecraft's Untold Stories" - }, - { - "executables": [{"is_launcher": false, "name": "win64/capybaraspa-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358655794499605", - "name": "Capybara Spa" - }, - { - "executables": [{"is_launcher": false, "name": "haha doodle/hahadoodle.exe", "os": "win32"}], - "hook": true, - "id": "1124358657753231491", - "name": "Haha Doodle" - }, - { - "executables": [{"is_launcher": false, "name": "jigoku kisetsukan/jigoku_kisetsukan.exe", "os": "win32"}], - "hook": true, - "id": "1124358659250602024", - "name": "Jigoku Kisetsukan: Sense of the Seasons" - }, - { - "executables": [{"is_launcher": false, "name": "realpolitiks/realpolitiks.exe", "os": "win32"}], - "hook": true, - "id": "1124358660773130320", - "name": "Realpolitiks" - }, - { - "executables": [ - {"is_launcher": false, "name": "awkward dimensions redux/awkward dimensions redux.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358662404722761", - "name": "Awkward Dimensions Redux" - }, - { - "executables": [{"is_launcher": false, "name": "win64/trainset-win64-test.exe", "os": "win32"}], - "hook": true, - "id": "1124358664015327283", - "name": "Tracks - The Train Set Game" - }, - { - "executables": [{"is_launcher": false, "name": "unity of command 2/uoc2.exe", "os": "win32"}], - "hook": true, - "id": "1124358665688858685", - "name": "Unity of Command II" - }, - { - "executables": [{"is_launcher": false, "name": "win64/notesofsoul-win64-shipping_be.exe", "os": "win32"}], - "hook": true, - "id": "1124358667190415400", - "name": "Spirit Detective" - }, - { - "executables": [{"is_launcher": false, "name": "crossingsouls/crossingsouls.exe", "os": "win32"}], - "hook": true, - "id": "1124358668935249920", - "name": "Crossing Souls" - }, - { - "executables": [{"is_launcher": false, "name": "com3d2inm/com3d2.exe", "os": "win32"}], - "hook": true, - "id": "1124358670499721226", - "name": "CUSTOM ORDER MAID 3D2 It's a Night Magic" - }, - { - "executables": [{"is_launcher": false, "name": "nightmare of decay/nightmareofdecay.exe", "os": "win32"}], - "hook": true, - "id": "1124358672211001374", - "name": "Nightmare of Decay" - }, - { - "executables": [{"is_launcher": false, "name": "monolight/monolights.exe", "os": "win32"}], - "hook": true, - "id": "1124358674178125915", - "name": "Monolight" - }, - { - "executables": [{"is_launcher": false, "name": "agentsbiohunter/agentsbiohunters.exe", "os": "win32"}], - "hook": true, - "id": "1124358675826491442", - "name": "Agents: Biohunters" - }, - { - "executables": [{"is_launcher": false, "name": "stonies/stonies.exe", "os": "win32"}], - "hook": true, - "id": "1124358677411942470", - "name": "Stonies" - }, - { - "executables": [{"is_launcher": false, "name": "pro cycling manager 2018/pcm64.exe", "os": "win32"}], - "hook": true, - "id": "1124358679299375144", - "name": "Pro Cycling Manager 2018" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/xoxoblooddroplets.exe", "os": "win32"}], - "hook": true, - "id": "1124358681321025607", - "name": "XOXO Blood Droplets" - }, - { - "executables": [{"is_launcher": false, "name": "disneyafternoon/capcom_disney_afternoon.exe", "os": "win32"}], - "hook": true, - "id": "1124358683296550932", - "name": "The Disney Afternoon Collection" - }, - { - "executables": [{"is_launcher": false, "name": "super bomberman r/superbombermanr.exe", "os": "win32"}], - "hook": true, - "id": "1124358685133652088", - "name": "Super Bomberman R" - }, - { - "executables": [{"is_launcher": false, "name": "vr hot/vr hot.exe", "os": "win32"}], - "hook": true, - "id": "1124358686811369552", - "name": "VR HOT" - }, - { - "executables": [ - {"is_launcher": false, "name": "immortals fenyx rising/immortalsfenyxrising.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358688619118652", - "name": "Immortals Fenyx Rising" - }, - { - "executables": [ - {"is_launcher": false, "name": "substance 3d painter 2022/adobe substance 3d painter.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358690590437426", - "name": "Substance 3D Painter 2022" - }, - { - "executables": [ - {"is_launcher": false, "name": "gunsmith simulator demo/gunsmith simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358692184277153", - "name": "Gunsmith Simulator Demo" - }, - { - "executables": [{"is_launcher": false, "name": "otaku's fantasy/otaku's fantasy.exe", "os": "win32"}], - "hook": true, - "id": "1124358693522256023", - "name": "Otaku's Fantasy" - }, - { - "executables": [{"is_launcher": false, "name": "hard truck apocalypse/hta.exe", "os": "win32"}], - "hook": true, - "id": "1124358695418089554", - "name": "Hard Truck Apocalypse / Ex Machina" - }, - { - "executables": [{"is_launcher": false, "name": "slay together/slaytogether.exe", "os": "win32"}], - "hook": true, - "id": "1124358696953200700", - "name": "Slay Together" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sanandreas.exe", "os": "win32"}], - "hook": true, - "id": "1124358698958082161", - "name": "Grand Theft Auto: San Andreas - The Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ghostsoftabor-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358700447055892", - "name": "Ghosts Of Tabor" - }, - { - "executables": [{"is_launcher": false, "name": "wooden battles/wooden battles.exe", "os": "win32"}], - "hook": true, - "id": "1124358702078644284", - "name": "Wooden Battles" - }, - { - "executables": [{"is_launcher": false, "name": "setsuna/setsuna.exe", "os": "win32"}], - "hook": true, - "id": "1124358703898968124", - "name": "I am Setsuna" - }, - { - "executables": [{"is_launcher": false, "name": "birth/birth.exe", "os": "win32"}], - "hook": true, - "id": "1124358705685737492", - "name": "Birth" - }, - { - "executables": [{"is_launcher": false, "name": "unholy heights/unholyheights.exe", "os": "win32"}], - "hook": true, - "id": "1124358707581566976", - "name": "Unholy Heights" - }, - { - "executables": [{"is_launcher": false, "name": "the technomancer/thetechnomancer.exe", "os": "win32"}], - "hook": true, - "id": "1124358709137649796", - "name": "The Technomancer" - }, - { - "executables": [{"is_launcher": false, "name": "against all odds/against all odds.exe", "os": "win32"}], - "hook": true, - "id": "1124358710777630840", - "name": "Against All Odds" - }, - { - "executables": [{"is_launcher": false, "name": "windows/my name is mayo.exe", "os": "win32"}], - "hook": true, - "id": "1124358712925106176", - "name": "My Name is Mayo" - }, - { - "executables": [{"is_launcher": false, "name": "bin/settlers6r.exe", "os": "win32"}], - "hook": true, - "id": "1124358714439258142", - "name": "The Settlers : Rise of an Empire - History Edition" - }, - { - "executables": [{"is_launcher": false, "name": "piercing blow/piercingblow.exe", "os": "win32"}], - "hook": true, - "id": "1124358716645457970", - "name": "Piercing Blow" - }, - { - "executables": [{"is_launcher": false, "name": "robin hood/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358718314795078", - "name": "Robin Hood" - }, - { - "executables": [{"is_launcher": false, "name": "muddy heights 2/muddy heights 2.exe", "os": "win32"}], - "hook": true, - "id": "1124358720189644920", - "name": "Muddy Heights 2" - }, - { - "executables": [{"is_launcher": false, "name": "hexen 2/glh2.exe", "os": "win32"}], - "hook": true, - "id": "1124358721783484516", - "name": "HeXen II" - }, - { - "executables": [{"is_launcher": false, "name": "pro cycling manager 2022/pcm64.exe", "os": "win32"}], - "hook": true, - "id": "1124358723423453234", - "name": "Pro Cycling Manager 2022" - }, - { - "executables": [{"is_launcher": false, "name": "horizon chase/horizonchase.exe", "os": "win32"}], - "hook": true, - "id": "1124358725277331568", - "name": "Horizon Chase Turbo" - }, - { - "executables": [{"is_launcher": false, "name": "dream car builder/dcr3d_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124358726887952414", - "name": "Dream Car Builder" - }, - { - "executables": [{"is_launcher": false, "name": "substance painter 2020/substance painter.exe", "os": "win32"}], - "hook": true, - "id": "1124358728737632266", - "name": "Substance Painter 2020" - }, - { - "executables": [{"is_launcher": false, "name": "fe legendary heroes/legendaryheroes.exe", "os": "win32"}], - "hook": true, - "id": "1124358730310504579", - "name": "Fallen Enchantress: Legendary Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "sono/sono.exe", "os": "win32"}], - "hook": true, - "id": "1124358731895947324", - "name": "Sono" - }, - { - "executables": [{"is_launcher": false, "name": "windlands/windlands_win_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124358733611421696", - "name": "Windlands" - }, - { - "executables": [{"is_launcher": false, "name": "from the shadows/from the shadows.exe", "os": "win32"}], - "hook": true, - "id": "1124358735473684690", - "name": "From the Shadows" - }, - { - "executables": [{"is_launcher": false, "name": "far changing tides/farchangingtides.exe", "os": "win32"}], - "hook": true, - "id": "1124358737101078528", - "name": "FAR: Changing Tides" - }, - { - "executables": [{"is_launcher": false, "name": "biohazard re2 z/re2.exe", "os": "win32"}], - "hook": true, - "id": "1124358738774601899", - "name": "BIOHAZARD RE:2 Z Version" - }, - { - "executables": [{"is_launcher": false, "name": "win64/boogeyman-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358740901122220", - "name": "Boogeyman" - }, - { - "executables": [{"is_launcher": false, "name": "dyingsun/dyingsun.exe", "os": "win32"}], - "hook": true, - "id": "1124358742763389028", - "name": "House of the Dying Sun" - }, - { - "executables": [{"is_launcher": false, "name": "vegas pro 14.0/vegas140_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124358744541778090", - "name": "VEGAS Pro 14 Edit Steam Edition" - }, - { - "executables": [{"is_launcher": false, "name": "owinka shooter/owinka shooter.exe", "os": "win32"}], - "hook": true, - "id": "1124358746307571752", - "name": "Owinka Shooter" - }, - { - "executables": [{"is_launcher": false, "name": "overdungeon/windows-64bit.exe", "os": "win32"}], - "hook": true, - "id": "1124358747884634152", - "name": "Overdungeon" - }, - { - "executables": [{"is_launcher": false, "name": "digger/digger.exe", "os": "win32"}], - "hook": true, - "id": "1124358749566554203", - "name": "\u041a\u043e\u043f\u0430\u0442\u0435\u043b\u044c \u041e\u043d\u043b\u0430\u0439\u043d" - }, - { - "executables": [{"is_launcher": false, "name": "omerta/omertasteam.exe", "os": "win32"}], - "hook": true, - "id": "1124358751462371560", - "name": "Omerta - City of Gangsters" - }, - { - "executables": [{"is_launcher": false, "name": "snowdrop escape/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124358753232375828", - "name": "Snowdrop Escape" - }, - { - "executables": [{"is_launcher": false, "name": "compound demo/compound.exe", "os": "win32"}], - "hook": true, - "id": "1124358754960421006", - "name": "COMPOUND Demo" - }, - { - "executables": [{"is_launcher": false, "name": "surviving the abyss/surviving the abyss.exe", "os": "win32"}], - "hook": true, - "id": "1124358756361326772", - "name": "Surviving the Abyss" - }, - { - "executables": [{"is_launcher": false, "name": "ys i/ys1plus.exe", "os": "win32"}], - "hook": true, - "id": "1124358758114537492", - "name": "Ys I" - }, - { - "executables": [{"is_launcher": false, "name": "nalogi/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358759716769922", - "name": "NALOGI" - }, - { - "executables": [{"is_launcher": false, "name": "party jousting/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358761528705115", - "name": "Party Jousting" - }, - { - "executables": [{"is_launcher": false, "name": "disney hercules action game/hercules.exe", "os": "win32"}], - "hook": true, - "id": "1124358763227402250", - "name": "Disney's Hercules" - }, - { - "executables": [ - {"is_launcher": false, "name": "the jackbox party starter/the jackbox party starter.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358764989005916", - "name": "The Jackbox Party Starter" - }, - { - "executables": [{"is_launcher": false, "name": "hardwest2/hardwest2.exe", "os": "win32"}], - "hook": true, - "id": "1124358767191011418", - "name": "Hard West 2" - }, - { - "executables": [{"is_launcher": false, "name": "navalart/navalart.exe", "os": "win32"}], - "hook": true, - "id": "1124358768780660837", - "name": "NavalArt" - }, - { - "executables": [{"is_launcher": false, "name": "rb_w/rhythmbrawl.exe", "os": "win32"}], - "hook": true, - "id": "1124358770303184937", - "name": "Rhythm Brawl" - }, - { - "executables": [ - {"is_launcher": false, "name": "robolife-days with aino/robolife-days with aino.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358772186431590", - "name": "Robolife-Days with Aino" - }, - { - "executables": [{"is_launcher": false, "name": "gay world/gay world.exe", "os": "win32"}], - "hook": true, - "id": "1124358773935460476", - "name": "Gay World" - }, - { - "executables": [{"is_launcher": false, "name": "reaver demo/reaver.exe", "os": "win32"}], - "hook": true, - "id": "1124358775491538944", - "name": "REAVER Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/takedowngame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358777668386886", - "name": "Takedown: Red Sabre" - }, - { - "executables": [ - {"is_launcher": false, "name": "diaries of a spaceport janitor/diaries_7.6_win.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358779480330250", - "name": "Diaries of a Spaceport Janitor" - }, - { - "executables": [{"is_launcher": false, "name": "win64/handdrawngame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358781002858598", - "name": "Night in Riverager" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ass-win64.exe", "os": "win32"}], - "hook": true, - "id": "1124358782563135538", - "name": "Animal Super Squad" - }, - { - "executables": [{"is_launcher": false, "name": "win32/magrunner.exe", "os": "win32"}], - "hook": true, - "id": "1124358784257642566", - "name": "Magrunner: Dark Pulse" - }, - { - "executables": [{"is_launcher": false, "name": "horsefarm/horsefarm.exe", "os": "win32"}], - "hook": true, - "id": "1124358785616592916", - "name": "Horse Farm" - }, - { - "executables": [{"is_launcher": false, "name": "jbmod/jbmod.exe", "os": "win32"}], - "hook": true, - "id": "1124358787386585128", - "name": "JBMod" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/reflexia.prototype_ver.exe", "os": "win32"}], - "hook": true, - "id": "1124358789022367834", - "name": "REFLEXIA Prototype ver." - }, - { - "executables": [{"is_launcher": false, "name": "momodora iii/momodora3.exe", "os": "win32"}], - "hook": true, - "id": "1124358792071631028", - "name": "Momodora III" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thetrolleyproblem-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358795880054876", - "name": "Trolley Problem, Inc." - }, - { - "executables": [{"is_launcher": false, "name": "rds - the official drift videogame/rds.exe", "os": "win32"}], - "hook": true, - "id": "1124358799239688223", - "name": "RDS - The Official Drift Videogame" - }, - { - "executables": [ - {"is_launcher": false, "name": "movavi video editor plus 2020/videoeditorplus.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358800850309253", - "name": "Movavi Video Editor Plus 2020" - }, - { - "executables": [{"is_launcher": false, "name": "the gardens between/thegardensbetween.exe", "os": "win32"}], - "hook": true, - "id": "1124358802716766298", - "name": "The Gardens Between" - }, - { - "executables": [{"is_launcher": false, "name": "srw30/srw30.exe", "os": "win32"}], - "hook": true, - "id": "1124358804805537853", - "name": "Super Robot Wars 30" - }, - { - "executables": [{"is_launcher": false, "name": "win64/omno-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358806525194331", - "name": "Omno" - }, - { - "executables": [{"is_launcher": false, "name": "win64/theirland.exe", "os": "win32"}], - "hook": true, - "id": "1124358808194531338", - "name": "Their Land" - }, - { - "executables": [{"is_launcher": false, "name": "minerva/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124358809620590612", - "name": "MINERVA: Metastasis" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bmibenchmark-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358811650637967", - "name": "Bright Memory Infinite Ray Tracing Benchmark" - }, - { - "executables": [{"is_launcher": false, "name": "short life/short_life.exe", "os": "win32"}], - "hook": true, - "id": "1124358813127028866", - "name": "Short Life" - }, - { - "executables": [{"is_launcher": false, "name": "knight club/knight club +.exe", "os": "win32"}], - "hook": true, - "id": "1124358814825726052", - "name": "Knight Club +" - }, - { - "executables": [{"is_launcher": false, "name": "hustle cat/hustle cat.exe", "os": "win32"}], - "hook": true, - "id": "1124358816276951070", - "name": "Hustle Cat" - }, - { - "executables": [ - {"is_launcher": false, "name": "space commander war and trade/spacecommander.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358817950486689", - "name": "Space Commander: War and Trade" - }, - { - "executables": [{"is_launcher": false, "name": "4d minesweeper/4d minesweeper 64.exe", "os": "win32"}], - "hook": true, - "id": "1124358819619815564", - "name": "4D Minesweeper" - }, - { - "executables": [{"is_launcher": false, "name": "rune factory 5/rune factory 5.exe", "os": "win32"}], - "hook": true, - "id": "1124358821301735525", - "name": "Rune Factory 5" - }, - { - "executables": [{"is_launcher": false, "name": "the hong kong massacre/thkm.exe", "os": "win32"}], - "hook": true, - "id": "1124358823033978940", - "name": "The Hong Kong Massacre" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lof2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358824644587530", - "name": "Layers of Fear 2" - }, - { - "executables": [{"is_launcher": false, "name": "boobs 'em up/boobs em up.exe", "os": "win32"}], - "hook": true, - "id": "1124358827752575069", - "name": "Boobs 'em up" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lemnisgate-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358829325430915", - "name": "Lemnis Gate" - }, - { - "executables": [{"is_launcher": false, "name": "demise of nations - rome/app_main.exe", "os": "win32"}], - "hook": true, - "id": "1124358830969602229", - "name": "Demise of Nations" - }, - { - "executables": [{"is_launcher": false, "name": "bloodragedigitaledition/bloodrage.exe", "os": "win32"}], - "hook": true, - "id": "1124358832508907652", - "name": "Blood Rage: Digital Edition" - }, - { - "executables": [{"is_launcher": false, "name": "castle in the clouds/game_s.exe", "os": "win32"}], - "hook": true, - "id": "1124358836246036570", - "name": "Castle in the Clouds" - }, - { - "executables": [{"is_launcher": false, "name": "save room - organization puzzle/save room.exe", "os": "win32"}], - "hook": true, - "id": "1124358838972330025", - "name": "Save Room - Organization Puzzle" - }, - { - "executables": [{"is_launcher": false, "name": "warlander/warlander.exe", "os": "win32"}], - "hook": true, - "id": "1124358840708775956", - "name": "Warlander" - }, - { - "executables": [{"is_launcher": false, "name": "win64/shepherdoflight-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358842508136570", - "name": "Shepherd of Light" - }, - { - "executables": [{"is_launcher": false, "name": "tabooscracks/tabooscracks.exe", "os": "win32"}], - "hook": true, - "id": "1124358844089380944", - "name": "Taboos: Cracks" - }, - { - "executables": [{"is_launcher": false, "name": "bounty train/bountytrainsteam.exe", "os": "win32"}], - "hook": true, - "id": "1124358845477703853", - "name": "Bounty Train" - }, - { - "executables": [{"is_launcher": false, "name": "roguelords/rogue lords.exe", "os": "win32"}], - "hook": true, - "id": "1124358847218335924", - "name": "Rogue Lords" - }, - { - "executables": [{"is_launcher": false, "name": "against the storm demo/against the storm.exe", "os": "win32"}], - "hook": true, - "id": "1124358848740864070", - "name": "Against the Storm Demo" - }, - { - "executables": [{"is_launcher": false, "name": "osmos/osmos.exe", "os": "win32"}], - "hook": true, - "id": "1124358850166915092", - "name": "Osmos" - }, - { - "executables": [{"is_launcher": false, "name": "american conquest/dmcr.exe", "os": "win32"}], - "hook": true, - "id": "1124358851832070264", - "name": "American Conquest" - }, - { - "executables": [{"is_launcher": false, "name": "gamer girls 2/gamer_girls_2.exe", "os": "win32"}], - "hook": true, - "id": "1124358853446873148", - "name": "Gamer Girls [18+]: eSports SEX" - }, - { - "executables": [{"is_launcher": false, "name": "win64/islandmainproject-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358855166541854", - "name": "ArchiTac" - }, - { - "executables": [{"is_launcher": false, "name": "angel wings/angelstory.exe", "os": "win32"}], - "hook": true, - "id": "1124358856827490324", - "name": "Angel Wings" - }, - { - "executables": [{"is_launcher": false, "name": "read only memories/rom.exe", "os": "win32"}], - "hook": true, - "id": "1124358858593284206", - "name": "2064: Read Only Memories" - }, - { - "executables": [{"is_launcher": false, "name": "hc3/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358860120018964", - "name": "Hello Charlotte: Childhood's End" - }, - { - "executables": [{"is_launcher": false, "name": "superfly/superfly.exe", "os": "win32"}], - "hook": true, - "id": "1124358861592215674", - "name": "Superfly" - }, - { - "executables": [{"is_launcher": false, "name": "behindtheframe_pc_steam/behind the frame.exe", "os": "win32"}], - "hook": true, - "id": "1124358863144112178", - "name": "Behind the Frame: The Finest Scenery" - }, - { - "executables": [{"is_launcher": false, "name": "escapefirst3/escapefirst3.exe", "os": "win32"}], - "hook": true, - "id": "1124358864809242755", - "name": "Escape First 3" - }, - { - "executables": [{"is_launcher": false, "name": "stygian reign of the old ones/stygian.exe", "os": "win32"}], - "hook": true, - "id": "1124358866486972416", - "name": "Stygian: Reign of the Old Ones" - }, - { - "executables": [{"is_launcher": false, "name": "win64/supercross2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358867996917912", - "name": "Monster Energy Supercross - The Official Videogame 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fishgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358869469114549", - "name": "Fish Game" - }, - { - "executables": [{"is_launcher": false, "name": "bin/agk.exe", "os": "win32"}], - "hook": true, - "id": "1124358871549493288", - "name": "AppGameKit Classic" - }, - { - "executables": [{"is_launcher": false, "name": "sao utils/sao utils.exe", "os": "win32"}], - "hook": true, - "id": "1124358872962969743", - "name": "SAO Utils" - }, - { - "executables": [{"is_launcher": false, "name": "orb of creation/orb of creation.exe", "os": "win32"}], - "hook": true, - "id": "1124358874439372983", - "name": "Orb of Creation" - }, - { - "executables": [{"is_launcher": false, "name": "rebel cops/rebel cops.exe", "os": "win32"}], - "hook": true, - "id": "1124358876108697670", - "name": "Rebel Cops" - }, - { - "executables": [{"is_launcher": false, "name": "patchwork/pxw.exe", "os": "win32"}], - "hook": true, - "id": "1124358877853536336", - "name": "Patchwork" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lowlightcombat-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358879589974102", - "name": "Low Light Combat" - }, - { - "executables": [ - {"is_launcher": false, "name": "fling to the finish demo/fling to the finish demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358881192194139", - "name": "Fling to the Finish Demo" - }, - { - "executables": [{"is_launcher": false, "name": "toy soldiers/gamesw.exe", "os": "win32"}], - "hook": true, - "id": "1124358882513408022", - "name": "Toy Soldiers" - }, - { - "executables": [{"is_launcher": false, "name": "critter clicker/critter clicker.exe", "os": "win32"}], - "hook": true, - "id": "1124358884023353394", - "name": "Critter Clicker" - }, - { - "executables": [{"is_launcher": false, "name": "spirit of the island/soti.exe", "os": "win32"}], - "hook": true, - "id": "1124358885717856266", - "name": "Spirit Of The Island" - }, - { - "executables": [ - {"is_launcher": false, "name": "storm area 51 ayy lmao edition/stormarea51.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358887328460820", - "name": "STORM AREA 51: AYY LMAO EDITION" - }, - { - "executables": [{"is_launcher": false, "name": "kings bounty armored princess/kb.exe", "os": "win32"}], - "hook": true, - "id": "1124358888897138759", - "name": "King's Bounty: Armored Princess" - }, - { - "executables": [{"is_launcher": false, "name": "hammerwatch 2 demo/hw2.exe", "os": "win32"}], - "hook": true, - "id": "1124358890662936746", - "name": "Hammerwatch II Demo" - }, - { - "executables": [{"is_launcher": false, "name": "gibz/gibz.exe", "os": "win32"}], - "hook": true, - "id": "1124358892256768142", - "name": "GIBZ" - }, - { - "executables": [{"is_launcher": false, "name": "mor/mor.exe", "os": "win32"}], - "hook": true, - "id": "1124358894186152048", - "name": "Museum of Other Realities" - }, - { - "executables": [{"is_launcher": false, "name": "trails of cold steel/ed8.exe", "os": "win32"}], - "hook": true, - "id": "1124358895889043568", - "name": "The Legend of Heroes: Trails of Cold Steel" - }, - { - "executables": [{"is_launcher": false, "name": "star wars x-wing alliance/alliance.exe", "os": "win32"}], - "hook": true, - "id": "1124358897646452868", - "name": "STAR WARS\u2122: X-Wing Alliance\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "the oracle land/t10game.exe", "os": "win32"}], - "hook": true, - "id": "1124358899584225390", - "name": "The Oracle Land" - }, - { - "executables": [{"is_launcher": false, "name": "win64/obama-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358901828169728", - "name": "Obama" - }, - { - "executables": [{"is_launcher": false, "name": "world's dawn/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358905716293672", - "name": "World's Dawn" - }, - { - "executables": [ - {"is_launcher": false, "name": "dialtown phone dating sim demo/dialtown demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358907662454884", - "name": "Dialtown: Phone Dating Sim Demo" - }, - { - "executables": [{"is_launcher": false, "name": "cockhead/cockhead.exe", "os": "win32"}], - "hook": true, - "id": "1124358909239505066", - "name": "COCKHEAD" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the house of the dead remake/the house of the dead remake.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358911986778256", - "name": "THE HOUSE OF THE DEAD: Remake" - }, - { - "executables": [{"is_launcher": false, "name": "dodonpachi resurrection/default.exe", "os": "win32"}], - "hook": true, - "id": "1124358913832276050", - "name": "DoDonPachi Resurrection" - }, - { - "executables": [{"is_launcher": false, "name": "contra anniversary collection/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358915417706517", - "name": "Contra Anniversary Collection" - }, - { - "executables": [ - {"is_launcher": false, "name": "car detailing simulator/car detailing simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358917116408029", - "name": "Car Detailing Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "win64/skynoon-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358918513119242", - "name": "Sky Noon" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "gretel and winslow's mansion/gretel and winslow's mansion.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358920111140994", - "name": "Gretel and Winslow's Mansion" - }, - { - "executables": [{"is_launcher": false, "name": "wrc 4/wrc4.exe", "os": "win32"}], - "hook": true, - "id": "1124358922157965322", - "name": "WRC 4 FIA WORLD RALLY CHAMPIONSHIP" - }, - { - "executables": [{"is_launcher": false, "name": "cookiesvsclaus/cookiesvsclaus.exe", "os": "win32"}], - "hook": true, - "id": "1124358923797934211", - "name": "Cookies vs. Claus" - }, - { - "executables": [{"is_launcher": false, "name": "cogmind/cogmind.exe", "os": "win32"}], - "hook": true, - "id": "1124358925685375148", - "name": "Cogmind" - }, - { - "executables": [{"is_launcher": false, "name": "we are football/fe.exe", "os": "win32"}], - "hook": true, - "id": "1124358927388258404", - "name": "WE ARE FOOTBALL" - }, - { - "executables": [{"is_launcher": false, "name": "easypose/easypose.exe", "os": "win32"}], - "hook": true, - "id": "1124358928965320766", - "name": "Easy Pose" - }, - { - "executables": [{"is_launcher": false, "name": "landlord's super/landlordssuper.exe", "os": "win32"}], - "hook": true, - "id": "1124358930584326155", - "name": "Landlord's Super" - }, - { - "executables": [{"is_launcher": false, "name": "iron marines/ironmarines.exe", "os": "win32"}], - "hook": true, - "id": "1124358932157181952", - "name": "Iron Marines" - }, - { - "executables": [{"is_launcher": false, "name": "pro evolution soccer 2017/pes2017.exe", "os": "win32"}], - "hook": true, - "id": "1124358933625196644", - "name": "Pro Evolution Soccer 2017" - }, - { - "executables": [{"is_launcher": false, "name": "phantom brave pc/phantom brave pc.exe", "os": "win32"}], - "hook": true, - "id": "1124358935747510383", - "name": "Phantom Brave PC" - }, - { - "executables": [{"is_launcher": false, "name": "crystal project/crystal project.exe", "os": "win32"}], - "hook": true, - "id": "1124358937383284756", - "name": "Crystal Project" - }, - { - "executables": [ - {"is_launcher": false, "name": "quickie a love hotel story/quickie a love hotel story.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358939258142922", - "name": "Quickie: A Love Hotel Story" - }, - { - "executables": [ - {"is_launcher": false, "name": "stranger of paradise final fantasy origin/sopffo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358940856176691", - "name": "STRANGER OF PARADISE FINAL FANTASY ORIGIN" - }, - { - "executables": [{"is_launcher": false, "name": "frozen synapse/frozensynapse.exe", "os": "win32"}], - "hook": true, - "id": "1124358942642946109", - "name": "Frozen Synapse" - }, - { - "executables": [ - {"is_launcher": false, "name": "buddy simulator 1984 demo/buddy simulator 1984 demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358944173871196", - "name": "Buddy Simulator 1984 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/shadowburglar_unreal-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358945583153312", - "name": "Shadow Burglar" - }, - { - "executables": [{"is_launcher": false, "name": "win64/realmsofmagic-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358947147632811", - "name": "Realms of Magic" - }, - { - "executables": [{"is_launcher": false, "name": "synergy dedicated server/srcds.exe", "os": "win32"}], - "hook": true, - "id": "1124358948976341114", - "name": "Synergy Dedicated Server" - }, - { - "executables": [{"is_launcher": false, "name": "windbound/windboundwindows.exe", "os": "win32"}], - "hook": true, - "id": "1124358950498877510", - "name": "Windbound" - }, - { - "executables": [{"is_launcher": false, "name": "varenje/varenje.exe", "os": "win32"}], - "hook": true, - "id": "1124358952008822884", - "name": "Varenje" - }, - { - "executables": [{"is_launcher": false, "name": "tinyfolks/tinyfolks.exe", "os": "win32"}], - "hook": true, - "id": "1124358953661382717", - "name": "Tinyfolks" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sod2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358955452354560", - "name": "Seed of the Dead: Sweet Home" - }, - { - "executables": [{"is_launcher": false, "name": "win64/oos-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358957188788335", - "name": "Captain Starshot" - }, - { - "executables": [{"is_launcher": false, "name": "executable/shantaesiren.exe", "os": "win32"}], - "hook": true, - "id": "1124358959042674759", - "name": "Shantae and the Seven Sirens" - }, - { - "executables": [{"is_launcher": false, "name": "vcb - why city/vcb.exe", "os": "win32"}], - "hook": true, - "id": "1124358960825249872", - "name": "VCB: Why City" - }, - { - "executables": [{"is_launcher": false, "name": "x64/call_to_arms_ed.exe", "os": "win32"}], - "hook": true, - "id": "1124358962461036676", - "name": "Call to Arms - Gates of Hell: Ostfront" - }, - { - "executables": [{"is_launcher": false, "name": "abalyte/abalyte.exe", "os": "win32"}], - "hook": true, - "id": "1124358964163915848", - "name": "Abalyte" - }, - { - "executables": [{"is_launcher": false, "name": "bloodstained curse of the moon 2/game.exe", "os": "win32"}], - "hook": true, - "id": "1124358965594181752", - "name": "Bloodstained: Curse of the Moon 2" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "you have 10 seconds 2/you have 10 seconds 2 steam release.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124358967355785216", - "name": "You Have 10 Seconds 2" - }, - { - "executables": [{"is_launcher": false, "name": "samurai gunn 2/samuraigunn2.exe", "os": "win32"}], - "hook": true, - "id": "1124358968865730750", - "name": "Samurai Gunn 2" - }, - { - "executables": [{"is_launcher": false, "name": "valheim/valheim.exe", "os": "win32"}], - "hook": true, - "id": "1124358970618953818", - "name": "Valheim" - }, - { - "executables": [{"is_launcher": false, "name": "redist/vcredist_x86-80-sp1.exe", "os": "win32"}], - "hook": true, - "id": "1124358972028235897", - "name": "Total War: ROME II - Emperor Edition" - }, - { - "executables": [{"is_launcher": false, "name": "infectonator survivors/survivors.exe", "os": "win32"}], - "hook": true, - "id": "1124358974242836652", - "name": "Infectonator : Survivors" - }, - { - "executables": [{"is_launcher": false, "name": "win32/gunboundm.exe", "os": "win32"}], - "hook": true, - "id": "1124358975866028155", - "name": "GunboundM" - }, - { - "executables": [ - {"is_launcher": false, "name": "khimera destroy all monster girls/khimera1.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358977615057056", - "name": "Khimera: Destroy All Monster Girls" - }, - { - "executables": [{"is_launcher": false, "name": "gogonippon/bgi.exe", "os": "win32"}], - "hook": true, - "id": "1124358979288576030", - "name": "Go! Go! Nippon! ~My First Trip to Japan~" - }, - { - "executables": [ - {"is_launcher": false, "name": "windows-i686/sakuyaizayoigivesyouadviceanddabs.exe", "os": "win32"} - ], - "hook": true, - "id": "1124358980895002715", - "name": "Sakuya Izayoi Gives You Advice And Dabs" - }, - { - "executables": [{"is_launcher": false, "name": "mini guns/miniguns.exe", "os": "win32"}], - "hook": true, - "id": "1124358982841151619", - "name": "Mini Guns" - }, - { - "executables": [{"is_launcher": false, "name": "earth 2160/earth2160_sse.exe", "os": "win32"}], - "hook": true, - "id": "1124358984544043078", - "name": "Earth 2160" - }, - { - "executables": [{"is_launcher": false, "name": "vivid knight/vividknight.exe", "os": "win32"}], - "hook": true, - "id": "1124358986171428966", - "name": "\u30d3\u30d3\u30c3\u30c9\u30ca\u30a4\u30c8" - }, - { - "executables": [{"is_launcher": false, "name": "thebridge/the bridge.exe", "os": "win32"}], - "hook": true, - "id": "1124358987786240050", - "name": "The Bridge" - }, - { - "executables": [{"is_launcher": false, "name": "rexaura/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124358989480743012", - "name": "Rexaura" - }, - { - "executables": [{"is_launcher": false, "name": "win64/rebuilder-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358991133290629", - "name": "WW2 Rebuilder Demo" - }, - { - "executables": [{"is_launcher": false, "name": "unmetal/unmetal.exe", "os": "win32"}], - "hook": true, - "id": "1124358993159143434", - "name": "UnMetal" - }, - { - "executables": [{"is_launcher": false, "name": "stephen's sausage roll/sausage.exe", "os": "win32"}], - "hook": true, - "id": "1124358994966884472", - "name": "Stephen's Sausage Roll" - }, - { - "executables": [{"is_launcher": false, "name": "win64/h-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124358996715917433", - "name": "Project H" - }, - { - "executables": [{"is_launcher": false, "name": "vanguard-princess/vanpri.exe", "os": "win32"}], - "hook": true, - "id": "1124358998280384522", - "name": "Vanguard Princess" - }, - { - "executables": [{"is_launcher": false, "name": "sanabi/snb.exe", "os": "win32"}], - "hook": true, - "id": "1124359000092332203", - "name": "\uc0b0\ub098\ube44" - }, - { - "executables": [{"is_launcher": false, "name": "roadwarden demo/roadwarden.exe", "os": "win32"}], - "hook": true, - "id": "1124359002256584814", - "name": "Roadwarden Demo" - }, - { - "executables": [{"is_launcher": false, "name": "the room syndrome/the room syndrome.exe", "os": "win32"}], - "hook": true, - "id": "1124359008686461049", - "name": "The Room Syndrome" - }, - { - "executables": [{"is_launcher": false, "name": "love vibe aria/love vibe aria.exe", "os": "win32"}], - "hook": true, - "id": "1124359010775216229", - "name": "Love Vibe: Aria" - }, - { - "executables": [ - {"is_launcher": false, "name": "warhammer 40,000 regicide/warhammer 40k regicide.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359012595548240", - "name": "Warhammer 40,000: Regicide" - }, - { - "executables": [ - {"is_launcher": false, "name": "if on a winter's night four travelers/ioawn4t.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359014172602378", - "name": "If On A Winter's Night, Four Travelers" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "story of seasons pioneers of olive town/story of seasons pioneers of olive town.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359016118763530", - "name": "STORY OF SEASONS: Pioneers of Olive Town" - }, - { - "executables": [{"is_launcher": false, "name": "x3 terran conflict/x3ap.exe", "os": "win32"}], - "hook": true, - "id": "1124359017511268403", - "name": "X3: Albion Prelude" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "yet another zombie survivors demo/yet another zombie survivors.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359019142860850", - "name": "Yet Another Zombie Survivors Demo" - }, - { - "executables": [{"is_launcher": false, "name": "electro ride prologue/electrorideprologue.exe", "os": "win32"}], - "hook": true, - "id": "1124359020803801098", - "name": "Electro Ride Prologue" - }, - { - "executables": [ - {"is_launcher": false, "name": "100 doors games - escape from school/escapefromschool.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359022817071225", - "name": "100 Doors Game - Escape from School" - }, - { - "executables": [{"is_launcher": false, "name": "clicker guild/guild.exe", "os": "win32"}], - "hook": true, - "id": "1124359024322822205", - "name": "Clicker Guild" - }, - { - "executables": [{"is_launcher": false, "name": "win32/waves.exe", "os": "win32"}], - "hook": true, - "id": "1124359026038296676", - "name": "Waves" - }, - { - "executables": [{"is_launcher": false, "name": "tales of yore/tales of yore.exe", "os": "win32"}], - "hook": true, - "id": "1124359027946696754", - "name": "Tales of Yore" - }, - { - "executables": [{"is_launcher": false, "name": "dredge chapter one/dredge.exe", "os": "win32"}], - "hook": true, - "id": "1124359029628620860", - "name": "DREDGE: CHAPTER ONE" - }, - { - "executables": [{"is_launcher": false, "name": "dude simulator 4/dudesimulator4.exe", "os": "win32"}], - "hook": true, - "id": "1124359030920462496", - "name": "Dude Simulator 4" - }, - { - "executables": [{"is_launcher": false, "name": "the town of light/ttol.exe", "os": "win32"}], - "hook": true, - "id": "1124359032489127956", - "name": "The Town of Light" - }, - { - "executables": [{"is_launcher": false, "name": "win64/theoregontrail_win64_shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359033990697040", - "name": "The Oregon Trail" - }, - { - "executables": [{"is_launcher": false, "name": "win64/cosmicshake-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359035785855036", - "name": "SpongeBob SquarePants: The Cosmic Shake" - }, - { - "executables": [{"is_launcher": false, "name": "win64/stationtostation-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359037279023174", - "name": "Station to Station" - }, - { - "executables": [{"is_launcher": false, "name": "capitalism 2/cap2.exe", "os": "win32"}], - "hook": true, - "id": "1124359039028052019", - "name": "Capitalism 2" - }, - { - "executables": [{"is_launcher": false, "name": "treasure hunter claire/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359040777080893", - "name": "Treasure Hunter Claire" - }, - { - "executables": [{"is_launcher": false, "name": "motogp15/motogp15x64.exe", "os": "win32"}], - "hook": true, - "id": "1124359042312192050", - "name": "MotoGP\u212215" - }, - { - "executables": [{"is_launcher": false, "name": "dwerve prologue/dwerve.exe", "os": "win32"}], - "hook": true, - "id": "1124359044086378587", - "name": "Dwerve: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "weird hat fight/weird hat fight.exe", "os": "win32"}], - "hook": true, - "id": "1124359045856383006", - "name": "Weird Hat Fight" - }, - { - "executables": [{"is_launcher": false, "name": "hentai nazi hitler is back/hentai nazi 2.exe", "os": "win32"}], - "hook": true, - "id": "1124359047932555324", - "name": "Hentai Nazi HITLER is Back" - }, - { - "executables": [{"is_launcher": false, "name": "paradigm/paradigm.exe", "os": "win32"}], - "hook": true, - "id": "1124359049664811008", - "name": "Paradigm" - }, - { - "executables": [{"is_launcher": false, "name": "blockstory/block story.exe", "os": "win32"}], - "hook": true, - "id": "1124359054219821076", - "name": "Block Story" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kibbikeeper-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359056157593610", - "name": "Kibbi Keeper" - }, - { - "executables": [{"is_launcher": false, "name": "thefisher online/thefisher.exe", "os": "win32"}], - "hook": true, - "id": "1124359057659150386", - "name": "Fisher Online" - }, - { - "executables": [{"is_launcher": false, "name": "imperial assault/imperial assault.exe", "os": "win32"}], - "hook": true, - "id": "1124359059156512818", - "name": "Star Wars: Imperial Assault - Legends of the Alliance" - }, - { - "executables": [{"is_launcher": false, "name": "win64/subwayaftermidnight.exe", "os": "win32"}], - "hook": true, - "id": "1124359061148815400", - "name": "Subway Midnight" - }, - { - "executables": [{"is_launcher": false, "name": "th18/th18.exe", "os": "win32"}], - "hook": true, - "id": "1124359063220793375", - "name": "\u6771\u65b9\u8679\u9f8d\u6d1e \uff5e Unconnected Marketeers." - }, - { - "executables": [{"is_launcher": false, "name": "love puzzle 2/waifu secret.exe", "os": "win32"}], - "hook": true, - "id": "1124359064567173120", - "name": "Waifu Secret" - }, - { - "executables": [{"is_launcher": false, "name": "win64/slapthefly-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359066005815366", - "name": "Slap The Fly" - }, - { - "executables": [{"is_launcher": false, "name": "kubifaktorium/kubifaktorium-windows64.exe", "os": "win32"}], - "hook": true, - "id": "1124359067457040384", - "name": "Kubifaktorium" - }, - { - "executables": [{"is_launcher": false, "name": "revita/revita.exe", "os": "win32"}], - "hook": true, - "id": "1124359069034106940", - "name": "Revita" - }, - { - "executables": [{"is_launcher": false, "name": "samorost 2/samorost2.exe", "os": "win32"}], - "hook": true, - "id": "1124359070602772570", - "name": "Samorost 2" - }, - { - "executables": [{"is_launcher": false, "name": "trapper's delight/trappersdelight.exe", "os": "win32"}], - "hook": true, - "id": "1124359072158855198", - "name": "Trapper's Delight" - }, - { - "executables": [{"is_launcher": false, "name": "electronicsuperjoy/electronicsuperjoy.exe", "os": "win32"}], - "hook": true, - "id": "1124359073714950194", - "name": "Electronic Super Joy" - }, - { - "executables": [{"is_launcher": false, "name": "nancy drew curse of blackmoor manor/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359075396861962", - "name": "Nancy Drew: Curse of Blackmoor Manor" - }, - { - "executables": [{"is_launcher": false, "name": "client/dwarfheim.exe", "os": "win32"}], - "hook": true, - "id": "1124359076957147146", - "name": "DwarfHeim" - }, - { - "executables": [{"is_launcher": false, "name": "carto demo/carto.exe", "os": "win32"}], - "hook": true, - "id": "1124359078982987786", - "name": "Carto Demo" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/sunridermaskofarcadius-steam.exe", "os": "win32"}], - "hook": true, - "id": "1124359080505528521", - "name": "Sunrider: Mask of Arcadius" - }, - { - "executables": [{"is_launcher": false, "name": "high school simulator/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359082527178752", - "name": "High School Simulator 2018" - }, - { - "executables": [{"is_launcher": false, "name": "elon simulator 2019/elon simulator 2019.exe", "os": "win32"}], - "hook": true, - "id": "1124359084225875988", - "name": "Elon Simulator 2019" - }, - { - "executables": [{"is_launcher": false, "name": "renegade ops/renegadeops.exe", "os": "win32"}], - "hook": true, - "id": "1124359087270932500", - "name": "Renegade Ops" - }, - { - "executables": [{"is_launcher": false, "name": "wwe2k16/wwe2k16.exe", "os": "win32"}], - "hook": true, - "id": "1124359090257285211", - "name": "WWE 2K16" - }, - { - "executables": [{"is_launcher": false, "name": "telling lies/tellinglies.exe", "os": "win32"}], - "hook": true, - "id": "1124359092375404584", - "name": "Telling Lies" - }, - { - "executables": [ - {"is_launcher": false, "name": "video editor moviemator - movie maker/moviemator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359094053122058", - "name": "MovieMator Video Editor" - }, - { - "executables": [{"is_launcher": false, "name": "win64/gamemasterengine-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359095701487687", - "name": "Game Master Engine" - }, - { - "executables": [{"is_launcher": false, "name": "spirit island/spiritisland.exe", "os": "win32"}], - "hook": true, - "id": "1124359097748312085", - "name": "Spirit Island" - }, - { - "executables": [{"is_launcher": false, "name": "foxhimezero/foxhimezero.exe", "os": "win32"}], - "hook": true, - "id": "1124359099325366413", - "name": "Fox Hime Zero" - }, - { - "executables": [{"is_launcher": false, "name": "escape from tatris/escapefromtatris.exe", "os": "win32"}], - "hook": true, - "id": "1124359100885651667", - "name": "Escape from Tatris" - }, - { - "executables": [{"is_launcher": false, "name": "lab rags/lab rags.exe", "os": "win32"}], - "hook": true, - "id": "1124359102525612133", - "name": "Lab Rags" - }, - { - "executables": [{"is_launcher": false, "name": "haiku the robot/haiku.exe", "os": "win32"}], - "hook": true, - "id": "1124359104358531122", - "name": "Haiku, the Robot" - }, - { - "executables": [{"is_launcher": false, "name": "farmer's life prologue/farmerslife.exe", "os": "win32"}], - "hook": true, - "id": "1124359106422132866", - "name": "Farmer's Life: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "prerequisites/opencodecs_0.85.17777.exe", "os": "win32"}], - "hook": true, - "id": "1124359107839803462", - "name": "IRFaceRig" - }, - { - "executables": [{"is_launcher": false, "name": "hrot demo/hrot.exe", "os": "win32"}], - "hook": true, - "id": "1124359109412663326", - "name": "HROT Demo" - }, - { - "executables": [{"is_launcher": false, "name": "choice chamber/choicechamber.exe", "os": "win32"}], - "hook": true, - "id": "1124359110926815382", - "name": "Choice Chamber" - }, - { - "executables": [ - {"is_launcher": false, "name": "call of duty modern warfare 2 campaign remastered/mw2cr.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359112461926440", - "name": "Call of Duty Modern Warfare 2 Campaign Remastered" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/xoxo_droplets.exe", "os": "win32"}], - "hook": true, - "id": "1124359114227724338", - "name": "XOXO Droplets" - }, - { - "executables": [{"is_launcher": false, "name": "vacuum pilot/vacuum pilot.exe", "os": "win32"}], - "hook": true, - "id": "1124359115687350332", - "name": "Vacuum Pilot" - }, - { - "executables": [{"is_launcher": false, "name": "world of tennis roaring 20s/worldoftennis.exe", "os": "win32"}], - "hook": true, - "id": "1124359117327315086", - "name": "World of Tennis: Roaring \u201920s" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sjgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359119072149574", - "name": "Samurai Jack: Battle Through Time" - }, - { - "executables": [{"is_launcher": false, "name": "win64/trypfpv-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359120775032852", - "name": "TRYP FPV" - }, - { - "executables": [{"is_launcher": false, "name": "herranwalt lawyers legacy/lawyerslegacy.exe", "os": "win32"}], - "hook": true, - "id": "1124359122469523486", - "name": "HerrAnwalt: Lawyers Legacy" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "lead and gold gangs of the wild west/lag_win32_public_dev.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359124143067209", - "name": "Lead and Gold - Gangs of the Wild West" - }, - { - "executables": [ - {"is_launcher": false, "name": "the coma 2 vicious sisters/thecoma2vicioussisters.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359125799813130", - "name": "The Coma 2: Vicious Sisters" - }, - { - "executables": [{"is_launcher": false, "name": "scrapvival/scrapvival.exe", "os": "win32"}], - "hook": true, - "id": "1124359127620132944", - "name": "Scrapvival" - }, - { - "executables": [{"is_launcher": false, "name": "tales of the black forest/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359129507577947", - "name": "Tales of the Black Forest" - }, - { - "executables": [{"is_launcher": false, "name": "neo cab/neo cab.exe", "os": "win32"}], - "hook": true, - "id": "1124359131088834591", - "name": "Neo Cab" - }, - { - "executables": [{"is_launcher": false, "name": "ecosystem demo/ecosystem.exe", "os": "win32"}], - "hook": true, - "id": "1124359132737192037", - "name": "Ecosystem Demo" - }, - { - "executables": [{"is_launcher": false, "name": "bin/settlershok.exe", "os": "win32"}], - "hook": true, - "id": "1124359134532358244", - "name": "The Settlers : Heritage of Kings - History Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win64/towerprincess-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359136256213032", - "name": "Tower Princess: Knight's Trial" - }, - { - "executables": [{"is_launcher": false, "name": "glass masquerade 2/illusions.exe", "os": "win32"}], - "hook": true, - "id": "1124359137795526787", - "name": "Glass Masquerade 2: Illusions" - }, - { - "executables": [{"is_launcher": false, "name": "win64/foreverskies-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359139703931000", - "name": "Forever Skies" - }, - { - "executables": [{"is_launcher": false, "name": "echoed world/echoedworld.exe", "os": "win32"}], - "hook": true, - "id": "1124359145081032766", - "name": "Echoed World" - }, - { - "executables": [ - {"is_launcher": false, "name": "rock 'n' roll defense/rock 'n' roll defense.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359146834243666", - "name": "Rock 'N' Roll Defense" - }, - { - "executables": [{"is_launcher": false, "name": "flower girl 2/flower girl 2.exe", "os": "win32"}], - "hook": true, - "id": "1124359148172234782", - "name": "Flower girl 2" - }, - { - "executables": [{"is_launcher": false, "name": "paleo pines demo/paleo pines.exe", "os": "win32"}], - "hook": true, - "id": "1124359149547962400", - "name": "Paleo Pines Demo" - }, - { - "executables": [{"is_launcher": false, "name": "tharsis/tharsis.exe", "os": "win32"}], - "hook": true, - "id": "1124359151418617997", - "name": "Tharsis" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dicekingdom-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359152983101619", - "name": "Dice Legacy" - }, - { - "executables": [{"is_launcher": false, "name": "crash wheels/crash wheels.exe", "os": "win32"}], - "hook": true, - "id": "1124359154983780382", - "name": "Crash Wheels" - }, - { - "executables": [{"is_launcher": false, "name": "roll/roll.exe", "os": "win32"}], - "hook": true, - "id": "1124359156435005520", - "name": "Roll" - }, - { - "executables": [{"is_launcher": false, "name": "randal's monday/randals.exe", "os": "win32"}], - "hook": true, - "id": "1124359158225977435", - "name": "Randal's Monday" - }, - { - "executables": [{"is_launcher": false, "name": "hardreset/hardreset.exe", "os": "win32"}], - "hook": true, - "id": "1124359159954026587", - "name": "Hard Reset" - }, - { - "executables": [{"is_launcher": false, "name": "win64/nostraightroads-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359161703059557", - "name": "No Straight Roads: Encore Edition" - }, - { - "executables": [{"is_launcher": false, "name": "flatout 3/flatout.exe", "os": "win32"}], - "hook": true, - "id": "1124359163426910299", - "name": "Flatout 3" - }, - { - "executables": [{"is_launcher": false, "name": "astral ascent/astral ascent.exe", "os": "win32"}], - "hook": true, - "id": "1124359164999782400", - "name": "Astral Ascent" - }, - { - "executables": [{"is_launcher": false, "name": "sprout/sprout.exe", "os": "win32"}], - "hook": true, - "id": "1124359166602002442", - "name": "Sprout" - }, - { - "executables": [ - {"is_launcher": false, "name": "the magician's research/the magicians research.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359168292302938", - "name": "The Magician's Research" - }, - { - "executables": [{"is_launcher": false, "name": "ghost hunters corp/ghost exorcism inc.exe", "os": "win32"}], - "hook": true, - "id": "1124359169672237158", - "name": "Ghost Hunters Corp" - }, - { - "executables": [{"is_launcher": false, "name": "gladiabots/gladiabots.exe", "os": "win32"}], - "hook": true, - "id": "1124359171073130527", - "name": "Gladiabots" - }, - { - "executables": [{"is_launcher": false, "name": "dialtown phone dating sim/dialtown.exe", "os": "win32"}], - "hook": true, - "id": "1124359172767625346", - "name": "Dialtown: Phone Dating Sim" - }, - { - "executables": [{"is_launcher": false, "name": "win64/horrorwaiwai-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359174348886036", - "name": "INVITATION To FEAR" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tabletopplayground-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359175980462181", - "name": "Tabletop Playground" - }, - { - "executables": [{"is_launcher": false, "name": "fight of animals/foa.exe", "os": "win32"}], - "hook": true, - "id": "1124359178106978424", - "name": "Fight of Animals" - }, - { - "executables": [{"is_launcher": false, "name": "blackthefall/blackthefall.exe", "os": "win32"}], - "hook": true, - "id": "1124359179507871774", - "name": "Black The Fall" - }, - { - "executables": [{"is_launcher": false, "name": "alien hominid invasion demo/begame.exe", "os": "win32"}], - "hook": true, - "id": "1124359181361762454", - "name": "Alien Hominid Invasion Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thelegendofkarl-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359181974126712", - "name": "The Legend of Karl" - }, - { - "executables": [{"is_launcher": false, "name": "dropsy/dropsy.exe", "os": "win32"}], - "hook": true, - "id": "1124359183517634651", - "name": "Dropsy" - }, - { - "executables": [{"is_launcher": false, "name": "cypher/cypher.exe", "os": "win32"}], - "hook": true, - "id": "1124359185023385750", - "name": "Cypher" - }, - { - "executables": [{"is_launcher": false, "name": "win64/spookystation-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359186709491864", - "name": "Spooky Station" - }, - { - "executables": [{"is_launcher": false, "name": "win64/atp-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359188378828830", - "name": "The Archotek Project" - }, - { - "executables": [{"is_launcher": false, "name": "odd realm/oddrealm.exe", "os": "win32"}], - "hook": true, - "id": "1124359190123663502", - "name": "Odd Realm" - }, - { - "executables": [{"is_launcher": false, "name": "front lines/front lines.exe", "os": "win32"}], - "hook": true, - "id": "1124359192250167456", - "name": "Front Lines" - }, - { - "executables": [ - {"is_launcher": false, "name": "friends vs friends demo/friends vs friends.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359193999196210", - "name": "Friends vs Friends Demo" - }, - { - "executables": [{"is_launcher": false, "name": "tile runner/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359195668525206", - "name": "Tile Runner" - }, - { - "executables": [{"is_launcher": false, "name": "taphouse vr/taphousevr.exe", "os": "win32"}], - "hook": true, - "id": "1124359197220421632", - "name": "Taphouse VR" - }, - { - "executables": [{"is_launcher": false, "name": "civcity rome/civcity rome.exe", "os": "win32"}], - "hook": true, - "id": "1124359198965248060", - "name": "CivCity: Rome" - }, - { - "executables": [{"is_launcher": false, "name": "koi farm/koifarm.exe", "os": "win32"}], - "hook": true, - "id": "1124359200525537341", - "name": "Koi Farm" - }, - { - "executables": [{"is_launcher": false, "name": "the settlers online/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124359202224222258", - "name": "The Settlers Online" - }, - { - "executables": [{"is_launcher": false, "name": "cars 2/game-cars.exe", "os": "win32"}], - "hook": true, - "id": "1124359203998421213", - "name": "Cars 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/doe-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359205491589120", - "name": "Dungeons of Edera" - }, - { - "executables": [ - {"is_launcher": false, "name": "prince of persia forgotten sands/prince of persia.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359208666673262", - "name": "Prince of Persia: The Forgotten Sands" - }, - { - "executables": [{"is_launcher": false, "name": "interstellar marines/interstellarmarines.exe", "os": "win32"}], - "hook": true, - "id": "1124359212420583434", - "name": "Interstellar Marines" - }, - { - "executables": [{"is_launcher": false, "name": "super friends party/superfriendsparty.exe", "os": "win32"}], - "hook": true, - "id": "1124359214752612443", - "name": "Super Friends Party" - }, - { - "executables": [{"is_launcher": false, "name": "fatal frame mobw/fatal_frame_mobw.exe", "os": "win32"}], - "hook": true, - "id": "1124359216761688192", - "name": "FATAL FRAME / PROJECT ZERO: Maiden of Black Water" - }, - { - "executables": [{"is_launcher": false, "name": "earn to die 2/earntodie_2.exe", "os": "win32"}], - "hook": true, - "id": "1124359218510708866", - "name": "Earn to Die 2" - }, - { - "executables": [{"is_launcher": false, "name": "monster crown/monster crown.exe", "os": "win32"}], - "hook": true, - "id": "1124359220184240128", - "name": "Monster Crown" - }, - { - "executables": [{"is_launcher": false, "name": "bloody walls/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359221828399125", - "name": "Bloody Walls" - }, - { - "executables": [{"is_launcher": false, "name": "classic sudoku/classic sudoku.exe", "os": "win32"}], - "hook": true, - "id": "1124359223321579592", - "name": "Classic Sudoku" - }, - { - "executables": [{"is_launcher": false, "name": "nancy drew - shadow waters edge/shadow.exe", "os": "win32"}], - "hook": true, - "id": "1124359225058013214", - "name": "Nancy Drew: Shadow at the Water's Edge" - }, - { - "executables": [ - {"is_launcher": false, "name": "tasty planet back for seconds/tastyplanet2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359226924486746", - "name": "Tasty Planet: Back for Seconds" - }, - { - "executables": [{"is_launcher": false, "name": "win64/medusa-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359228547678278", - "name": "Medusa's Labyrinth" - }, - { - "executables": [{"is_launcher": false, "name": "fishing adventure/fishing adventure.exe", "os": "win32"}], - "hook": true, - "id": "1124359230112149555", - "name": "Fishing Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "blacktop hoops demo steam/blacktop hoops.exe", "os": "win32"}], - "hook": true, - "id": "1124359231563382784", - "name": "Blacktop Hoops" - }, - { - "executables": [{"is_launcher": false, "name": "hellcard prologue/hellcard_prologue.exe", "os": "win32"}], - "hook": true, - "id": "1124359233463406672", - "name": "HELLCARD: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "paintballx/simple hostile.exe", "os": "win32"}], - "hook": true, - "id": "1124359234923020450", - "name": "PaintballX" - }, - { - "executables": [{"is_launcher": false, "name": "creaks/creaks.exe", "os": "win32"}], - "hook": true, - "id": "1124359236441362462", - "name": "Creaks" - }, - { - "executables": [{"is_launcher": false, "name": "sigmatheory/sigma.exe", "os": "win32"}], - "hook": true, - "id": "1124359238165217390", - "name": "Sigma Theory" - }, - { - "executables": [ - {"is_launcher": false, "name": "commandos beyond the call of duty/coman_mp.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359239759048724", - "name": "Commandos: Beyond the Call of Duty" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vail-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359241273200711", - "name": "VAIL" - }, - { - "executables": [{"is_launcher": false, "name": "turbo golf racing/turbo golf racing.exe", "os": "win32"}], - "hook": true, - "id": "1124359242967691294", - "name": "Turbo Golf Racing" - }, - { - "executables": [{"is_launcher": false, "name": "spellforce conquest of eo/sfcoe.exe", "os": "win32"}], - "hook": true, - "id": "1124359244288905226", - "name": "SpellForce: Conquest of Eo" - }, - { - "executables": [{"is_launcher": false, "name": "orpheus's dream/orpheus's dream.exe", "os": "win32"}], - "hook": true, - "id": "1124359246033727498", - "name": "Orpheus's Dream" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/pandemiclove.exe", "os": "win32"}], - "hook": true, - "id": "1124359247589818368", - "name": "Pandemic Love" - }, - { - "executables": [{"is_launcher": false, "name": "oldage/oldage.exe", "os": "win32"}], - "hook": true, - "id": "1124359249217212426", - "name": "Oldage" - }, - { - "executables": [{"is_launcher": false, "name": "toree 3d/toree3d.exe", "os": "win32"}], - "hook": true, - "id": "1124359250873954354", - "name": "Toree 3D" - }, - { - "executables": [{"is_launcher": false, "name": "win64/toytinkersimulator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359252471988224", - "name": "Toy Tinker Simulator: BETA" - }, - { - "executables": [{"is_launcher": false, "name": "win64/level1.exe", "os": "win32"}], - "hook": true, - "id": "1124359253768024225", - "name": "I Am Jesus Christ: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "decay - the mare/decay - the mare.exe", "os": "win32"}], - "hook": true, - "id": "1124359255600939108", - "name": "Decay - The Mare" - }, - { - "executables": [{"is_launcher": false, "name": "power & revolution/_start.exe", "os": "win32"}], - "hook": true, - "id": "1124359270117421066", - "name": "Power & Revolution" - }, - { - "executables": [{"is_launcher": false, "name": "my time at sandrock demo/sandrock.exe", "os": "win32"}], - "hook": true, - "id": "1124359271761596466", - "name": "My Time at Sandrock Demo" - }, - { - "executables": [{"is_launcher": false, "name": "the ghost train/theghosttrain.exe", "os": "win32"}], - "hook": true, - "id": "1124359273502228511", - "name": "The Ghost Train | \u5e7d\u970a\u5217\u8eca" - }, - { - "executables": [{"is_launcher": false, "name": "riftwizard/riftwizard.exe", "os": "win32"}], - "hook": true, - "id": "1124359274907316286", - "name": "Rift Wizard" - }, - { - "executables": [{"is_launcher": false, "name": "hentai 3018/hentai.exe", "os": "win32"}], - "hook": true, - "id": "1124359276488573050", - "name": "Hentai 3018" - }, - { - "executables": [{"is_launcher": false, "name": "escape from monkey island/monkey4.exe", "os": "win32"}], - "hook": true, - "id": "1124359278283739257", - "name": "Escape from Monkey Island\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "client/infinite_lagrange_gb.exe", "os": "win32"}], - "hook": true, - "id": "1124359279974039602", - "name": "Infinite Lagrange" - }, - { - "executables": [{"is_launcher": false, "name": "egypt old kingdom/egypt old kingdom.exe", "os": "win32"}], - "hook": true, - "id": "1124359281668534445", - "name": "Egypt: Old Kingdom" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "vampire the masquerade - shadows of new york/vtm shadows of new york.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359285674102814", - "name": "Vampire: The Masquerade - Shadows of New York" - }, - { - "executables": [{"is_launcher": false, "name": "win64/samuraishodown-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359287347625994", - "name": "SAMURAI SHODOWN" - }, - { - "executables": [{"is_launcher": false, "name": "founders fortune/founders fortune.exe", "os": "win32"}], - "hook": true, - "id": "1124359288710770708", - "name": "Founders' Fortune" - }, - { - "executables": [{"is_launcher": false, "name": "blueprint tycoon/blueprinttycoon.exe", "os": "win32"}], - "hook": true, - "id": "1124359290476576849", - "name": "Blueprint Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ouroboros-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359292045242539", - "name": "A Place, Forbidden" - }, - { - "executables": [ - {"is_launcher": false, "name": "hentai mosaique vip room/hentai mosaique vip room.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359293873963008", - "name": "Hentai Mosaique Vip Room" - }, - { - "executables": [{"is_launcher": false, "name": "chess'extra/chess'extra.exe", "os": "win32"}], - "hook": true, - "id": "1124359295404879902", - "name": "Chess'Extra" - }, - { - "executables": [{"is_launcher": false, "name": "action sandbox/action sandbox.exe", "os": "win32"}], - "hook": true, - "id": "1124359296998723624", - "name": "ACTION SANDBOX" - }, - { - "executables": [{"is_launcher": false, "name": "mushroom heroes/mushroomheroes.exe", "os": "win32"}], - "hook": true, - "id": "1124359298567385088", - "name": "Mushroom Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "igeb2/igeb2.exe", "os": "win32"}], - "hook": true, - "id": "1124359300542906418", - "name": "IRM\u00c3O Grande & Brasileiro 2" - }, - { - "executables": [{"is_launcher": false, "name": "mini golf arena/mini golf arena.exe", "os": "win32"}], - "hook": true, - "id": "1124359303302762536", - "name": "Mini Golf Arena" - }, - { - "executables": [{"is_launcher": false, "name": "win64/slenderman-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359306360406047", - "name": "Slenderman Demo" - }, - { - "executables": [{"is_launcher": false, "name": "rage wars/ragewars.exe", "os": "win32"}], - "hook": true, - "id": "1124359309363531796", - "name": "Rage Wars" - }, - { - "executables": [{"is_launcher": false, "name": "starblast/starblast.exe", "os": "win32"}], - "hook": true, - "id": "1124359310902833214", - "name": "Starblast" - }, - { - "executables": [{"is_launcher": false, "name": "hentai pussy 2/pussy.exe", "os": "win32"}], - "hook": true, - "id": "1124359312932884551", - "name": "Hentai Pussy 2" - }, - { - "executables": [{"is_launcher": false, "name": "annomutationem/anno.exe", "os": "win32"}], - "hook": true, - "id": "1124359314467991582", - "name": "ANNO: Mutationem" - }, - { - "executables": [{"is_launcher": false, "name": "win64/stateofmind-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359316124749914", - "name": "State of Mind" - }, - { - "executables": [{"is_launcher": false, "name": "win64/prophunt-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359317798273086", - "name": "Prop Hunt" - }, - { - "executables": [{"is_launcher": false, "name": "karting/karting.exe", "os": "win32"}], - "hook": true, - "id": "1124359319354364057", - "name": "Karting" - }, - { - "executables": [{"is_launcher": false, "name": "contraptionmaker/contraptionmaker.exe", "os": "win32"}], - "hook": true, - "id": "1124359320780423168", - "name": "Contraption Maker" - }, - { - "executables": [{"is_launcher": false, "name": "headliner novinews/headlinernovinews.exe", "os": "win32"}], - "hook": true, - "id": "1124359322424594462", - "name": "Headliner: NoviNews" - }, - { - "executables": [{"is_launcher": false, "name": "biphase/biphase.exe", "os": "win32"}], - "hook": true, - "id": "1124359323951317023", - "name": "Biphase" - }, - { - "executables": [{"is_launcher": false, "name": "win64/betweentwocastles-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359325696151705", - "name": "Between Two Castles - Digital Edition" - }, - { - "executables": [{"is_launcher": false, "name": "kero blaster/keroblaster.exe", "os": "win32"}], - "hook": true, - "id": "1124359327231262850", - "name": "Kero Blaster" - }, - { - "executables": [{"is_launcher": false, "name": "creature creator/creature creator.exe", "os": "win32"}], - "hook": true, - "id": "1124359328804122714", - "name": "Creature Creator" - }, - { - "executables": [{"is_launcher": false, "name": "horizon chase turbo demo/horizonchase.exe", "os": "win32"}], - "hook": true, - "id": "1124359330867724408", - "name": "Horizon Chase Turbo Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/archon-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359332465750126", - "name": "Dungeons of Sundaria" - }, - { - "executables": [{"is_launcher": false, "name": "scrapnaut/scrapnaut.exe", "os": "win32"}], - "hook": true, - "id": "1124359333996679339", - "name": "Scrapnaut" - }, - { - "executables": [{"is_launcher": false, "name": "win64/supercross4-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359335863140462", - "name": "Monster Energy Supercross - The Official Videogame 4" - }, - { - "executables": [{"is_launcher": false, "name": "galcon 2/galcon2.exe", "os": "win32"}], - "hook": true, - "id": "1124359337498914928", - "name": "Galcon 2" - }, - { - "executables": [{"is_launcher": false, "name": "orbital gear/orbitalgear.exe", "os": "win32"}], - "hook": true, - "id": "1124359339487023134", - "name": "Orbital Gear" - }, - { - "executables": [{"is_launcher": false, "name": "senran kagura bon appetit/skbonappetit.exe", "os": "win32"}], - "hook": true, - "id": "1124359341290565782", - "name": "SENRAN KAGURA Bon Appetit!" - }, - { - "executables": [{"is_launcher": false, "name": "win32/marsgame.exe", "os": "win32"}], - "hook": true, - "id": "1124359342821494854", - "name": "M.A.R.S." - }, - { - "executables": [{"is_launcher": false, "name": "dotnet/dotnetfx40_full_x86_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124359344557928589", - "name": "Operation Flashpoint: Red River" - }, - { - "executables": [{"is_launcher": false, "name": "mcpixel/mcpixel.exe", "os": "win32"}], - "hook": true, - "id": "1124359346256625744", - "name": "McPixel" - }, - { - "executables": [{"is_launcher": false, "name": "media/lostjudgment.exe", "os": "win32"}], - "hook": true, - "id": "1124359347858853918", - "name": "Lost Judgment" - }, - { - "executables": [{"is_launcher": false, "name": "the longest journey/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359349490434068", - "name": "The Longest Journey" - }, - { - "executables": [{"is_launcher": false, "name": "versus game/versus.exe", "os": "win32"}], - "hook": true, - "id": "1124359351205900328", - "name": "Versus Squad" - }, - { - "executables": [{"is_launcher": false, "name": "doax-venusvacation/doax_vv.exe", "os": "win32"}], - "hook": true, - "id": "1124359352657137784", - "name": "DEAD OR ALIVE Xtreme Venus Vacation" - }, - { - "executables": [{"is_launcher": false, "name": "this means warp/this means warp.exe", "os": "win32"}], - "hook": true, - "id": "1124359354490044566", - "name": "This Means Warp" - }, - { - "executables": [{"is_launcher": false, "name": "terra firma/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359356205518958", - "name": "Terra Firma" - }, - { - "executables": [{"is_launcher": false, "name": "escapedungeon2/escapedungeon2.exe", "os": "win32"}], - "hook": true, - "id": "1124359357820317836", - "name": "Escape Dungeon 2" - }, - { - "executables": [{"is_launcher": false, "name": "the letter/the letter.exe", "os": "win32"}], - "hook": true, - "id": "1124359360865386568", - "name": "The Letter" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sdgundamba-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359365147775047", - "name": "SD GUNDAM BATTLE ALLIANCE" - }, - { - "executables": [{"is_launcher": false, "name": "the watchers/thewatchers.exe", "os": "win32"}], - "hook": true, - "id": "1124359366619971675", - "name": "The Watchers" - }, - { - "executables": [ - {"is_launcher": false, "name": "dark messiah might and magic multi-player/mm.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359368255746129", - "name": "Dark Messiah of Might & Magic Multi-Player" - }, - { - "executables": [{"is_launcher": false, "name": "the survey/visibility03.exe", "os": "win32"}], - "hook": true, - "id": "1124359369857978468", - "name": "The Survey" - }, - { - "executables": [{"is_launcher": false, "name": "super blood hockey/superbloodhockey.exe", "os": "win32"}], - "hook": true, - "id": "1124359371594412143", - "name": "Super Blood Hockey" - }, - { - "executables": [{"is_launcher": false, "name": "series makers/seriesmakers.exe", "os": "win32"}], - "hook": true, - "id": "1124359373381193810", - "name": "Series Makers" - }, - { - "executables": [{"is_launcher": false, "name": "going under demo/going under.exe", "os": "win32"}], - "hook": true, - "id": "1124359375344119939", - "name": "Going Under Demo" - }, - { - "executables": [{"is_launcher": false, "name": "blood west/blood west.exe", "os": "win32"}], - "hook": true, - "id": "1124359376845688903", - "name": "Blood West" - }, - { - "executables": [{"is_launcher": false, "name": "the coin game demo/thecoingamedemo.exe", "os": "win32"}], - "hook": true, - "id": "1124359378733121646", - "name": "The Coin Game Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vrpvpclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359380188541098", - "name": "Archangel\u2122: Hellfire" - }, - { - "executables": [{"is_launcher": false, "name": "ultimate sudoku collection/ultimatesudoku.exe", "os": "win32"}], - "hook": true, - "id": "1124359381908213990", - "name": "Ultimate Sudoku Collection" - }, - { - "executables": [{"is_launcher": false, "name": "off-peak/off-peak steam 2.0.exe", "os": "win32"}], - "hook": true, - "id": "1124359383682396220", - "name": "Off-Peak" - }, - { - "executables": [{"is_launcher": false, "name": "64-bit/notime64.exe", "os": "win32"}], - "hook": true, - "id": "1124359385548869632", - "name": "No Time" - }, - { - "executables": [{"is_launcher": false, "name": "stars end/stars end.exe", "os": "win32"}], - "hook": true, - "id": "1124359387134308443", - "name": "Stars End" - }, - { - "executables": [{"is_launcher": false, "name": "tavern tycoon/taverntycoon.exe", "os": "win32"}], - "hook": true, - "id": "1124359388853981214", - "name": "Tavern Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "conan chop chop/conan chop chop.exe", "os": "win32"}], - "hook": true, - "id": "1124359390380699648", - "name": "Conan Chop Chop" - }, - { - "executables": [{"is_launcher": false, "name": "win64/moonsofmadness-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359392125534368", - "name": "Moons of Madness" - }, - { - "executables": [{"is_launcher": false, "name": "prosperousuniverse/prun.exe", "os": "win32"}], - "hook": true, - "id": "1124359393652256828", - "name": "Prosperous Universe" - }, - { - "executables": [{"is_launcher": false, "name": "last call bbs/last call bbs.exe", "os": "win32"}], - "hook": true, - "id": "1124359396437278761", - "name": "Last Call BBS" - }, - { - "executables": [{"is_launcher": false, "name": "tinycombatarena/arena.exe", "os": "win32"}], - "hook": true, - "id": "1124359398043693136", - "name": "Tiny Combat Arena" - }, - { - "executables": [{"is_launcher": false, "name": "peaky blinders mastermind/peakyblinders.exe", "os": "win32"}], - "hook": true, - "id": "1124359399830470807", - "name": "Peaky Blinders: Mastermind" - }, - { - "executables": [{"is_launcher": false, "name": "x64/vrmark.exe", "os": "win32"}], - "hook": true, - "id": "1124359401361387673", - "name": "VRMark" - }, - { - "executables": [{"is_launcher": false, "name": "deadeffect/deadeffect.exe", "os": "win32"}], - "hook": true, - "id": "1124359403060084796", - "name": "Dead Effect" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "baldur's gate - dark alliance/baldur's gate - dark alliance.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359404515504248", - "name": "Baldur's Gate: Dark Alliance" - }, - { - "executables": [{"is_launcher": false, "name": "10000000/10000000.exe", "os": "win32"}], - "hook": true, - "id": "1124359406373584926", - "name": "10,000,000" - }, - { - "executables": [{"is_launcher": false, "name": "meteorvolleyball/meteorvolleyball.exe", "os": "win32"}], - "hook": true, - "id": "1124359408076476436", - "name": "\uc9c0\uad6c\uba78\ub9dd 60\ucd08\uc804! -\uc6b4\uc11d\ubc30\uad6c \ud3b8-" - }, - { - "executables": [{"is_launcher": false, "name": "faefever/faefever.exe", "os": "win32"}], - "hook": true, - "id": "1124359409678696538", - "name": "Faefever" - }, - { - "executables": [{"is_launcher": false, "name": "lastcloudiatc/lastcloudia.exe", "os": "win32"}], - "hook": true, - "id": "1124359411297701959", - "name": "\u6700\u5f8c\u7684\u514b\u52de\u8fea\u4e9e" - }, - { - "executables": [{"is_launcher": false, "name": "star wars the force unleashed/swtfu.exe", "os": "win32"}], - "hook": true, - "id": "1124359412774092941", - "name": "STAR WARS\u2122: The Force Unleashed\u2122 Ultimate Sith Edition" - }, - { - "executables": [{"is_launcher": false, "name": "n0vadesktop/n0vadesktop.exe", "os": "win32"}], - "hook": true, - "id": "1124359414611193959", - "name": "N0va Desktop" - }, - { - "executables": [{"is_launcher": false, "name": "zueirama/zueirama.exe", "os": "win32"}], - "hook": true, - "id": "1124359416565747762", - "name": "Zueirama" - }, - { - "executables": [{"is_launcher": false, "name": "transport defender/td.exe", "os": "win32"}], - "hook": true, - "id": "1124359418218295296", - "name": "Transport Defender" - }, - { - "executables": [{"is_launcher": false, "name": "isis simulator/isis.exe", "os": "win32"}], - "hook": true, - "id": "1124359420059598968", - "name": "ISIS Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "struggling/struggling.exe", "os": "win32"}], - "hook": true, - "id": "1124359421707964576", - "name": "Struggling" - }, - { - "executables": [{"is_launcher": false, "name": "broken sword shadow of the templars/bs1dc.exe", "os": "win32"}], - "hook": true, - "id": "1124359423326957628", - "name": "Broken Sword 1 - Shadow of the Templars: Director's Cut" - }, - { - "executables": [{"is_launcher": false, "name": "ultimate coaster x/ultimatecoasterx.exe", "os": "win32"}], - "hook": true, - "id": "1124359424979517571", - "name": "Ultimate Coaster X" - }, - { - "executables": [{"is_launcher": false, "name": "hello charlotte ep1/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359426745323550", - "name": "Hello Charlotte EP1" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mohab-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359428179771422", - "name": "Medal of Honor\u2122: Above and Beyond" - }, - { - "executables": [{"is_launcher": false, "name": "act of aggression/actofaggression.exe", "os": "win32"}], - "hook": true, - "id": "1124359429832323112", - "name": "Act of Aggression" - }, - { - "executables": [{"is_launcher": false, "name": "gnosia/gnosia.exe", "os": "win32"}], - "hook": true, - "id": "1124359431388418059", - "name": "GNOSIA" - }, - { - "executables": [{"is_launcher": false, "name": "the fermi paradox/the fermi paradox.exe", "os": "win32"}], - "hook": true, - "id": "1124359432986443846", - "name": "The Fermi Paradox" - }, - { - "executables": [{"is_launcher": false, "name": "win64/battlechess-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359434689335407", - "name": "Sex Chess" - }, - { - "executables": [{"is_launcher": false, "name": "windows_content/sentience.exe", "os": "win32"}], - "hook": true, - "id": "1124359436253806723", - "name": "Sentience" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vrflush.exe", "os": "win32"}], - "hook": true, - "id": "1124359437872803890", - "name": "VR Flush" - }, - { - "executables": [ - {"is_launcher": false, "name": "transformice adventures demo/tfmadventures.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359440401973320", - "name": "Transformice Adventures Demo" - }, - { - "executables": [{"is_launcher": false, "name": "sketch crawler/sketchcrawler.exe", "os": "win32"}], - "hook": true, - "id": "1124359442499121232", - "name": "Sketch Crawler" - }, - { - "executables": [{"is_launcher": false, "name": "ninja stealth/ninja stealth.exe", "os": "win32"}], - "hook": true, - "id": "1124359445997174935", - "name": "Ninja Stealth" - }, - { - "executables": [{"is_launcher": false, "name": "morphblade/morphblade.exe", "os": "win32"}], - "hook": true, - "id": "1124359447586811944", - "name": "Morphblade" - }, - { - "executables": [{"is_launcher": false, "name": "snakebird/snakebird.exe", "os": "win32"}], - "hook": true, - "id": "1124359449172267018", - "name": "Snakebird" - }, - { - "executables": [{"is_launcher": false, "name": "chusingura46+1/chusingura46+1.exe", "os": "win32"}], - "hook": true, - "id": "1124359450698989568", - "name": "ChuSingura46+1 S" - }, - { - "executables": [{"is_launcher": false, "name": "hunt and snare/ruffleneck.exe", "os": "win32"}], - "hook": true, - "id": "1124359452150222878", - "name": "Hunt and Snare" - }, - { - "executables": [{"is_launcher": false, "name": "dot to dot puzzles/dotsadult.exe", "os": "win32"}], - "hook": true, - "id": "1124359453886656552", - "name": "Dot to Dot Puzzles" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dreamhunters-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359455425970236", - "name": "ELIF" - }, - { - "executables": [ - {"is_launcher": false, "name": "the ranger lost tribe/the ranger lost tribe demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359457191776396", - "name": "The Ranger: Lost Tribe" - }, - { - "executables": [{"is_launcher": false, "name": "rover mechanic simulator/rms.exe", "os": "win32"}], - "hook": true, - "id": "1124359458932404407", - "name": "Rover Mechanic Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "green hell vr/ghvr.exe", "os": "win32"}], - "hook": true, - "id": "1124359460488499281", - "name": "Green Hell VR" - }, - { - "executables": [{"is_launcher": false, "name": "disciples iii rebirth/disciplesiii.exe", "os": "win32"}], - "hook": true, - "id": "1124359462333984778", - "name": "Disciples III: Reincarnation" - }, - { - "executables": [{"is_launcher": false, "name": "damnosaur/damnosaur.exe", "os": "win32"}], - "hook": true, - "id": "1124359464154320996", - "name": "DAMNOSAUR" - }, - { - "executables": [{"is_launcher": false, "name": "the deed/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359465752342538", - "name": "The Deed" - }, - { - "executables": [{"is_launcher": false, "name": "demeo - pc edition demo/demeo.exe", "os": "win32"}], - "hook": true, - "id": "1124359467421683722", - "name": "Demeo - PC Edition Demo" - }, - { - "executables": [{"is_launcher": false, "name": "majesty 2/majesty2.exe", "os": "win32"}], - "hook": true, - "id": "1124359469053263932", - "name": "Majesty 2" - }, - { - "executables": [{"is_launcher": false, "name": "scorch/scorch_final.exe", "os": "win32"}], - "hook": true, - "id": "1124359470466740296", - "name": "Scorch" - }, - { - "executables": [{"is_launcher": false, "name": "minerultraadventures/mua.exe", "os": "win32"}], - "hook": true, - "id": "1124359472152854588", - "name": "Miner Ultra Adventures" - }, - { - "executables": [{"is_launcher": false, "name": "respublica-win32-x64/respublica.exe", "os": "win32"}], - "hook": true, - "id": "1124359473780240384", - "name": "Respublica" - }, - { - "executables": [{"is_launcher": false, "name": "lil gator game/lil gator game.exe", "os": "win32"}], - "hook": true, - "id": "1124359475529269258", - "name": "Lil Gator Game" - }, - { - "executables": [{"is_launcher": false, "name": "calamari clash/calamariclash.exe", "os": "win32"}], - "hook": true, - "id": "1124359477165043752", - "name": "Calamari Clash" - }, - { - "executables": [{"is_launcher": false, "name": "world of talesworth/worldoftalesworth.exe", "os": "win32"}], - "hook": true, - "id": "1124359479031513158", - "name": "World of Talesworth: Idle MMO Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "green project/green project.exe", "os": "win32"}], - "hook": true, - "id": "1124359480776347698", - "name": "Green Project" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon munchies/dungeon munchies.exe", "os": "win32"}], - "hook": true, - "id": "1124359482537947288", - "name": "Dungeon Munchies" - }, - { - "executables": [{"is_launcher": false, "name": "tower 57/tower57.exe", "os": "win32"}], - "hook": true, - "id": "1124359484106625054", - "name": "Tower 57" - }, - { - "executables": [ - {"is_launcher": false, "name": "biohazard village z version/installermessage.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359485801119806", - "name": "BIOHAZARD VILLAGE Z Version" - }, - { - "executables": [{"is_launcher": false, "name": "goocubelets/goocubelets.exe", "os": "win32"}], - "hook": true, - "id": "1124359487386562670", - "name": "GooCubelets" - }, - { - "executables": [{"is_launcher": false, "name": "iron sky invasion/isi_dx11.exe", "os": "win32"}], - "hook": true, - "id": "1124359488976211988", - "name": "Iron Sky Invasion" - }, - { - "executables": [{"is_launcher": false, "name": "bouboum/bouboum.exe", "os": "win32"}], - "hook": true, - "id": "1124359490758783086", - "name": "Bouboum" - }, - { - "executables": [{"is_launcher": false, "name": "win64/projectracing-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359492390375425", - "name": "Shadow Racer" - }, - { - "executables": [{"is_launcher": false, "name": "brilliant bob/brilliantbob.exe", "os": "win32"}], - "hook": true, - "id": "1124359493870960651", - "name": "Brilliant Bob" - }, - { - "executables": [{"is_launcher": false, "name": "win64/unforgiving-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359495527706664", - "name": "Unforgiving - A Northern Hymn" - }, - { - "executables": [ - {"is_launcher": false, "name": "aero tales online the world/aero tales online the world.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359497096384532", - "name": "Aero Tales Online: The World - Anime MMORPG" - }, - { - "executables": [{"is_launcher": false, "name": "win64/rogue_operatives.exe", "os": "win32"}], - "hook": true, - "id": "1124359498975424544", - "name": "Rogue Operatives" - }, - { - "executables": [{"is_launcher": false, "name": "black book prologue/black book.exe", "os": "win32"}], - "hook": true, - "id": "1124359500724453376", - "name": "Black Book: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "bin64/tinyandbig.exe", "os": "win32"}], - "hook": true, - "id": "1124359502356041819", - "name": "Tiny and Big: Grandpa's Leftovers" - }, - { - "executables": [{"is_launcher": false, "name": "atlantica global/atlanticarun.exe", "os": "win32"}], - "hook": true, - "id": "1124359503928897616", - "name": "Atlantica Global" - }, - { - "executables": [{"is_launcher": false, "name": "antonblast demo/antonblastdynamitedemo.exe", "os": "win32"}], - "hook": true, - "id": "1124359505967333396", - "name": "Antonblast Demo" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "record of lodoss war-deedlit in wonder labyrinth-/deedlit in wonder labyrinth.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359507548590160", - "name": "Record of Lodoss War-Deedlit in Wonder Labyrinth-" - }, - { - "executables": [{"is_launcher": false, "name": "star wars starfighter/starfighter.exe", "os": "win32"}], - "hook": true, - "id": "1124359509255663698", - "name": "STAR WARS\u2122 Starfighter\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "desktopplus/desktopplus.exe", "os": "win32"}], - "hook": true, - "id": "1124359510996308088", - "name": "Desktop+" - }, - { - "executables": [{"is_launcher": false, "name": "nba2k15/nba2k15.exe", "os": "win32"}], - "hook": true, - "id": "1124359512703381534", - "name": "NBA 2K15" - }, - { - "executables": [{"is_launcher": false, "name": "deluxe/defendersquest.exe", "os": "win32"}], - "hook": true, - "id": "1124359514460803233", - "name": "Defender's Quest: Valley of the Forgotten" - }, - { - "executables": [{"is_launcher": false, "name": "win64/projectx-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359516088184982", - "name": "SCP : Secret Files" - }, - { - "executables": [{"is_launcher": false, "name": "win64/remothered-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359517728161902", - "name": "Remothered: Tormented Fathers" - }, - { - "executables": [{"is_launcher": false, "name": "boreal blade/borealblade_64bit.exe", "os": "win32"}], - "hook": true, - "id": "1124359519619788810", - "name": "Boreal Blade" - }, - { - "executables": [{"is_launcher": false, "name": "win64/supralandsiu-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359521536593980", - "name": "Supraland Six Inches Under" - }, - { - "executables": [{"is_launcher": false, "name": "super recoilfight/super recoilfight.exe", "os": "win32"}], - "hook": true, - "id": "1124359523482742824", - "name": "SUPER RECOILFIGHT" - }, - { - "executables": [{"is_launcher": false, "name": "incremental epic hero/ieh.exe", "os": "win32"}], - "hook": true, - "id": "1124359525022056568", - "name": "Incremental Epic Hero" - }, - { - "executables": [{"is_launcher": false, "name": "shinobi warfare/shinobi warfare.exe", "os": "win32"}], - "hook": true, - "id": "1124359526662033510", - "name": "Shinobi Warfare" - }, - { - "executables": [{"is_launcher": false, "name": "the sapling/the_sapling.exe", "os": "win32"}], - "hook": true, - "id": "1124359528352329828", - "name": "The Sapling" - }, - { - "executables": [{"is_launcher": false, "name": "model builder/model builder.exe", "os": "win32"}], - "hook": true, - "id": "1124359530088775710", - "name": "Model Builder" - }, - { - "executables": [{"is_launcher": false, "name": "fruity smoothie/fruitysmoothie.exe", "os": "win32"}], - "hook": true, - "id": "1124359531699392663", - "name": "Fruity Smoothie" - }, - { - "executables": [ - {"is_launcher": false, "name": "make your kingdom prologue/make your kingdom.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359533595209818", - "name": "Make Your Kingdom: Prologue" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the backrooms 1998 - found footage backroom survival horror game/thebackrooms1998.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359535277129749", - "name": "The Backrooms 1998 - Found Footage Backroom Survival Horror Game" - }, - { - "executables": [{"is_launcher": false, "name": "win64/snmas-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359536820637696", - "name": "Swords 'n Magic and Stuff" - }, - { - "executables": [{"is_launcher": false, "name": "mushroom wars/mushroomwars.exe", "os": "win32"}], - "hook": true, - "id": "1124359538590625832", - "name": "Mushroom Wars" - }, - { - "executables": [{"is_launcher": false, "name": "hiveswap act 2/hiveswap-act2.exe", "os": "win32"}], - "hook": true, - "id": "1124359540259966986", - "name": "HIVESWAP: ACT 2" - }, - { - "executables": [{"is_launcher": false, "name": "bladed/chopghost.exe", "os": "win32"}], - "hook": true, - "id": "1124359541849604106", - "name": "Bladed Fury" - }, - { - "executables": [{"is_launcher": false, "name": "windlands 2/windlands2.exe", "os": "win32"}], - "hook": true, - "id": "1124359543405686906", - "name": "Windlands 2" - }, - { - "executables": [{"is_launcher": false, "name": "space travel idle/spacetravelidle.exe", "os": "win32"}], - "hook": true, - "id": "1124359544810786827", - "name": "Space Travel Idle" - }, - { - "executables": [{"is_launcher": false, "name": "win64/metalheadsgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359546333311096", - "name": "Metal Heads - Alpha Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "i just want to be single!! demo/ijwtbs_demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359549114138785", - "name": "I Just Want to be Single!! Demo" - }, - { - "executables": [{"is_launcher": false, "name": "desktop ricardo/desktopricardo.exe", "os": "win32"}], - "hook": true, - "id": "1124359551416815707", - "name": "Desktop D\u0430nce" - }, - { - "executables": [{"is_launcher": false, "name": "exocolonist/exocolonist.exe", "os": "win32"}], - "hook": true, - "id": "1124359554919051355", - "name": "I Was a Teenage Exocolonist" - }, - { - "executables": [{"is_launcher": false, "name": "push battle/pushbattle.exe", "os": "win32"}], - "hook": true, - "id": "1124359556462563389", - "name": "Push Battle" - }, - { - "executables": [ - {"is_launcher": false, "name": "higurashi 03 - tatarigoroshi/higurashiep03.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359558203191376", - "name": "Higurashi When They Cry Hou - Ch.3 Tatarigoroshi" - }, - { - "executables": [{"is_launcher": false, "name": "rez infinite/rez-infinite.exe", "os": "win32"}], - "hook": true, - "id": "1124359559952224336", - "name": "Rez Infinite" - }, - { - "executables": [{"is_launcher": false, "name": "win64/laserlab-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359561512501360", - "name": "LASER LAB" - }, - { - "executables": [{"is_launcher": false, "name": "american conquest - fight back/dmcr.exe", "os": "win32"}], - "hook": true, - "id": "1124359563253141574", - "name": "American Conquest - Fight Back" - }, - { - "executables": [{"is_launcher": false, "name": "win_x86/trucks_n_trailers.exe", "os": "win32"}], - "hook": true, - "id": "1124359567262892092", - "name": "Trucks & Trailers" - }, - { - "executables": [{"is_launcher": false, "name": "erophone/erophone.exe", "os": "win32"}], - "hook": true, - "id": "1124359570391838720", - "name": "EroPhone" - }, - { - "executables": [{"is_launcher": false, "name": "stash/stash.exe", "os": "win32"}], - "hook": true, - "id": "1124359571926958080", - "name": "Stash" - }, - { - "executables": [{"is_launcher": false, "name": "shootinghurts/shooting hurts.exe", "os": "win32"}], - "hook": true, - "id": "1124359573541761044", - "name": "Shooting Hurts" - }, - { - "executables": [{"is_launcher": false, "name": "armor of heroes/armorofheroes.exe", "os": "win32"}], - "hook": true, - "id": "1124359575164960909", - "name": "Armor Of Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "savantascent/savant_ascent.exe", "os": "win32"}], - "hook": true, - "id": "1124359576637157446", - "name": "Savant - Ascent" - }, - { - "executables": [{"is_launcher": false, "name": "crash drive 2/crash drive 2.exe", "os": "win32"}], - "hook": true, - "id": "1124359578549768322", - "name": "Crash Drive 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/crashandrun-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359580370092212", - "name": "Crash And Run" - }, - { - "executables": [{"is_launcher": false, "name": "flesh water/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124359582098149467", - "name": "Flesh Water" - }, - { - "executables": [{"is_launcher": false, "name": "armyofruin/armyofruin.exe", "os": "win32"}], - "hook": true, - "id": "1124359584094634104", - "name": "Army of Ruin" - }, - { - "executables": [{"is_launcher": false, "name": "35mm/35mm.exe", "os": "win32"}], - "hook": true, - "id": "1124359585780740226", - "name": "35MM" - }, - { - "executables": [ - {"is_launcher": false, "name": "new scuffed bhop simulation 2026 goty edition/bhop2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359587387166770", - "name": "*NEW* SCUFFED BHOP SIMULATION 2026 GOTY EDITION" - }, - { - "executables": [{"is_launcher": false, "name": "win64/homesweethome2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359588951638097", - "name": "Home Sweet Home EP2" - }, - { - "executables": [ - {"is_launcher": false, "name": "trendpoker 3d free online poker/trendpoker.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359590994268261", - "name": "Trendpoker 3D: Free Online Poker" - }, - { - "executables": [{"is_launcher": false, "name": "dead cide club/dcc_be.exe", "os": "win32"}], - "hook": true, - "id": "1124359592655204392", - "name": "DEAD CIDE CLUB" - }, - { - "executables": [{"is_launcher": false, "name": "dynasty warriors 7 dx/sm6en.exe", "os": "win32"}], - "hook": true, - "id": "1124359594525868103", - "name": "DYNASTY WARRIORS 7: Xtreme Legends Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "idle space raider/isr.exe", "os": "win32"}], - "hook": true, - "id": "1124359596144865390", - "name": "Idle Space Raider" - }, - { - "executables": [{"is_launcher": false, "name": "win64/illfloor.exe", "os": "win32"}], - "hook": true, - "id": "1124359597562548405", - "name": "Illwinter's Floorplan Generator" - }, - { - "executables": [{"is_launcher": false, "name": "darkside/kbdarkside.exe", "os": "win32"}], - "hook": true, - "id": "1124359599345123458", - "name": "King's Bounty: Dark Side" - }, - { - "executables": [{"is_launcher": false, "name": "bin/acrofs_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124359600829902909", - "name": "Acro FS" - }, - { - "executables": [{"is_launcher": false, "name": "ever forward prologue/everforward.exe", "os": "win32"}], - "hook": true, - "id": "1124359602406965308", - "name": "Ever Forward Prologue" - }, - { - "executables": [ - {"is_launcher": false, "name": "bears, vodka, stalingrad!/bears, vodka, stalingrad.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359603967242352", - "name": "BEAR, VODKA, STALINGRAD!" - }, - { - "executables": [{"is_launcher": false, "name": "canvas the gallery game/canvasthegallery.exe", "os": "win32"}], - "hook": true, - "id": "1124359604445401200", - "name": "Canvas The Gallery" - }, - { - "executables": [{"is_launcher": false, "name": "bastard bonds/bb.exe", "os": "win32"}], - "hook": true, - "id": "1124359606320246834", - "name": "Bastard Bonds" - }, - { - "executables": [{"is_launcher": false, "name": "sam and max episode 1/sammax101.exe", "os": "win32"}], - "hook": true, - "id": "1124359607792455810", - "name": "Sam & Max 101: Culture Shock" - }, - { - "executables": [{"is_launcher": false, "name": "retromaze/retro_maze.exe", "os": "win32"}], - "hook": true, - "id": "1124359609281429584", - "name": "RetroMaze" - }, - { - "executables": [{"is_launcher": false, "name": "fayburrow/fayburrow.exe", "os": "win32"}], - "hook": true, - "id": "1124359613043724328", - "name": "Fayburrow" - }, - { - "executables": [{"is_launcher": false, "name": "curious expedition 2/ce2.exe", "os": "win32"}], - "hook": true, - "id": "1124359615921008680", - "name": "Curious Expedition 2" - }, - { - "executables": [{"is_launcher": false, "name": "starship evo/starship evo.exe", "os": "win32"}], - "hook": true, - "id": "1124359617409994832", - "name": "Starship EVO" - }, - { - "executables": [{"is_launcher": false, "name": "final exam/final_exam.exe", "os": "win32"}], - "hook": true, - "id": "1124359619138039858", - "name": "Final Exam" - }, - { - "executables": [{"is_launcher": false, "name": "yumenikki -dream diary-/yumenikki.exe", "os": "win32"}], - "hook": true, - "id": "1124359620673163344", - "name": "YUMENIKKI -DREAM DIARY-" - }, - { - "executables": [{"is_launcher": false, "name": "the song of saya/saya_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124359622548009012", - "name": "The Song of Saya" - }, - { - "executables": [{"is_launcher": false, "name": "fluffy horde/fluffyhorde.exe", "os": "win32"}], - "hook": true, - "id": "1124359624770998312", - "name": "Fluffy Horde" - }, - { - "executables": [{"is_launcher": false, "name": "remnant records/remnant records.exe", "os": "win32"}], - "hook": true, - "id": "1124359626209640558", - "name": "Remnant Records" - }, - { - "executables": [{"is_launcher": false, "name": "darwinia/darwinia.exe", "os": "win32"}], - "hook": true, - "id": "1124359627899949106", - "name": "Darwinia" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "rukimins disappointing adventure/rukimin's disappointing adventure!.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359629451837560", - "name": "RUKIMIN's Disappointing Adventure!" - }, - { - "executables": [{"is_launcher": false, "name": "broken reality/brokenreality.exe", "os": "win32"}], - "hook": true, - "id": "1124359630995345438", - "name": "Broken Reality" - }, - { - "executables": [{"is_launcher": false, "name": "just king demo/king.exe", "os": "win32"}], - "hook": true, - "id": "1124359632639504504", - "name": "Just King Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/luto-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359634061381732", - "name": "Luto Demo" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "atelier sophie the alchemist of the mysterious book/a17config.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359635596488805", - "name": "Atelier Sophie: The Alchemist of the Mysterious Book" - }, - { - "executables": [{"is_launcher": false, "name": "bin/application.exe", "os": "win32"}], - "hook": true, - "id": "1124359637219692634", - "name": "Death end re;Quest" - }, - { - "executables": [{"is_launcher": false, "name": "disc room/disc room.exe", "os": "win32"}], - "hook": true, - "id": "1124359638956130426", - "name": "Disc Room" - }, - { - "executables": [{"is_launcher": false, "name": "balancity/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124359640415744070", - "name": "BalanCity" - }, - { - "executables": [{"is_launcher": false, "name": "survivalist/survivalist.exe", "os": "win32"}], - "hook": true, - "id": "1124359642097664121", - "name": "Survivalist" - }, - { - "executables": [{"is_launcher": false, "name": "massive chalice/mc.exe", "os": "win32"}], - "hook": true, - "id": "1124359643636969564", - "name": "MASSIVE CHALICE" - }, - { - "executables": [{"is_launcher": false, "name": "rivalry/rivalry.exe", "os": "win32"}], - "hook": true, - "id": "1124359645276950598", - "name": "Rivalry" - }, - { - "executables": [{"is_launcher": false, "name": "endless zone/endlesszone.exe", "os": "win32"}], - "hook": true, - "id": "1124359647160185074", - "name": "Endless Zone" - }, - { - "executables": [{"is_launcher": false, "name": "bokura_win/bokura.exe", "os": "win32"}], - "hook": true, - "id": "1124359648619810957", - "name": "\u9055\u3046\u51ac\u306e\u307c\u304f\u3089" - }, - { - "executables": [{"is_launcher": false, "name": "rogue genesia demo/rogue genesia.exe", "os": "win32"}], - "hook": true, - "id": "1124359650087809074", - "name": "Rogue : Genesia Demo" - }, - { - "executables": [{"is_launcher": false, "name": "valnir rok/valnir rok.exe", "os": "win32"}], - "hook": true, - "id": "1124359651488714862", - "name": "Valnir Rok" - }, - { - "executables": [{"is_launcher": false, "name": "kandidatos kart/kandidatos kart.exe", "os": "win32"}], - "hook": true, - "id": "1124359653254508594", - "name": "Kandidatos Kart" - }, - { - "executables": [{"is_launcher": false, "name": "classroom aquatic demo/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359654617665556", - "name": "Classroom Aquatic Demo" - }, - { - "executables": [{"is_launcher": false, "name": "samurai shampoo/samurai shampoo.exe", "os": "win32"}], - "hook": true, - "id": "1124359656119222394", - "name": "Samurai Shampoo" - }, - { - "executables": [{"is_launcher": false, "name": "bloodwash/bloodwash.exe", "os": "win32"}], - "hook": true, - "id": "1124359657763393619", - "name": "Bloodwash" - }, - { - "executables": [{"is_launcher": false, "name": "mage and monsters/mageandmonsters.exe", "os": "win32"}], - "hook": true, - "id": "1124359659441111133", - "name": "Mage and Monsters" - }, - { - "executables": [{"is_launcher": false, "name": "win64/valhallahills-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359661131399268", - "name": "Valhalla Hills" - }, - { - "executables": [{"is_launcher": false, "name": "weed shop 2/weed shop 2.exe", "os": "win32"}], - "hook": true, - "id": "1124359663094345790", - "name": "Weed Shop 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/draconia-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359664704962560", - "name": "Draconia" - }, - { - "executables": [ - {"is_launcher": false, "name": "agatha christie the abc murders/the abc murders.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359666433020095", - "name": "Agatha Christie - The ABC Murders" - }, - { - "executables": [{"is_launcher": false, "name": "warlock - master of the arcane/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359668005879921", - "name": "Warlock - Master of the Arcane" - }, - { - "executables": [{"is_launcher": false, "name": "lost epic/lostepic.exe", "os": "win32"}], - "hook": true, - "id": "1124359669683605586", - "name": "LOST EPIC" - }, - { - "executables": [{"is_launcher": false, "name": "x64/ff9.exe", "os": "win32"}], - "hook": true, - "id": "1124359671302598796", - "name": "FINAL FANTASY IX" - }, - { - "executables": [{"is_launcher": false, "name": "glass/glass.exe", "os": "win32"}], - "hook": true, - "id": "1124359673135517736", - "name": "\uc720\ub9ac\uc138\uacc4" - }, - { - "executables": [{"is_launcher": false, "name": "desperados iii demo/desperados iii.exe", "os": "win32"}], - "hook": true, - "id": "1124359674876145724", - "name": "Desperados III Demo" - }, - { - "executables": [{"is_launcher": false, "name": "forgotton anne/forgottonanne.exe", "os": "win32"}], - "hook": true, - "id": "1124359676306411583", - "name": "Forgotton Anne" - }, - { - "executables": [{"is_launcher": false, "name": "furry feet/furryfeet.exe", "os": "win32"}], - "hook": true, - "id": "1124359678000906301", - "name": "Furry Feet" - }, - { - "executables": [{"is_launcher": false, "name": "she sees red/she sees red.exe", "os": "win32"}], - "hook": true, - "id": "1124359679968038932", - "name": "She Sees Red" - }, - { - "executables": [{"is_launcher": false, "name": "project lazarus/project lazarus.exe", "os": "win32"}], - "hook": true, - "id": "1124359681515733123", - "name": "Project Lazarus" - }, - { - "executables": [{"is_launcher": false, "name": "win64/nori-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359682979541012", - "name": "Ruff Night At The Gallery" - }, - { - "executables": [ - {"is_launcher": false, "name": "train station renovation demo/trainstationrenovation.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359684476911646", - "name": "Train Station Renovation Demo" - }, - { - "executables": [{"is_launcher": false, "name": "isle of arrows/isle of arrows.exe", "os": "win32"}], - "hook": true, - "id": "1124359685877805116", - "name": "Isle of Arrows" - }, - { - "executables": [ - {"is_launcher": false, "name": "need for speed unbound/needforspeedunbound.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359687656194159", - "name": "Need for Speed\u2122 Unbound" - }, - { - "executables": [{"is_launcher": false, "name": "junkyard truck/junkyardtruck.exe", "os": "win32"}], - "hook": true, - "id": "1124359689505878066", - "name": "Junkyard Truck" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/sakurasuccubus.exe", "os": "win32"}], - "hook": true, - "id": "1124359691246518383", - "name": "Sakura Succubus" - }, - { - "executables": [{"is_launcher": false, "name": "margonemcom/margonem.exe", "os": "win32"}], - "hook": true, - "id": "1124359692945207316", - "name": "Margonem" - }, - { - "executables": [{"is_launcher": false, "name": "zelter/zelter.exe", "os": "win32"}], - "hook": true, - "id": "1124359694606155796", - "name": "Zelter" - }, - { - "executables": [{"is_launcher": false, "name": "cattle and crops/cattleandcrops.exe", "os": "win32"}], - "hook": true, - "id": "1124359696233549934", - "name": "Professional Farmer: Cattle and Crops" - }, - { - "executables": [ - {"is_launcher": false, "name": "break arcade games out/break arcade games out.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359698162925638", - "name": "Break Arcade Games Out" - }, - { - "executables": [{"is_launcher": false, "name": "win32/betrayer.exe", "os": "win32"}], - "hook": true, - "id": "1124359699773542450", - "name": "Betrayer" - }, - { - "executables": [{"is_launcher": false, "name": "sim racing telemetry/simracingtelemetry.exe", "os": "win32"}], - "hook": true, - "id": "1124359701405122610", - "name": "Sim Racing Telemetry" - }, - { - "executables": [{"is_launcher": false, "name": "x64/as2_cw.exe", "os": "win32"}], - "hook": true, - "id": "1124359703170928740", - "name": "Men of War: Assault Squad 2 - Cold War" - }, - { - "executables": [{"is_launcher": false, "name": "demolish & build company/demolish.exe", "os": "win32"}], - "hook": true, - "id": "1124359705129664532", - "name": "Demolish & Build 2017" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "virtual aquarium - overlay desktop game/virtual aquarium.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359706731884664", - "name": "Virtual Aquarium - Overlay Desktop Game" - }, - { - "executables": [{"is_launcher": false, "name": "city of gangsters/cog.exe", "os": "win32"}], - "hook": true, - "id": "1124359708208283748", - "name": "City of Gangsters" - }, - { - "executables": [{"is_launcher": false, "name": "patrick's parabox demo/patrick's parabox.exe", "os": "win32"}], - "hook": true, - "id": "1124359709886009444", - "name": "Patrick's Parabox Demo" - }, - { - "executables": [{"is_launcher": false, "name": "i am future demo/i am future demo.exe", "os": "win32"}], - "hook": true, - "id": "1124359711312068608", - "name": "I Am Future Demo" - }, - { - "executables": [{"is_launcher": false, "name": "fallout tactics/bos_hr.exe", "os": "win32"}], - "hook": true, - "id": "1124359712884928613", - "name": "Fallout Tactics" - }, - { - "executables": [{"is_launcher": false, "name": "bravery and greed/bravery and greed.exe", "os": "win32"}], - "hook": true, - "id": "1124359714784956436", - "name": "Bravery and Greed" - }, - { - "executables": [{"is_launcher": false, "name": "intravenous/intravenous.exe", "os": "win32"}], - "hook": true, - "id": "1124359716299096174", - "name": "Intravenous" - }, - { - "executables": [{"is_launcher": false, "name": "win64/survivalhorror-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359717972627466", - "name": "Survival Horror #8,436" - }, - { - "executables": [{"is_launcher": false, "name": "cssecretsanta/cave story's secret santa.exe", "os": "win32"}], - "hook": true, - "id": "1124359719633563678", - "name": "Cave Story's Secret Santa" - }, - { - "executables": [{"is_launcher": false, "name": "hellseed_demo/hellseed_demo.exe", "os": "win32"}], - "hook": true, - "id": "1124359721462288584", - "name": "HELLSEED Demo" - }, - { - "executables": [{"is_launcher": false, "name": "aquatico demo/aquatico.exe", "os": "win32"}], - "hook": true, - "id": "1124359723030949958", - "name": "Aquatico Demo" - }, - { - "executables": [{"is_launcher": false, "name": "eros fantasy/eros fantasy.exe", "os": "win32"}], - "hook": true, - "id": "1124359724645748756", - "name": "Eros Fantasy" - }, - { - "executables": [{"is_launcher": false, "name": "jamestown/jamestown.exe", "os": "win32"}], - "hook": true, - "id": "1124359726633865246", - "name": "Jamestown" - }, - { - "executables": [{"is_launcher": false, "name": "stick arena/stickarena.exe", "os": "win32"}], - "hook": true, - "id": "1124359728227696711", - "name": "Stick Arena" - }, - { - "executables": [{"is_launcher": false, "name": "disneyland adventures/disney.exe", "os": "win32"}], - "hook": true, - "id": "1124359730106740746", - "name": "Disneyland Adventures" - }, - { - "executables": [ - {"is_launcher": false, "name": "the pedestrian demo/thepedestrian-win-demo-64.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359731713167530", - "name": "The Pedestrian Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/horror_game-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359733416050870", - "name": "Arruyo" - }, - { - "executables": [{"is_launcher": false, "name": "stardeus/stardeus.exe", "os": "win32"}], - "hook": true, - "id": "1124359734905024683", - "name": "Stardeus" - }, - { - "executables": [{"is_launcher": false, "name": "the pit/thepit.exe", "os": "win32"}], - "hook": true, - "id": "1124359736536612864", - "name": "Sword of the Stars: The Pit" - }, - { - "executables": [{"is_launcher": false, "name": "shady part of me/spom.exe", "os": "win32"}], - "hook": true, - "id": "1124359738352742502", - "name": "Shady Part of Me" - }, - { - "executables": [{"is_launcher": false, "name": "wilson chronicles/hl2.exe", "os": "win32"}], - "hook": true, - "id": "1124359740957409321", - "name": "Wilson Chronicles - Beta" - }, - { - "executables": [ - {"is_launcher": false, "name": "crypto mining simulator/crypto mining simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359742597386431", - "name": "Crypto Mining Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "disgaea 4 complete+/disgaea4pc.exe", "os": "win32"}], - "hook": true, - "id": "1124359744606449814", - "name": "Disgaea 4 Complete+" - }, - { - "executables": [{"is_launcher": false, "name": "rytmik ultimate/ru.exe", "os": "win32"}], - "hook": true, - "id": "1124359746615529632", - "name": "Rytmik Ultimate" - }, - { - "executables": [{"is_launcher": false, "name": "john wick hex/john wick hex.exe", "os": "win32"}], - "hook": true, - "id": "1124359748196773938", - "name": "John Wick Hex" - }, - { - "executables": [{"is_launcher": false, "name": "win64/survivalgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359749849333874", - "name": "Outpost Zero" - }, - { - "executables": [{"is_launcher": false, "name": "old school musical/osm.exe", "os": "win32"}], - "hook": true, - "id": "1124359751808077884", - "name": "Old School Musical" - }, - { - "executables": [{"is_launcher": false, "name": "joyspring/joyspring.exe", "os": "win32"}], - "hook": true, - "id": "1124359753762615376", - "name": "Joyspring" - }, - { - "executables": [{"is_launcher": false, "name": "magic 2015/dotp_d15.exe", "os": "win32"}], - "hook": true, - "id": "1124359755532615843", - "name": "Magic 2015" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/summernightmare.exe", "os": "win32"}], - "hook": true, - "id": "1124359756983840798", - "name": "Summer Nightmare" - }, - { - "executables": [{"is_launcher": false, "name": "holy shit/holy shit.exe", "os": "win32"}], - "hook": true, - "id": "1124359758556708915", - "name": "Holy Shit" - }, - { - "executables": [{"is_launcher": false, "name": "shapez.io demo/shapezio.exe", "os": "win32"}], - "hook": true, - "id": "1124359760326709418", - "name": "shapez - Demo" - }, - { - "executables": [{"is_launcher": false, "name": "battle cry of freedom demo/bcof.exe", "os": "win32"}], - "hook": true, - "id": "1124359761886986240", - "name": "Battle Cry of Freedom Demo" - }, - { - "executables": [{"is_launcher": false, "name": "braveland heroes/braveland_heroes.exe", "os": "win32"}], - "hook": true, - "id": "1124359763468234802", - "name": "Braveland Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "common/one unit whole blood/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124359765414400000", - "name": "Blood: One Unit Whole Blood" - }, - { - "executables": [{"is_launcher": false, "name": "win32/dystopia.exe", "os": "win32"}], - "hook": true, - "id": "1124359767150837781", - "name": "Dystopia" - }, - { - "executables": [{"is_launcher": false, "name": "tint 'n ink/tint n ink.exe", "os": "win32"}], - "hook": true, - "id": "1124359768782417920", - "name": "Tint 'n Ink" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dream_golf_vr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359770447560854", - "name": "Dream Golf VR" - }, - { - "executables": [{"is_launcher": false, "name": "scp observer/scp observer.exe", "os": "win32"}], - "hook": true, - "id": "1124359771991068802", - "name": "SCP: Observer" - }, - { - "executables": [{"is_launcher": false, "name": "card shark demo/card_shark.exe", "os": "win32"}], - "hook": true, - "id": "1124359773727502447", - "name": "Card Shark Demo" - }, - { - "executables": [{"is_launcher": false, "name": "zuma deluxe/popcapgame1.exe", "os": "win32"}], - "hook": true, - "id": "1124359775442981057", - "name": "Zuma Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "rodina/rodina_steam.exe", "os": "win32"}], - "hook": true, - "id": "1124359777032617994", - "name": "Rodina" - }, - { - "executables": [{"is_launcher": false, "name": "rento fortune/rento.exe", "os": "win32"}], - "hook": true, - "id": "1124359778701946901", - "name": "Rento Fortune - Multiplayer Board Game" - }, - { - "executables": [{"is_launcher": false, "name": "tunnel divers/tunneldivers.exe", "os": "win32"}], - "hook": true, - "id": "1124359780241260697", - "name": "TUNNEL DIVERS" - }, - { - "executables": [{"is_launcher": false, "name": "disney epic mickey 2/dem2.exe", "os": "win32"}], - "hook": true, - "id": "1124359781973499944", - "name": "Disney Epic Mickey 2" - }, - { - "executables": [{"is_launcher": false, "name": "dominatrix simulator/dominatrix simulator.exe", "os": "win32"}], - "hook": true, - "id": "1124359783714144316", - "name": "Dominatrix Simulator: Threshold" - }, - { - "executables": [{"is_launcher": false, "name": "dread templar/dreadtemplar.exe", "os": "win32"}], - "hook": true, - "id": "1124359785463173250", - "name": "Dread Templar" - }, - { - "executables": [ - {"is_launcher": false, "name": "delicious! pretty girls mahjong solitaire/deliciouspgms.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359786939559966", - "name": "Delicious! Pretty Girls Mahjong Solitaire" - }, - { - "executables": [{"is_launcher": false, "name": "avicii - invector/avicii invector.exe", "os": "win32"}], - "hook": true, - "id": "1124359788659232929", - "name": "AVICII Invector" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "tofas sahin online car driving/tofas sahin online car driving.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359790131429526", - "name": "Tofas Sahin: Online Car Driving" - }, - { - "executables": [{"is_launcher": false, "name": "the last door ce/the last door ce.exe", "os": "win32"}], - "hook": true, - "id": "1124359791729463296", - "name": "The Last Door - Collector's Edition" - }, - { - "executables": [{"is_launcher": false, "name": "obscure2/obscure2.exe", "os": "win32"}], - "hook": true, - "id": "1124359793352655000", - "name": "Obscure 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "king's bounty - warriors of the north/kbwotn.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359795063926855", - "name": "King's Bounty: Warriors of the North" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pipeline-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359796888457378", - "name": "Turbo Tunnel" - }, - { - "executables": [{"is_launcher": false, "name": "mewnbase/mewnbase.exe", "os": "win32"}], - "hook": true, - "id": "1124359798557782128", - "name": "MewnBase" - }, - { - "executables": [ - {"is_launcher": false, "name": "shogun showdown prologue/shogunshowdownprologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359800013213758", - "name": "Shogun Showdown: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "imperial glory/imperialglory.exe", "os": "win32"}], - "hook": true, - "id": "1124359801707704378", - "name": "Imperial Glory" - }, - { - "executables": [{"is_launcher": false, "name": "win64/overdrift-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359803377045564", - "name": "OverDrift Festival" - }, - { - "executables": [{"is_launcher": false, "name": "the ramp/the ramp.exe", "os": "win32"}], - "hook": true, - "id": "1124359805172199484", - "name": "The Ramp" - }, - { - "executables": [ - {"is_launcher": false, "name": "epic character generator/epiccharactergenerator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359806807982100", - "name": "ePic Character Generator" - }, - { - "executables": [ - {"is_launcher": false, "name": "ultimate fishing simulator vr/ultimatefishing_steamvr.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359808343101507", - "name": "Ultimate Fishing Simulator VR" - }, - { - "executables": [{"is_launcher": false, "name": "muv-luv/muvluv16.exe", "os": "win32"}], - "hook": true, - "id": "1124359809886601317", - "name": "Muv-Luv" - }, - { - "executables": [{"is_launcher": false, "name": "themonsterinside/the monster inside.exe", "os": "win32"}], - "hook": true, - "id": "1124359811778236436", - "name": "The Monster Inside" - }, - { - "executables": [{"is_launcher": false, "name": "pineapple/metal slug xx.exe", "os": "win32"}], - "hook": true, - "id": "1124359813296570448", - "name": "METAL SLUG XX" - }, - { - "executables": [{"is_launcher": false, "name": "astlibra/astlibra.exe", "os": "win32"}], - "hook": true, - "id": "1124359814772961351", - "name": "ASTLIBRA \uff5e\u751f\u304d\u305f\u8a3c\uff5e Revision" - }, - { - "executables": [{"is_launcher": false, "name": "hanz puppetguns/hanz.exe", "os": "win32"}], - "hook": true, - "id": "1124359816597487776", - "name": "Hanz Puppetguns" - }, - { - "executables": [{"is_launcher": false, "name": "wrc 6/wrc6.exe", "os": "win32"}], - "hook": true, - "id": "1124359818505900196", - "name": "WRC 6" - }, - { - "executables": [{"is_launcher": false, "name": "moonbreaker/moonbreaker.exe", "os": "win32"}], - "hook": true, - "id": "1124359819931959447", - "name": "Moonbreaker" - }, - { - "executables": [{"is_launcher": false, "name": "buried stars/buriedstars.exe", "os": "win32"}], - "hook": true, - "id": "1124359821467070524", - "name": "\ubca0\ub9ac\ub4dc \uc2a4\ud0c0\uc988" - }, - { - "executables": [{"is_launcher": false, "name": "game dev studio/game_dev_studio.exe", "os": "win32"}], - "hook": true, - "id": "1124359823023161344", - "name": "Game Dev Studio" - }, - { - "executables": [{"is_launcher": false, "name": "win64/shinessgame.exe", "os": "win32"}], - "hook": true, - "id": "1124359824600223875", - "name": "Shiness: The Lightning Kingdom" - }, - { - "executables": [{"is_launcher": false, "name": "grand ages rome/rome.exe", "os": "win32"}], - "hook": true, - "id": "1124359826575736842", - "name": "Grand Ages: Rome" - }, - { - "executables": [{"is_launcher": false, "name": "unsighted/unsighted.exe", "os": "win32"}], - "hook": true, - "id": "1124359828534472724", - "name": "UNSIGHTED" - }, - { - "executables": [{"is_launcher": false, "name": "sabbat of the witch/sabbatofthewitch.exe", "os": "win32"}], - "hook": true, - "id": "1124359830065397810", - "name": "Sabbat of the Witch" - }, - { - "executables": [{"is_launcher": false, "name": "win64/blackthornprodjam-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359831604703292", - "name": "Crow Story" - }, - { - "executables": [{"is_launcher": false, "name": "pool panic/poolpanic.exe", "os": "win32"}], - "hook": true, - "id": "1124359833202737223", - "name": "Pool Panic" - }, - { - "executables": [{"is_launcher": false, "name": "kuf crusader/kuf2main.exe", "os": "win32"}], - "hook": true, - "id": "1124359834687516723", - "name": "Kingdom Under Fire: The Crusaders" - }, - { - "executables": [{"is_launcher": false, "name": "fullmojorampage/fullmojo.exe", "os": "win32"}], - "hook": true, - "id": "1124359835278921798", - "name": "Full Mojo Rampage" - }, - { - "executables": [{"is_launcher": false, "name": "cultures northland/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359836910501998", - "name": "Cultures - Northland" - }, - { - "executables": [{"is_launcher": false, "name": "tree simulator 2022/tree simulator 2022.exe", "os": "win32"}], - "hook": true, - "id": "1124359838386892830", - "name": "Tree Simulator 2022" - }, - { - "executables": [{"is_launcher": false, "name": "sayno!more/snm.exe", "os": "win32"}], - "hook": true, - "id": "1124359840253362276", - "name": "Say No! More" - }, - { - "executables": [{"is_launcher": false, "name": "my lovely daughter/my lovely daughter.exe", "os": "win32"}], - "hook": true, - "id": "1124359841977217184", - "name": "My Lovely Daughter" - }, - { - "executables": [{"is_launcher": false, "name": "cat in the box/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359843453620244", - "name": "Cat in the Box" - }, - { - "executables": [{"is_launcher": false, "name": "ai the somnium files/ai_thesomniumfiles.exe", "os": "win32"}], - "hook": true, - "id": "1124359845009702932", - "name": "AI: The Somnium Files" - }, - { - "executables": [{"is_launcher": false, "name": "blood bowl legendary edition/bb_le.exe", "os": "win32"}], - "hook": true, - "id": "1124359846569979954", - "name": "Blood Bowl: Legendary Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "planes, bullets and vodka/planes, bullets and vodka.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359847882805288", - "name": "Planes, Bullets and Vodka" - }, - { - "executables": [{"is_launcher": false, "name": "nehrim/nehriminstallswitch.exe", "os": "win32"}], - "hook": true, - "id": "1124359849212395640", - "name": "Nehrim: At Fate's Edge" - }, - { - "executables": [ - {"is_launcher": false, "name": "sid meier's colonization/dosbox_windows/dosbox.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359850206449664", - "name": "Sid Meier's Colonization (Classic)" - }, - { - "executables": [{"is_launcher": false, "name": "isekai front line/isekai frontline.exe", "os": "win32"}], - "hook": true, - "id": "1124359851728977950", - "name": "ISEKAI FRONTLINE" - }, - { - "executables": [{"is_launcher": false, "name": "hyperdevotion noire/noire.exe", "os": "win32"}], - "hook": true, - "id": "1124359853352177735", - "name": "Hyperdevotion Noire: Goddess Black Heart" - }, - { - "executables": [{"is_launcher": false, "name": "sky rogue/skyrogue.exe", "os": "win32"}], - "hook": true, - "id": "1124359855025701054", - "name": "Sky Rogue" - }, - { - "executables": [{"is_launcher": false, "name": "lust theory season 2/lusttheory2.exe", "os": "win32"}], - "hook": true, - "id": "1124359856636309605", - "name": "Lust Theory Season 2" - }, - { - "executables": [{"is_launcher": false, "name": "dies irae ~amantes amentes~/malie.exe", "os": "win32"}], - "hook": true, - "id": "1124359858204966963", - "name": "Dies irae ~Amantes amentes~" - }, - { - "executables": [{"is_launcher": false, "name": "from space/fromspace.exe", "os": "win32"}], - "hook": true, - "id": "1124359859782041630", - "name": "From Space" - }, - { - "executables": [{"is_launcher": false, "name": "win64/herosjourney-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359861459759124", - "name": "Hero's Journey" - }, - { - "executables": [{"is_launcher": false, "name": "darkswords/darkswords.exe", "os": "win32"}], - "hook": true, - "id": "1124359863099736145", - "name": "Dark Swords" - }, - { - "executables": [{"is_launcher": false, "name": "whatthedub/whatthedub.exe", "os": "win32"}], - "hook": true, - "id": "1124359864823599225", - "name": "What The Dub?!" - }, - { - "executables": [{"is_launcher": false, "name": "pocket bravery demo/bravery.exe", "os": "win32"}], - "hook": true, - "id": "1124359866467758080", - "name": "Pocket Bravery Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sycamore-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359868183232562", - "name": "Sycamore Free" - }, - { - "executables": [{"is_launcher": false, "name": "neverending nightmares/nightmare.exe", "os": "win32"}], - "hook": true, - "id": "1124359869781266532", - "name": "Neverending Nightmares" - }, - { - "executables": [{"is_launcher": false, "name": "go kart run/go kart run!.exe", "os": "win32"}], - "hook": true, - "id": "1124359871349932162", - "name": "Go Kart Run!" - }, - { - "executables": [{"is_launcher": false, "name": "app/glasswire.exe", "os": "win32"}], - "hook": true, - "id": "1124359873187041401", - "name": "GlassWire" - }, - { - "executables": [{"is_launcher": false, "name": "tapsonic bold/bold.exe", "os": "win32"}], - "hook": true, - "id": "1124359874806034472", - "name": "TAPSONIC BOLD" - }, - { - "executables": [{"is_launcher": false, "name": "love wish 2/love wish 2.exe", "os": "win32"}], - "hook": true, - "id": "1124359876106276864", - "name": "Love Wish 2" - }, - { - "executables": [{"is_launcher": false, "name": "eternal quest/eternal quest.exe", "os": "win32"}], - "hook": true, - "id": "1124359877549113424", - "name": "Eternal Quest" - }, - { - "executables": [{"is_launcher": false, "name": "dragonia/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359879298142288", - "name": "Dragonia" - }, - { - "executables": [{"is_launcher": false, "name": "warlords battlecry iii/battlecry iii.exe", "os": "win32"}], - "hook": true, - "id": "1124359881017798726", - "name": "Warlords Battlecry III" - }, - { - "executables": [{"is_launcher": false, "name": "bleed 2/bleed2.exe", "os": "win32"}], - "hook": true, - "id": "1124359882896851014", - "name": "Bleed 2" - }, - { - "executables": [{"is_launcher": false, "name": "tiny heroes 2/tiny heroes 2.exe", "os": "win32"}], - "hook": true, - "id": "1124359884503273585", - "name": "Tiny Heroes 2" - }, - { - "executables": [{"is_launcher": false, "name": "dwarfs/dwarfs.exe", "os": "win32"}], - "hook": true, - "id": "1124359886025797682", - "name": "Dwarfs!?" - }, - { - "executables": [{"is_launcher": false, "name": "bz2r/battlezone2.exe", "os": "win32"}], - "hook": true, - "id": "1124359887426703390", - "name": "Battlezone: Combat Commander" - }, - { - "executables": [{"is_launcher": false, "name": "fim speedway grand prix 2015/fimsgp15.exe", "os": "win32"}], - "hook": true, - "id": "1124359889028919296", - "name": "FIM Speedway Grand Prix 15" - }, - { - "executables": [{"is_launcher": false, "name": "win64/superraftboatvr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359890660511884", - "name": "Super Raft Boat VR" - }, - { - "executables": [{"is_launcher": false, "name": "tower wars/tw.exe", "os": "win32"}], - "hook": true, - "id": "1124359892422111352", - "name": "Tower Wars" - }, - { - "executables": [ - {"is_launcher": false, "name": "midnight fight express/midnightfightexpress.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359894242443295", - "name": "Midnight Fight Express" - }, - { - "executables": [{"is_launcher": false, "name": "roof rage/roofrage.exe", "os": "win32"}], - "hook": true, - "id": "1124359896008249394", - "name": "Roof Rage" - }, - { - "executables": [ - {"is_launcher": false, "name": "interactive horror stories/interactive horror stories.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359897614659665", - "name": "Interactive Horror Stories" - }, - { - "executables": [{"is_launcher": false, "name": "idle monkeylogy/idle monkylogy.exe", "os": "win32"}], - "hook": true, - "id": "1124359899275608146", - "name": "Idle Monkeylogy" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "swords and sandals immortals/swords_and_sandals_immortals.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359900911390910", - "name": "Swords and Sandals Immortals" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mistofthedark.exe", "os": "win32"}], - "hook": true, - "id": "1124359902182260816", - "name": "Mist of the Dark" - }, - { - "executables": [{"is_launcher": false, "name": "tin can/tin can.exe", "os": "win32"}], - "hook": true, - "id": "1124359903872569444", - "name": "Tin Can" - }, - { - "executables": [{"is_launcher": false, "name": "win64/anightinberlin-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359905478979584", - "name": "A Night In Berlin" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "sweet dream succubus - nightmare edition/sweet dream succubus.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359907064430672", - "name": "Sweet Dream Succubus - Nightmare Edition" - }, - { - "executables": [{"is_launcher": false, "name": "house builder demo/housebuilder.exe", "os": "win32"}], - "hook": true, - "id": "1124359908691824691", - "name": "House Builder Demo" - }, - { - "executables": [{"is_launcher": false, "name": "sid meier's starships/starships64.exe", "os": "win32"}], - "hook": true, - "id": "1124359910306627584", - "name": "Sid Meier's Starships" - }, - { - "executables": [{"is_launcher": false, "name": "cossacks european wars/dmcr.exe", "os": "win32"}], - "hook": true, - "id": "1124359911963373568", - "name": "Cossacks: European Wars" - }, - { - "executables": [{"is_launcher": false, "name": "nowhere prophet/nowhereprophet.exe", "os": "win32"}], - "hook": true, - "id": "1124359913439776811", - "name": "Nowhere Prophet" - }, - { - "executables": [{"is_launcher": false, "name": "win64/p8ball-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359915008442498", - "name": "Marble Combat" - }, - { - "executables": [{"is_launcher": false, "name": "win64/echo-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359916816191488", - "name": "ECHO" - }, - { - "executables": [{"is_launcher": false, "name": "neon chrome/neonchrome.exe", "os": "win32"}], - "hook": true, - "id": "1124359918384857128", - "name": "Neon Chrome" - }, - { - "executables": [{"is_launcher": false, "name": "driver parallel lines/driverparallellines.exe", "os": "win32"}], - "hook": true, - "id": "1124359920251318412", - "name": "Driver: Parallel Lines" - }, - { - "executables": [{"is_launcher": false, "name": "trapped with jester/trappedwithjester-32.exe", "os": "win32"}], - "hook": true, - "id": "1124359921996156948", - "name": "Trapped with Jester" - }, - { - "executables": [{"is_launcher": false, "name": "lofi ping pong/pingpong.exe", "os": "win32"}], - "hook": true, - "id": "1124359923589984326", - "name": "Lofi Ping Pong" - }, - { - "executables": [{"is_launcher": false, "name": "croppy boy/croppy.exe", "os": "win32"}], - "hook": true, - "id": "1124359925213184100", - "name": "Croppy Boy" - }, - { - "executables": [ - {"is_launcher": false, "name": "deep space waifu world/deep space waifu world.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359926769274960", - "name": "DEEP SPACE WAIFU: WORLD" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "construction simulator 2 us - pocket edition/consim2uspe.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124359928505712721", - "name": "Construction Simulator 2 US - Pocket Edition" - }, - { - "executables": [{"is_launcher": false, "name": "exoprimal(betatest)/exoprimal_beta.exe", "os": "win32"}], - "hook": true, - "id": "1124359930254733363", - "name": "EXOPRIMAL Open Beta Test" - }, - { - "executables": [{"is_launcher": false, "name": "the house of da vinci 2/thodv2.exe", "os": "win32"}], - "hook": true, - "id": "1124359932012154901", - "name": "The House of Da Vinci 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/evowave-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359933723426816", - "name": "Evo\\Wave" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/wolftails.exe", "os": "win32"}], - "hook": true, - "id": "1124359935266934804", - "name": "Wolf Tails" - }, - { - "executables": [{"is_launcher": false, "name": "breakwatersbeta/breakwaters.exe", "os": "win32"}], - "hook": true, - "id": "1124359936835600404", - "name": "Breakwaters" - }, - { - "executables": [{"is_launcher": false, "name": "remnants of naezith/naezith.exe", "os": "win32"}], - "hook": true, - "id": "1124359938471383202", - "name": "Remnants of Naezith" - }, - { - "executables": [{"is_launcher": false, "name": "racecraft/racecraft.exe", "os": "win32"}], - "hook": true, - "id": "1124359940174262432", - "name": "Racecraft" - }, - { - "executables": [{"is_launcher": false, "name": "wmgplaunch/wmgpmobilegame.exe", "os": "win32"}], - "hook": true, - "id": "1124359941709381782", - "name": "\u5e7b\u5854" - }, - { - "executables": [{"is_launcher": false, "name": "waveshaper/waveshaper.exe", "os": "win32"}], - "hook": true, - "id": "1124359943542296627", - "name": "WAVESHAPER" - }, - { - "executables": [{"is_launcher": false, "name": "doodle date/doodle_date.exe", "os": "win32"}], - "hook": true, - "id": "1124359945136123974", - "name": "Doodle Date" - }, - { - "executables": [{"is_launcher": false, "name": "worbital/worbital.exe", "os": "win32"}], - "hook": true, - "id": "1124359946524446851", - "name": "Worbital" - }, - { - "executables": [{"is_launcher": false, "name": "machiavillain/machiavillain.exe", "os": "win32"}], - "hook": true, - "id": "1124359948143444008", - "name": "MachiaVillain" - }, - { - "executables": [{"is_launcher": false, "name": "windows/godus.exe", "os": "win32"}], - "hook": true, - "id": "1124359950106374307", - "name": "Godus" - }, - { - "executables": [{"is_launcher": false, "name": "let's school homeroom/letsschool.exe", "os": "win32"}], - "hook": true, - "id": "1124359951956070531", - "name": "Let's School Homeroom" - }, - { - "executables": [{"is_launcher": false, "name": "king exit/game.exe", "os": "win32"}], - "hook": true, - "id": "1124359953503764621", - "name": "King Exit" - }, - { - "executables": [{"is_launcher": false, "name": "pilgrims/pilgrims.exe", "os": "win32"}], - "hook": true, - "id": "1124359955261182042", - "name": "Pilgrims" - }, - { - "executables": [{"is_launcher": false, "name": "scrap garden/scrap-garden.exe", "os": "win32"}], - "hook": true, - "id": "1124359956964065440", - "name": "Scrap Garden" - }, - { - "executables": [{"is_launcher": false, "name": "rune factory 4 special/rf4s.exe", "os": "win32"}], - "hook": true, - "id": "1124359958872477717", - "name": "Rune Factory 4 Special" - }, - { - "executables": [{"is_launcher": false, "name": "win64/deadlink-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124359960302731294", - "name": "Deadlink" - }, - { - "executables": [{"is_launcher": false, "name": "tech support error unknown/techsupport.exe", "os": "win32"}], - "hook": true, - "id": "1124359963070955692", - "name": "Tech Support: Error Unknown" - }, - { - "executables": [{"is_launcher": false, "name": "the black watchmen/tbw.exe", "os": "win32"}], - "hook": true, - "id": "1124359965453336698", - "name": "The Black Watchmen" - }, - { - "executables": [ - {"is_launcher": false, "name": "labyrinth of refrain coven of dusk/refrain.exe", "os": "win32"} - ], - "hook": true, - "id": "1124359969119154258", - "name": "Labyrinth of Refrain: Coven of Dusk" - }, - { - "executables": [{"is_launcher": false, "name": "8bithordes/clientg.exe", "os": "win32"}], - "hook": true, - "id": "1124359972256501760", - "name": "8-Bit Hordes" - }, - { - "executables": [{"is_launcher": false, "name": "buoyancy/buoyancy.exe", "os": "win32"}], - "hook": true, - "id": "1124359974009716808", - "name": "Buoyancy" - }, - { - "executables": [{"is_launcher": false, "name": "the house in fata morgana/fata.exe", "os": "win32"}], - "hook": true, - "id": "1124359975712608256", - "name": "The House in Fata Morgana" - }, - { - "executables": [{"is_launcher": false, "name": "dex/dex.exe", "os": "win32"}], - "hook": true, - "id": "1124359977457434704", - "name": "Dex" - }, - { - "executables": [{"is_launcher": false, "name": "unspottable/unspottable.exe", "os": "win32"}], - "hook": true, - "id": "1124359979604922398", - "name": "Unspottable" - }, - { - "executables": [{"is_launcher": false, "name": "speedrun/speed run.exe", "os": "win32"}], - "hook": true, - "id": "1124359981383299082", - "name": "Speedrun" - }, - { - "executables": [{"is_launcher": false, "name": "bin/tacint.exe", "os": "win32"}], - "hook": true, - "id": "1124359983207825448", - "name": "Tactical Intervention" - }, - { - "executables": [{"is_launcher": false, "name": "th18tr/th18.exe", "os": "win32"}], - "hook": true, - "id": "1124359985200124026", - "name": "\u6771\u65b9\u8679\u9f8d\u6d1e \uff5e Unconnected Marketeers. Demo" - }, - { - "executables": [{"is_launcher": false, "name": "battle talent demo/battletalent.exe", "os": "win32"}], - "hook": true, - "id": "1124359987943194704", - "name": "Battle Talent Demo" - }, - { - "executables": [{"is_launcher": false, "name": "crazy taxi/crazy taxi.exe", "os": "win32"}], - "hook": true, - "id": "1124359991634186250", - "name": "Crazy Taxi" - }, - { - "executables": [{"is_launcher": false, "name": "intrusion 2/intrusion2.exe", "os": "win32"}], - "hook": true, - "id": "1124359997728505936", - "name": "Intrusion 2" - }, - { - "executables": [{"is_launcher": false, "name": "cheesegamebuild/cheese game.exe", "os": "win32"}], - "hook": true, - "id": "1124359999255228476", - "name": "Cheese Game" - }, - { - "executables": [{"is_launcher": false, "name": "tcheco in the castle of lucio/tcheco.exe", "os": "win32"}], - "hook": true, - "id": "1124360000932954253", - "name": "Tcheco in the Castle of Lucio" - }, - { - "executables": [ - {"is_launcher": false, "name": "nickelodeon kart racers 2 grand prix/gamesteamdrm.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360004372275310", - "name": "Nickelodeon Kart Racers 2: Grand Prix" - }, - { - "executables": [{"is_launcher": false, "name": "depraved/depraved.exe", "os": "win32"}], - "hook": true, - "id": "1124360006079369256", - "name": "Depraved" - }, - { - "executables": [{"is_launcher": false, "name": "need for drink/needfordrink.exe", "os": "win32"}], - "hook": true, - "id": "1124360007845167186", - "name": "Need For Drink" - }, - { - "executables": [{"is_launcher": false, "name": "win64/valakas_story-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360009388666990", - "name": "Valakas Story" - }, - { - "executables": [{"is_launcher": false, "name": "cardfight vanguard dear days demo/vg2.exe", "os": "win32"}], - "hook": true, - "id": "1124360010886041640", - "name": "Cardfight!! Vanguard Dear Days Demo" - }, - { - "executables": [{"is_launcher": false, "name": "snowtopia/snowtopia.exe", "os": "win32"}], - "hook": true, - "id": "1124360012488257636", - "name": "Snowtopia" - }, - { - "executables": [ - {"is_launcher": false, "name": "strike force heroes demo/strike force heroes demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360014073708575", - "name": "Strike Force Heroes Demo" - }, - { - "executables": [{"is_launcher": false, "name": "sopwith vr/sopwithvr.exe", "os": "win32"}], - "hook": true, - "id": "1124360015575273532", - "name": "Sopwith VR" - }, - { - "executables": [{"is_launcher": false, "name": "crimzon clover/crimzonclover_wi.exe", "os": "win32"}], - "hook": true, - "id": "1124360017278152824", - "name": "Crimzon Clover WORLD IGNITION" - }, - { - "executables": [{"is_launcher": false, "name": "whirligig/whirligig.exe", "os": "win32"}], - "hook": true, - "id": "1124360018968465469", - "name": "Whirligig" - }, - { - "executables": [{"is_launcher": false, "name": "volcanoprincess/volcanoprincess.exe", "os": "win32"}], - "hook": true, - "id": "1124360020973334599", - "name": "Volcano Princess" - }, - { - "executables": [{"is_launcher": false, "name": "narita boy/naritaboy.exe", "os": "win32"}], - "hook": true, - "id": "1124360022579757076", - "name": "Narita Boy" - }, - { - "executables": [{"is_launcher": false, "name": "win32/contrastgame.exe", "os": "win32"}], - "hook": true, - "id": "1124360024190373969", - "name": "Contrast" - }, - { - "executables": [{"is_launcher": false, "name": "win64/brookhavengame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360025830342837", - "name": "The Brookhaven Experiment" - }, - { - "executables": [{"is_launcher": false, "name": "bin/indy.exe", "os": "win32"}], - "hook": true, - "id": "1124360027646472232", - "name": "Indiana Jones\u00ae and the Emperor's Tomb\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "win64/aue_engine.exe", "os": "win32"}], - "hook": true, - "id": "1124360029068349450", - "name": "\u0421\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u041f\u0440\u044b\u0433\u0430\u043d\u0438\u044f \u043f\u043e \u0413\u0430\u0440\u0430\u0436\u0430\u043c" - }, - { - "executables": [{"is_launcher": false, "name": "zup! xs/zup! xs.exe", "os": "win32"}], - "hook": true, - "id": "1124360029508747455", - "name": "Zup! XS" - }, - { - "executables": [{"is_launcher": false, "name": "epido/epido.exe", "os": "win32"}], - "hook": true, - "id": "1124360031085801483", - "name": "Epido" - }, - { - "executables": [{"is_launcher": false, "name": "dead state/zrpg.exe", "os": "win32"}], - "hook": true, - "id": "1124360032738361434", - "name": "Dead State" - }, - { - "executables": [{"is_launcher": false, "name": "the heiress/game.exe", "os": "win32"}], - "hook": true, - "id": "1124360034575462490", - "name": "The Heiress" - }, - { - "executables": [ - {"is_launcher": false, "name": "spark the electric jester 3/spark the electric jester 3.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360036261580830", - "name": "Spark the Electric Jester 3" - }, - { - "executables": [{"is_launcher": false, "name": "sheltered 2/sheltered2.exe", "os": "win32"}], - "hook": true, - "id": "1124360037687640154", - "name": "Sheltered 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/starlitseason-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360039436660736", - "name": "\u30a2\u30a4\u30c9\u30eb\u30de\u30b9\u30bf\u30fc \u30b9\u30bf\u30fc\u30ea\u30c3\u30c8\u30b7\u30fc\u30ba\u30f3" - }, - { - "executables": [{"is_launcher": false, "name": "league of pixels/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124360041030500433", - "name": "League of Pixels" - }, - { - "executables": [{"is_launcher": false, "name": "hentai - world war ii/hentai ww2.exe", "os": "win32"}], - "hook": true, - "id": "1124360042896969789", - "name": "ANIME - World War II" - }, - { - "executables": [{"is_launcher": false, "name": "infernax/infernax.exe", "os": "win32"}], - "hook": true, - "id": "1124360044444663861", - "name": "Infernax" - }, - { - "executables": [{"is_launcher": false, "name": "who wants to be a millionaire/wwtbam.exe", "os": "win32"}], - "hook": true, - "id": "1124360046294347906", - "name": "Who Wants To Be A Millionaire" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "voiceofcardstheisledragonroars/voiceofcardstheisledragonroars.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360048072736828", - "name": "Voice of Cards: The Isle Dragon Roars" - }, - { - "executables": [{"is_launcher": false, "name": "sapiens demo/sapiens.exe", "os": "win32"}], - "hook": true, - "id": "1124360050048249857", - "name": "Sapiens Demo" - }, - { - "executables": [{"is_launcher": false, "name": "feeding frenzy 2 deluxe/feedingfrenzytwo.exe", "os": "win32"}], - "hook": true, - "id": "1124360051415601222", - "name": "Feeding Frenzy 2: Shipwreck Showdown Deluxe Demo" - }, - { - "executables": [{"is_launcher": false, "name": "through the woods/through the woods.exe", "os": "win32"}], - "hook": true, - "id": "1124360053193982053", - "name": "Through the Woods" - }, - { - "executables": [{"is_launcher": false, "name": "aot2/aot2_eu.exe", "os": "win32"}], - "hook": true, - "id": "1124360054737481738", - "name": "Attack on Titan 2 - A.O.T.2 - \u9032\u6483\u306e\u5de8\u4eba\uff12" - }, - { - "executables": [{"is_launcher": false, "name": "escapedungeon2_demo/escapedungeon2.exe", "os": "win32"}], - "hook": true, - "id": "1124360056549429288", - "name": "Escape Dungeon 2 Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "commandos 2 - hd remaster/commandos 2 hd remaster.dll", "os": "win32"} - ], - "hook": true, - "id": "1124360057967099904", - "name": "Commandos 2 - HD Remaster" - }, - { - "executables": [{"is_launcher": false, "name": "levelhead/levelhead.exe", "os": "win32"}], - "hook": true, - "id": "1124360059674185818", - "name": "Levelhead" - }, - { - "executables": [{"is_launcher": false, "name": "viking battle for asgard/viking.exe", "os": "win32"}], - "hook": true, - "id": "1124360061150576791", - "name": "Viking: Battle for Asgard" - }, - { - "executables": [{"is_launcher": false, "name": "tap tap infinity/taptapinfinity.exe", "os": "win32"}], - "hook": true, - "id": "1124360062945742969", - "name": "Tap Tap Infinity" - }, - { - "executables": [{"is_launcher": false, "name": "bin/godmode.exe", "os": "win32"}], - "hook": true, - "id": "1124360064401162411", - "name": "God Mode" - }, - { - "executables": [{"is_launcher": false, "name": "political machine 2016/pm2016.exe", "os": "win32"}], - "hook": true, - "id": "1124360065885941870", - "name": "The Political Machine 2016" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "gibbous - a cthulhu adventure/gibbous - a cthulhu adventure.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360067496562882", - "name": "Gibbous - A Cthulhu Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thelasthaven-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360069098782790", - "name": "The Last Haven" - }, - { - "executables": [{"is_launcher": false, "name": "win64/spitfiregames72-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360070835220631", - "name": "Stewart The Fox" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "siege survival gloria victis prologue/siegesurvivalprologue.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360072437448765", - "name": "Siege Survival: Gloria Victis Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "puzzline/puzzline.exe", "os": "win32"}], - "hook": true, - "id": "1124360073817370785", - "name": "Puzzline -\u30d1\u30ba\u30e9\u30a4\u30f3-" - }, - { - "executables": [{"is_launcher": false, "name": "always sometimes monsters/game.exe", "os": "win32"}], - "hook": true, - "id": "1124360075461541928", - "name": "Always Sometimes Monsters" - }, - { - "executables": [{"is_launcher": false, "name": "cockwork industries/cockwork industries.exe", "os": "win32"}], - "hook": true, - "id": "1124360076988264478", - "name": "Cockwork Industries Complete" - }, - { - "executables": [ - {"is_launcher": false, "name": "touhou big big battle/touhou big big battle.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360078544355398", - "name": "\u4e1c\u65b9\u5927\u6218\u4e89 ~ Touhou Big Big Battle" - }, - { - "executables": [{"is_launcher": false, "name": "guiltygear/guiltygear.exe", "os": "win32"}], - "hook": true, - "id": "1124360079941054524", - "name": "GUILTY GEAR" - }, - { - "executables": [{"is_launcher": false, "name": "dungeon warfare 2/dungeonwarfare2.exe", "os": "win32"}], - "hook": true, - "id": "1124360082541531207", - "name": "Dungeon Warfare 2" - }, - { - "executables": [{"is_launcher": false, "name": "carrier deck/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124360085985050795", - "name": "Carrier Deck" - }, - { - "executables": [{"is_launcher": false, "name": "undress tournament/undress tournament.exe", "os": "win32"}], - "hook": true, - "id": "1124360088841367582", - "name": "Undress Tournament" - }, - { - "executables": [{"is_launcher": false, "name": "worn thin/worn thin.exe", "os": "win32"}], - "hook": true, - "id": "1124360091727052890", - "name": "Worn Thin" - }, - { - "executables": [{"is_launcher": false, "name": "the i of the dragon/theiofthedragon.exe", "os": "win32"}], - "hook": true, - "id": "1124360094243631184", - "name": "The I of the Dragon" - }, - { - "executables": [{"is_launcher": false, "name": "inkbound/inkbound.exe", "os": "win32"}], - "hook": true, - "id": "1124360098064646174", - "name": "Inkbound" - }, - { - "executables": [{"is_launcher": false, "name": "granny 3/granny 3.exe", "os": "win32"}], - "hook": true, - "id": "1124360099511676938", - "name": "Granny 3" - }, - { - "executables": [{"is_launcher": false, "name": "nascar heat 3/nascarheat3.exe", "os": "win32"}], - "hook": true, - "id": "1124360101164241006", - "name": "NASCAR Heat 3" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "mission in snowdriftland - snowlogue/missioninsnowdriftland.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360102615465994", - "name": "Mission in Snowdriftland - Snowlogue" - }, - { - "executables": [{"is_launcher": false, "name": "the test final revelation/game.exe", "os": "win32"}], - "hook": true, - "id": "1124360105018806342", - "name": "The Test: Final Revelation" - }, - { - "executables": [{"is_launcher": false, "name": "l.a. noire vr/lanoirevr.exe", "os": "win32"}], - "hook": true, - "id": "1124360106340008068", - "name": "L.A. Noire: The VR Case Files" - }, - { - "executables": [{"is_launcher": false, "name": "midnight ride/midnight ride.exe", "os": "win32"}], - "hook": true, - "id": "1124360107971588096", - "name": "Midnight Ride" - }, - { - "executables": [{"is_launcher": false, "name": "bin/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124360109636730910", - "name": "Bloodbath Kavkaz" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "no one lives under the lighthouse/no one lives under the lighthouse.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360111167647814", - "name": "No one lives under the lighthouse" - }, - { - "executables": [{"is_launcher": false, "name": "a mortician's tale/morticianstale.exe", "os": "win32"}], - "hook": true, - "id": "1124360112857956464", - "name": "A Mortician's Tale" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "ultimate fishing simulator 2020/ultimate fishing simulator 2.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360114648920135", - "name": "Ultimate Fishing Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "subsurface circular/subsurface circular.exe", "os": "win32"}], - "hook": true, - "id": "1124360116934823966", - "name": "Subsurface Circular" - }, - { - "executables": [{"is_launcher": false, "name": "stardeus demo/stardeus.exe", "os": "win32"}], - "hook": true, - "id": "1124360118377660416", - "name": "Stardeus Demo" - }, - { - "executables": [{"is_launcher": false, "name": "pancake sailor/pancake_sailor.exe", "os": "win32"}], - "hook": true, - "id": "1124360119828885514", - "name": "Pancake Sailor" - }, - { - "executables": [ - {"is_launcher": false, "name": "unboxing the cryptic killer/unboxingthecryptickiller.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360121301094430", - "name": "Unboxing the Cryptic Killer" - }, - { - "executables": [{"is_launcher": false, "name": "monsters/monsters.exe", "os": "win32"}], - "hook": true, - "id": "1124360123108835428", - "name": "PixelJunk\u2122 Monsters Ultimate" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/angels with scaly wings.exe", "os": "win32"}], - "hook": true, - "id": "1124360124853661767", - "name": "Angels with Scaly Wings" - }, - { - "executables": [{"is_launcher": false, "name": "x64/sam3_vr.exe", "os": "win32"}], - "hook": true, - "id": "1124360126577524786", - "name": "Serious Sam 3 VR: BFE" - }, - { - "executables": [{"is_launcher": false, "name": "grand ages medieval/grandagesmedieval.exe", "os": "win32"}], - "hook": true, - "id": "1124360128062304277", - "name": "Grand Ages: Medieval" - }, - { - "executables": [{"is_launcher": false, "name": "costumeparty/costumeparty.exe", "os": "win32"}], - "hook": true, - "id": "1124360129643565116", - "name": "Costume Party" - }, - { - "executables": [{"is_launcher": false, "name": "meridian 59/meridian.exe", "os": "win32"}], - "hook": true, - "id": "1124360131262558238", - "name": "Meridian 59" - }, - { - "executables": [{"is_launcher": false, "name": "win64/exf-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360132919312394", - "name": "FIGHTING EX LAYER" - }, - { - "executables": [{"is_launcher": false, "name": "space bear/spacebear.exe", "os": "win32"}], - "hook": true, - "id": "1124360143312793670", - "name": "Space Bear" - }, - { - "executables": [ - {"is_launcher": false, "name": "die in the dungeon prologue/die in the dungeon.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360145116348549", - "name": "Die in the Dungeon PROLOGUE" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "abyss the forgotten past prologue/abyss the forgotten past.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360146852794429", - "name": "Abyss The Forgotten Past: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vr3_part1.exe", "os": "win32"}], - "hook": true, - "id": "1124360148354347159", - "name": "IKEA VR Pancake Kitchen" - }, - { - "executables": [{"is_launcher": false, "name": "crumble demo/crumble.exe", "os": "win32"}], - "hook": true, - "id": "1124360150086598776", - "name": "Crumble Demo" - }, - { - "executables": [{"is_launcher": false, "name": "unspottable demo/unspottable.exe", "os": "win32"}], - "hook": true, - "id": "1124360151810461846", - "name": "Unspottable Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kagura_survivors-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360153664335993", - "name": "Kagura Survivors: Endless Night" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bearproto-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360155216232478", - "name": "Get Stuffed!" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pnztower-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360156759732304", - "name": "Total Lockdown" - }, - { - "executables": [{"is_launcher": false, "name": "win64/eaggame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360158601039913", - "name": "DEATHVERSE: LET IT DIE" - }, - { - "executables": [{"is_launcher": false, "name": "ikenfell/ikenfellwin.exe", "os": "win32"}], - "hook": true, - "id": "1124360160215838830", - "name": "Ikenfell" - }, - { - "executables": [{"is_launcher": false, "name": "win32/tinytina.exe", "os": "win32"}], - "hook": true, - "id": "1124360161704820757", - "name": "Tina Chiquitina asalta la mazmorra del drag\u00f3n: una aventura \u00fanica" - }, - { - "executables": [{"is_launcher": false, "name": "event[0]/event0.exe", "os": "win32"}], - "hook": true, - "id": "1124360163235737670", - "name": "Event[0]" - }, - { - "executables": [{"is_launcher": false, "name": "sacred sword princesses/ssp.exe", "os": "win32"}], - "hook": true, - "id": "1124360165026713651", - "name": "Sacred Sword Princesses" - }, - { - "executables": [{"is_launcher": false, "name": "worms/dosbox/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124360166805090354", - "name": "Worms" - }, - { - "executables": [{"is_launcher": false, "name": "metal wolf chaos xd/wilson.exe", "os": "win32"}], - "hook": true, - "id": "1124360168604454912", - "name": "Metal Wolf Chaos XD" - }, - { - "executables": [{"is_launcher": false, "name": "tokyo 42/t42.exe", "os": "win32"}], - "hook": true, - "id": "1124360170106011789", - "name": "Tokyo 42" - }, - { - "executables": [ - {"is_launcher": false, "name": "lakeview valley - murder rpg/lakeview valley.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360171683066076", - "name": "Lakeview Valley" - }, - { - "executables": [{"is_launcher": false, "name": "the goatman/the goatman.exe", "os": "win32"}], - "hook": true, - "id": "1124360173109137502", - "name": "The Goatman" - }, - { - "executables": [{"is_launcher": false, "name": "windows/retimed.exe", "os": "win32"}], - "hook": true, - "id": "1124360176066113669", - "name": "Retimed" - }, - { - "executables": [{"is_launcher": false, "name": "hentai - area 51/hentai area 51.exe", "os": "win32"}], - "hook": true, - "id": "1124360177634791564", - "name": "Hentai - Area 51" - }, - { - "executables": [{"is_launcher": false, "name": "sweet transit/sweet transit.exe", "os": "win32"}], - "hook": true, - "id": "1124360179136348261", - "name": "Sweet Transit" - }, - { - "executables": [{"is_launcher": false, "name": "spellslingers/spellslingers.exe", "os": "win32"}], - "hook": true, - "id": "1124360180679856149", - "name": "Magic Spellslingers" - }, - { - "executables": [{"is_launcher": false, "name": "a raven monologue/a raven monologue.exe", "os": "win32"}], - "hook": true, - "id": "1124360182349181039", - "name": "A Raven Monologue" - }, - { - "executables": [{"is_launcher": false, "name": "killing time/game.exe", "os": "win32"}], - "hook": true, - "id": "1124360183754281021", - "name": "Killing Time" - }, - { - "executables": [{"is_launcher": false, "name": "blackhole/bh.exe", "os": "win32"}], - "hook": true, - "id": "1124360185314558073", - "name": "BLACKHOLE" - }, - { - "executables": [{"is_launcher": false, "name": "solitaire forever ii/solitaire forever ii.exe", "os": "win32"}], - "hook": true, - "id": "1124360186769977445", - "name": "Solitaire Forever II" - }, - { - "executables": [{"is_launcher": false, "name": "planes attack/planes attack.exe", "os": "win32"}], - "hook": true, - "id": "1124360188594503763", - "name": "PLANES ATTACK" - }, - { - "executables": [{"is_launcher": false, "name": "win64/iblis.exe", "os": "win32"}], - "hook": true, - "id": "1124360189856985209", - "name": "iblis" - }, - { - "executables": [{"is_launcher": false, "name": "enforcer/enforcer.exe", "os": "win32"}], - "hook": true, - "id": "1124360191400493116", - "name": "Enforcer: Police Crime Action" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dcgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360192906244116", - "name": "DCL - The Game" - }, - { - "executables": [{"is_launcher": false, "name": "a webbing journey demo/a webbing journey.exe", "os": "win32"}], - "hook": true, - "id": "1124360194588164156", - "name": "A Webbing Journey Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win32/qube.exe", "os": "win32"}], - "hook": true, - "id": "1124360196320415744", - "name": "Q.U.B.E." - }, - { - "executables": [ - { - "is_launcher": false, - "name": "sins of a solar empire trinity/sins of a solar empire diplomacy.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360197859721247", - "name": "Sins of a Solar Empire: Trinity" - }, - { - "executables": [{"is_launcher": false, "name": "win64/cob-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360199344509058", - "name": "City Of Brass" - }, - { - "executables": [{"is_launcher": false, "name": "win64/trikaya-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360200770568272", - "name": "Trikaya" - }, - { - "executables": [{"is_launcher": false, "name": "myst masterpiece/scummvm.exe", "os": "win32"}], - "hook": true, - "id": "1124360202389565481", - "name": "Myst: Masterpiece Edition" - }, - { - "executables": [{"is_launcher": false, "name": "swarm/swarm.exe", "os": "win32"}], - "hook": true, - "id": "1124360203849191444", - "name": "Swarm" - }, - { - "executables": [{"is_launcher": false, "name": "just in time/justintime.exe", "os": "win32"}], - "hook": true, - "id": "1124360205312999434", - "name": "Just In Time Incorporated" - }, - { - "executables": [{"is_launcher": false, "name": "haydee 2/steamgame.exe", "os": "win32"}], - "hook": true, - "id": "1124360207049437184", - "name": "Haydee 2" - }, - { - "executables": [{"is_launcher": false, "name": "monster cards/monstercards.exe", "os": "win32"}], - "hook": true, - "id": "1124360208479703150", - "name": "MONSTER CARDS" - }, - { - "executables": [{"is_launcher": false, "name": "yorg.io3/yorgio3.exe", "os": "win32"}], - "hook": true, - "id": "1124360210467795046", - "name": "YORG.io 3" - }, - { - "executables": [{"is_launcher": false, "name": "disgaea rpg/disgaea rpg.exe", "os": "win32"}], - "hook": true, - "id": "1124360212124553288", - "name": "DISGAEA RPG" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dieyoung-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360213898735696", - "name": "Die Young" - }, - { - "executables": [{"is_launcher": false, "name": "superstarracing/superstar racing.exe", "os": "win32"}], - "hook": true, - "id": "1124360215576465521", - "name": "Superstar Racing" - }, - { - "executables": [{"is_launcher": false, "name": "trails in the sky the 3rd/ed6_win3_dx9.exe", "os": "win32"}], - "hook": true, - "id": "1124360217233207357", - "name": "The Legend of Heroes: Trails in the Sky the 3rd" - }, - { - "executables": [ - {"is_launcher": false, "name": "capcom fighting collection/capcomfightingcollection.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360222396403712", - "name": "Capcom Fighting Collection" - }, - { - "executables": [{"is_launcher": false, "name": "kids/kids.exe", "os": "win32"}], - "hook": true, - "id": "1124360225856700496", - "name": "KIDS" - }, - { - "executables": [{"is_launcher": false, "name": "if found/iffound.exe", "os": "win32"}], - "hook": true, - "id": "1124360227626692608", - "name": "If Found" - }, - { - "executables": [{"is_launcher": false, "name": "zetria_demo/zetria.exe", "os": "win32"}], - "hook": true, - "id": "1124360229329584249", - "name": "Zetria Demo" - }, - { - "executables": [{"is_launcher": false, "name": "gangs of space/gangs of space.exe", "os": "win32"}], - "hook": true, - "id": "1124360230860509244", - "name": "Gangs of Space" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bakerysimulatorfull-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360232705998888", - "name": "Bakery Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "project warlock arctic attack/pw_aa_x64.exe", "os": "win32"}], - "hook": true, - "id": "1124360234652151908", - "name": "Project Warlock Arctic Attack" - }, - { - "executables": [{"is_launcher": false, "name": "x64/samtfe_vr.exe", "os": "win32"}], - "hook": true, - "id": "1124360236107583498", - "name": "Serious Sam VR: The First Encounter" - }, - { - "executables": [{"is_launcher": false, "name": "gar/gar.exe", "os": "win32"}], - "hook": true, - "id": "1124360237437173790", - "name": "Guns and Robots" - }, - { - "executables": [{"is_launcher": false, "name": "unrealworld/urw.exe", "os": "win32"}], - "hook": true, - "id": "1124360238980681790", - "name": "UnReal World" - }, - { - "executables": [{"is_launcher": false, "name": "dogsledsaga/dogsledsaga.exe", "os": "win32"}], - "hook": true, - "id": "1124360240595480637", - "name": "Dog Sled Saga" - }, - { - "executables": [{"is_launcher": false, "name": "vs/vs.exe", "os": "win32"}], - "hook": true, - "id": "1124360242269016144", - "name": "Virtual Studio" - }, - { - "executables": [{"is_launcher": false, "name": "hiddeninplainsight/hiddeninplainsight.exe", "os": "win32"}], - "hook": true, - "id": "1124360243971895426", - "name": "Hidden in Plain Sight" - }, - { - "executables": [{"is_launcher": false, "name": "first date/first date.exe", "os": "win32"}], - "hook": true, - "id": "1124360245704146954", - "name": "First Date : Late To Date" - }, - { - "executables": [{"is_launcher": false, "name": "lostwinds/lw1.exe", "os": "win32"}], - "hook": true, - "id": "1124360247222489218", - "name": "LostWinds" - }, - { - "executables": [{"is_launcher": false, "name": "mad pack/mad pack.exe", "os": "win32"}], - "hook": true, - "id": "1124360249114116156", - "name": "Mad Pack" - }, - { - "executables": [{"is_launcher": false, "name": "guilt free/guilt free.exe", "os": "win32"}], - "hook": true, - "id": "1124360250754093147", - "name": "Guilt Free" - }, - { - "executables": [{"is_launcher": false, "name": "salt 2/salt2.exe", "os": "win32"}], - "hook": true, - "id": "1124360252394057769", - "name": "Salt 2" - }, - { - "executables": [{"is_launcher": false, "name": "faces of war/facesofwar.exe", "os": "win32"}], - "hook": true, - "id": "1124360253975318538", - "name": "Faces of War" - }, - { - "executables": [{"is_launcher": false, "name": "yuppiepsycho/yuppiepsycho.exe", "os": "win32"}], - "hook": true, - "id": "1124360255543984209", - "name": "Yuppie Psycho" - }, - { - "executables": [{"is_launcher": false, "name": "auto chess/acphoenix.exe", "os": "win32"}], - "hook": true, - "id": "1124360256999403540", - "name": "Auto Chess" - }, - { - "executables": [{"is_launcher": false, "name": "titan quest/titan quest.exe", "os": "win32"}], - "hook": true, - "id": "1124360259054616587", - "name": "Titan Quest" - }, - { - "executables": [{"is_launcher": false, "name": "thedungeonbeneath/thedungeonbeneath.exe", "os": "win32"}], - "hook": true, - "id": "1124360260786860143", - "name": "The Dungeon Beneath" - }, - { - "executables": [{"is_launcher": false, "name": "ozmafia/ozmafia.exe", "os": "win32"}], - "hook": true, - "id": "1124360262623957123", - "name": "OZMAFIA!!" - }, - { - "executables": [{"is_launcher": false, "name": "headliner/headliner.exe", "os": "win32"}], - "hook": true, - "id": "1124360264540770446", - "name": "HEADLINER" - }, - { - "executables": [{"is_launcher": false, "name": "nemesis perspective/nemesis perspective.exe", "os": "win32"}], - "hook": true, - "id": "1124360266369482883", - "name": "Nemesis Perspective" - }, - { - "executables": [{"is_launcher": false, "name": "uni/uni2.exe", "os": "win32"}], - "hook": true, - "id": "1124360268017848441", - "name": "UNI" - }, - { - "executables": [{"is_launcher": false, "name": "milo and the magpies/miloandthemagpies.exe", "os": "win32"}], - "hook": true, - "id": "1124360269695561758", - "name": "Milo and the Magpies" - }, - { - "executables": [{"is_launcher": false, "name": "marble it up!/marble it up.exe", "os": "win32"}], - "hook": true, - "id": "1124360271473950781", - "name": "Marble It Up!" - }, - { - "executables": [{"is_launcher": false, "name": "rage parking simulator 2016/rps2016.exe", "os": "win32"}], - "hook": true, - "id": "1124360273071976528", - "name": "Rage Parking Simulator 2016" - }, - { - "executables": [{"is_launcher": false, "name": "hakuoki edo blossoms/hakuokiflower.exe", "os": "win32"}], - "hook": true, - "id": "1124360274774872114", - "name": "Hakuoki: Edo Blossoms" - }, - { - "executables": [{"is_launcher": false, "name": "win64/oi_pendulum-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360276435812462", - "name": "Outbreak Island: Pendulum" - }, - { - "executables": [{"is_launcher": false, "name": "superfight/superfight.exe", "os": "win32"}], - "hook": true, - "id": "1124360278184841296", - "name": "SUPERFIGHT" - }, - { - "executables": [{"is_launcher": false, "name": "take the throne/take the throne.exe", "os": "win32"}], - "hook": true, - "id": "1124360279665426595", - "name": "Take the Throne" - }, - { - "executables": [{"is_launcher": false, "name": "blazing chrome/blazing chrome.exe", "os": "win32"}], - "hook": true, - "id": "1124360281062125608", - "name": "Blazing Chrome" - }, - { - "executables": [{"is_launcher": false, "name": "love esquire/love esquire.exe", "os": "win32"}], - "hook": true, - "id": "1124360282924404816", - "name": "Love Esquire" - }, - { - "executables": [{"is_launcher": false, "name": "until we die demo/until we die.exe", "os": "win32"}], - "hook": true, - "id": "1124360284291743774", - "name": "Until We Die Demo" - }, - { - "executables": [{"is_launcher": false, "name": "skatebird/skatebird.exe", "os": "win32"}], - "hook": true, - "id": "1124360285717803173", - "name": "SkateBIRD" - }, - { - "executables": [{"is_launcher": false, "name": "necrobarista/necrobarista.exe", "os": "win32"}], - "hook": true, - "id": "1124360287382949929", - "name": "Necrobarista" - }, - { - "executables": [{"is_launcher": false, "name": "tacview/tacview64.exe", "os": "win32"}], - "hook": true, - "id": "1124360289102606346", - "name": "Tacview" - }, - { - "executables": [{"is_launcher": false, "name": "spiders everywhere/lil_baby_poop.exe", "os": "win32"}], - "hook": true, - "id": "1124360290809692181", - "name": "Spiders Everywhere" - }, - { - "executables": [{"is_launcher": false, "name": "concluse/concluse.exe", "os": "win32"}], - "hook": true, - "id": "1124360292512583711", - "name": "CONCLUSE" - }, - { - "executables": [{"is_launcher": false, "name": "norco/norco.exe", "os": "win32"}], - "hook": true, - "id": "1124360294009946112", - "name": "NORCO" - }, - { - "executables": [{"is_launcher": false, "name": "warhammer 40000 armageddon/autorun.exe", "os": "win32"}], - "hook": true, - "id": "1124360295645728919", - "name": "Warhammer 40,000: Armageddon" - }, - { - "executables": [{"is_launcher": false, "name": "fight knight/fightknight.exe", "os": "win32"}], - "hook": true, - "id": "1124360297625436322", - "name": "FIGHT KNIGHT" - }, - { - "executables": [{"is_launcher": false, "name": "windows_content/gungame1.exe", "os": "win32"}], - "hook": true, - "id": "1124360299181518958", - "name": "Angry Angry Shark" - }, - { - "executables": [{"is_launcher": false, "name": "creeper world 2/creeperworld2.exe", "os": "win32"}], - "hook": true, - "id": "1124360300741804093", - "name": "Creeper World 2 Anniversary Edition" - }, - { - "executables": [{"is_launcher": false, "name": "samurai warriors 5/sw5.exe", "os": "win32"}], - "hook": true, - "id": "1124360302251749457", - "name": "SAMURAI WARRIORS 5 Trial version" - }, - { - "executables": [{"is_launcher": false, "name": "master_build_windows/banana_drama_git.exe", "os": "win32"}], - "hook": true, - "id": "1124360303770095757", - "name": "Banana Drama" - }, - { - "executables": [{"is_launcher": false, "name": "win64/keepers-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360305452003446", - "name": "Keepers of the Trees" - }, - { - "executables": [{"is_launcher": false, "name": "whatthebox/whatthebox.exe", "os": "win32"}], - "hook": true, - "id": "1124360307360415784", - "name": "What The Box?" - }, - { - "executables": [{"is_launcher": false, "name": "thegolfclub2/golf.exe", "os": "win32"}], - "hook": true, - "id": "1124360309340123246", - "name": "The Golf Club 2\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "bin/squishy.exe", "os": "win32"}], - "hook": true, - "id": "1124360311219179601", - "name": "Squishy the Suicidal Pig" - }, - { - "executables": [{"is_launcher": false, "name": "five nights at floppa/fivenightsatfloppa.exe", "os": "win32"}], - "hook": true, - "id": "1124360312800423946", - "name": "Five nights at Floppa" - }, - { - "executables": [{"is_launcher": false, "name": "chicken shoot/kurka.exe", "os": "win32"}], - "hook": true, - "id": "1124360314578812988", - "name": "Chicken Shoot Gold" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hunter-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360315988095106", - "name": "Hunting Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "pro cycling manager 2017/pcm64.exe", "os": "win32"}], - "hook": true, - "id": "1124360317414166549", - "name": "Pro Cycling Manager 2017" - }, - { - "executables": [{"is_launcher": false, "name": "mindshow/mindshow.exe", "os": "win32"}], - "hook": true, - "id": "1124360319121244180", - "name": "Mindshow" - }, - { - "executables": [{"is_launcher": false, "name": "wild terra 2/wild-terra-2.exe", "os": "win32"}], - "hook": true, - "id": "1124360320958353500", - "name": "Wild Terra 2: New Lands" - }, - { - "executables": [{"is_launcher": false, "name": "ydkj_vol4/ydkjtr.jbg", "os": "win32"}], - "hook": true, - "id": "1124360322568958074", - "name": "YOU DON'T KNOW JACK Vol. 4 The Ride" - }, - { - "executables": [{"is_launcher": false, "name": "onimusha/game.exe", "os": "win32"}], - "hook": true, - "id": "1124360323923726458", - "name": "Onimusha: Warlords" - }, - { - "executables": [{"is_launcher": false, "name": "win64/crimsonsnow-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360325190402098", - "name": "Crimson Snow" - }, - { - "executables": [{"is_launcher": false, "name": "hexologic/hexologic.exe", "os": "win32"}], - "hook": true, - "id": "1124360326880702555", - "name": "Hexologic" - }, - { - "executables": [{"is_launcher": false, "name": "hedon bloodrite/hedon.exe", "os": "win32"}], - "hook": true, - "id": "1124360328415825992", - "name": "Hedon Bloodrite" - }, - { - "executables": [{"is_launcher": false, "name": "anvil saga/anvil saga.exe", "os": "win32"}], - "hook": true, - "id": "1124360330009653339", - "name": "Anvil Saga" - }, - { - "executables": [{"is_launcher": false, "name": "win64/superlife-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360331590910124", - "name": "Super Life (RPG)" - }, - { - "executables": [{"is_launcher": false, "name": "fort triumph/fort triumph.exe", "os": "win32"}], - "hook": true, - "id": "1124360333386076170", - "name": "Fort Triumph" - }, - { - "executables": [{"is_launcher": false, "name": "hyperbolica/hyperbolica.exe", "os": "win32"}], - "hook": true, - "id": "1124360334967320648", - "name": "Hyperbolica" - }, - { - "executables": [{"is_launcher": false, "name": "iron danger/irondanger.exe", "os": "win32"}], - "hook": true, - "id": "1124360336624062464", - "name": "Iron Danger" - }, - { - "executables": [{"is_launcher": false, "name": "disney's princess enchanted journey/play.exe", "os": "win32"}], - "hook": true, - "id": "1124360338268246198", - "name": "Disney's Princess Enchanted Journey" - }, - { - "executables": [{"is_launcher": false, "name": "the karaoke/karaoke.exe", "os": "win32"}], - "hook": true, - "id": "1124360340336029766", - "name": "The Karaoke | \u30d2\u30c8\u30ab\u30e9" - }, - { - "executables": [{"is_launcher": false, "name": "livelock/livelock.exe", "os": "win32"}], - "hook": true, - "id": "1124360341611106405", - "name": "Livelock" - }, - { - "executables": [{"is_launcher": false, "name": "mushroom wars 2/mw2.exe", "os": "win32"}], - "hook": true, - "id": "1124360343372710048", - "name": "Mushroom Wars 2" - }, - { - "executables": [{"is_launcher": false, "name": "opencanvas 7/oc7.exe", "os": "win32"}], - "hook": true, - "id": "1124360345025261588", - "name": "openCanvas 7" - }, - { - "executables": [ - {"is_launcher": false, "name": "coal mining simulator prologue/coal mining simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360346631684156", - "name": "Coal Mining Simulator: Prologue" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "werewolf the apocalypse - heart of the forest/heart of the forest.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360348229718066", - "name": "Werewolf: The Apocalypse - Heart of the Forest" - }, - { - "executables": [{"is_launcher": false, "name": "spirit of the island demo/soti demo.exe", "os": "win32"}], - "hook": true, - "id": "1124360349836128417", - "name": "Spirit Of The Island Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/p_knockback-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360351333503060", - "name": "NOKBAK" - }, - { - "executables": [{"is_launcher": false, "name": "drawastickmanepic/drawastickman.steam.exe", "os": "win32"}], - "hook": true, - "id": "1124360353023799369", - "name": "Draw a Stickman: EPIC" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/sounds of her love.exe", "os": "win32"}], - "hook": true, - "id": "1124360354525368360", - "name": "Sounds of Her Love" - }, - { - "executables": [{"is_launcher": false, "name": "adventneon demo/adventneon.exe", "os": "win32"}], - "hook": true, - "id": "1124360356018532445", - "name": "AdventNEON Demo" - }, - { - "executables": [{"is_launcher": false, "name": "portal dungeon/portal dungeon.exe", "os": "win32"}], - "hook": true, - "id": "1124360357595594752", - "name": "\u50b3\u9001\u5730\u4e0b\u57ce" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mxgp7-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360359147491470", - "name": "MXGP 2021 - The Official Motocross Videogame" - }, - { - "executables": [{"is_launcher": false, "name": "squarecells/squarecells.exe", "os": "win32"}], - "hook": true, - "id": "1124360360812625930", - "name": "SquareCells" - }, - { - "executables": [{"is_launcher": false, "name": "nobu16/nobu16.exe", "os": "win32"}], - "hook": true, - "id": "1124360362360320090", - "name": "\u4fe1\u9577\u306e\u91ce\u671b\uff65\u65b0\u751f" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "hentai mosaique fix-it shoppe/hentai mosaique fix it shoppe.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360363962552450", - "name": "Hentai Mosaique Fix-IT Shoppe" - }, - { - "executables": [{"is_launcher": false, "name": "boomerang x/boomerang x.exe", "os": "win32"}], - "hook": true, - "id": "1124360365371834468", - "name": "Boomerang X" - }, - { - "executables": [{"is_launcher": false, "name": "time warpers/timewarpers.exe", "os": "win32"}], - "hook": true, - "id": "1124360366906953799", - "name": "Time Warpers" - }, - { - "executables": [{"is_launcher": false, "name": "operation flashpoint dragon rising/ofdr.exe", "os": "win32"}], - "hook": true, - "id": "1124360368467230772", - "name": "Operation Flashpoint: Dragon Rising" - }, - { - "executables": [{"is_launcher": false, "name": "return to shironagasu island/shironagasu.exe", "os": "win32"}], - "hook": true, - "id": "1124360370333691996", - "name": "\u30b7\u30ed\u30ca\u30ac\u30b9\u5cf6\u3078\u306e\u5e30\u9084 -Return to Shironagasu Island-" - }, - { - "executables": [{"is_launcher": false, "name": "pleasure puzzle portrait/pp1.exe", "os": "win32"}], - "hook": true, - "id": "1124360372112081008", - "name": "Pleasure Puzzle:Portrait" - }, - { - "executables": [ - {"is_launcher": false, "name": "nancy drew last train to blue moon canyon/game.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360373575897088", - "name": "Nancy Drew: Last Train to Blue Moon Canyon" - }, - { - "executables": [{"is_launcher": false, "name": "morbid/morbid - the seven acolytes.exe", "os": "win32"}], - "hook": true, - "id": "1124360375115202620", - "name": "Morbid: The Seven Acolytes" - }, - { - "executables": [{"is_launcher": false, "name": "outthereomega/outthereomega.exe", "os": "win32"}], - "hook": true, - "id": "1124360376813899867", - "name": "Out There: \u03a9 Edition" - }, - { - "executables": [{"is_launcher": false, "name": "no more heroes/configurationtool.exe", "os": "win32"}], - "hook": true, - "id": "1124360378344804432", - "name": "No More Heroes" - }, - { - "executables": [{"is_launcher": false, "name": "crosscells/crosscells.exe", "os": "win32"}], - "hook": true, - "id": "1124360380198694942", - "name": "CrossCells" - }, - { - "executables": [{"is_launcher": false, "name": "cossacks ii napoleonic wars/engine.exe", "os": "win32"}], - "hook": true, - "id": "1124360381662515310", - "name": "Cossacks II: Napoleonic Wars" - }, - { - "executables": [{"is_launcher": false, "name": "the normal thing/thenormalthing.exe", "os": "win32"}], - "hook": true, - "id": "1124360383289901186", - "name": "THE NORMAL THING" - }, - { - "executables": [{"is_launcher": false, "name": "street sense/street sense.exe", "os": "win32"}], - "hook": true, - "id": "1124360384858574909", - "name": "Street Sense" - }, - { - "executables": [{"is_launcher": false, "name": "pureya/pureya.exe", "os": "win32"}], - "hook": true, - "id": "1124360386720841748", - "name": "pureya" - }, - { - "executables": [{"is_launcher": false, "name": "harvester/dosbox_windows/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1124360388201427064", - "name": "Harvester" - }, - { - "executables": [{"is_launcher": false, "name": "gloom/gloom.exe", "os": "win32"}], - "hook": true, - "id": "1124360390034341918", - "name": "Gloom" - }, - { - "executables": [{"is_launcher": false, "name": "tribal hunter/tribal hunter.exe", "os": "win32"}], - "hook": true, - "id": "1124360391850479697", - "name": "Tribal Hunter" - }, - { - "executables": [{"is_launcher": false, "name": "love & sex second base/losesb.exe", "os": "win32"}], - "hook": true, - "id": "1124360393519804557", - "name": "Love & Sex: Second Base" - }, - { - "executables": [{"is_launcher": false, "name": "fate arena alpha/fate arena.exe", "os": "win32"}], - "hook": true, - "id": "1124360395642126346", - "name": "Fate Arena (Alpha)" - }, - { - "executables": [{"is_launcher": false, "name": "remastered/tie95.exe", "os": "win32"}], - "hook": true, - "id": "1124360397210800159", - "name": "STAR WARS\u2122: TIE Fighter Special Edition" - }, - { - "executables": [{"is_launcher": false, "name": "leap of faith/leapoffaith.exe", "os": "win32"}], - "hook": true, - "id": "1124360398682996849", - "name": "Leap of Faith" - }, - { - "executables": [{"is_launcher": false, "name": "paintersguild/paintersguild.exe", "os": "win32"}], - "hook": true, - "id": "1124360400348139622", - "name": "Painters Guild" - }, - { - "executables": [{"is_launcher": false, "name": "through the darkest of times/ttdot.exe", "os": "win32"}], - "hook": true, - "id": "1124360402273321000", - "name": "Through The Darkest of Times" - }, - { - "executables": [{"is_launcher": false, "name": "f12013/f1_2013.exe", "os": "win32"}], - "hook": true, - "id": "1124360403825209344", - "name": "F1 2013" - }, - { - "executables": [{"is_launcher": false, "name": "swarmz/swarmz.exe", "os": "win32"}], - "hook": true, - "id": "1124360405423247410", - "name": "SwarmZ" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/novena.exe", "os": "win32"}], - "hook": true, - "id": "1124360407205818458", - "name": "Novena Diabolos" - }, - { - "executables": [{"is_launcher": false, "name": "x rebirth/xrebirth.exe", "os": "win32"}], - "hook": true, - "id": "1124360408753520810", - "name": "X Rebirth" - }, - { - "executables": [{"is_launcher": false, "name": "andy's apple farm/andy's apple farm.exe", "os": "win32"}], - "hook": true, - "id": "1124360410292826152", - "name": "Andy's Apple Farm" - }, - { - "executables": [ - {"is_launcher": false, "name": "nonogram - master's legacy/nonogram - master's legacy.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360411941191810", - "name": "Nonogram - Master's Legacy" - }, - { - "executables": [{"is_launcher": false, "name": "umurangigeneration/umurangi generation.exe", "os": "win32"}], - "hook": true, - "id": "1124360413568585819", - "name": "Umurangi Generation" - }, - { - "executables": [{"is_launcher": false, "name": "win64/survival-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360420069748886", - "name": "J.A.W.S" - }, - { - "executables": [{"is_launcher": false, "name": "boson x/bosonx.exe", "os": "win32"}], - "hook": true, - "id": "1124360423999815750", - "name": "Boson X" - }, - { - "executables": [{"is_launcher": false, "name": "druidstone/druidstone.exe", "os": "win32"}], - "hook": true, - "id": "1124360426700951643", - "name": "Druidstone: The Secret of the Menhir Forest" - }, - { - "executables": [{"is_launcher": false, "name": "castle flipper/castle flipper.exe", "os": "win32"}], - "hook": true, - "id": "1124360428928118815", - "name": "Castle Flipper" - }, - { - "executables": [{"is_launcher": false, "name": "crazy dreamz/dreamz.exe", "os": "win32"}], - "hook": true, - "id": "1124360430240944159", - "name": "MagiCats Builder" - }, - { - "executables": [{"is_launcher": false, "name": "soldierfront2/dfubg.exe", "os": "win32"}], - "hook": true, - "id": "1124360431943823460", - "name": "Soldier Front 2" - }, - { - "executables": [{"is_launcher": false, "name": "family man/familyman.exe", "os": "win32"}], - "hook": true, - "id": "1124360433504108724", - "name": "Family Man" - }, - { - "executables": [{"is_launcher": false, "name": "silent dream/game.exe", "os": "win32"}], - "hook": true, - "id": "1124360435114717325", - "name": "Silent dream" - }, - { - "executables": [{"is_launcher": false, "name": "updater/sansar.exe", "os": "win32"}], - "hook": true, - "id": "1124360436737917018", - "name": "Sansar" - }, - { - "executables": [{"is_launcher": false, "name": "quivr/quivr.exe", "os": "win32"}], - "hook": true, - "id": "1124360438449197237", - "name": "QuiVr" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vein.exe", "os": "win32"}], - "hook": true, - "id": "1124360440122720266", - "name": "VEIN Demo" - }, - { - "executables": [{"is_launcher": false, "name": "spaceship looter/spaceship_looter.exe", "os": "win32"}], - "hook": true, - "id": "1124360441624285225", - "name": "Spaceship Looter" - }, - { - "executables": [{"is_launcher": false, "name": "win64/shadowbringer-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360443192946749", - "name": "ShadowBringer" - }, - { - "executables": [{"is_launcher": false, "name": "draw slasher/draw slasher.exe", "os": "win32"}], - "hook": true, - "id": "1124360444904226967", - "name": "Draw Slasher" - }, - { - "executables": [{"is_launcher": false, "name": "hush hush/hushhush.exe", "os": "win32"}], - "hook": true, - "id": "1124360446577750167", - "name": "Hush Hush - Only Your Love Can Save Them" - }, - { - "executables": [{"is_launcher": false, "name": "198x/198x.exe", "os": "win32"}], - "hook": true, - "id": "1124360448389697606", - "name": "198X" - }, - { - "executables": [{"is_launcher": false, "name": "bionic commando/bionic_commando.exe", "os": "win32"}], - "hook": true, - "id": "1124360449975136276", - "name": "Bionic Commando" - }, - { - "executables": [{"is_launcher": false, "name": "mr. hopp's playhouse 2/mrhoppsplayhouse2.exe", "os": "win32"}], - "hook": true, - "id": "1124360451539619930", - "name": "Mr. Hopp's Playhouse 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "budget cuts 2 mission insolvency/budget cuts 2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360453011816469", - "name": "Budget Cuts 2: Mission Insolvency" - }, - { - "executables": [{"is_launcher": false, "name": "bin_x86/nyancat.exe", "os": "win32"}], - "hook": true, - "id": "1124360454618230915", - "name": "Nyan Cat: Lost In Space" - }, - { - "executables": [{"is_launcher": false, "name": "crimesight/crimesight.exe", "os": "win32"}], - "hook": true, - "id": "1124360456170131558", - "name": "CRIMESIGHT" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bhoppro-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360457885597817", - "name": "Bhop PRO" - }, - { - "executables": [{"is_launcher": false, "name": "multiwinia/multiwinia.exe", "os": "win32"}], - "hook": true, - "id": "1124360459152273570", - "name": "Multiwinia" - }, - { - "executables": [{"is_launcher": false, "name": "mermaid vr/mermaidvr.exe", "os": "win32"}], - "hook": true, - "id": "1124360460758700032", - "name": "Mermaid VR" - }, - { - "executables": [{"is_launcher": false, "name": "samurai warriors 4-ii/sw4ii.exe", "os": "win32"}], - "hook": true, - "id": "1124360462469967882", - "name": "SAMURAI WARRIORS 4-II" - }, - { - "executables": [{"is_launcher": false, "name": "win64/prototype-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360464239972372", - "name": "not my car \u2013 Battle Royale" - }, - { - "executables": [{"is_launcher": false, "name": "the kite/the kite.exe", "os": "win32"}], - "hook": true, - "id": "1124360465871548536", - "name": "The Kite" - }, - { - "executables": [{"is_launcher": false, "name": "interplanetary/interplanetary.exe", "os": "win32"}], - "hook": true, - "id": "1124360467486363760", - "name": "Interplanetary" - }, - { - "executables": [{"is_launcher": false, "name": "thefall/thefall.exe", "os": "win32"}], - "hook": true, - "id": "1124360469021474816", - "name": "The Fall" - }, - { - "executables": [{"is_launcher": false, "name": "bound by flame/boundbyflame.exe", "os": "win32"}], - "hook": true, - "id": "1124360470602723348", - "name": "Bound By Flame" - }, - { - "executables": [{"is_launcher": false, "name": "the escape together/the escape together.exe", "os": "win32"}], - "hook": true, - "id": "1124360472062349453", - "name": "The Escape: Together" - }, - { - "executables": [{"is_launcher": false, "name": "descent road to legend/road to legend.exe", "os": "win32"}], - "hook": true, - "id": "1124360473517764668", - "name": "Descent: Road to Legend" - }, - { - "executables": [{"is_launcher": false, "name": "wrc 5/wrc5.exe", "os": "win32"}], - "hook": true, - "id": "1124360475040305303", - "name": "WRC 5" - }, - { - "executables": [{"is_launcher": false, "name": "hybrid animals/hybridanimals.exe", "os": "win32"}], - "hook": true, - "id": "1124360476428615800", - "name": "Hybrid Animals" - }, - { - "executables": [{"is_launcher": false, "name": "imperivm - great battles of rome hd/gbr.exe", "os": "win32"}], - "hook": true, - "id": "1124360478072787044", - "name": "Imperivm RTC - HD Edition \"Great Battles of Rome\"" - }, - { - "executables": [{"is_launcher": false, "name": "chair fucking simulator/chairfucker.exe", "os": "win32"}], - "hook": true, - "id": "1124360479595311124", - "name": "Chair F*cking Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "cat quest ii demo/cat quest ii.exe", "os": "win32"}], - "hook": true, - "id": "1124360481071714384", - "name": "Cat Quest II Demo" - }, - { - "executables": [{"is_launcher": false, "name": "them bombs demo/them bombs demo.exe", "os": "win32"}], - "hook": true, - "id": "1124360482778791966", - "name": "Them Bombs Demo" - }, - { - "executables": [{"is_launcher": false, "name": "blocksworld/blocksworld.exe", "os": "win32"}], - "hook": true, - "id": "1124360484410380358", - "name": "Blocksworld" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mortalroyale.exe", "os": "win32"}], - "hook": true, - "id": "1124360485895159919", - "name": "Mortal Royale" - }, - { - "executables": [{"is_launcher": false, "name": "time wasters/timewasters.exe", "os": "win32"}], - "hook": true, - "id": "1124360487291859035", - "name": "Time Wasters" - }, - { - "executables": [{"is_launcher": false, "name": "wasted/wasted.exe", "os": "win32"}], - "hook": true, - "id": "1124360488957001770", - "name": "WASTED" - }, - { - "executables": [{"is_launcher": false, "name": "my cute fuhrer/my cute fuhrer.exe", "os": "win32"}], - "hook": true, - "id": "1124360490437587085", - "name": "My Cute Fuhrer" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/herlieitriedtobelieve.exe", "os": "win32"}], - "hook": true, - "id": "1124360491851075736", - "name": "Her Lie I Tried To Believe" - }, - { - "executables": [{"is_launcher": false, "name": "apico/apico.exe", "os": "win32"}], - "hook": true, - "id": "1124360493671395328", - "name": "APICO" - }, - { - "executables": [{"is_launcher": false, "name": "high profits/game.exe", "os": "win32"}], - "hook": true, - "id": "1124360495034552431", - "name": "High Profits" - }, - { - "executables": [{"is_launcher": false, "name": "windows_content/ludus.exe", "os": "win32"}], - "hook": true, - "id": "1124360498079617125", - "name": "Ludus" - }, - { - "executables": [{"is_launcher": false, "name": "win64/genesisnoir-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360499774111926", - "name": "Genesis Noir" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/faultms1.exe", "os": "win32"}], - "hook": true, - "id": "1124360501305028739", - "name": "fault - milestone one" - }, - { - "executables": [ - {"is_launcher": false, "name": "greak memories of azur/greak memories of azur.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360502911455334", - "name": "Greak: Memories of Azur" - }, - { - "executables": [{"is_launcher": false, "name": "samurai shodown v special/ssvs.exe", "os": "win32"}], - "hook": true, - "id": "1124360504614334505", - "name": "SAMURAI SHODOWN V SPECIAL / \u30b5\u30e0\u30e9\u30a4\u30b9\u30d4\u30ea\u30c3\u30c4\u96f6\u30b9\u30da\u30b7\u30e3\u30eb" - }, - { - "executables": [{"is_launcher": false, "name": "paunch 2/paunch 2.exe", "os": "win32"}], - "hook": true, - "id": "1124360506069766315", - "name": "Paunch 2" - }, - { - "executables": [{"is_launcher": false, "name": "wild wet west/wild wet west.exe", "os": "win32"}], - "hook": true, - "id": "1124360507441299537", - "name": "Wild Wet West" - }, - { - "executables": [ - {"is_launcher": false, "name": "ragnarok the lost memories/the lost memories.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360509207085197", - "name": "Ragnarok: The Lost Memories" - }, - { - "executables": [{"is_launcher": false, "name": "th16tr/th16.exe", "os": "win32"}], - "hook": true, - "id": "1124360510826098868", - "name": "\u6771\u65b9\u5929\u7a7a\u748b \uff5e Hidden Star in Four Seasons. Demo" - }, - { - "executables": [{"is_launcher": false, "name": "escapedungeon/escapedungeon.exe", "os": "win32"}], - "hook": true, - "id": "1124360512197644358", - "name": "Escape Dungeon" - }, - { - "executables": [{"is_launcher": false, "name": "bob was hungry/bobwashungry.exe", "os": "win32"}], - "hook": true, - "id": "1124360513611120650", - "name": "Bob Was Hungry" - }, - { - "executables": [{"is_launcher": false, "name": "nuclear dawn/nucleardawn.exe", "os": "win32"}], - "hook": true, - "id": "1124360515066540063", - "name": "Nuclear Dawn" - }, - { - "executables": [{"is_launcher": false, "name": "tools up! demo/tools up demo.exe", "os": "win32"}], - "hook": true, - "id": "1124360516769431742", - "name": "Tools Up! Demo" - }, - { - "executables": [{"is_launcher": false, "name": "starsand/starsand.exe", "os": "win32"}], - "hook": true, - "id": "1124360518501675119", - "name": "Starsand" - }, - { - "executables": [{"is_launcher": false, "name": "house/house.exe", "os": "win32"}], - "hook": true, - "id": "1124360520368144404", - "name": "House" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bhl-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360521886486538", - "name": "Bunny Hop League" - }, - { - "executables": [ - {"is_launcher": false, "name": "sherlock holmes versus jack the ripper/game.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360523576782928", - "name": "Sherlock Holmes versus Jack the Ripper" - }, - { - "executables": [{"is_launcher": false, "name": "source of madness/source of madness.exe", "os": "win32"}], - "hook": true, - "id": "1124360525288067235", - "name": "Source of Madness" - }, - { - "executables": [{"is_launcher": false, "name": "wildlife park 2/wlp2-steam.exe", "os": "win32"}], - "hook": true, - "id": "1124360526869315797", - "name": "Wildlife Park 2" - }, - { - "executables": [{"is_launcher": false, "name": "movavi video suite 18/suite.exe", "os": "win32"}], - "hook": true, - "id": "1124360528463147118", - "name": "Movavi Video Suite 18" - }, - { - "executables": [ - {"is_launcher": false, "name": "winter resort simulator/winterresortsimulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360530166042754", - "name": "Winter Resort Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "obey/obey.exe", "os": "win32"}], - "hook": true, - "id": "1124360531755675758", - "name": "OBEY" - }, - { - "executables": [{"is_launcher": false, "name": "timeofdragons/tod.exe", "os": "win32"}], - "hook": true, - "id": "1124360533538258954", - "name": "Time of Dragons" - }, - { - "executables": [{"is_launcher": false, "name": "crisis in the kremlin/crisisinthekremlin.exe", "os": "win32"}], - "hook": true, - "id": "1124360535425699910", - "name": "Crisis in the Kremlin" - }, - { - "executables": [{"is_launcher": false, "name": "windows/railbound.exe", "os": "win32"}], - "hook": true, - "id": "1124360537011138720", - "name": "Railbound" - }, - { - "executables": [{"is_launcher": false, "name": "primordia/primordia.exe", "os": "win32"}], - "hook": true, - "id": "1124360538718224505", - "name": "Primordia" - }, - { - "executables": [{"is_launcher": false, "name": "unnyworld/unnyworld.exe", "os": "win32"}], - "hook": true, - "id": "1124360540257529939", - "name": "UnnyWorld" - }, - { - "executables": [ - {"is_launcher": false, "name": "conan the mighty pig/conan_the_mighty_pig1.0.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360541943644261", - "name": "Conan the mighty pig" - }, - { - "executables": [{"is_launcher": false, "name": "pemsa/pemsa.exe", "os": "win32"}], - "hook": true, - "id": "1124360543629758637", - "name": "pemsa" - }, - { - "executables": [ - {"is_launcher": false, "name": "slender hentai edition/slender hentai edition.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360545580093551", - "name": "Slender Hentai Edition" - }, - { - "executables": [{"is_launcher": false, "name": "clanfolk demo/clanfolk.exe", "os": "win32"}], - "hook": true, - "id": "1124360547060690964", - "name": "Clanfolk Demo" - }, - { - "executables": [{"is_launcher": false, "name": "voodoo garden/voodoo garden.exe", "os": "win32"}], - "hook": true, - "id": "1124360548323184770", - "name": "Voodoo Garden" - }, - { - "executables": [{"is_launcher": false, "name": "unworthy/unworthy.exe", "os": "win32"}], - "hook": true, - "id": "1124360549828935811", - "name": "Unworthy" - }, - { - "executables": [{"is_launcher": false, "name": "beyond blue/beyondblue.exe", "os": "win32"}], - "hook": true, - "id": "1124360551397601340", - "name": "Beyond Blue" - }, - { - "executables": [{"is_launcher": false, "name": "beyond_divinity/configtool.exe", "os": "win32"}], - "hook": true, - "id": "1124360552999833650", - "name": "Beyond Divinity" - }, - { - "executables": [ - {"is_launcher": false, "name": "nancy drew warnings at waverly academy/waverly.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360554560110602", - "name": "Nancy Drew: Warnings at Waverly Academy" - }, - { - "executables": [{"is_launcher": false, "name": "demo6/lawyer_guy_demo_6.exe", "os": "win32"}], - "hook": true, - "id": "1124360555990364312", - "name": "Lawyer Guy: Defender of Justice" - }, - { - "executables": [ - {"is_launcher": false, "name": "passpartout 2 the lost artist/passpartout2.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360557525483550", - "name": "Passpartout 2: The Lost Artist" - }, - { - "executables": [ - {"is_launcher": false, "name": "disciples ii rise of the elves/configeditor.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360559014457417", - "name": "Disciples II: Rise of the Elves" - }, - { - "executables": [{"is_launcher": false, "name": "win64/outofammo-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360560650244156", - "name": "Out of Ammo" - }, - { - "executables": [{"is_launcher": false, "name": "tt isle of man 2/tt2.exe", "os": "win32"}], - "hook": true, - "id": "1124360562265047122", - "name": "TT Isle of Man - Ride on the Edge 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/seven-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360563716272188", - "name": "Seven: Enhanced Edition" - }, - { - "executables": [{"is_launcher": false, "name": "kakele online - mmorpg/kakele.exe", "os": "win32"}], - "hook": true, - "id": "1124360565167509514", - "name": "Kakele Online - MMORPG" - }, - { - "executables": [{"is_launcher": false, "name": "win64/acleaninghorror-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360566736171008", - "name": "Paranormal Cleanup" - }, - { - "executables": [{"is_launcher": false, "name": "death rally/dr.exe", "os": "win32"}], - "hook": true, - "id": "1124360568074162247", - "name": "Death Rally (Classic)" - }, - { - "executables": [{"is_launcher": false, "name": "dinner with an owl/dwao.exe", "os": "win32"}], - "hook": true, - "id": "1124360569881899039", - "name": "Dinner with an Owl" - }, - { - "executables": [{"is_launcher": false, "name": "umineko chiru/umineko5to8.exe", "os": "win32"}], - "hook": true, - "id": "1124360571605762099", - "name": "Umineko When They Cry - Answer Arcs" - }, - { - "executables": [ - {"is_launcher": false, "name": "stranded sails - prologue/strandedsailsprologue.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360573228953771", - "name": "Stranded Sails - Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "cat quest demo/cat quest.exe", "os": "win32"}], - "hook": true, - "id": "1124360575074451496", - "name": "Cat Quest Demo" - }, - { - "executables": [{"is_launcher": false, "name": "miraclevn/miraclevn.exe", "os": "win32"}], - "hook": true, - "id": "1124360576978661458", - "name": "\uae30\uc801\uc758 \ubd84\uc2dd\uc9d1" - }, - { - "executables": [{"is_launcher": false, "name": "win64/castlerockbeach-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360578455064696", - "name": "Castle Rock Beach, West Australia" - }, - { - "executables": [{"is_launcher": false, "name": "seekingdawn/seekingdawn.exe", "os": "win32"}], - "hook": true, - "id": "1124360580111810752", - "name": "Seeking Dawn" - }, - { - "executables": [{"is_launcher": false, "name": "aces high iii/aceshighsteam.exe", "os": "win32"}], - "hook": true, - "id": "1124360581810499665", - "name": "Aces High III" - }, - { - "executables": [{"is_launcher": false, "name": "wyoming winter/wyomingwinter.exe", "os": "win32"}], - "hook": true, - "id": "1124360583572111390", - "name": "Wyoming Winter" - }, - { - "executables": [{"is_launcher": false, "name": "burn me twice/burn me twice.exe", "os": "win32"}], - "hook": true, - "id": "1124360585325334628", - "name": "Burn Me Twice" - }, - { - "executables": [{"is_launcher": false, "name": "win64/angledshooter-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360586944327723", - "name": "Zombie Builder Defense" - }, - { - "executables": [{"is_launcher": false, "name": "8bitinvaders/clientg.exe", "os": "win32"}], - "hook": true, - "id": "1124360588714328064", - "name": "8-Bit Invaders!" - }, - { - "executables": [{"is_launcher": false, "name": "drunkn bar fight on halloween/dbfh.exe", "os": "win32"}], - "hook": true, - "id": "1124360590564012042", - "name": "Drunkn Bar Fight on Halloween" - }, - { - "executables": [{"is_launcher": false, "name": "win64/kingsbounty2.exe", "os": "win32"}], - "hook": true, - "id": "1124360592111718531", - "name": "King's Bounty II" - }, - { - "executables": [{"is_launcher": false, "name": "catgirl lover/catgirl lover.exe", "os": "win32"}], - "hook": true, - "id": "1124360593554554910", - "name": "CATGIRL LOVER" - }, - { - "executables": [{"is_launcher": false, "name": "bin/trainzdiag.exe", "os": "win32"}], - "hook": true, - "id": "1124360595035140126", - "name": "Trainz Simulator 12" - }, - { - "executables": [{"is_launcher": false, "name": "guns, gore and cannoli/ggc.exe", "os": "win32"}], - "hook": true, - "id": "1124360596905787452", - "name": "Guns, Gore & Cannoli" - }, - { - "executables": [{"is_launcher": false, "name": "way of the samurai 3/wayofthesamurai3.exe", "os": "win32"}], - "hook": true, - "id": "1124360598562554029", - "name": "Way of the Samurai 3" - }, - { - "executables": [{"is_launcher": false, "name": "club soccer director 2021/csd21.exe", "os": "win32"}], - "hook": true, - "id": "1124360600324157510", - "name": "Club Soccer Director 2021" - }, - { - "executables": [ - {"is_launcher": false, "name": "galaxy of pen and paper/galaxyofpenandpaper.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360601909608488", - "name": "Galaxy of Pen & Paper" - }, - { - "executables": [{"is_launcher": false, "name": "nba2k14/nba2k14.exe", "os": "win32"}], - "hook": true, - "id": "1124360603448913960", - "name": "NBA 2K14" - }, - { - "executables": [{"is_launcher": false, "name": "sea dogs to each his own/engine.exe", "os": "win32"}], - "hook": true, - "id": "1124360606766616638", - "name": "Sea Dogs: To Each His Own" - }, - { - "executables": [{"is_launcher": false, "name": "higurashi 04 - himatsubushi/higurashiep04.exe", "os": "win32"}], - "hook": true, - "id": "1124360608360443934", - "name": "Higurashi When They Cry Hou - Ch.4 Himatsubushi" - }, - { - "executables": [{"is_launcher": false, "name": "zombie kill of the week - reborn/reborn.exe", "os": "win32"}], - "hook": true, - "id": "1124360609996230786", - "name": "Zombie Kill of the Week - Reborn" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "the incredible adventures of van helsing iii/vanhelsing_x64.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360612043046922", - "name": "The Incredible Adventures of Van Helsing III" - }, - { - "executables": [{"is_launcher": false, "name": "c3/c3.exe", "os": "win32"}], - "hook": true, - "id": "1124360613716570132", - "name": "Caesar 3" - }, - { - "executables": [{"is_launcher": false, "name": "bin64/aerofly_fs_2.exe", "os": "win32"}], - "hook": true, - "id": "1124360615398494360", - "name": "Aerofly FS 2 Flight Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "netsoccer2/netsoccer2.exe", "os": "win32"}], - "hook": true, - "id": "1124360617243983884", - "name": "Netsoccer2" - }, - { - "executables": [{"is_launcher": false, "name": "ohmstudio/ohm_studio_net_mp_host.exe", "os": "win32"}], - "hook": true, - "id": "1124360618774908968", - "name": "Ohm Studio" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "star ocean - the last hope - 4k & full hd remaster/staroceanthelasthope.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1124360620481982655", - "name": "STAR OCEAN\u2122 - THE LAST HOPE\u2122 - 4K & Full HD Remaster" - }, - { - "executables": [{"is_launcher": false, "name": "pngtuber maker/pngtuber maker.exe", "os": "win32"}], - "hook": true, - "id": "1124360622184878291", - "name": "PngTuber Maker" - }, - { - "executables": [{"is_launcher": false, "name": "motogp2013/motogp13.exe", "os": "win32"}], - "hook": true, - "id": "1124360623782899732", - "name": "MotoGP\u212213" - }, - { - "executables": [{"is_launcher": false, "name": "neko arena/neko arena.exe", "os": "win32"}], - "hook": true, - "id": "1124360625963946054", - "name": "NEKO ARENA" - }, - { - "executables": [ - {"is_launcher": false, "name": "mx vs atv supercross encore edition/mxstorm_pc.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360627666825388", - "name": "MX vs. ATV Supercross Encore" - }, - { - "executables": [{"is_launcher": false, "name": "concrete jungle/concrete jungle.exe", "os": "win32"}], - "hook": true, - "id": "1124360629327777932", - "name": "Concrete Jungle" - }, - { - "executables": [{"is_launcher": false, "name": "sky haven/skyhaven.exe", "os": "win32"}], - "hook": true, - "id": "1124360631164878930", - "name": "Sky Haven" - }, - { - "executables": [{"is_launcher": false, "name": "win64/onset-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360632838410261", - "name": "Onset" - }, - { - "executables": [{"is_launcher": false, "name": "i, zombie/i, zombie.exe", "os": "win32"}], - "hook": true, - "id": "1124360634600009748", - "name": "I, Zombie" - }, - { - "executables": [{"is_launcher": false, "name": "bounty below/bountybelow.exe", "os": "win32"}], - "hook": true, - "id": "1124360636273545346", - "name": "Bounty Below" - }, - { - "executables": [ - {"is_launcher": false, "name": "digimon world next order/digimon world next order.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360637829623938", - "name": "Digimon World: Next Order" - }, - { - "executables": [{"is_launcher": false, "name": "gorilla soccer/gorilla soccer.exe", "os": "win32"}], - "hook": true, - "id": "1124360639192780831", - "name": "Gorilla Soccer" - }, - { - "executables": [{"is_launcher": false, "name": "projekt passion/projektpassion.exe", "os": "win32"}], - "hook": true, - "id": "1124360640782417930", - "name": "Projekt: Passion" - }, - { - "executables": [{"is_launcher": false, "name": "momo.exe/momo.exe.exe", "os": "win32"}], - "hook": true, - "id": "1124360642233643138", - "name": "MOMO.EXE" - }, - { - "executables": [{"is_launcher": false, "name": "sniper strike special ops/sniper strike.exe", "os": "win32"}], - "hook": true, - "id": "1124360644074946673", - "name": "Sniper Strike : Special Ops" - }, - { - "executables": [ - {"is_launcher": false, "name": "mxgp2 - the official motocross videogame/mxgp_2x64.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360645744283699", - "name": "MXGP2 - The Official Motocross Videogame" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sqcgame.exe", "os": "win32"}], - "hook": true, - "id": "1124360647396835338", - "name": "Survival Quiz CITY Visitor's Pass" - }, - { - "executables": [ - {"is_launcher": false, "name": "disciples liberation demo/disciples_liberation.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360648923557998", - "name": "Disciples: Liberation Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "syberia the world before - prologue/syberiatwbp.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360650609676309", - "name": "Syberia The World Before - Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "out-windows/mafiaonline.exe", "os": "win32"}], - "hook": true, - "id": "1124360652358692864", - "name": "\u041c\u0430\u0444\u0438\u044f \u041e\u043d\u043b\u0430\u0439\u043d" - }, - { - "executables": [{"is_launcher": false, "name": "win64/as-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360654015447202", - "name": "Laysara: Summit Kingdom Demo" - }, - { - "executables": [{"is_launcher": false, "name": "zup! zero 2/zup! zero 2.exe", "os": "win32"}], - "hook": true, - "id": "1124360655676395520", - "name": "Zup! Zero 2" - }, - { - "executables": [{"is_launcher": false, "name": "warhammer quest/warhammerquest.exe", "os": "win32"}], - "hook": true, - "id": "1124360657022763100", - "name": "Warhammer Quest" - }, - { - "executables": [{"is_launcher": false, "name": "ancient planet/game.exe", "os": "win32"}], - "hook": true, - "id": "1124360660462088252", - "name": "Ancient Planet" - }, - { - "executables": [{"is_launcher": false, "name": "hentai beach/nw.exe", "os": "win32"}], - "hook": true, - "id": "1124360662131425361", - "name": "Hentai Beach" - }, - { - "executables": [{"is_launcher": false, "name": "defy gravity/defygravity.exe", "os": "win32"}], - "hook": true, - "id": "1124360663834308678", - "name": "Defy Gravity" - }, - { - "executables": [{"is_launcher": false, "name": "smile for me/smile for me.exe", "os": "win32"}], - "hook": true, - "id": "1124360665730138132", - "name": "Smile For Me" - }, - { - "executables": [{"is_launcher": false, "name": "win64/openvrbenchmark.exe", "os": "win32"}], - "hook": true, - "id": "1124360667428835419", - "name": "OpenVR Benchmark" - }, - { - "executables": [{"is_launcher": false, "name": "loop loop dx/loop-loop dx.exe", "os": "win32"}], - "hook": true, - "id": "1124360669106552902", - "name": "Loop-Loop DX" - }, - { - "executables": [{"is_launcher": false, "name": "tropico/tropico.exe", "os": "win32"}], - "hook": true, - "id": "1124360670671024288", - "name": "Tropico" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vrpooldemo-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360672533299390", - "name": "SportsBar VR" - }, - { - "executables": [{"is_launcher": false, "name": "dreddvsdeath/dredd.exe", "os": "win32"}], - "hook": true, - "id": "1124360673909026986", - "name": "Judge Dredd: Dredd vs Death" - }, - { - "executables": [{"is_launcher": false, "name": "fast and low/fastandlow.exe", "os": "win32"}], - "hook": true, - "id": "1124360675595145256", - "name": "Fast and Low" - }, - { - "executables": [{"is_launcher": false, "name": "win64/theisland-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360677314801816", - "name": "THE SHORE" - }, - { - "executables": [{"is_launcher": false, "name": "hentai honeys slider/hentaihoneysslider.exe", "os": "win32"}], - "hook": true, - "id": "1124360678858309652", - "name": "Hentai Honeys Slider" - }, - { - "executables": [{"is_launcher": false, "name": "mysunnyresort/mysunnyresort.exe", "os": "win32"}], - "hook": true, - "id": "1124360680544423966", - "name": "My Sunny Resort" - }, - { - "executables": [{"is_launcher": false, "name": "win32/gday410-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1124360682087923782", - "name": "Garbage Day" - }, - { - "executables": [{"is_launcher": false, "name": "recipe for disaster/recipe for disaster.exe", "os": "win32"}], - "hook": true, - "id": "1124360684231217162", - "name": "Recipe for Disaster" - }, - { - "executables": [{"is_launcher": false, "name": "hunt down the freeman/hdtf.exe", "os": "win32"}], - "hook": true, - "id": "1124360685883768882", - "name": "Hunt Down The Freeman" - }, - { - "executables": [{"is_launcher": false, "name": "sky force reloaded/sky force reloaded.exe", "os": "win32"}], - "hook": true, - "id": "1124360687590854738", - "name": "Sky Force Reloaded" - }, - { - "executables": [{"is_launcher": false, "name": "mana spark/manaspark.exe", "os": "win32"}], - "hook": true, - "id": "1124360689012719696", - "name": "Mana Spark" - }, - { - "executables": [{"is_launcher": false, "name": "mixcraft 8 home studio/mixcraft8.exe", "os": "win32"}], - "hook": true, - "id": "1124360690497499218", - "name": "Mixcraft 8 Home Studio" - }, - { - "executables": [{"is_launcher": false, "name": "creepy tale/creepytale.exe", "os": "win32"}], - "hook": true, - "id": "1124360692275888199", - "name": "Creepy Tale" - }, - { - "executables": [{"is_launcher": false, "name": "chaos combat chess/tremor.exe", "os": "win32"}], - "hook": true, - "id": "1124360693785841866", - "name": "Chaos Combat Chess" - }, - { - "executables": [{"is_launcher": false, "name": "sakura hime/sakura hime.exe", "os": "win32"}], - "hook": true, - "id": "1124360695656493118", - "name": "Sakura Hime" - }, - { - "executables": [{"is_launcher": false, "name": "attack on toys/attack on toys.exe", "os": "win32"}], - "hook": true, - "id": "1124360697065787434", - "name": "Attack on Toys" - }, - { - "executables": [{"is_launcher": false, "name": "distraint 2/distraint2.exe", "os": "win32"}], - "hook": true, - "id": "1124360698907078786", - "name": "DISTRAINT 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "back to the future ep 1/backtothefuture101.exe", "os": "win32"} - ], - "hook": true, - "id": "1124360700630945823", - "name": "Back to the Future: Ep 1 - It's About Time" - }, - { - "aliases": ["NARAKA: BLADEPOINT"], - "executables": [{"is_launcher": false, "name": "naraka bladepoint/narakabladepoint.exe", "os": "win32"}], - "hook": true, - "id": "1126956844993232987", - "name": "NARAKA: BLADEPOINT" - }, - { - "aliases": [ - "DAVE THE DIVER", - "\u30c7\u30a4\u30f4\u30fb\u30b6\u30fb\u30c0\u30a4\u30d0\u30fc", - "\ub370\uc774\ube0c \ub354 \ub2e4\uc774\ubc84" - ], - "executables": [{"is_launcher": false, "name": "dave the diver/davethediver.exe", "os": "win32"}], - "hook": true, - "id": "1126960184024104980", - "name": "DAVE THE DIVER" - }, - { - "aliases": ["Splitgate"], - "executables": [{"is_launcher": false, "name": "win64/portalwars-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504111021269002", - "name": "Splitgate" - }, - { - "aliases": [ - "\u51b0\u4e0e\u706b\u4e4b\u821e A Dance of Fire and Ice", - "\u51b0\u8207\u706b\u4e4b\u821e A Dance of Fire and Ice" - ], - "executables": [ - {"is_launcher": false, "name": "a dance of fire and ice/a dance of fire and ice.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504116796837939", - "name": "A Dance of Fire and Ice" - }, - { - "aliases": ["\u591c\u65cf\u5d1b\u8d77"], - "executables": [{"is_launcher": false, "name": "vrising/vrising.exe", "os": "win32"}], - "hook": true, - "id": "1129504121708355634", - "name": "V Rising" - }, - { - "aliases": [ - "\u30d7\u30e9\u30cd\u30c3\u30c8 \u30ba\u30fc", - "\u52d5\u7269\u5712\u4e4b\u661f", - "\ud50c\ub798\ub2db \uc8fc" - ], - "executables": [{"is_launcher": false, "name": "planet zoo/planetzoo.exe", "os": "win32"}], - "hook": true, - "id": "1129504125504209006", - "name": "Planet Zoo" - }, - { - "executables": [{"is_launcher": false, "name": "ironsight_wpg/ironsight.exe", "os": "win32"}], - "hook": true, - "id": "1129504145091608666", - "name": "Ironsight" - }, - { - "aliases": ["Escape Room - Der kranke Kollege"], - "executables": [ - {"is_launcher": false, "name": "escape room - the sick colleague/escape room.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504147457200128", - "name": "Escape Room - The Sick Colleague" - }, - { - "aliases": ["Muse Dash"], - "executables": [{"is_launcher": false, "name": "muse dash/musedash.exe", "os": "win32"}], - "hook": true, - "id": "1129504149915050055", - "name": "Muse Dash" - }, - { - "aliases": ["GTFO"], - "executables": [{"is_launcher": false, "name": "gtfo/gtfo.exe", "os": "win32"}], - "hook": true, - "id": "1129504152809132113", - "name": "GTFO" - }, - { - "aliases": ["VRoid Studio"], - "executables": [{"is_launcher": false, "name": "vroid studio/vroidstudio.exe", "os": "win32"}], - "hook": true, - "id": "1129504156466552893", - "name": "VRoid Studio" - }, - { - "aliases": ["Landwirtschafts-Simulator 22"], - "executables": [{"is_launcher": false, "name": "x64/farmingsimulator2022game.exe", "os": "win32"}], - "hook": true, - "id": "1129504162200166401", - "name": "Farming Simulator 22" - }, - { - "aliases": ["BIOHAZARD RE:2", "RESIDENT EVIL 2 / BIOHAZARD RE:2"], - "executables": [{"is_launcher": false, "name": "resident evil 2 biohazard re2/re2.exe", "os": "win32"}], - "hook": true, - "id": "1129504165727584307", - "name": "Resident Evil 2" - }, - { - "executables": [{"is_launcher": false, "name": "monopoly plus/monopoly.exe", "os": "win32"}], - "hook": true, - "id": "1129504168961384519", - "name": "Monopoly Plus" - }, - { - "aliases": ["\ubc29 \ud0c8\ucd9c \uc2dc\ubbac\ub808\uc774\ud130"], - "executables": [{"is_launcher": false, "name": "escape simulator/escape simulator.exe", "os": "win32"}], - "hook": true, - "id": "1129504170781724772", - "name": "Escape Simulator" - }, - { - "aliases": ["Gunfire Reborn", "\u69cd\u706b\u91cd\u751f"], - "executables": [{"is_launcher": false, "name": "gunfire reborn/gunfire reborn.exe", "os": "win32"}], - "hook": true, - "id": "1129504174078443592", - "name": "Gunfire Reborn" - }, - { - "aliases": [ - "Eternal Return", - "Eternal Return: Black Survival", - "\u30a8\u30bf\u30fc\u30ca\u30eb\u30ea\u30bf\u30fc\u30f3", - "\u30d6\u30e9\u30c3\u30af\u30b5\u30d0\u30a4\u30d0\u30eb: \u6c38\u9060\u56de\u5e30", - "\u6c38\u6046\u8f2a\u8ff4", - "\u6c38\u6046\u8f2a\u8ff4: \u9ed1\u8272\u5016\u5b58\u8005", - "\ube14\ub799\uc11c\ubc14\uc774\ubc8c: \uc601\uc6d0\ud68c\uadc0", - "\uc774\ud130\ub110 \ub9ac\ud134" - ], - "executables": [{"is_launcher": false, "name": "eternal return/eternalreturn.exe", "os": "win32"}], - "hook": true, - "id": "1129504177320640533", - "name": "Eternal Return" - }, - { - "aliases": ["Age of Empires IV: Anniversary Edition"], - "executables": [{"is_launcher": false, "name": "age of empires iv/reliccardinal.exe", "os": "win32"}], - "hook": true, - "id": "1129504181414273136", - "name": "Age of Empires IV" - }, - { - "aliases": ["Bombergrounds: Reborn"], - "executables": [{"is_launcher": false, "name": "bombergrounds/bombergrounds.exe", "os": "win32"}], - "hook": true, - "id": "1129504184849420288", - "name": "Bombergrounds: Battle Royale" - }, - { - "aliases": ["\u558b\u8840\u5fa9\u4ec7"], - "executables": [{"is_launcher": false, "name": "win64/back4blood.exe", "os": "win32"}], - "hook": true, - "id": "1129504189991624774", - "name": "Back 4 Blood" - }, - { - "aliases": ["Catan Universe"], - "executables": [{"is_launcher": false, "name": "catan universe/catanuniverse.exe", "os": "win32"}], - "hook": true, - "id": "1129504192885706802", - "name": "Catan Universe" - }, - { - "aliases": ["Prop and Seek"], - "executables": [{"is_launcher": false, "name": "win64/propandseekclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504195398082723", - "name": "Prop and Seek" - }, - { - "aliases": [ - "LEGO \u00ae Gwiezdne Wojny\u2122: Saga Skywalker\u00f3w", - "LEGO\u00ae Star Wars\u2122 : La Saga Skywalker", - "LEGO\u00ae Star Wars\u2122: Die Skywalker Saga", - "LEGO\u00ae Star Wars\u2122: La Saga Skywalker" - ], - "executables": [ - { - "is_launcher": false, - "name": "lego star wars - the skywalker saga/legostarwarsskywalkersaga_dx11.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1129504202335469640", - "name": "LEGO\u00ae Star Wars\u2122: The Skywalker Saga" - }, - { - "aliases": ["Unpacking \u30a2\u30f3\u30d1\u30c3\u30ad\u30f3\u30b0", "Unpacking \uc5b8\ud328\ud0b9"], - "executables": [{"is_launcher": false, "name": "unpacking/unpacking.exe", "os": "win32"}], - "hook": true, - "id": "1129504205820928041", - "name": "Unpacking" - }, - { - "aliases": ["BIOHAZARD RE:4"], - "executables": [{"is_launcher": false, "name": "resident evil 4 biohazard re4/re4.exe", "os": "win32"}], - "hook": true, - "id": "1129504209226711190", - "name": "Resident Evil 4" - }, - { - "aliases": ["IdleOn - The Idle MMO"], - "executables": [{"is_launcher": false, "name": "legends of idleon/legendsofidleon.exe", "os": "win32"}], - "hook": true, - "id": "1129504214918385775", - "name": "Legends of Idleon MMO" - }, - { - "aliases": ["BIOHAZARD RE:4 Chainsaw Demo"], - "executables": [ - {"is_launcher": false, "name": "resident evil 4 biohazard re4 chainsaw demo/re4demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504219423068241", - "name": "Resident Evil 4 Chainsaw Demo" - }, - { - "aliases": ["STAR WARS\u2122: Squadrons"], - "executables": [{"is_launcher": false, "name": "star wars squadrons/starwarssquadrons.exe", "os": "win32"}], - "hook": true, - "id": "1129504224384925726", - "name": "STAR WARS\u2122: Squadrons" - }, - { - "aliases": ["Generation Zero", "Generation Zero\u00ae"], - "executables": [{"is_launcher": false, "name": "generationzero/generationzero_f.exe", "os": "win32"}], - "hook": true, - "id": "1129504233562062928", - "name": "Generation Zero\u00ae" - }, - { - "aliases": ["Scavengers", "Scavengers Playtest"], - "executables": [{"is_launcher": false, "name": "win64/scavenger-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504245608104027", - "name": "Scavengers" - }, - { - "aliases": ["BLEACH Brave Souls - Action 3D"], - "executables": [{"is_launcher": false, "name": "bleach brave souls/bleachbravesouls.exe", "os": "win32"}], - "hook": true, - "id": "1129504248925802528", - "name": "BLEACH Brave Souls - 3D Action" - }, - { - "aliases": ["BIOHAZARD RE:3 Raccoon City Demo"], - "executables": [{"is_launcher": false, "name": "re3demo/re3demo.exe", "os": "win32"}], - "hook": true, - "id": "1129504252381904987", - "name": "Resident Evil 3: Raccoon City Demo" - }, - { - "aliases": ["\u30ab\u30fc\u30c8\u30e9\u30a4\u30c0\u30fc \u30c9\u30ea\u30d5\u30c8"], - "executables": [{"is_launcher": false, "name": "win64/kartdrift-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504254663594115", - "name": "KartRider: Drift" - }, - { - "aliases": ["Kingdom Two Crowns"], - "executables": [{"is_launcher": false, "name": "kingdom two crowns/kingdomtwocrowns.exe", "os": "win32"}], - "hook": true, - "id": "1129504257700282548", - "name": "Kingdom Two Crowns" - }, - { - "aliases": ["SUPER PEOPLE 2"], - "executables": [ - {"is_launcher": false, "name": "win64/bravohotelclient-win64-shipping.protected.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504260552413234", - "name": "SUPER PEOPLE" - }, - { - "aliases": ["Potion Craft: Alchemist Simulator"], - "executables": [{"is_launcher": false, "name": "potion craft/potion craft.exe", "os": "win32"}], - "hook": true, - "id": "1129504263014457374", - "name": "Potion Craft" - }, - { - "executables": [{"is_launcher": false, "name": "trackmania/trackmania.exe", "os": "win32"}], - "hook": true, - "id": "1129504266848051290", - "name": "Trackmania" - }, - { - "aliases": ["Mr.Mine"], - "executables": [{"is_launcher": false, "name": "win-unpacked/mr.mine.exe", "os": "win32"}], - "hook": true, - "id": "1129504270438387782", - "name": "Mr.Mine" - }, - { - "aliases": ["VTuber Maker"], - "executables": [{"is_launcher": false, "name": "vtuber maker/vtuber maker.exe", "os": "win32"}], - "hook": true, - "id": "1129504273588310097", - "name": "VTuber Maker" - }, - { - "aliases": ["Counter-Strike Nexon: Studio", "Counter-Strike Nexon: Zombies"], - "executables": [{"is_launcher": false, "name": "bin/cstrike-online.exe", "os": "win32"}], - "hook": true, - "id": "1129504276713062443", - "name": "Counter-Strike Nexon: Studio" - }, - { - "aliases": [ - "Shop Titans : Craft et Cr\u00e9er", - "Shop Titans: Craft & Bauen", - "Shop Titans: Crear y Construye", - "Shop Titans: Crie e Construa", - "Shop Titans: \u00dcret ve \u0130n\u015fa Et", - "Shop Titans: \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439 \u0438 \u0441\u0442\u0440\u043e\u0439" - ], - "executables": [{"is_launcher": false, "name": "shoptitan/shoptitan.exe", "os": "win32"}], - "hook": true, - "id": "1129504280517300234", - "name": "Shop Titans" - }, - { - "aliases": ["ISLANDERS"], - "executables": [{"is_launcher": false, "name": "islanders/islanders.exe", "os": "win32"}], - "hook": true, - "id": "1129504289283391610", - "name": "ISLANDERS" - }, - { - "aliases": ["Deduction"], - "executables": [{"is_launcher": false, "name": "deduction/deduction.exe", "os": "win32"}], - "hook": true, - "id": "1129504295381913732", - "name": "Deducto" - }, - { - "aliases": ["Rubber Bandits: Summer Prologue"], - "executables": [ - {"is_launcher": false, "name": "rubber bandits summer prologue/rubberbandits.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504298972225566", - "name": "Rubber Bandits: Summer Prologue" - }, - { - "aliases": ["Lobotomy Corporation"], - "executables": [{"is_launcher": false, "name": "lobotomycorp/lobotomycorp.exe", "os": "win32"}], - "hook": true, - "id": "1129504302382202910", - "name": "Lobotomy Corporation" - }, - { - "aliases": ["SuchArt: Creative Space"], - "executables": [{"is_launcher": false, "name": "suchart creative space/suchart.exe", "os": "win32"}], - "hook": true, - "id": "1129504304814891028", - "name": "SuchArt: Creative Space" - }, - { - "aliases": ["Street Fighter 6"], - "executables": [{"is_launcher": false, "name": "street fighter 6/streetfighter6.exe", "os": "win32"}], - "hook": true, - "id": "1129504307851567196", - "name": "Street Fighter\u2122 6" - }, - { - "aliases": ["\u4ec1\u738b\uff12 Complete Edition"], - "executables": [{"is_launcher": false, "name": "nioh2/nioh2.exe", "os": "win32"}], - "hook": true, - "id": "1129504310468825168", - "name": "Nioh 2 \u2013 The Complete Edition" - }, - { - "executables": [ - {"is_launcher": false, "name": "resident evil 2 biohazard re2 1-shot demo/re2.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504312805048360", - "name": "RESIDENT EVIL 2 / BIOHAZARD RE:2 \"1-Shot Demo\"" - }, - { - "aliases": [ - "\u30cb\u30e5\u30fc\u30c0\u30f3\u30ac\u30f3\u30ed\u30f3\u30d1V3 \u307f\u3093\u306a\u306e\u30b3\u30ed\u30b7\u30a2\u30a4\u65b0\u5b66\u671f" - ], - "executables": [{"is_launcher": false, "name": "danganronpa v3 killing harmony/dangan3win.exe", "os": "win32"}], - "hook": true, - "id": "1129504315137085523", - "name": "Danganronpa V3: Killing Harmony" - }, - { - "aliases": ["Tabletopia"], - "executables": [{"is_launcher": false, "name": "tabletopia/tabletopia.exe", "os": "win32"}], - "hook": true, - "id": "1129504317460725761", - "name": "Tabletopia" - }, - { - "aliases": ["Knockout City"], - "executables": [ - {"is_launcher": false, "name": "knockout city/knockoutcity.exe", "os": "win32"}, - {"is_launcher": false, "name": "knockoutcity/knockoutcity.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504320161861763", - "name": "Knockout City\u2122" - }, - { - "aliases": ["College Kings - The Complete Season"], - "executables": [{"is_launcher": false, "name": "college kings/collegekings.exe", "os": "win32"}], - "hook": true, - "id": "1129504322070257735", - "name": "College Kings" - }, - { - "aliases": [ - "Phoenix Wright: Ace Attorney Trilogy / \u9006\u8ee2\u88c1\u5224123 \u6210\u6b69\u5802\u30bb\u30ec\u30af\u30b7\u30e7\u30f3", - "\u9006\u8ee2\u88c1\u5224123 \u6210\u6b69\u5802\u30bb\u30ec\u30af\u30b7\u30e7\u30f3" - ], - "executables": [{"is_launcher": false, "name": "phoenix wright ace attorney trilogy/pwaat.exe", "os": "win32"}], - "hook": true, - "id": "1129504324851089498", - "name": "Phoenix Wright: Ace Attorney Trilogy" - }, - { - "aliases": ["FIVE NIGHTS AT FREDDY'S VR: HELP WANTED"], - "executables": [{"is_launcher": false, "name": "win64/freddys-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504328848265387", - "name": "FIVE NIGHTS AT FREDDY'S: HELP WANTED" - }, - { - "aliases": ["World War Z"], - "executables": [{"is_launcher": false, "name": "pc/wwzretail.exe", "os": "win32"}], - "hook": true, - "id": "1129504331570356244", - "name": "World War Z: Aftermath" - }, - { - "aliases": ["Street Fighter 6 Demo"], - "executables": [{"is_launcher": false, "name": "street fighter 6 demo/streetfighter6.exe", "os": "win32"}], - "hook": true, - "id": "1129504337127809124", - "name": "Street Fighter\u2122 6 Demo" - }, - { - "aliases": ["SMASH LEGENDS"], - "executables": [{"is_launcher": false, "name": "smash legends/smash_legends.exe", "os": "win32"}], - "hook": true, - "id": "1129504348368551947", - "name": "SMASH LEGENDS" - }, - { - "aliases": [ - "Guardianes de la Noche\u00a0-Kimetsu no Yaiba- Las Cr\u00f3nicas de Hinokami", - "\uadc0\uba78\uc758 \uce7c\ub0a0 \ud788\ub178\uce74\ubbf8 \ud608\ud48d\ub2f4" - ], - "executables": [{"is_launcher": false, "name": "win64/apk-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504358111920229", - "name": "Demon Slayer -Kimetsu no Yaiba- The Hinokami Chronicles" - }, - { - "aliases": ["KARDS"], - "executables": [{"is_launcher": false, "name": "win64/kards-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504366387273758", - "name": "KARDS - The WWII Card Game" - }, - { - "aliases": ["Feign"], - "executables": [{"is_launcher": false, "name": "the feign/feign.exe", "os": "win32"}], - "hook": true, - "id": "1129504370157965382", - "name": "Feign" - }, - { - "aliases": ["World Boss"], - "executables": [{"is_launcher": false, "name": "world boss/worldboss.exe", "os": "win32"}], - "hook": true, - "id": "1129504374104793099", - "name": "World Boss" - }, - { - "aliases": ["\u6d1b\u592b\u514b\u62c9\u592b\u7279\u884c\u52d5\uff1a\u58ae\u843d\u73a9\u5076 Demo"], - "executables": [{"is_launcher": false, "name": "win64/paralogue-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504378257166447", - "name": "Operation Lovecraft: Fallen Doll Demo" - }, - { - "aliases": [ - "Craftopia", - "Craftopia / \u30af\u30e9\u30d5\u30c8\u30d4\u30a2", - "Craftopia / \u59cb\u4e16\u6a02\u571f" - ], - "executables": [{"is_launcher": false, "name": "craftopia/craftopia.exe", "os": "win32"}], - "hook": true, - "id": "1129504382485012522", - "name": "Craftopia" - }, - { - "aliases": ["There is no game : Jam Edition 2015"], - "executables": [ - {"is_launcher": false, "name": "there is no game jam edition 2015/ting_jam.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504393608319016", - "name": "There is no game: Jam Edition 2015" - }, - { - "aliases": ["\u30af\u30ed\u30ce\u30fb\u30c8\u30ea\u30ac\u30fc"], - "executables": [{"is_launcher": false, "name": "chrono trigger/chrono trigger.exe", "os": "win32"}], - "hook": true, - "id": "1129504397752279221", - "name": "CHRONO TRIGGER" - }, - { - "aliases": ["Pathfinder: Wrath of the Righteous - Enhanced Edition"], - "executables": [{"is_launcher": false, "name": "pathfinder second adventure/wrath.exe", "os": "win32"}], - "hook": true, - "id": "1129504403959861478", - "name": "Pathfinder: Wrath of the Righteous" - }, - { - "aliases": ["Yakuza Kiwami"], - "executables": [{"is_launcher": false, "name": "media/yakuzakiwami.exe", "os": "win32"}], - "hook": true, - "id": "1129504417666834492", - "name": "Yakuza Kiwami" - }, - { - "aliases": ["The Complex: Found Footage"], - "executables": [{"is_launcher": false, "name": "win64/thecomplexff-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504428517507132", - "name": "The Complex: Found Footage" - }, - { - "aliases": ["Sally Face", "Sally Face - Episode One"], - "executables": [{"is_launcher": false, "name": "sally face/sally face.exe", "os": "win32"}], - "hook": true, - "id": "1129504432829235365", - "name": "Sally Face" - }, - { - "aliases": ["Soccer Manager 2022"], - "executables": [{"is_launcher": false, "name": "soccer manager 2022/sm22.exe", "os": "win32"}], - "hook": true, - "id": "1129504436054675476", - "name": "Soccer Manager 2022" - }, - { - "aliases": ["ONE PIECE\u6d77\u8cca\u7121\u96d94", "\uc6d0\ud53c\uc2a4 \ud574\uc801\ubb34\uc30d 4"], - "executables": [{"is_launcher": false, "name": "oppw4/oppw4.exe", "os": "win32"}], - "hook": true, - "id": "1129504438156009532", - "name": "ONE PIECE: PIRATE WARRIORS 4" - }, - { - "aliases": [ - "\u0e42\u0e17\u0e23\u0e31\u0e21\u0e2d\u0e2d\u0e19 Online", - "\u30c8\u30fc\u30e9\u30e0\u30aa\u30f3\u30e9\u30a4\u30f3", - "\u6258\u862d\u7570\u4e16\u9304 Online" - ], - "executables": [{"is_launcher": false, "name": "toram online/toramonline.exe", "os": "win32"}], - "hook": true, - "id": "1129504440781656134", - "name": "Toram Online" - }, - { - "aliases": ["Soccer Manager 2021"], - "executables": [{"is_launcher": false, "name": "soccer manager 2021/sm21.exe", "os": "win32"}], - "hook": true, - "id": "1129504447832268830", - "name": "Soccer Manager 2021" - }, - { - "aliases": ["\u30aa\u30af\u30c8\u30d1\u30b9\u30c8\u30e9\u30d9\u30e9\u30fc"], - "executables": [{"is_launcher": false, "name": "win64/octopath_traveler-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504460033511457", - "name": "OCTOPATH TRAVELER" - }, - { - "aliases": ["The Survivalists"], - "executables": [{"is_launcher": false, "name": "the survivalists/the survivalists.exe", "os": "win32"}], - "hook": true, - "id": "1129504482288476282", - "name": "The Survivalists" - }, - { - "aliases": ["ACE COMBAT\u2122 7: SKIES UNKNOWN"], - "executables": [{"is_launcher": false, "name": "ace combat 7/ace7game.exe", "os": "win32"}], - "hook": true, - "id": "1129504507429146734", - "name": "ACE COMBAT\u2122 7: SKIES UNKNOWN" - }, - { - "aliases": ["The Last of Us\u2122 Parte I"], - "executables": [{"is_launcher": false, "name": "the last of us part i/tlou-i.exe", "os": "win32"}], - "hook": true, - "id": "1129504517474504826", - "name": "The Last of Us\u2122 Part I" - }, - { - "aliases": ["Spiritfarer\u00ae: Edi\u00e7\u00e3o Farewell", "Spiritfarer\u00ae: Farewell Edition"], - "executables": [{"is_launcher": false, "name": "kami/spiritfarer.exe", "os": "win32"}], - "hook": true, - "id": "1129504521626861732", - "name": "Spiritfarer" - }, - { - "aliases": [ - "\u706b\u70ac\u4e4b\u5149\uff1a\u7121\u9650", - "\ud1a0\uce58\ub77c\uc774\ud2b8:\uc778\ud53c\ub2c8\ud2b8" - ], - "executables": [{"is_launcher": false, "name": "win64/torchlight_infinite.exe", "os": "win32"}], - "hook": true, - "id": "1129504534809550858", - "name": "Torchlight: Infinite" - }, - { - "aliases": ["shapez"], - "executables": [{"is_launcher": false, "name": "shapez.io/shapezio.exe", "os": "win32"}], - "hook": true, - "id": "1129504549191831552", - "name": "shapez.io" - }, - { - "aliases": ["SOLASTA Crown of the Magister"], - "executables": [{"is_launcher": false, "name": "slasta_cotm/solasta.exe", "os": "win32"}], - "hook": true, - "id": "1129504561011380275", - "name": "Solasta: Crown of the Magister" - }, - { - "aliases": ["SpongeBob SquarePants: Battle for Bikini Bottom - Rehydrated"], - "executables": [{"is_launcher": false, "name": "win64/pineapple-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504567118274620", - "name": "SpongeBob SquarePants: Battle for Bikini Bottom - Rehydrated" - }, - { - "executables": [{"is_launcher": false, "name": "mds_demo_win/mds_demo.exe", "os": "win32"}], - "hook": true, - "id": "1129504572214362212", - "name": "My dream setup Demo" - }, - { - "aliases": ["Vainglory"], - "executables": [{"is_launcher": false, "name": "vainglory/vainglory.exe", "os": "win32"}], - "hook": true, - "id": "1129504582393929728", - "name": "Vainglory" - }, - { - "aliases": [ - "\u30c1\u30c3\u30af\u30bf\u30c3\u30af\uff1a\u4e8c\u4eba\u306e\u305f\u3081\u306e\u7269\u8a9e\uff08Tick Tock: A Tale for Two)" - ], - "executables": [{"is_launcher": false, "name": "ticktock/tick tock.exe", "os": "win32"}], - "hook": true, - "id": "1129504588169494619", - "name": "Tick Tock: A Tale for Two" - }, - { - "aliases": ["Mafia II: Definitivn\u00ed edice", "Mafia II: Edycja Ostateczna"], - "executables": [{"is_launcher": false, "name": "pc/mafia ii definitive edition.exe", "os": "win32"}], - "hook": true, - "id": "1129504593915682937", - "name": "Mafia II: Definitive Edition" - }, - { - "aliases": ["Anno 1800"], - "executables": [{"is_launcher": false, "name": "win64/anno1800.exe", "os": "win32"}], - "hook": true, - "id": "1129504601251532910", - "name": "Anno 1800" - }, - { - "aliases": ["Travellers Rest"], - "executables": [{"is_launcher": false, "name": "windows/travellersrest.exe", "os": "win32"}], - "hook": true, - "id": "1129504604736995328", - "name": "Travellers Rest" - }, - { - "aliases": ["Yakuza Kiwami 2"], - "executables": [{"is_launcher": false, "name": "yakuza kiwami 2/yakuzakiwami2.exe", "os": "win32"}], - "hook": true, - "id": "1129504623661699182", - "name": "Yakuza Kiwami 2" - }, - { - "aliases": ["Bean Battles"], - "executables": [{"is_launcher": false, "name": "bean battles/beanbattles.exe", "os": "win32"}], - "hook": true, - "id": "1129504631874146455", - "name": "Bean Battles" - }, - { - "executables": [{"is_launcher": false, "name": "tinybunny/tinybunny.exe", "os": "win32"}], - "hook": true, - "id": "1129504639902044170", - "name": "Tiny Bunny" - }, - { - "aliases": [ - "\u30b0\u30e9\u30f3\u30d6\u30eb\u30fc\u30d5\u30a1\u30f3\u30bf\u30b8\u30fc \u30f4\u30a1\u30fc\u30b5\u30b9" - ], - "executables": [{"is_launcher": false, "name": "win64/gbvs-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504644759035934", - "name": "Granblue Fantasy: Versus" - }, - { - "aliases": ["\uc5ec\uba85"], - "executables": [{"is_launcher": false, "name": "thedawn/thedawn.exe", "os": "win32"}], - "hook": true, - "id": "1129504653525143592", - "name": "TheDawn" - }, - { - "aliases": ["Last Year"], - "executables": [{"is_launcher": false, "name": "win64/lastyear-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504657186758807", - "name": "Last Year" - }, - { - "aliases": ["NEEDY GIRL OVERDOSE", "\ub2c8\ub514 \uac78 \uc624\ubc84\ub3c4\uc988 : NEEDY GIRL OVERDOSE"], - "executables": [{"is_launcher": false, "name": "needy girl overdose/windose.exe", "os": "win32"}], - "hook": true, - "id": "1129504660135366739", - "name": "NEEDY STREAMER OVERLOAD" - }, - { - "aliases": ["Trombone Champ"], - "executables": [{"is_launcher": false, "name": "trombonechamp/trombonechamp.exe", "os": "win32"}], - "hook": true, - "id": "1129504664249966662", - "name": "Trombone Champ" - }, - { - "aliases": ["Slapshot"], - "executables": [{"is_launcher": false, "name": "slapshot/slapshot.exe", "os": "win32"}], - "hook": true, - "id": "1129504667479580722", - "name": "Slapshot" - }, - { - "aliases": ["Pixel Studio - best pixel art editor", "Pixel Studio for pixel art"], - "executables": [{"is_launcher": false, "name": "pixel studio/pixel studio.exe", "os": "win32"}], - "hook": true, - "id": "1129504670491103423", - "name": "Pixel Studio for pixel art" - }, - { - "aliases": ["The Tenants"], - "executables": [{"is_launcher": false, "name": "the tenants/the tenants.exe", "os": "win32"}], - "hook": true, - "id": "1129504674114982028", - "name": "The Tenants" - }, - { - "aliases": ["Sniper Ghost Warrior Contracts"], - "executables": [{"is_launcher": false, "name": "win_x64/sgwcontracts.exe", "os": "win32"}], - "hook": true, - "id": "1129504678309273730", - "name": "Sniper Ghost Warrior Contracts" - }, - { - "aliases": ["Road Redemption"], - "executables": [{"is_launcher": false, "name": "roadredemption/roadredemption.exe", "os": "win32"}], - "hook": true, - "id": "1129504687616446496", - "name": "Road Redemption" - }, - { - "aliases": ["Hentai Girl"], - "executables": [{"is_launcher": false, "name": "hentaigirl/hentaigirl.exe", "os": "win32"}], - "hook": true, - "id": "1129504691517136927", - "name": "Hentai Girl" - }, - { - "aliases": ["Bau-Simulator"], - "executables": [{"is_launcher": false, "name": "construction simulator/consim.exe", "os": "win32"}], - "hook": true, - "id": "1129504695413653504", - "name": "Construction Simulator" - }, - { - "aliases": ["Terraforming Mars"], - "executables": [{"is_launcher": false, "name": "terraforming mars/terraformingmars.exe", "os": "win32"}], - "hook": true, - "id": "1129504698848780449", - "name": "Terraforming Mars" - }, - { - "aliases": ["Resident Evil 0 / biohazard 0 HD REMASTER"], - "executables": [{"is_launcher": false, "name": "resident evil 0/re0hd.exe", "os": "win32"}], - "hook": true, - "id": "1129504702879518821", - "name": "Resident Evil 0" - }, - { - "aliases": ["Session: Skate Sim"], - "executables": [{"is_launcher": false, "name": "win64/sessiongame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504706566307850", - "name": "Session" - }, - { - "aliases": ["Melvor Idle"], - "executables": [{"is_launcher": false, "name": "melvor idle/melvor idle.exe", "os": "win32"}], - "hook": true, - "id": "1129504709586210887", - "name": "Melvor Idle" - }, - { - "aliases": ["\u7dcb\u67d3\u5929\u7a7a Heaven Burns Red"], - "executables": [{"is_launcher": false, "name": "heavenburnsred/heavenburnsred.exe", "os": "win32"}], - "hook": true, - "id": "1129504712387993741", - "name": "\u30d8\u30d6\u30f3\u30d0\u30fc\u30f3\u30ba\u30ec\u30c3\u30c9" - }, - { - "aliases": ["Chernobylite Enhanced Edition"], - "executables": [{"is_launcher": false, "name": "win64/chernobylgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504721380593744", - "name": "Chernobylite" - }, - { - "aliases": ["There is no game : Wrong dimension", "There is no game: Wrong dimension"], - "executables": [{"is_launcher": false, "name": "there is no game - wrong dimension/ting.exe", "os": "win32"}], - "hook": true, - "id": "1129504726409543760", - "name": "There Is No Game: Wrong Dimension" - }, - { - "executables": [{"is_launcher": false, "name": "bin/farcry6.exe", "os": "win32"}], - "hook": true, - "id": "1129504731715346442", - "name": "Far Cry 6" - }, - { - "aliases": ["Police Stories"], - "executables": [{"is_launcher": false, "name": "policestories/policestories.exe", "os": "win32"}], - "hook": true, - "id": "1129504736123559966", - "name": "Police Stories" - }, - { - "aliases": ["Tanki Online"], - "executables": [{"is_launcher": false, "name": "tanki online/tanki online.exe", "os": "win32"}], - "hook": true, - "id": "1129504740301086812", - "name": "Tanki Online" - }, - { - "aliases": ["ENDLESS\u2122 Space - Definitive Edition"], - "executables": [{"is_launcher": false, "name": "endless space/endlessspace.exe", "os": "win32"}], - "hook": true, - "id": "1129504746680623165", - "name": "Endless Space" - }, - { - "aliases": ["Animal Jam - Play Wild!"], - "executables": [{"is_launcher": false, "name": "animal jam - play wild!/play wild.exe", "os": "win32"}], - "hook": true, - "id": "1129504755836801057", - "name": "Animal Jam" - }, - { - "aliases": ["Professional Fishing"], - "executables": [{"is_launcher": false, "name": "pro fishing/profishing.exe", "os": "win32"}], - "hook": true, - "id": "1129504765102014464", - "name": "Professional Fishing" - }, - { - "aliases": ["TUNIC"], - "executables": [{"is_launcher": false, "name": "tunic/tunic.exe", "os": "win32"}], - "hook": true, - "id": "1129504770533634149", - "name": "TUNIC" - }, - { - "aliases": ["Fear Therapy"], - "executables": [{"is_launcher": false, "name": "win64/feartherapybf-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504773947793579", - "name": "Fear Therapy" - }, - { - "aliases": ["Regions Of Ruin"], - "executables": [{"is_launcher": false, "name": "regions of ruin/regions of ruin.exe", "os": "win32"}], - "hook": true, - "id": "1129504777626206248", - "name": "Regions Of Ruin" - }, - { - "aliases": ["\u521d\u97f3\u30df\u30af Project DIVA MEGA39\u2019s\uff0b"], - "executables": [ - {"is_launcher": false, "name": "hatsune miku project diva mega mix plus/divamegamix.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504781933760663", - "name": "Hatsune Miku: Project DIVA Mega Mix+" - }, - { - "aliases": ["Perfect Vermin"], - "executables": [{"is_launcher": false, "name": "win64/perfectvermin-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504786190975007", - "name": "Perfect Vermin" - }, - { - "executables": [{"is_launcher": false, "name": "arma 2/arma2.exe", "os": "win32"}], - "hook": true, - "id": "1129504790477557820", - "name": "Arma 2" - }, - { - "aliases": ["Swing Dunk"], - "executables": [{"is_launcher": false, "name": "swing dunk/swing dunk.exe", "os": "win32"}], - "hook": true, - "id": "1129504799562407946", - "name": "Swing Dunk" - }, - { - "aliases": ["\uc232\uc18d\uc758 \uc791\uc740 \ub9c8\ub140"], - "executables": [{"is_launcher": false, "name": "little witch in the woods/lwiw.exe", "os": "win32"}], - "hook": true, - "id": "1129504803043688509", - "name": "Little Witch in the Woods" - }, - { - "aliases": ["\u7a76\u6975\u306e\u91e3\u308a\u30b7\u30df\u30e5\u30ec\u30fc\u30bf"], - "executables": [{"is_launcher": false, "name": "ultimate fishing/ultimatefishing.exe", "os": "win32"}], - "hook": true, - "id": "1129504806583685160", - "name": "Ultimate Fishing Simulator" - }, - { - "aliases": ["Carcassonne: The Official Board Game"], - "executables": [ - {"is_launcher": false, "name": "carcassonne the official board game/carcassonne.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504811193221161", - "name": "Carcassonne: The Official Board Game" - }, - { - "aliases": ["UNDER NIGHT IN-BIRTH Exe:Late[st]"], - "executables": [{"is_launcher": false, "name": "under night in-birth exe late[st]/unist.exe", "os": "win32"}], - "hook": true, - "id": "1129504814733205646", - "name": "UNDER NIGHT IN-BIRTH Exe:Late[cl-r]" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hideandseek.exe", "os": "win32"}], - "hook": true, - "id": "1129504819837673493", - "name": "Hide and Seek" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ball-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504830176645212", - "name": "PANZER BALL" - }, - { - "aliases": ["\u30d5\u30e9\u30c3\u30b7\u30e5\u30d1\u30fc\u30c6\u30a3\u30fc"], - "executables": [{"is_launcher": false, "name": "flash party/flashparty.exe", "os": "win32"}], - "hook": true, - "id": "1129504834857484371", - "name": "Flash Party" - }, - { - "aliases": ["Gremlins, Inc."], - "executables": [{"is_launcher": false, "name": "gremlins/gremlins_inc.exe", "os": "win32"}], - "hook": true, - "id": "1129504840117133393", - "name": "Gremlins, Inc." - }, - { - "aliases": ["Hamster Playground"], - "executables": [{"is_launcher": false, "name": "hamster playground/hamster playground.exe", "os": "win32"}], - "hook": true, - "id": "1129504844361777196", - "name": "Hamster Playground" - }, - { - "aliases": ["GridIron"], - "executables": [{"is_launcher": false, "name": "win64/gridironclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504849495597157", - "name": "GridIron" - }, - { - "aliases": ["RESIDENT EVIL 2 \"R.P.D. Demo\""], - "executables": [ - {"is_launcher": false, "name": "resident evil 2 biohazard re2 r.p.d. demo/re2.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504852653916222", - "name": "Resident Evil 2 \"R.P.D. Demo\"" - }, - { - "executables": [{"is_launcher": false, "name": "button pusher/button pusher.exe", "os": "win32"}], - "hook": true, - "id": "1129504856567193620", - "name": "THE BUTTON" - }, - { - "aliases": ["DeoVR Video Player"], - "executables": [{"is_launcher": false, "name": "deovr video player/deovr.exe", "os": "win32"}], - "hook": true, - "id": "1129504867690496101", - "name": "DeoVR Video Player" - }, - { - "aliases": ["Touhou Luna Nights"], - "executables": [{"is_launcher": false, "name": "touhou luna nights/touhou_luna_nights.exe", "os": "win32"}], - "hook": true, - "id": "1129504876108455936", - "name": "Touhou Luna Nights" - }, - { - "aliases": ["Airport CEO"], - "executables": [{"is_launcher": false, "name": "airport ceo/airport ceo.exe", "os": "win32"}], - "hook": true, - "id": "1129504881976295575", - "name": "Airport CEO" - }, - { - "aliases": ["Lambda Wars"], - "executables": [{"is_launcher": false, "name": "lambda wars/lambdawars.exe", "os": "win32"}], - "hook": true, - "id": "1129504885377867898", - "name": "Lambda Wars Beta" - }, - { - "aliases": ["SCP: Pandemic", "SCP: Pandemic - Alpha Testing"], - "executables": [{"is_launcher": false, "name": "win64/pandemic.exe", "os": "win32"}], - "hook": true, - "id": "1129504889131782306", - "name": "SCP: 5K - Alpha Testing" - }, - { - "aliases": ["Endless World"], - "executables": [{"is_launcher": false, "name": "endlessworld/endlessworld.exe", "os": "win32"}], - "hook": true, - "id": "1129504892717908038", - "name": "Endless World Idle RPG" - }, - { - "aliases": ["Paint Warfare"], - "executables": [{"is_launcher": false, "name": "paint warfare/paint warfare.exe", "os": "win32"}], - "hook": true, - "id": "1129504901723082862", - "name": "Paint Warfare" - }, - { - "aliases": ["Sniper Ghost Warrior Contracts 2"], - "executables": [{"is_launcher": false, "name": "win_x64/sgwcontracts2.exe", "os": "win32"}], - "hook": true, - "id": "1129504906500382873", - "name": "Sniper Ghost Warrior Contracts 2" - }, - { - "aliases": ["ROCKMAN X DiVE"], - "executables": [{"is_launcher": false, "name": "rockman x dive/game.exe", "os": "win32"}], - "hook": true, - "id": "1129504909918752838", - "name": "Mega Man X DiVE" - }, - { - "aliases": ["Death's Gambit: Afterlife"], - "executables": [{"is_launcher": false, "name": "death's gambit/deathsgambit397.exe", "os": "win32"}], - "hook": true, - "id": "1129504913240629397", - "name": "Death's Gambit" - }, - { - "aliases": ["Puyo Puyo\u2122 Tetris\u00ae 2"], - "executables": [{"is_launcher": false, "name": "puyopuyotetris2/puyopuyotetris2.exe", "os": "win32"}], - "hook": true, - "id": "1129504917019705474", - "name": "\u3077\u3088\u3077\u3088\u2122\u30c6\u30c8\u30ea\u30b9\u00ae \uff12" - }, - { - "aliases": ["Monster Sanctuary"], - "executables": [{"is_launcher": false, "name": "monster sanctuary/monster sanctuary.exe", "os": "win32"}], - "hook": true, - "id": "1129504925542535309", - "name": "Monster Sanctuary" - }, - { - "aliases": ["Mr. Prepper: Prologue"], - "executables": [{"is_launcher": false, "name": "mr. prepper prologue/mrprepperprologue.exe", "os": "win32"}], - "hook": true, - "id": "1129504929086709842", - "name": "Mr. Prepper: Prologue" - }, - { - "aliases": ["Hentai Girl Fantasy"], - "executables": [{"is_launcher": false, "name": "hentaigirlfantasy/hentaigirlfantasy.exe", "os": "win32"}], - "hook": true, - "id": "1129504937424986152", - "name": "Hentai Girl Fantasy" - }, - { - "aliases": ["SpaceEngine"], - "executables": [{"is_launcher": false, "name": "system/spaceengine.exe", "os": "win32"}], - "hook": true, - "id": "1129504940361011240", - "name": "SpaceEngine" - }, - { - "aliases": ["Tank Mechanic Simulator"], - "executables": [ - {"is_launcher": false, "name": "tankmechanicsimulator/tankmechanicsimulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504944605646928", - "name": "Tank Mechanic Simulator" - }, - { - "aliases": ["Tiny Bunny"], - "executables": [{"is_launcher": false, "name": "windows-i686/tinybunny.exe", "os": "win32"}], - "hook": true, - "id": "1129504947344515124", - "name": "Tiny Bunny: Prologue" - }, - { - "aliases": ["Cute Honey"], - "executables": [{"is_launcher": false, "name": "cute honey/cutehoney.exe", "os": "win32"}], - "hook": true, - "id": "1129504950540587149", - "name": "Cute Honey" - }, - { - "aliases": [ - "\u30c9\u30e9\u30b4\u30f3\u30af\u30a8\u30b9\u30c8XI\u3000\u904e\u304e\u53bb\u308a\u3057\u6642\u3092\u6c42\u3081\u3066 S" - ], - "executables": [{"is_launcher": false, "name": "win64/dragon quest xi s.exe", "os": "win32"}], - "hook": true, - "id": "1129504954948788395", - "name": "DRAGON QUEST XI S: Echoes of an Elusive Age \u2013 Definitive Edition" - }, - { - "aliases": ["Mega Man X Legacy Collection / ROCKMAN X ANNIVERSARY COLLECTION"], - "executables": [{"is_launcher": false, "name": "mega man x legacy collection/rxc1.exe", "os": "win32"}], - "hook": true, - "id": "1129504957935145010", - "name": "Mega Man X Legacy Collection" - }, - { - "aliases": ["Valkyria Chronicles 4"], - "executables": [{"is_launcher": false, "name": "vc4/valkyria4_x64.exe", "os": "win32"}], - "hook": true, - "id": "1129504960816627722", - "name": "Valkyria Chronicles 4 Complete Edition" - }, - { - "aliases": ["Automation - The Car Company Tycoon Game"], - "executables": [{"is_launcher": false, "name": "win64/automationgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504971558244432", - "name": "Automation - The Car Company Tycoon Game" - }, - { - "executables": [ - {"is_launcher": false, "name": "eternal return black survival demo/blacksurvivaler.exe", "os": "win32"} - ], - "hook": true, - "id": "1129504976281030706", - "name": "Eternal Return: Black Survival Demo" - }, - { - "aliases": [ - "Gravewood High Multiplayer", - "\u30b0\u30ec\u30a4\u30d6\u30a6\u30c3\u30c9\u30fb\u30cf\u30a4 Gravewood High Multiplayer" - ], - "executables": [{"is_launcher": false, "name": "win64/gravewoodmultiplayer-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129504979896508516", - "name": "Gravewood High" - }, - { - "aliases": ["My Free Zoo"], - "executables": [{"is_launcher": false, "name": "myfreezoo/myfreezoo.exe", "os": "win32"}], - "hook": true, - "id": "1129504994027126845", - "name": "My Free Zoo" - }, - { - "aliases": ["Just Die Already"], - "executables": [{"is_launcher": false, "name": "win64/jdgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505010577850499", - "name": "Just Die Already" - }, - { - "aliases": ["Fault: Elder Orb"], - "executables": [{"is_launcher": false, "name": "win64/rezz-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505016194023616", - "name": "Fault" - }, - { - "aliases": ["Orbt XL"], - "executables": [{"is_launcher": false, "name": "orbt xl/orbtxl.exe", "os": "win32"}], - "hook": true, - "id": "1129505022221242368", - "name": "Orbt XL" - }, - { - "aliases": ["\ud300\ud30c\uc774\ud2b8 \ub9e4\ub2c8\uc800"], - "executables": [{"is_launcher": false, "name": "teamfight manager/teamfight manager.exe", "os": "win32"}], - "hook": true, - "id": "1129505030119104623", - "name": "Teamfight Manager" - }, - { - "executables": [{"is_launcher": false, "name": "gloomwood demo/gloomwood.exe", "os": "win32"}], - "hook": true, - "id": "1129505036372824104", - "name": "Gloomwood Demo" - }, - { - "aliases": ["Battlefleet Gothic: Armada II"], - "executables": [{"is_launcher": false, "name": "win64/battlefleetgothic2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505050104971265", - "name": "Battlefleet Gothic: Armada 2" - }, - { - "aliases": ["Phoenix Point"], - "executables": [{"is_launcher": false, "name": "phoenix point/phoenixpointwin64.exe", "os": "win32"}], - "hook": true, - "id": "1129505055553364060", - "name": "Phoenix Point: Year One Edition" - }, - { - "aliases": ["F1 2012"], - "executables": [{"is_launcher": false, "name": "f1 2012/f1_2012.exe", "os": "win32"}], - "hook": true, - "id": "1129505061358284850", - "name": "F1 2012" - }, - { - "aliases": ["\u30a2\u30a4\u30c9\u30eb\u30de\u30cd\u30fc\u30b8\u30e3\u30fc"], - "executables": [{"is_launcher": false, "name": "idol manager/im.exe", "os": "win32"}], - "hook": true, - "id": "1129505065149939712", - "name": "Idol Manager" - }, - { - "aliases": ["Guts and Glory"], - "executables": [{"is_launcher": false, "name": "guts and glory/guts and glory.exe", "os": "win32"}], - "hook": true, - "id": "1129505067859464272", - "name": "Guts and Glory" - }, - { - "aliases": ["RPG Maker XP"], - "executables": [{"is_launcher": false, "name": "rpgxp/rpgxp.exe", "os": "win32"}], - "hook": true, - "id": "1129505071131009064", - "name": "RPG Maker XP" - }, - { - "aliases": ["Rushdown Revolt"], - "executables": [ - {"is_launcher": false, "name": "rushdown revolt - open alpha/rushdown revolt.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505073827950612", - "name": "Rushdown Revolt - Pre-Beta Testing" - }, - { - "aliases": ["EverQuest Free-to-Play"], - "executables": [{"is_launcher": false, "name": "everquest f2p/launchpad.exe", "os": "win32"}], - "hook": true, - "id": "1129505077321801810", - "name": "EverQuest Free-to-Play" - }, - { - "aliases": ["Deep the Game"], - "executables": [{"is_launcher": false, "name": "deep the game/nw.exe", "os": "win32"}], - "hook": true, - "id": "1129505085723000983", - "name": "Deep The Game" - }, - { - "executables": [{"is_launcher": false, "name": "horizon/gameclient.exe", "os": "win32"}], - "hook": true, - "id": "1129505088575119471", - "name": "the Ark of Horizon" - }, - { - "aliases": ["Vectorio Classic"], - "executables": [{"is_launcher": false, "name": "vectorio/vectorio.exe", "os": "win32"}], - "hook": true, - "id": "1129505090919743558", - "name": "Vectorio" - }, - { - "executables": [{"is_launcher": false, "name": "2017/vc_redist.x86.exe", "os": "win32"}], - "hook": true, - "id": "1129505093511815218", - "name": "Ironsight" - }, - { - "aliases": ["ISEKAI QUEST"], - "executables": [{"is_launcher": false, "name": "isekai quest/isekai quest.exe", "os": "win32"}], - "hook": true, - "id": "1129505097479635037", - "name": "ISEKAI QUEST" - }, - { - "aliases": ["WolfQuest: Classic"], - "executables": [{"is_launcher": false, "name": "wolfquest/wolfquest.exe", "os": "win32"}], - "hook": true, - "id": "1129505100482748548", - "name": "WolfQuest" - }, - { - "aliases": ["The Final Station"], - "executables": [{"is_launcher": false, "name": "thefinalstation/thefinalstation.exe", "os": "win32"}], - "hook": true, - "id": "1129505106262511626", - "name": "The Final Station" - }, - { - "aliases": ["Castlevania: Lords of Shadow - Ultimate Edition"], - "executables": [{"is_launcher": false, "name": "bin/castlevanialosue.exe", "os": "win32"}], - "hook": true, - "id": "1129505109387255860", - "name": "Castlevania: Lords of Shadow - Ultimate Edition" - }, - { - "aliases": ["F1 Race Stars"], - "executables": [{"is_launcher": false, "name": "f1 race stars/f1racestars.exe", "os": "win32"}], - "hook": true, - "id": "1129505112180674721", - "name": "F1 Race Stars" - }, - { - "aliases": ["Home Design 3D"], - "executables": [{"is_launcher": false, "name": "home design 3d/homedesign3d.exe", "os": "win32"}], - "hook": true, - "id": "1129505121072594974", - "name": "Home Design 3D" - }, - { - "aliases": ["Bug Fables"], - "executables": [{"is_launcher": false, "name": "bug fables/bug fables.exe", "os": "win32"}], - "hook": true, - "id": "1129505124188954807", - "name": "Bug Fables: The Everlasting Sapling" - }, - { - "aliases": [ - "Furry Love", - "\u041f\u0443\u0448\u0438\u0441\u0442\u0430\u044f \u041b\u044e\u0431\u043e\u0432\u044c" - ], - "executables": [{"is_launcher": false, "name": "furry love/furry love.exe", "os": "win32"}], - "hook": true, - "id": "1129505126646825070", - "name": "Amor peludo" - }, - { - "aliases": ["Star Realms"], - "executables": [{"is_launcher": false, "name": "star realms/starrealms.exe", "os": "win32"}], - "hook": true, - "id": "1129505129532510248", - "name": "Star Realms" - }, - { - "executables": [{"is_launcher": false, "name": "hobs/hobs.exe", "os": "win32"}], - "hook": true, - "id": "1129505134683111536", - "name": "Hobs" - }, - { - "executables": [ - {"is_launcher": false, "name": "gamemaker studio 2 desktop/gamemakerstudio.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505137157754931", - "name": "GameMaker Studio 2 Desktop" - }, - { - "executables": [{"is_launcher": false, "name": "the defender fac/thedefenderfac.exe", "os": "win32"}], - "hook": true, - "id": "1129505139082936431", - "name": "The Defender: Farm and Castle" - }, - { - "aliases": ["Movavi Video Suite 17"], - "executables": [{"is_launcher": false, "name": "movavi video suite/suite.exe", "os": "win32"}], - "hook": true, - "id": "1129505141666631802", - "name": "Movavi Video Suite" - }, - { - "aliases": ["Farm Manager 2021: Prologue"], - "executables": [{"is_launcher": false, "name": "farm manager 2021 prologue/farmmanager21.exe", "os": "win32"}], - "hook": true, - "id": "1129505148335570945", - "name": "Farm Manager 2021: Prologue" - }, - { - "aliases": [ - "\u0411\u0443\u043b\u043e\u0447\u043d\u044b\u0439 \u041c\u0430\u0433\u043d\u0430\u0442: \u041d\u0430\u0447\u0430\u043b\u043e" - ], - "executables": [{"is_launcher": false, "name": "bakery magnate/bakery magnate.exe", "os": "win32"}], - "hook": true, - "id": "1129505150537572425", - "name": "Bakery Magnate: Beginning" - }, - { - "aliases": ["Minit"], - "executables": [{"is_launcher": false, "name": "minit/minit.exe", "os": "win32"}], - "hook": true, - "id": "1129505153351958618", - "name": "Minit" - }, - { - "aliases": ["Farmer's Dynasty"], - "executables": [{"is_launcher": false, "name": "farmer's dynasty/farmersdynasty.exe", "os": "win32"}], - "hook": true, - "id": "1129505156174729296", - "name": "Farmer's Dynasty" - }, - { - "aliases": ["KartKraft"], - "executables": [{"is_launcher": false, "name": "win64/project_k-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505158926188595", - "name": "KartKraft" - }, - { - "aliases": ["Another Brick in the Mall"], - "executables": [{"is_launcher": false, "name": "another brick in the mall/launch.exe", "os": "win32"}], - "hook": true, - "id": "1129505162386493561", - "name": "Another Brick in The Mall" - }, - { - "aliases": [ - "\u6a5f\u52d5\u6226\u58eb\u30ac\u30f3\u30c0\u30e0\u3000\u30d0\u30c8\u30eb\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\uff12" - ], - "executables": [{"is_launcher": false, "name": "mobilesuitgundambattleoperation2/msgbo2.exe", "os": "win32"}], - "hook": true, - "id": "1129505165045682349", - "name": "MOBILE SUIT GUNDAM BATTLE OPERATION 2" - }, - { - "aliases": ["Boneraiser Minions"], - "executables": [{"is_launcher": false, "name": "boneraiser minions/boneraiser minions.exe", "os": "win32"}], - "hook": true, - "id": "1129505172545085600", - "name": "Boneraiser Minions" - }, - { - "aliases": ["HOME"], - "executables": [{"is_launcher": false, "name": "home/home.exe", "os": "win32"}], - "hook": true, - "id": "1129505175594352790", - "name": "HOME" - }, - { - "executables": [{"is_launcher": false, "name": "hide-and-seek/hns.exe", "os": "win32"}], - "hook": true, - "id": "1129505178442285147", - "name": "Hide and Seek" - }, - { - "aliases": ["King of Kinks"], - "executables": [{"is_launcher": false, "name": "king of kinks/kingofkinks.exe", "os": "win32"}], - "hook": true, - "id": "1129505182426878115", - "name": "King of Kinks" - }, - { - "executables": [{"is_launcher": false, "name": "tempest/tempest.exe", "os": "win32"}], - "hook": true, - "id": "1129505186214334566", - "name": "Tempest" - }, - { - "aliases": ["Fallen Earth", "Fallen Earth Classic"], - "executables": [{"is_launcher": false, "name": "fallen earth f2p/feupdater.exe", "os": "win32"}], - "hook": true, - "id": "1129505192090550303", - "name": "Fallen Earth" - }, - { - "aliases": ["Kanjozoku Game \u30ec\u30fc\u30b5\u30fc"], - "executables": [{"is_launcher": false, "name": "kanjozoku game/kanjozoku game.exe", "os": "win32"}], - "hook": true, - "id": "1129505195198533752", - "name": "Kanjozoku Game \u30ec\u30fc\u30b5\u30fc" - }, - { - "aliases": ["Manual Samuel - Anniversary Edition"], - "executables": [{"is_launcher": false, "name": "manual samuel/manual samuel.exe", "os": "win32"}], - "hook": true, - "id": "1129505201666138223", - "name": "Manual Samuel" - }, - { - "executables": [{"is_launcher": false, "name": "core keeper demo/corekeeper.exe", "os": "win32"}], - "hook": true, - "id": "1129505205453603027", - "name": "Core Keeper Demo" - }, - { - "aliases": ["SuchArt!"], - "executables": [{"is_launcher": false, "name": "suchart/suchart.exe", "os": "win32"}], - "hook": true, - "id": "1129505207743684789", - "name": "SuchArt!" - }, - { - "aliases": ["The Uncertain: Last Quiet Day"], - "executables": [{"is_launcher": false, "name": "the uncertain/splash.exe", "os": "win32"}], - "hook": true, - "id": "1129505210260279448", - "name": "The Uncertain: Last Quiet Day" - }, - { - "aliases": ["Mega Man 11 / Rock Man 11"], - "executables": [{"is_launcher": false, "name": "mega man 11/game.exe", "os": "win32"}], - "hook": true, - "id": "1129505212688769175", - "name": "Mega Man 11" - }, - { - "aliases": ["Ragnar\u00f6ck"], - "executables": [{"is_launcher": false, "name": "win64/ragnarock-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505215129866320", - "name": "Ragnarock" - }, - { - "aliases": ["VALKYRIE CONNECT"], - "executables": [{"is_launcher": false, "name": "valkyrieconnectww/valkyrieconnect.exe", "os": "win32"}], - "hook": true, - "id": "1129505216962773083", - "name": "VALKYRIE CONNECT" - }, - { - "aliases": ["Eleven: Table Tennis VR"], - "executables": [{"is_launcher": false, "name": "eleven table tennis vr/pong_waves_vr.exe", "os": "win32"}], - "hook": true, - "id": "1129505219802308690", - "name": "Eleven Table Tennis" - }, - { - "aliases": ["The Dungeon Of Naheulbeuk: The Amulet Of Chaos"], - "executables": [ - { - "is_launcher": false, - "name": "the dungeon of naheulbeuk the amulet of chaos/naheulbeuk.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1129505223170342932", - "name": "Le Donjon de Naheulbeuk : L'Amulette du D\u00e9sordre" - }, - { - "executables": [{"is_launcher": false, "name": "win64/watchers-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505230015438968", - "name": "Watchers" - }, - { - "aliases": ["Mega Man X Legacy Collection 2 / ROCKMAN X ANNIVERSARY COLLECTION 2"], - "executables": [{"is_launcher": false, "name": "mega man x legacy collection 2/rxc2.exe", "os": "win32"}], - "hook": true, - "id": "1129505232502669322", - "name": "Mega Man X Legacy Collection 2" - }, - { - "aliases": [ - "\u300e\u30c9\u30e9\u30b4\u30f3\u30af\u30a8\u30b9\u30c8XI\u3000\u904e\u304e\u53bb\u308a\u3057\u6642\u3092\u6c42\u3081\u3066 S\u300f\u201c\u305f\u3063\u3077\u308a\u904a\u3079\u308b\u4f53\u9a13\u7248\u201d" - ], - "executables": [{"is_launcher": false, "name": "win64/dragon quest xi s demo.exe", "os": "win32"}], - "hook": true, - "id": "1129505236185260102", - "name": "DRAGON QUEST XI S: Echoes of an Elusive Age - Definitive Edition DEMO" - }, - { - "aliases": ["Golf Around!"], - "executables": [{"is_launcher": false, "name": "golfaround/golfaround.exe", "os": "win32"}], - "hook": true, - "id": "1129505239679127582", - "name": "Golf Around!" - }, - { - "aliases": ["\u591c\u5efb"], - "executables": [{"is_launcher": false, "name": "yomawari night alone/yomawari-steam.exe", "os": "win32"}], - "hook": true, - "id": "1129505243265257552", - "name": "Yomawari: Night Alone" - }, - { - "aliases": ["Eternal Senia"], - "executables": [{"is_launcher": false, "name": "eternal senia/game.exe", "os": "win32"}], - "hook": true, - "id": "1129505246599725117", - "name": "Eternal Senia" - }, - { - "aliases": ["\u4e2d\u56fd\u5f0f\u5bb6\u957f/Chinese Parents"], - "executables": [{"is_launcher": false, "name": "chineseparent/game.exe", "os": "win32"}], - "hook": true, - "id": "1129505251834216540", - "name": "Chinese Parents" - }, - { - "aliases": ["Resident Evil\u2122: Operation Raccoon City"], - "executables": [ - {"is_launcher": false, "name": "resident evil operation raccoon city/raccooncity.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505257177763943", - "name": "Resident Evil: Operation Raccoon City" - }, - { - "aliases": ["Yokai's Secret"], - "executables": [{"is_launcher": false, "name": "yokai's secret/yokai's secret.exe", "os": "win32"}], - "hook": true, - "id": "1129505274651230239", - "name": "\u5996\u8a9e\u308a/Yokai's Secret" - }, - { - "executables": [{"is_launcher": false, "name": "the button/the button.exe", "os": "win32"}], - "hook": true, - "id": "1129505287167033414", - "name": "THE BUTTON" - }, - { - "executables": [{"is_launcher": false, "name": "suzy/proteus.exe", "os": "win32"}], - "hook": true, - "id": "1129505308851576933", - "name": "Mega Man Legacy Collection" - }, - { - "aliases": ["Sakuna: Of Rice and Ruin"], - "executables": [{"is_launcher": false, "name": "sakuna of rice and ruin/sakuna.exe", "os": "win32"}], - "hook": true, - "id": "1129505323607138495", - "name": "\u5929\u7a42\u306e\u30b5\u30af\u30ca\u30d2\u30e1" - }, - { - "executables": [{"is_launcher": false, "name": "ghosts of war/ghosts of war.exe", "os": "win32"}], - "hook": true, - "id": "1129505335841923183", - "name": "Ghosts of war" - }, - { - "aliases": ["The Curious Expedition"], - "executables": [ - {"is_launcher": false, "name": "the curious expedition/the curious expedition.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505351788679338", - "name": "Curious Expedition" - }, - { - "aliases": ["\u0130yi Pizza, G\u00fczel Pizza"], - "executables": [{"is_launcher": false, "name": "good pizza, great pizza/pizzabusiness.exe", "os": "win32"}], - "hook": true, - "id": "1129505366233862287", - "name": "Good Pizza, Great Pizza" - }, - { - "aliases": ["Mega Man Battle Network Legacy Collection Vol. 1"], - "executables": [{"is_launcher": false, "name": "exe/mmbn_lc1.exe", "os": "win32"}], - "hook": true, - "id": "1129505377545895996", - "name": "\u30ed\u30c3\u30af\u30de\u30f3\u30a8\u30b0\u30bc \u30a2\u30c9\u30d0\u30f3\u30b9\u30c9\u30b3\u30ec\u30af\u30b7\u30e7\u30f3 Vol.1" - }, - { - "aliases": ["\u6020\u60f0\u7684\u602a\u7378\u516c\u4e3b\u4e0d\u60f3\u5de5\u4f5c"], - "executables": [{"is_launcher": false, "name": "kaijuprincess/kaijuprincess.exe", "os": "win32"}], - "hook": true, - "id": "1129505387691921538", - "name": "Kaiju Princess" - }, - { - "aliases": ["\u0427\u0435\u0440\u043d\u0430\u044f \u041a\u043d\u0438\u0433\u0430"], - "executables": [{"is_launcher": false, "name": "black book/black book.exe", "os": "win32"}], - "hook": true, - "id": "1129505403454103592", - "name": "Black Book" - }, - { - "aliases": ["Wuppo"], - "executables": [{"is_launcher": false, "name": "wuppo/wuppo.exe", "os": "win32"}], - "hook": true, - "id": "1129505411838529586", - "name": "Wuppo - Definitive Edition" - }, - { - "aliases": ["Mr. Prepper Demo"], - "executables": [{"is_launcher": false, "name": "mr. prepper demo/mrprepperdemo.exe", "os": "win32"}], - "hook": true, - "id": "1129505416183816335", - "name": "Mr. Prepper Demo" - }, - { - "executables": [{"is_launcher": false, "name": "besetup/setup_battleyearma2.exe", "os": "win32"}], - "hook": true, - "id": "1129505419207921816", - "name": "Arma 2" - }, - { - "executables": [{"is_launcher": false, "name": "tunche arena/tunche.exe", "os": "win32"}], - "hook": true, - "id": "1129505421988741241", - "name": "Tunche: Arena" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "last train outta' wormtown demo/last train out of wormtown.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1129505425092517898", - "name": "Last Train Outta' Wormtown Friend's Pass" - }, - { - "aliases": ["College Kings 2: Act 1"], - "executables": [{"is_launcher": false, "name": "college kings 2/collegekings2.exe", "os": "win32"}], - "hook": true, - "id": "1129505427445530714", - "name": "College Kings 2 - Episode 1" - }, - { - "aliases": ["\u3077\u3088\u3077\u3088 e\u30b9\u30dd\u30fc\u30c4"], - "executables": [{"is_launcher": false, "name": "puyo puyo champions/puyopuyochampions.exe", "os": "win32"}], - "hook": true, - "id": "1129505430129877033", - "name": "Puyo Puyo Champions - \u3077\u3088\u3077\u3088 e\u30b9\u30dd\u30fc\u30c4" - }, - { - "aliases": ["Lemon Cake"], - "executables": [{"is_launcher": false, "name": "win64/lemoncake-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505439982309508", - "name": "Lemon Cake" - }, - { - "aliases": ["RPG Maker 2003"], - "executables": [{"is_launcher": false, "name": "rpg maker 2003/rpg2003.exe", "os": "win32"}], - "hook": true, - "id": "1129505442758934539", - "name": "RPG Maker 2003" - }, - { - "aliases": ["TYRONE vs COPS"], - "executables": [{"is_launcher": false, "name": "tyrone vs cops/tyronevscops.exe", "os": "win32"}], - "hook": true, - "id": "1129505446768681090", - "name": "Tyrone vs Cops" - }, - { - "aliases": ["Space Crew: Legendary Edition"], - "executables": [{"is_launcher": false, "name": "spacecrew/spacecrew.exe", "os": "win32"}], - "hook": true, - "id": "1129505449562099792", - "name": "Space Crew" - }, - { - "executables": [{"is_launcher": false, "name": "war trigger 3/war trigger 3.exe", "os": "win32"}], - "hook": true, - "id": "1129505453873831987", - "name": "War Trigger 3" - }, - { - "executables": [{"is_launcher": false, "name": "west of dead beta/westofdead.exe", "os": "win32"}], - "hook": true, - "id": "1129505460941234187", - "name": "West of Dead Beta" - }, - { - "executables": [ - {"is_launcher": false, "name": "cryptoclickers crypto idle game/cryptoclickers.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505465085214800", - "name": "CryptoClickers: Crypto Idle Game" - }, - { - "executables": [{"is_launcher": false, "name": "hero's hour demo/hero's hour.exe", "os": "win32"}], - "hook": true, - "id": "1129505470755905626", - "name": "Hero's Hour Demo" - }, - { - "executables": [{"is_launcher": false, "name": "rocket valley tycoon/rocketvalleytycoon.exe", "os": "win32"}], - "hook": true, - "id": "1129505482726461470", - "name": "Rocket Valley Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "hentai shooter 3d/game.exe", "os": "win32"}], - "hook": true, - "id": "1129505486010589265", - "name": "Hentai Shooter 3D" - }, - { - "aliases": ["LoveChoice"], - "executables": [{"is_launcher": false, "name": "lovechoice/lovechoice.exe", "os": "win32"}], - "hook": true, - "id": "1129505490125209710", - "name": "LoveChoice \u62e3\u7231" - }, - { - "aliases": ["Call of the Sea"], - "executables": [{"is_launcher": false, "name": "win64/bluecode-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505495363899412", - "name": "Call of the Sea" - }, - { - "executables": [ - {"is_launcher": false, "name": "the scroll of taiwu/the scroll of taiwu alpha v1.0.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505499314933770", - "name": "\u592a\u543e\u7ed8\u5377 The Scroll Of Taiwu" - }, - { - "executables": [{"is_launcher": false, "name": "catlateraldamage/catlateraldamage.exe", "os": "win32"}], - "hook": true, - "id": "1129505504863985756", - "name": "Catlateral Damage" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mailtime-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505508764696637", - "name": "Mail Time Demo" - }, - { - "aliases": ["FIFA 22"], - "executables": [{"is_launcher": false, "name": "fifa 22/fifa22.exe", "os": "win32"}], - "hook": true, - "id": "1129505514187931778", - "name": "FIFA 22" - }, - { - "executables": [{"is_launcher": false, "name": "haven demo/haven.exe", "os": "win32"}], - "hook": true, - "id": "1129505528033329274", - "name": "Haven Demo" - }, - { - "executables": [{"is_launcher": false, "name": "blockhood/blockhood v0_40_08.exe", "os": "win32"}], - "hook": true, - "id": "1129505532324094003", - "name": "Block'hood" - }, - { - "executables": [{"is_launcher": false, "name": "bin/h5_game.exe", "os": "win32"}], - "hook": true, - "id": "1129505540641411212", - "name": "Heroes of Might & Magic V: Tribes of the East" - }, - { - "aliases": ["Farm Manager 2021"], - "executables": [{"is_launcher": false, "name": "farm manager 2021/farmmanager21.exe", "os": "win32"}], - "hook": true, - "id": "1129505546383401071", - "name": "Farm Manager 2021" - }, - { - "aliases": ["Star Trek Timelines"], - "executables": [{"is_launcher": false, "name": "star trek timelines/timelines.exe", "os": "win32"}], - "hook": true, - "id": "1129505555233382450", - "name": "Star Trek Timelines" - }, - { - "aliases": ["The Spike", "\ub354 \uc2a4\ud30c\uc774\ud06c (The Spike)"], - "executables": [{"is_launcher": false, "name": "the spike/the_spike.exe", "os": "win32"}], - "hook": true, - "id": "1129505568890036254", - "name": "The Spike" - }, - { - "aliases": ["Furry Love 2"], - "executables": [{"is_launcher": false, "name": "furry love 2/furry love 2.exe", "os": "win32"}], - "hook": true, - "id": "1129505572094484531", - "name": "Amor peludo 2" - }, - { - "aliases": ["Crossroads Inn Anniversary Edition"], - "executables": [{"is_launcher": false, "name": "crossroads inn/crossroads inn.exe", "os": "win32"}], - "hook": true, - "id": "1129505574430720030", - "name": "Crossroads Inn" - }, - { - "aliases": ["Trader Life Simulator"], - "executables": [{"is_launcher": false, "name": "win64/traderlifesimulator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505577643561180", - "name": "TRADER LIFE SIMULATOR" - }, - { - "aliases": ["Winter Resort Simulator Season 2"], - "executables": [ - { - "is_launcher": false, - "name": "winter resort simulator season 2/winterresortsimulator_season2.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1129505580684419184", - "name": "Winter Resort Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "taskpals/taskpals.exe", "os": "win32"}], - "hook": true, - "id": "1129505583607861279", - "name": "TaskPals" - }, - { - "executables": [{"is_launcher": false, "name": "win64/surf-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505586824880180", - "name": "Survival Frenzy" - }, - { - "executables": [{"is_launcher": false, "name": "win64/rogueheist-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505589148536952", - "name": "Rogue Heist" - }, - { - "executables": [ - {"is_launcher": false, "name": "prehistoric kingdom demo/prehistoric kingdom.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505593099558942", - "name": "Prehistoric Kingdom Demo" - }, - { - "executables": [{"is_launcher": false, "name": "signalis demo/signalis.exe", "os": "win32"}], - "hook": true, - "id": "1129505601416871976", - "name": "SIGNALIS Demo" - }, - { - "executables": [{"is_launcher": false, "name": "sticky business demo/stickybusiness.exe", "os": "win32"}], - "hook": true, - "id": "1129505603845365940", - "name": "Sticky Business Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/plague.exe", "os": "win32"}], - "hook": true, - "id": "1129505607058210876", - "name": "The Black Death" - }, - { - "executables": [{"is_launcher": false, "name": "endlessbattle/cos.exe", "os": "win32"}], - "hook": true, - "id": "1129505610271051927", - "name": "Endless Battle" - }, - { - "executables": [{"is_launcher": false, "name": "out of the park baseball 19/ootp19.exe", "os": "win32"}], - "hook": true, - "id": "1129505613420961832", - "name": "Out of the Park Baseball 19" - }, - { - "executables": [{"is_launcher": false, "name": "formula bwoah/formula bwoah.exe", "os": "win32"}], - "hook": true, - "id": "1129505616684142742", - "name": "Formula Bwoah" - }, - { - "executables": [ - {"is_launcher": false, "name": "norland - story generating strategy - demo/norland.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505620144431184", - "name": "Norland: Story Generating Strategy Demo" - }, - { - "aliases": ["PUSS!"], - "executables": [{"is_launcher": false, "name": "puss!/puss!.exe", "os": "win32"}], - "hook": true, - "id": "1129505622551969892", - "name": "PUSS!" - }, - { - "executables": [{"is_launcher": false, "name": "fortune/fortune.exe", "os": "win32"}], - "hook": true, - "id": "1129505625680912394", - "name": "Fable Fortune" - }, - { - "aliases": ["Atelier Ryza 2: Lost Legends & the Secret Fairy"], - "executables": [{"is_launcher": false, "name": "atelier ryza 2/atelier_ryza_2.exe", "os": "win32"}], - "hook": true, - "id": "1129505628398833725", - "name": "\u30e9\u30a4\u30b6\u306e\u30a2\u30c8\u30ea\u30a8\uff12 \uff5e\u5931\u308f\u308c\u305f\u4f1d\u627f\u3068\u79d8\u5bc6\u306e\u5996\u7cbe\uff5e" - }, - { - "executables": [{"is_launcher": false, "name": "sanctuaryrpg - black edition/sanctuaryrpg.exe", "os": "win32"}], - "hook": true, - "id": "1129505631708135575", - "name": "SanctuaryRPG: Black Edition" - }, - { - "executables": [{"is_launcher": false, "name": "lossless scaling demo/losslessscaling.exe", "os": "win32"}], - "hook": true, - "id": "1129505640776212594", - "name": "Lossless Scaling Demo" - }, - { - "executables": [{"is_launcher": false, "name": "open mod early access prototype/open mod.exe", "os": "win32"}], - "hook": true, - "id": "1129505643972284487", - "name": "Open Mod" - }, - { - "aliases": ["Fray Fight"], - "executables": [{"is_launcher": false, "name": "win-unpacked/frayfight.exe", "os": "win32"}], - "hook": true, - "id": "1129505646555963524", - "name": "Fray Fight" - }, - { - "executables": [{"is_launcher": false, "name": "men of war - vietnam/vietnam.exe", "os": "win32"}], - "hook": true, - "id": "1129505649970135100", - "name": "Men of War: Vietnam" - }, - { - "executables": [ - {"is_launcher": false, "name": "coffee talk episode 2 hibiscus & butterfly/cthb.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505653149409310", - "name": "Coffee Talk Episode 2: Hibiscus & Butterfly" - }, - { - "executables": [{"is_launcher": false, "name": "bokura_f_win/bokura.exe", "os": "win32"}], - "hook": true, - "id": "1129505656454533191", - "name": "\u9055\u3046\u51ac\u306e\u307c\u304f\u3089 Friend's Pass" - }, - { - "executables": [{"is_launcher": false, "name": "death must die demo/death must die.exe", "os": "win32"}], - "hook": true, - "id": "1129505658950140066", - "name": "Death Must Die Demo" - }, - { - "executables": [{"is_launcher": false, "name": "pumpingsimulator/pumping simulator.exe", "os": "win32"}], - "hook": true, - "id": "1129505662993448990", - "name": "Pompac\u0131 Sim\u00fclasyonu" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "chef life a restaurant simulator/chef life a restaurant simulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1129505666734772305", - "name": "Chef Life: A Restaurant Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "dopeloop/dnfc.exe", "os": "win32"}], - "hook": true, - "id": "1129505669893079051", - "name": "Definitely Not Fried Chicken" - }, - { - "executables": [{"is_launcher": false, "name": "zenge/zenge.exe", "os": "win32"}], - "hook": true, - "id": "1129505673181417562", - "name": "Zenge" - }, - { - "executables": [{"is_launcher": false, "name": "win32/rattycatty-win32-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505684602495071", - "name": "Ratty Catty" - }, - { - "executables": [{"is_launcher": false, "name": "a witchy life story/witchy life story.exe", "os": "win32"}], - "hook": true, - "id": "1129505689019109457", - "name": "Witchy Life Story" - }, - { - "executables": [{"is_launcher": false, "name": "beton brutal/betonbrutal.exe", "os": "win32"}], - "hook": true, - "id": "1129505692085133403", - "name": "BETON BRUTAL" - }, - { - "executables": [ - {"is_launcher": false, "name": "regular human workshop/regular human workshop.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505696262668288", - "name": "Regular Human Workshop" - }, - { - "executables": [{"is_launcher": false, "name": "zed zone/zedzone.exe", "os": "win32"}], - "hook": true, - "id": "1129505699987210350", - "name": "ZED ZONE" - }, - { - "executables": [{"is_launcher": false, "name": "wylde flowers/wyldeflowers.exe", "os": "win32"}], - "hook": true, - "id": "1129505704563187855", - "name": "Wylde Flowers" - }, - { - "executables": [{"is_launcher": false, "name": "havendock demo/havendockdemo.exe", "os": "win32"}], - "hook": true, - "id": "1129505711190188053", - "name": "Havendock Demo" - }, - { - "executables": [{"is_launcher": false, "name": "citystate ii/citystate ii.exe", "os": "win32"}], - "hook": true, - "id": "1129505728051298417", - "name": "Citystate II" - }, - { - "executables": [{"is_launcher": false, "name": "win64/escapememoirs1-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505737337479259", - "name": "Escape Memoirs: Mansion Heist" - }, - { - "executables": [{"is_launcher": false, "name": "summer~life in the countryside~/summer.exe", "os": "win32"}], - "hook": true, - "id": "1129505747529650206", - "name": "Summer~Life in the Countryside~" - }, - { - "executables": [{"is_launcher": false, "name": "super dark deception/super dark deception.exe", "os": "win32"}], - "hook": true, - "id": "1129505762062901299", - "name": "Super Dark Deception Demo" - }, - { - "executables": [{"is_launcher": false, "name": "klonoa/klonoa.exe", "os": "win32"}], - "hook": true, - "id": "1129505769893675189", - "name": "Klonoa Phantasy Reverie Series" - }, - { - "executables": [ - {"is_launcher": false, "name": "scene investigators demo/scene investigators (demo).exe", "os": "win32"} - ], - "hook": true, - "id": "1129505774129926164", - "name": "Scene Investigators Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "wrestling empire demo/wrestling empire demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505778303246456", - "name": "Wrestling Empire Demo" - }, - { - "executables": [{"is_launcher": false, "name": "buggos/buggos.exe", "os": "win32"}], - "hook": true, - "id": "1129505784099774495", - "name": "Buggos" - }, - { - "executables": [{"is_launcher": false, "name": "latex dungeon mv/game.exe", "os": "win32"}], - "hook": true, - "id": "1129505791402057839", - "name": "Latex Dungeon" - }, - { - "executables": [ - {"is_launcher": false, "name": "disney infinity gold edition/disneyinfinity1.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505804555395144", - "name": "Disney Infinity 1.0: Gold Edition" - }, - { - "executables": [{"is_launcher": false, "name": "moncage/moncage.exe", "os": "win32"}], - "hook": true, - "id": "1129505808867151983", - "name": "Moncage" - }, - { - "executables": [{"is_launcher": false, "name": "win64/vicecity.exe", "os": "win32"}], - "hook": true, - "id": "1129505813963219005", - "name": "Grand Theft Auto: Vice City - The Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ozymandias-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505817301897386", - "name": "Ozymandias" - }, - { - "executables": [{"is_launcher": false, "name": "tainted grail foa/fall of avalon.exe", "os": "win32"}], - "hook": true, - "id": "1129505820980297758", - "name": "Tainted Grail: The Fall of Avalon" - }, - { - "executables": [{"is_launcher": false, "name": "uvolley/uvolley.exe", "os": "win32"}], - "hook": true, - "id": "1129505824214110301", - "name": "uVolley" - }, - { - "executables": [{"is_launcher": false, "name": "the last hero of nostalgaia demo/tlhon.exe", "os": "win32"}], - "hook": true, - "id": "1129505827410165810", - "name": "The Last Hero of Nostalgaia Demo" - }, - { - "executables": [{"is_launcher": false, "name": "bloodrayne terminal cut/rayne1.exe", "os": "win32"}], - "hook": true, - "id": "1129505831449284608", - "name": "BloodRayne: Terminal Cut" - }, - { - "executables": [{"is_launcher": false, "name": "romansaoc/romansaoc.exe", "os": "win32"}], - "hook": true, - "id": "1129505841091977287", - "name": "Romans: Age of Caesar" - }, - { - "executables": [{"is_launcher": false, "name": "stickman trenches/stickman trenches.exe", "os": "win32"}], - "hook": true, - "id": "1129505844627787806", - "name": "Stickman Trenches" - }, - { - "executables": [{"is_launcher": false, "name": "industry giant 2/ig2_addon.exe", "os": "win32"}], - "hook": true, - "id": "1129505847735763085", - "name": "Industry Giant 2" - }, - { - "executables": [{"is_launcher": false, "name": "taimanin collection/taimanincollection.exe", "os": "win32"}], - "hook": true, - "id": "1129505851384811570", - "name": "Taimanin Collection: Battle Arena" - }, - { - "executables": [{"is_launcher": false, "name": "afterparty/afterparty.exe", "os": "win32"}], - "hook": true, - "id": "1129505856510246952", - "name": "Afterparty" - }, - { - "executables": [{"is_launcher": false, "name": "hoa/hoa.exe", "os": "win32"}], - "hook": true, - "id": "1129505859429474365", - "name": "Hoa" - }, - { - "executables": [{"is_launcher": false, "name": "dungeonmans/dungeonmans.exe", "os": "win32"}], - "hook": true, - "id": "1129505863569260554", - "name": "Dungeonmans" - }, - { - "executables": [{"is_launcher": false, "name": "bullet heaven 2/bullet heaven 2.exe", "os": "win32"}], - "hook": true, - "id": "1129505874973569135", - "name": "Bullet Heaven 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "swat 3 tactical game of the year edition/swat.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505877930557614", - "name": "SWAT 3: Tactical Game of the Year Edition" - }, - { - "executables": [{"is_launcher": false, "name": "hardcore mecha/chc.exe", "os": "win32"}], - "hook": true, - "id": "1129505881852223619", - "name": "HARDCORE MECHA" - }, - { - "executables": [{"is_launcher": false, "name": "syberia - the world before/syberiatwb.exe", "os": "win32"}], - "hook": true, - "id": "1129505885786489053", - "name": "Syberia - The World Before" - }, - { - "executables": [{"is_launcher": false, "name": "tiny tactics/tiny tactics.exe", "os": "win32"}], - "hook": true, - "id": "1129505889431339268", - "name": "Tiny Tactics" - }, - { - "executables": [{"is_launcher": false, "name": "beat banger/beatbanger.exe", "os": "win32"}], - "hook": true, - "id": "1129505893407539230", - "name": "Beat Banger" - }, - { - "executables": [{"is_launcher": false, "name": "idol hands/game.exe", "os": "win32"}], - "hook": true, - "id": "1129505896775569560", - "name": "Idol Hands" - }, - { - "executables": [{"is_launcher": false, "name": "handyman legend/handyman legend.exe", "os": "win32"}], - "hook": true, - "id": "1129505900361687110", - "name": "Handyman Legend" - }, - { - "executables": [{"is_launcher": false, "name": "win64/puzzlegame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129505904014934146", - "name": "ParanormalHK" - }, - { - "executables": [{"is_launcher": false, "name": "virtual rides 3/vr3.exe", "os": "win32"}], - "hook": true, - "id": "1129505912479043594", - "name": "Virtual Rides 3" - }, - { - "executables": [{"is_launcher": false, "name": "foregone/foregone.exe", "os": "win32"}], - "hook": true, - "id": "1129505915599605760", - "name": "Foregone" - }, - { - "executables": [{"is_launcher": false, "name": "colonize prologue/colonize.exe", "os": "win32"}], - "hook": true, - "id": "1129505922054635581", - "name": "Colonize Prologue" - }, - { - "executables": [ - {"is_launcher": false, "name": "a monster's expedition/a monster's expedition.exe", "os": "win32"} - ], - "hook": true, - "id": "1129505926441881620", - "name": "A Monster's Expedition" - }, - { - "executables": [{"is_launcher": false, "name": "win64/brewmastermain-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1129548341613711390", - "name": "Brewmaster: Beer Brewing Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "jagged alliance 3/ja3.exe", "os": "win32"}], - "hook": true, - "id": "1129729582354931712", - "name": "Jagged Alliance 3" - }, - { - "executables": [{"is_launcher": false, "name": "mythgard/mythgard.exe", "os": "win32"}], - "hook": true, - "id": "1129986104561512598", - "name": "Mythgard" - }, - { - "executables": [{"is_launcher": false, "name": "nsfw studio/nsfw studio.exe", "os": "win32"}], - "hook": true, - "id": "1130001171172561006", - "name": "NSFW Studio" - }, - { - "executables": [{"is_launcher": false, "name": "airportsim demo/airportsimdemo.exe", "os": "win32"}], - "hook": true, - "id": "1130122010949861407", - "name": "AirportSim Demo" - }, - { - "executables": [{"is_launcher": false, "name": "wolfenstein 3d/dosbox/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1130273237142618183", - "name": "Wolfenstein 3D" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "yet another zombie survivors/yet another zombie survivors.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1130363620417617970", - "name": "Yet Another Zombie Survivors" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dnhclient.exe", "os": "win32"}], - "hook": true, - "id": "1130363622929993748", - "name": "Dragon And Home" - }, - { - "executables": [{"is_launcher": false, "name": "super raft boat together demo/srbt.exe", "os": "win32"}], - "hook": true, - "id": "1130532030539640923", - "name": "Super Raft Boat Together Demo" - }, - { - "executables": [{"is_launcher": false, "name": "feminazi the triggering/feminazi.exe", "os": "win32"}], - "hook": true, - "id": "1130620493016334377", - "name": "FEMINAZI: The Triggering" - }, - { - "executables": [{"is_launcher": false, "name": "eternights demo/eternights.exe", "os": "win32"}], - "hook": true, - "id": "1130635422612082779", - "name": "Eternights Demo" - }, - { - "executables": [{"is_launcher": false, "name": "pas/pas.exe", "os": "win32"}], - "hook": true, - "id": "1130726223094480956", - "name": "P.A.S." - }, - { - "executables": [{"is_launcher": false, "name": "cats hidden in paris/cats hidden in paris.exe", "os": "win32"}], - "hook": true, - "id": "1130937459287539792", - "name": "Cats Hidden in Paris" - }, - { - "executables": [{"is_launcher": false, "name": "nova lands/nova lands.exe", "os": "win32"}], - "hook": true, - "id": "1130937463339237388", - "name": "Nova Lands" - }, - { - "executables": [{"is_launcher": false, "name": "hentai honeys jigsaw/hentaihoneysjigsaw.exe", "os": "win32"}], - "hook": true, - "id": "1131042996108927056", - "name": "Hentai Honeys Jigsaw" - }, - { - "executables": [{"is_launcher": false, "name": "tasty planet forever/tastyplanet4.exe", "os": "win32"}], - "hook": true, - "id": "1131330136386576384", - "name": "Tasty Planet Forever" - }, - { - "executables": [ - {"is_launcher": false, "name": "hundred days/hundred days - winemaking simulator.exe", "os": "win32"} - ], - "hook": true, - "id": "1131496062633377852", - "name": "Hundred Days" - }, - { - "executables": [ - {"is_launcher": false, "name": "paranauticalactivity/paranautical activity.exe", "os": "win32"} - ], - "hook": true, - "id": "1131602050430550086", - "name": "Paranautical Activity: Deluxe Atonement Edition" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2019 demo/fm.exe", "os": "win32"}], - "hook": true, - "id": "1131677386405056646", - "name": "Football Manager 2019 Demo" - }, - { - "aliases": ["Remnant 2"], - "executables": [{"is_launcher": false, "name": "win64/remnant2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1131755677174485055", - "name": "Remnant 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "windows-i686/cookingcompanionsappetizeredition.exe", "os": "win32"} - ], - "hook": true, - "id": "1131783444289028187", - "name": "Cooking Companions: Appetizer Edition" - }, - { - "executables": [{"is_launcher": false, "name": "deus ex the fall/deusex_steam.exe", "os": "win32"}], - "hook": true, - "id": "1131934641876652092", - "name": "Deus Ex: The Fall" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thedevourer-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1131949285131436122", - "name": "The Devourer: Hunted Souls Demo" - }, - { - "executables": [{"is_launcher": false, "name": "starmancer/starmancer.exe", "os": "win32"}], - "hook": true, - "id": "1131979579163164762", - "name": "Starmancer" - }, - { - "executables": [{"is_launcher": false, "name": "project cars 2 demo/pcars2demoavx.exe", "os": "win32"}], - "hook": true, - "id": "1132024616613855282", - "name": "Project CARS 2 Demo" - }, - { - "aliases": ["SCARLET NEXUS"], - "executables": [{"is_launcher": false, "name": "win64/scarletnexus-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1132054767787577434", - "name": "SCARLET NEXUS" - }, - { - "executables": [{"is_launcher": false, "name": "setup/ue3redist.exe", "os": "win32"}], - "hook": true, - "id": "1132100033714585771", - "name": "RockShot" - }, - { - "executables": [ - {"is_launcher": false, "name": "street fighter 6 - closed beta/streetfighter6closedbeta.exe", "os": "win32"} - ], - "hook": true, - "id": "1132191251001770025", - "name": "Street Fighter 6 - Closed Beta" - }, - { - "executables": [{"is_launcher": false, "name": "humankind demo/humankind.exe", "os": "win32"}], - "hook": true, - "id": "1132236878595231765", - "name": "HUMANKIND\u2122 Demo" - }, - { - "executables": [{"is_launcher": false, "name": "farming simulator 2011/game.exe", "os": "win32"}], - "hook": true, - "id": "1132266094879576124", - "name": "Farming Simulator 2011" - }, - { - "executables": [{"is_launcher": false, "name": "win64/indiana-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1132402453246120006", - "name": "The Outer Worlds: Spacer's Choice Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win64/oww-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1132568133962575882", - "name": "Occupy White Walls" - }, - { - "executables": [{"is_launcher": false, "name": "sex simulator/sex simulator.exe", "os": "win32"}], - "hook": true, - "id": "1132690430694264872", - "name": "Sex Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "rocketman/11-11 memories retold.exe", "os": "win32"}], - "hook": true, - "id": "1132719318799503411", - "name": "11-11 Memories Retold" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "aircraft carrier survival prolouge/aircraftcarriersurvival.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1132840162276167750", - "name": "Aircraft Carrier Survival: Prolouge" - }, - { - "executables": [{"is_launcher": false, "name": "disaster band/disaster band.exe", "os": "win32"}], - "hook": true, - "id": "1132915549341483018", - "name": "Disaster Band" - }, - { - "executables": [{"is_launcher": false, "name": "phantom racing/phantom racing.exe", "os": "win32"}], - "hook": true, - "id": "1132991162769227799", - "name": "Phantom Racing" - }, - { - "executables": [{"is_launcher": false, "name": "cave crawlers/cave crawlers.exe", "os": "win32"}], - "hook": true, - "id": "1133052207382667364", - "name": "Cave Crawlers" - }, - { - "executables": [{"is_launcher": false, "name": "techtonica/techtonica.exe", "os": "win32"}], - "hook": true, - "id": "1133126973108015257", - "name": "Techtonica" - }, - { - "executables": [{"is_launcher": false, "name": "orx demo/orx.exe", "os": "win32"}], - "hook": true, - "id": "1133142004612739102", - "name": "ORX Demo" - }, - { - "executables": [{"is_launcher": false, "name": "kart racing pro/kart.exe", "os": "win32"}], - "hook": true, - "id": "1133157020262989884", - "name": "Kart Racing Pro" - }, - { - "executables": [{"is_launcher": false, "name": "terra nil demo/terra nil demo.exe", "os": "win32"}], - "hook": true, - "id": "1133172182705512488", - "name": "Terra Nil Demo" - }, - { - "executables": [{"is_launcher": false, "name": "viewfinder/viewfinder.exe", "os": "win32"}], - "hook": true, - "id": "1133232502853611552", - "name": "Viewfinder" - }, - { - "executables": [{"is_launcher": false, "name": "sticky business/stickybusiness.exe", "os": "win32"}], - "hook": true, - "id": "1133625054068998215", - "name": "Sticky Business" - }, - { - "executables": [{"is_launcher": false, "name": "mount and blade warband - demo/mb_warband.exe", "os": "win32"}], - "hook": true, - "id": "1133761116292513843", - "name": "Mount and Blade Warband - Demo" - }, - { - "executables": [ - {"is_launcher": false, "name": "punch club 2 fast forward/punch club 2 fast forward.exe", "os": "win32"} - ], - "hook": true, - "id": "1133791392334876712", - "name": "Punch Club 2: Fast Forward" - }, - { - "executables": [{"is_launcher": false, "name": "killer frequency/killerfrequency.exe", "os": "win32"}], - "hook": true, - "id": "1133821612760780831", - "name": "Killer Frequency" - }, - { - "executables": [{"is_launcher": false, "name": "simrail/simrail.exe", "os": "win32"}], - "hook": true, - "id": "1133852631979282432", - "name": "SimRail - The Railway Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "farmer's life/farmerslife.exe", "os": "win32"}], - "hook": true, - "id": "1133912097483407410", - "name": "Farmer's Life" - }, - { - "executables": [{"is_launcher": false, "name": "geometry arena/geometry arena.exe", "os": "win32"}], - "hook": true, - "id": "1133957574887219200", - "name": "Geometry Arena" - }, - { - "executables": [{"is_launcher": false, "name": "ratchet & clank - rift apart/riftapart.exe", "os": "win32"}], - "hook": true, - "id": "1133987640815919125", - "name": "Ratchet & Clank: Rift Apart" - }, - { - "executables": [{"is_launcher": false, "name": "my little universe demo/my universe.exe", "os": "win32"}], - "hook": true, - "id": "1134063099113132042", - "name": "My Little Universe Demo" - }, - { - "executables": [{"is_launcher": false, "name": "o2jam/o2jam.exe", "os": "win32"}], - "hook": true, - "id": "1134078487758651423", - "name": "O2Jam" - }, - { - "executables": [ - {"is_launcher": false, "name": "infection free zone demo/infection free zone demo.exe", "os": "win32"} - ], - "hook": true, - "id": "1134168823948378293", - "name": "Infection Free Zone Demo" - }, - { - "executables": [{"is_launcher": false, "name": "aim trainer pro/aimtrainer.exe", "os": "win32"}], - "hook": true, - "id": "1134259303486853261", - "name": "Aim Trainer Pro" - }, - { - "executables": [{"is_launcher": false, "name": "vacuum warrior/vacuumwarrior.exe", "os": "win32"}], - "hook": true, - "id": "1134259306921996288", - "name": "Vacuum Warrior" - }, - { - "executables": [ - {"is_launcher": false, "name": "call of duty modern warfare remastered/h1_sp64_ship.exe", "os": "win32"} - ], - "hook": true, - "id": "1134319752261664819", - "name": "Call of Duty: Modern Warfare Remastered (2017)" - }, - { - "executables": [ - {"is_launcher": false, "name": "resident evil resistance open beta/reresistance.exe", "os": "win32"} - ], - "hook": true, - "id": "1134334752917307393", - "name": "Resident Evil Resistance Open Beta" - }, - { - "executables": [{"is_launcher": false, "name": "gorebox/gorebox.exe", "os": "win32"}], - "hook": true, - "id": "1134365980630458378", - "name": "GoreBox" - }, - { - "executables": [{"is_launcher": false, "name": "nancydrew_midnightinsalem/midnightinsalem.exe", "os": "win32"}], - "hook": true, - "id": "1134606768920600727", - "name": "Nancy Drew: Midnight in Salem" - }, - { - "executables": [{"is_launcher": false, "name": "russian roulette one life/russian 3d.exe", "os": "win32"}], - "hook": true, - "id": "1134621983661887572", - "name": "Russian Roulette: One Life" - }, - { - "executables": [{"is_launcher": false, "name": "lostinplay/lostinplay.exe", "os": "win32"}], - "hook": true, - "id": "1134788103043817575", - "name": "Lost in Play" - }, - { - "executables": [{"is_launcher": false, "name": "mistover demo/mistover demo.exe", "os": "win32"}], - "hook": true, - "id": "1134833229036257280", - "name": "MISTOVER Demo" - }, - { - "executables": [{"is_launcher": false, "name": "daisenka/daisenka.exe", "os": "win32"}], - "hook": true, - "id": "1134863464280641686", - "name": "Glory & Miserable Survivors DX" - }, - { - "executables": [{"is_launcher": false, "name": "necrobouncer_pc/necrobouncer.exe", "os": "win32"}], - "hook": true, - "id": "1135226047588220969", - "name": "NecroBouncer: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/samantha browne.exe", "os": "win32"}], - "hook": true, - "id": "1135557954402258984", - "name": "The Average Everyday Adventures of Samantha Browne" - }, - { - "executables": [{"is_launcher": false, "name": "yttd/game.exe", "os": "win32"}], - "hook": true, - "id": "1135618846229811340", - "name": "Your Turn To Die -Death Game By Majority-" - }, - { - "executables": [{"is_launcher": false, "name": "win64/blacktail-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1135634231628935220", - "name": "BLACKTAIL" - }, - { - "executables": [{"is_launcher": false, "name": "idling gears demo/idling gears.exe", "os": "win32"}], - "hook": true, - "id": "1135679268739883069", - "name": "Idling Gears Demo" - }, - { - "executables": [{"is_launcher": false, "name": "win64/onlyclimbtogether-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1135814984568406128", - "name": "Only Climb: Better Together" - }, - { - "executables": [{"is_launcher": false, "name": "dinogen online/dinogen-online.exe", "os": "win32"}], - "hook": true, - "id": "1135860682068349049", - "name": "Dinogen Online" - }, - { - "executables": [{"is_launcher": false, "name": "nonvr/the break in.exe", "os": "win32"}], - "hook": true, - "id": "1135920282184466573", - "name": "The Break-In" - }, - { - "executables": [ - {"is_launcher": false, "name": "take me to the dungeon!!/take me to the dungeon!!.exe", "os": "win32"} - ], - "hook": true, - "id": "1136161916092424272", - "name": "Take Me To The Dungeon!!" - }, - { - "executables": [{"is_launcher": false, "name": "drive21/drive 21.exe", "os": "win32"}], - "hook": true, - "id": "1136313291216539698", - "name": "Drive 21" - }, - { - "executables": [{"is_launcher": false, "name": "win64/f1manager23.exe", "os": "win32"}], - "hook": true, - "id": "1136328179590647869", - "name": "F1\u00ae Manager 2023" - }, - { - "executables": [{"is_launcher": false, "name": "achievement printer part 1/basket.exe", "os": "win32"}], - "hook": true, - "id": "1136343053179822173", - "name": "Achievement printer" - }, - { - "executables": [{"is_launcher": false, "name": "my garage/my garage.exe", "os": "win32"}], - "hook": true, - "id": "1136374546010738810", - "name": "My Garage" - }, - { - "executables": [{"is_launcher": false, "name": "death in the water 2/death in the water 2.exe", "os": "win32"}], - "hook": true, - "id": "1136465568434765834", - "name": "Death in the Water 2" - }, - { - "executables": [{"is_launcher": false, "name": "fortune's run demo/fortunesrun.exe", "os": "win32"}], - "hook": true, - "id": "1136661393882492948", - "name": "Fortune's Run Demo" - }, - { - "executables": [{"is_launcher": false, "name": "arcade/arcadeparadise.exe", "os": "win32"}], - "hook": true, - "id": "1136675849626714142", - "name": "Arcade Paradise" - }, - { - "executables": [{"is_launcher": false, "name": "out of the park baseball 24/ootp24.exe", "os": "win32"}], - "hook": true, - "id": "1136690608849829928", - "name": "Out of the Park Baseball 24" - }, - { - "executables": [{"is_launcher": false, "name": "naiad demo/naiad.exe", "os": "win32"}], - "hook": true, - "id": "1136780729729175693", - "name": "Naiad Demo" - }, - { - "executables": [{"is_launcher": false, "name": "disfigure/disfigure.exe", "os": "win32"}], - "hook": true, - "id": "1136856295287304252", - "name": "Disfigure" - }, - { - "executables": [{"is_launcher": false, "name": "win64/cv2_baseclient_shipping.exe", "os": "win32"}], - "hook": true, - "id": "1136977376379686982", - "name": "BattleRush" - }, - { - "executables": [{"is_launcher": false, "name": "thronefall/thronefall.exe", "os": "win32"}], - "hook": true, - "id": "1137037446647914616", - "name": "Thronefall" - }, - { - "aliases": ["Baldur's Gate 3"], - "executables": [ - {"is_launcher": false, "name": "bin/bg3.exe", "os": "win32"}, - {"is_launcher": false, "name": "bin/bg3_dx11.exe", "os": "win32"} - ], - "hook": true, - "id": "1137125502985961543", - "name": "Baldur's Gate 3", - "overlay_methods": 1 - }, - { - "executables": [{"is_launcher": false, "name": "win64/ikeavr2.exe", "os": "win32"}], - "hook": true, - "id": "1137188436873314324", - "name": "IKEA VR Experience" - }, - { - "executables": [{"is_launcher": false, "name": "insurmountable/insurmountable.exe", "os": "win32"}], - "hook": true, - "id": "1137339535269838868", - "name": "Insurmountable" - }, - { - "executables": [{"is_launcher": false, "name": "duck paradox/duck paradox.exe", "os": "win32"}], - "hook": true, - "id": "1137385655769518090", - "name": "Duck Paradox" - }, - { - "executables": [{"is_launcher": false, "name": "sokobond/sokobond.exe", "os": "win32"}], - "hook": true, - "id": "1137399952205684796", - "name": "Sokobond" - }, - { - "executables": [ - {"is_launcher": false, "name": "ski region simulator/skiregionsimulator2012game.exe", "os": "win32"} - ], - "hook": true, - "id": "1137415007789916210", - "name": "Ski Region Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "tactical assault vr/tactical assault vr.exe", "os": "win32"}], - "hook": true, - "id": "1137460555267969175", - "name": "Tactical Assault VR" - }, - { - "executables": [{"is_launcher": false, "name": "lines x free/lines x free.exe", "os": "win32"}], - "hook": true, - "id": "1137460558354989127", - "name": "Lines X Free" - }, - { - "executables": [{"is_launcher": false, "name": "voiceattack demo/voiceattack.exe", "os": "win32"}], - "hook": true, - "id": "1137476062394191912", - "name": "VoiceAttack Demo" - }, - { - "executables": [{"is_launcher": false, "name": "bit blaster xl/bitblasterxl.exe", "os": "win32"}], - "hook": true, - "id": "1137687021712838666", - "name": "Bit Blaster XL" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ronin-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1137687024980209694", - "name": "Trek to Yomi" - }, - { - "executables": [{"is_launcher": false, "name": "win64/carteltycoon-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1137792671654629376", - "name": "Cartel Tycoon Demo" - }, - { - "aliases": ["Conqueror's Blade"], - "executables": [{"is_launcher": false, "name": "client/proven_ground_client.exe", "os": "win32"}], - "hook": true, - "id": "1137808850435719338", - "name": "Conqueror's Blade" - }, - { - "executables": [{"is_launcher": false, "name": "the last campfire demo/the last campfire.exe", "os": "win32"}], - "hook": true, - "id": "1138079995571474492", - "name": "The Last Campfire Demo" - }, - { - "executables": [{"is_launcher": false, "name": "mafia online (wild west)/mafiaonline.exe", "os": "win32"}], - "hook": true, - "id": "1138502233235935292", - "name": "\u041c\u0430\u0444\u0438\u044f \u041e\u043d\u043b\u0430\u0439\u043d: \u0414\u0438\u043a\u0438\u0439 \u0417\u0430\u043f\u0430\u0434" - }, - { - "executables": [{"is_launcher": false, "name": "sab/super auto battlemon.exe", "os": "win32"}], - "hook": true, - "id": "1138532477493837975", - "name": "Super Auto Battlemon Demo" - }, - { - "executables": [{"is_launcher": false, "name": "beneath the surface/beneath the surface.exe", "os": "win32"}], - "hook": true, - "id": "1138592962452918272", - "name": "Beneath the Surface" - }, - { - "executables": [{"is_launcher": false, "name": "aiimagegenerator/game.exe", "os": "win32"}], - "hook": true, - "id": "1138637949496459345", - "name": "AI Image Generator" - }, - { - "executables": [{"is_launcher": false, "name": "hentai asmodeus/hentai asmodeus.exe", "os": "win32"}], - "hook": true, - "id": "1138683327470108773", - "name": "Hentai Asmodeus" - }, - { - "executables": [{"is_launcher": false, "name": "win64/primalcarnagegame.exe", "os": "win32"}], - "hook": true, - "id": "1138849337426845766", - "name": "Primal Carnage: Extinction" - }, - { - "executables": [{"is_launcher": false, "name": "dawnlands/dawnlands.exe", "os": "win32"}], - "hook": true, - "id": "1139045520883597394", - "name": "Dawnlands" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sengokudynasty-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1139468332614029404", - "name": "Sengoku Dynasty" - }, - { - "executables": [{"is_launcher": false, "name": "steambirds alliance open beta/steambirds.exe", "os": "win32"}], - "hook": true, - "id": "1140042314862039200", - "name": "Steambirds Alliance Open Beta" - }, - { - "executables": [{"is_launcher": false, "name": "yu-gi-oh! master duel/masterduel.exe", "os": "win32"}], - "hook": true, - "id": "1140238527980916757", - "name": "Yu-Gi-Oh! Master Duel" - }, - { - "executables": [{"is_launcher": false, "name": "bopl battle demo/boplbattle.exe", "os": "win32"}], - "hook": true, - "id": "1140359735518957598", - "name": "Bopl Battle Demo" - }, - { - "executables": [{"is_launcher": false, "name": "cadria item shop/cadria.exe", "os": "win32"}], - "hook": true, - "id": "1140480064899776542", - "name": "Cadria Item Shop" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dimensionsreborn-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1140510310520864769", - "name": "DimensionsVS" - }, - { - "executables": [{"is_launcher": false, "name": "efootball pes 2020 demo/pes2020.exe", "os": "win32"}], - "hook": true, - "id": "1141114245841428500", - "name": "eFootball PES 2020 DEMO" - }, - { - "executables": [{"is_launcher": false, "name": "efootball/settings.exe", "os": "win32"}], - "hook": true, - "id": "1141144907654910103", - "name": "eFootball\u2122 2023" - }, - { - "executables": [{"is_launcher": false, "name": "waven/waven.exe", "os": "win32"}], - "hook": true, - "id": "1141461489018998825", - "name": "Waven" - }, - { - "executables": [{"is_launcher": false, "name": "game/performance_test.exe", "os": "win32"}], - "hook": true, - "id": "1141552093241540608", - "name": "ZULA Latino America" - }, - { - "executables": [{"is_launcher": false, "name": "holocure/holocure.exe", "os": "win32"}], - "hook": true, - "id": "1141597384921591909", - "name": "HoloCure - Save the Fans!" - }, - { - "executables": [{"is_launcher": false, "name": "vpet/vpet-simulator.windows.exe", "os": "win32"}], - "hook": true, - "id": "1141733329700393083", - "name": "VPet" - }, - { - "executables": [{"is_launcher": false, "name": "wayfinder/wayfinder.exe", "os": "win32"}], - "hook": true, - "id": "1141839799276294204", - "name": "Wayfinder" - }, - { - "executables": [{"is_launcher": false, "name": "bombrushcyberfunk/bomb rush cyberfunk.exe", "os": "win32"}], - "hook": true, - "id": "1142246940575281383", - "name": "Bomb Rush Cyberfunk" - }, - { - "executables": [{"is_launcher": false, "name": "tothecore/tothecore.exe", "os": "win32"}], - "hook": true, - "id": "1142322148241854484", - "name": "To The Core" - }, - { - "executables": [{"is_launcher": false, "name": "sunkenland/sunkenland.exe", "os": "win32"}], - "hook": true, - "id": "1145876302524584026", - "name": "Sunkenland" - }, - { - "aliases": ["ARMORED CORE\u2122 VI FIRES OF RUBICON\u2122"], - "executables": [{"is_launcher": false, "name": "game/armoredcore6.exe", "os": "win32"}], - "hook": true, - "id": "1146138865673982022", - "name": "ARMORED CORE\u2122 VI FIRES OF RUBICON\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bless.exe", "os": "win32"}], - "hook": true, - "id": "1146247828658720768", - "name": "Bless Unleashed" - }, - { - "executables": [{"is_launcher": false, "name": "blasphemous 2/blasphemous 2.exe", "os": "win32"}], - "hook": true, - "id": "1146247831359864893", - "name": "Blasphemous 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/escapememoirsqss-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1146247835474477197", - "name": "Escape Memoirs: Questionable Side Stories" - }, - { - "executables": [{"is_launcher": false, "name": "win64/emergency-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1146247837319958619", - "name": "EMERGENCY" - }, - { - "executables": [{"is_launcher": false, "name": "saoif/saoif.exe", "os": "win32"}], - "hook": true, - "id": "1146247839228371025", - "name": "Sword Art Online: Integral Factor" - }, - { - "executables": [{"is_launcher": false, "name": "kebab simulator prologue/kebab simulator.exe", "os": "win32"}], - "hook": true, - "id": "1146247844441899049", - "name": "Kebab Simulator: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "hammerwatch 2/hw2.exe", "os": "win32"}], - "hook": true, - "id": "1146247846480322672", - "name": "Hammerwatch II" - }, - { - "executables": [{"is_launcher": false, "name": "win64/clay_4-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1146247848820752505", - "name": "Garten of Banban 4" - }, - { - "executables": [{"is_launcher": false, "name": "fateseeker/fateseeker.exe", "os": "win32"}], - "hook": true, - "id": "1146247850989199411", - "name": "\u5929\u547d\u5947\u5fa1 Fate Seeker" - }, - { - "executables": [{"is_launcher": false, "name": "release/heartwood online.exe", "os": "win32"}], - "hook": true, - "id": "1146247852905992252", - "name": "Heartwood Online" - }, - { - "executables": [{"is_launcher": false, "name": "pro evolution soccer 2019 demo/pes2019.exe", "os": "win32"}], - "hook": true, - "id": "1146414306796261376", - "name": "PRO EVOLUTION SOCCER 2019 DEMO" - }, - { - "executables": [{"is_launcher": false, "name": "sea of stars/seaofstars.exe", "os": "win32"}], - "hook": true, - "id": "1146610477636534383", - "name": "Sea of Stars" - }, - { - "executables": [{"is_launcher": false, "name": "mniy/nw.exe", "os": "win32"}], - "hook": true, - "id": "1146912427821240533", - "name": "My Name is You and it's the only unusual thing in my life" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hackerlifesimulator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1146942686155251812", - "name": "Anonymous Hacker Simulator: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "starfield/starfield.exe", "os": "win32"}], - "hook": true, - "id": "1146972864566788137", - "name": "Starfield" - }, - { - "executables": [{"is_launcher": false, "name": "subterrain/subterrain.exe", "os": "win32"}], - "hook": true, - "id": "1147863675361820753", - "name": "Subterrain" - }, - { - "executables": [ - {"is_launcher": false, "name": "blazblueentropyeffect/blazblueentropyeffect.exe", "os": "win32"} - ], - "hook": true, - "id": "1148422822079778816", - "name": "BlazBlue Entropy Effect" - }, - { - "executables": [{"is_launcher": false, "name": "what'sunderyourblanket!/game.exe", "os": "win32"}], - "hook": true, - "id": "1148769700898160720", - "name": "What's under your blanket !?" - }, - { - "aliases": ["Call of Duty\u00ae"], - "executables": [ - {"is_launcher": false, "name": "mp23/mp23-cod.exe", "os": "win32"}, - {"is_launcher": false, "name": "_retail_/cod.exe", "os": "win32"}, - {"is_launcher": false, "name": "call of duty hq/cod.exe", "os": "win32"}, - {"is_launcher": false, "name": "sp23/sp23-cod.exe", "os": "win32"} - ], - "hook": true, - "id": "1149118246826561609", - "name": "Call of Duty\u00ae: MWIII" - }, - { - "executables": [{"is_launcher": false, "name": "nba 2k24/nba2k24.exe", "os": "win32"}], - "hook": true, - "id": "1149856832777637988", - "name": "NBA 2K24" - }, - { - "executables": [{"is_launcher": false, "name": "bin/microvolts.exe", "os": "win32"}], - "hook": true, - "id": "1150053293989568513", - "name": "MICROVOLTS: Recharged" - }, - { - "executables": [{"is_launcher": false, "name": "win64/faefarmclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1150506187700322314", - "name": "Fae Farm" - }, - { - "executables": [{"is_launcher": false, "name": "win64/synced.exe", "os": "win32"}], - "hook": true, - "id": "1151064810419662858", - "name": "SYNCED\uff08\u30b7\u30f3\u30af\u30c9\uff09" - }, - { - "executables": [{"is_launcher": false, "name": "void crew/void crew.exe", "os": "win32"}], - "hook": true, - "id": "1151185644048097340", - "name": "Void Crew" - }, - { - "executables": [{"is_launcher": false, "name": "urbo dream one/urbo dream one.exe", "os": "win32"}], - "hook": true, - "id": "1151336571979706439", - "name": "URBO: Dream One" - }, - { - "executables": [{"is_launcher": false, "name": "caliber/caliberstart.exe", "os": "win32"}], - "hook": true, - "id": "1151578163848151160", - "name": "\u041a\u0430\u043b\u0438\u0431\u0440" - }, - { - "executables": [{"is_launcher": false, "name": "win64/mk12.exe", "os": "win32"}], - "hook": true, - "id": "1151955648041468044", - "name": "Mortal Kombat 1" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "we were here expeditions - the friendship/we were here expeditions the friendship.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1152257682573635764", - "name": "We Were Here Expeditions: The FriendShip" - }, - { - "executables": [{"is_launcher": false, "name": "book of hours/bh.exe", "os": "win32"}], - "hook": true, - "id": "1152680469578666096", - "name": "Book of Hours" - }, - { - "executables": [{"is_launcher": false, "name": "wolvesville/wolvesville.exe", "os": "win32"}], - "hook": true, - "id": "1152725708871831652", - "name": "Wolvesville" - }, - { - "executables": [{"is_launcher": false, "name": "god of weapons/god of weapons.exe", "os": "win32"}], - "hook": true, - "id": "1152771013721997412", - "name": "God Of Weapons" - }, - { - "executables": [{"is_launcher": false, "name": "system/unrealtournament.exe", "os": "win32"}], - "hook": true, - "id": "1152816320526700624", - "name": "Unreal Tournament: Game of the Year Edition" - }, - { - "executables": [{"is_launcher": false, "name": "win64/payday3client-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1153359932255654019", - "name": "PAYDAY 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lop-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1153677203305930762", - "name": "Lies of P" - }, - { - "executables": [{"is_launcher": false, "name": "party animals/partyanimals.exe", "os": "win32"}], - "hook": true, - "id": "1154114929612296355", - "name": "Party Animals" - }, - { - "executables": [{"is_launcher": false, "name": "heretic's fork/heretics fork.exe", "os": "win32"}], - "hook": true, - "id": "1154265900791382111", - "name": "Heretic's Fork" - }, - { - "executables": [{"is_launcher": false, "name": "esports life tycoon/esportslifetycoon.exe", "os": "win32"}], - "hook": true, - "id": "1154507556866232421", - "name": "Esports Life Tycoon" - }, - { - "executables": [{"is_launcher": false, "name": "chillquarium/chillquarium.exe", "os": "win32"}], - "hook": true, - "id": "1154809813105127485", - "name": "Chillquarium" - }, - { - "executables": [{"is_launcher": false, "name": "launcher/sir.exe", "os": "win32"}], - "hook": true, - "id": "1155217116362969168", - "name": "Sir, You Are Being Hunted" - }, - { - "executables": [{"is_launcher": false, "name": "moonstone island/moonstone island.exe", "os": "win32"}], - "hook": true, - "id": "1155519131764920420", - "name": "Moonstone Island" - }, - { - "aliases": ["COMBAT ARMS: THE CLASSIC"], - "executables": [ - {"is_launcher": false, "name": "combat arms the classic/engine_be.exe", "os": "win32"}, - {"is_launcher": false, "name": "combat arms the classic/gameguard.des", "os": "win32"} - ], - "hook": true, - "id": "1156138171088785438", - "name": "COMBAT ARMS: THE CLASSIC" - }, - { - "executables": [{"is_launcher": false, "name": "the riflemen/the riflemen.exe", "os": "win32"}], - "hook": true, - "id": "1156409931159842826", - "name": "The Riflemen" - }, - { - "executables": [{"is_launcher": false, "name": "win64/rpgame-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1156576033613553675", - "name": "Greed of Man" - }, - { - "executables": [{"is_launcher": false, "name": "lizards must die/lizardsmustdie.exe", "os": "win32"}], - "hook": true, - "id": "1157013970130042971", - "name": "\u0420\u0423\u0421\u042b \u041f\u0420\u041e\u0422\u0418\u0412 \u042f\u0429\u0415\u0420\u041e\u0412" - }, - { - "executables": [{"is_launcher": false, "name": "stormedge wind of change/stormedge.exe", "os": "win32"}], - "hook": true, - "id": "1157059300640960552", - "name": "StormEdge: Wind of Change" - }, - { - "executables": [ - {"is_launcher": false, "name": "disneyspeedstorm/disney_speedstorm_x64_rtl.exe", "os": "win32"} - ], - "hook": true, - "id": "1157089436639694918", - "name": "Disney Speedstorm" - }, - { - "aliases": ["\u50d5\u306e\u30d2\u30fc\u30ed\u30fc\u30a2\u30ab\u30c7\u30df\u30a2 ULTRA RUMBLE"], - "executables": [{"is_launcher": false, "name": "win64/mhur.exe", "os": "win32"}], - "hook": true, - "id": "1157104676592955474", - "name": "MY HERO ULTRA RUMBLE" - }, - { - "executables": [{"is_launcher": false, "name": "win64/bbqclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1157482043626762270", - "name": "The Texas Chain Saw Massacre" - }, - { - "executables": [{"is_launcher": false, "name": "fatesamurairemnant/fatesamurairemnant.exe", "os": "win32"}], - "hook": true, - "id": "1157587706461814844", - "name": "Fate/Samurai Remnant" - }, - { - "executables": [{"is_launcher": false, "name": "escape the game/escapethegame.exe", "os": "win32"}], - "hook": true, - "id": "1157799760653189181", - "name": "Escape the Game: Intro" - }, - { - "executables": [{"is_launcher": false, "name": "win64/shooter-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1158493859253325934", - "name": "Goobies" - }, - { - "aliases": ["Counter-Strike 2"], - "executables": [{"is_launcher": false, "name": "win64/cs2.exe", "os": "win32"}], - "hook": true, - "id": "1158877933042143272", - "name": "Counter-Strike 2", - "overlay_methods": 1 - }, - { - "executables": [{"is_launcher": false, "name": "unnamed space idle/spaceidle.exe", "os": "win32"}], - "hook": true, - "id": "1159913089551052951", - "name": "Unnamed Space Idle" - }, - { - "executables": [{"is_launcher": false, "name": "hero's land/herosland.exe", "os": "win32"}], - "hook": true, - "id": "1159928157768536194", - "name": "Hero's Land" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thps12.exe", "os": "win32"}], - "hook": true, - "id": "1160154655637127238", - "name": "Tony Hawk's\u2122 Pro Skater\u2122 1 + 2" - }, - { - "executables": [{"is_launcher": false, "name": "thief simulator 2/thief simulator 2.exe", "os": "win32"}], - "hook": true, - "id": "1160336714598973482", - "name": "Thief Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/tactics.exe", "os": "win32"}], - "hook": true, - "id": "1160924941579980830", - "name": "Hand of the Gods" - }, - { - "executables": [{"is_launcher": false, "name": "ahegal/ahegal.exe", "os": "win32"}], - "hook": true, - "id": "1160985169109463061", - "name": "AHEGAL" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pseudoregalia-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161090883496714250", - "name": "Pseudoregalia" - }, - { - "executables": [ - {"is_launcher": false, "name": "forza motorsport/forza_steamworks_release_final.exe", "os": "win32"} - ], - "hook": true, - "id": "1161181430911598633", - "name": "Forza Motorsport" - }, - { - "aliases": ["Persona 4 Golden"], - "executables": [{"is_launcher": false, "name": "persona 4 golden/p4g.exe", "os": "win32"}], - "hook": true, - "id": "1161770994134958150", - "name": "Persona 4 Golden" - }, - { - "aliases": ["Scribble It!"], - "executables": [ - {"is_launcher": false, "name": "win64/scribbleit-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "scribble it!/scribbleit.exe", "os": "win32"} - ], - "hook": true, - "id": "1161771169482014932", - "name": "Scribble It!" - }, - { - "aliases": ["NARUTO TO BORUTO: SHINOBI STRIKER"], - "executables": [{"is_launcher": false, "name": "win64/naruto-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161771263644155904", - "name": "NARUTO TO BORUTO: SHINOBI STRIKER" - }, - { - "aliases": [ - "Need for Speed Heat", - "Need for Speed Heat MULTi2 - ElAmigos version 1.0", - "Need for Speed\u2122 Heat" - ], - "executables": [{"is_launcher": false, "name": "need for speed heat/needforspeedheat.exe", "os": "win32"}], - "hook": true, - "id": "1161771367469948949", - "name": "Need for Speed\u2122 Heat" - }, - { - "aliases": ["CODE VEIN"], - "executables": [{"is_launcher": false, "name": "win64/codevein-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161771578049175602", - "name": "CODE VEIN" - }, - { - "aliases": ["Outward"], - "executables": [{"is_launcher": false, "name": "outward/outward.exe", "os": "win32"}], - "hook": true, - "id": "1161772249582411826", - "name": "Outward" - }, - { - "aliases": ["F1 2020", "F1\u00ae 2020"], - "executables": [ - {"is_launcher": false, "name": "f1 2020/f1_2020_dx12.exe", "os": "win32"}, - {"is_launcher": false, "name": "f1 2020/f1_2020.exe", "os": "win32"} - ], - "hook": true, - "id": "1161772431447441519", - "name": "F1 2020" - }, - { - "aliases": ["Hell Let Loose"], - "executables": [{"is_launcher": false, "name": "win64/hll-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161772875901051042", - "name": "Hell Let Loose" - }, - { - "aliases": ["It Takes Two"], - "executables": [{"is_launcher": false, "name": "win64/ittakestwo.exe", "os": "win32"}], - "hook": true, - "id": "1161772927566495865", - "name": "It Takes Two" - }, - { - "aliases": ["The Isle"], - "executables": [ - {"is_launcher": false, "name": "win64/theisleclient-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/theisle-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "1161778800816816228", - "name": "The Isle" - }, - { - "aliases": ["One-armed cook"], - "executables": [{"is_launcher": false, "name": "win64/oac-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161779440154595428", - "name": "One-armed cook" - }, - { - "aliases": ["F1 2019"], - "executables": [ - {"is_launcher": false, "name": "f1 2019/f1_2019_dx12.exe", "os": "win32"}, - {"is_launcher": false, "name": "f1 2019/f1_2019.exe", "os": "win32"} - ], - "hook": true, - "id": "1161792892520632350", - "name": "F1 2019" - }, - { - "aliases": ["eFootball PES 2021"], - "executables": [{"is_launcher": false, "name": "efootball pes 2021/pes2021.exe", "os": "win32"}], - "hook": true, - "id": "1161794381561483386", - "name": "eFootball PES 2021" - }, - { - "aliases": ["JUMP FORCE"], - "executables": [{"is_launcher": false, "name": "win64/jump_force-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161796161632489583", - "name": "JUMP FORCE" - }, - { - "aliases": ["GUILTY GEAR -STRIVE-"], - "executables": [{"is_launcher": false, "name": "win64/ggst-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161796385562177627", - "name": "GUILTY GEAR -STRIVE-" - }, - { - "aliases": ["Life is Strange 2"], - "executables": [{"is_launcher": false, "name": "win64/lis2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161796515476553779", - "name": "Life is Strange 2" - }, - { - "aliases": ["POLYGON"], - "executables": [ - {"is_launcher": false, "name": "win64/polygon-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "polygon/polygon.exe", "os": "win32"} - ], - "hook": true, - "id": "1161797410889142353", - "name": "POLYGON" - }, - { - "aliases": ["Ghostrunner"], - "executables": [{"is_launcher": false, "name": "win64/ghostrunner-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161799900879667270", - "name": "Ghostrunner" - }, - { - "executables": [{"is_launcher": false, "name": "win64/straygods-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1161875968936382485", - "name": "Stray Gods: The Roleplaying Musical" - }, - { - "executables": [{"is_launcher": false, "name": "moonring/moonring.exe", "os": "win32"}], - "hook": true, - "id": "1161921249061126164", - "name": "Moonring" - }, - { - "aliases": ["eFootball PES 2020"], - "executables": [{"is_launcher": false, "name": "efootball pes 2020/pes2020.exe", "os": "win32"}], - "hook": true, - "id": "1162073099777364019", - "name": "eFootball PES 2020" - }, - { - "aliases": ["Slappyball"], - "executables": [{"is_launcher": false, "name": "win64/smackball-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1162073981826904165", - "name": "Slappyball" - }, - { - "aliases": ["Medieval Dynasty"], - "executables": [{"is_launcher": false, "name": "win64/medieval_dynasty-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1162074139549519972", - "name": "Medieval Dynasty" - }, - { - "aliases": ["CRSED"], - "executables": [{"is_launcher": false, "name": "win64/cuisine_royale.exe", "os": "win32"}], - "hook": true, - "id": "1162074604576194650", - "name": "CRSED: F.O.A.D." - }, - { - "aliases": ["HITMAN\u2122 2"], - "executables": [{"is_launcher": false, "name": "retail/hitman2.exe", "os": "win32"}], - "hook": true, - "id": "1162075959038586900", - "name": "HITMAN\u2122 2" - }, - { - "aliases": ["Battlefield 2042"], - "executables": [{"is_launcher": false, "name": "battlefield 2042/bf2042.exe", "os": "win32"}], - "hook": true, - "id": "1162076274622222346", - "name": "Battlefield 2042" - }, - { - "aliases": ["The Elder Scrolls V: Skyrim VR"], - "executables": [{"is_launcher": false, "name": "skyrimvr/skyrimvr.exe", "os": "win32"}], - "hook": true, - "id": "1162077056553717792", - "name": "The Elder Scrolls V: Skyrim VR" - }, - { - "aliases": ["Escape the Backrooms"], - "executables": [{"is_launcher": false, "name": "win64/backrooms-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1162085521816813721", - "name": "Escape the Backrooms" - }, - { - "executables": [{"is_launcher": false, "name": "win64/desynced.exe", "os": "win32"}], - "hook": true, - "id": "1162087354522153081", - "name": "Desynced" - }, - { - "aliases": ["Five Nights at Freddy's 4"], - "executables": [ - {"is_launcher": false, "name": "fivenightsatfreddys4/halloweenedition.exe", "os": "win32"}, - {"is_launcher": false, "name": "fivenightsatfreddys4/fivenightsatfreddys4.exe", "os": "win32"} - ], - "hook": true, - "id": "1162092801320833024", - "name": "Five Nights at Freddy's 4" - }, - { - "aliases": ["Enderal: Forgotten Stories"], - "executables": [{"is_launcher": false, "name": "enderal/enderal launcher.exe", "os": "win32"}], - "hook": true, - "id": "1162095613660369057", - "name": "Enderal: Forgotten Stories" - }, - { - "aliases": ["Little Nightmares II"], - "executables": [{"is_launcher": false, "name": "win64/little nightmares ii.exe", "os": "win32"}], - "hook": true, - "id": "1162096096210854028", - "name": "Little Nightmares II" - }, - { - "aliases": ["SUPERHOT: MIND CONTROL DELETE"], - "executables": [{"is_launcher": false, "name": "superhotmcd/superhotmcd.exe", "os": "win32"}], - "hook": true, - "id": "1162119358739390534", - "name": "SUPERHOT: MIND CONTROL DELETE" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thefront.exe", "os": "win32"}], - "hook": true, - "id": "1162132707673919650", - "name": "The Front" - }, - { - "aliases": ["RuneLite"], - "executables": [{"is_launcher": false, "name": "runelite/runelite.exe", "os": "win32"}], - "hook": true, - "id": "1162151882039504916", - "name": "RuneLite" - }, - { - "aliases": ["Resident Evil Village"], - "executables": [ - {"is_launcher": false, "name": "resident evil village biohazard village/re8.exe", "os": "win32"} - ], - "hook": true, - "id": "1162153766859059241", - "name": "Resident Evil Village" - }, - { - "aliases": ["Kill It With Fire", "Kill It With Fire: HEATWAVE", "Kill It With Fire: IGNITION"], - "executables": [{"is_launcher": false, "name": "win64/kani-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1162154623688261662", - "name": "Kill It With Fire" - }, - { - "aliases": ["DUSK"], - "executables": [{"is_launcher": false, "name": "dusk/dusk.exe", "os": "win32"}], - "hook": true, - "id": "1162154828378669106", - "name": "DUSK" - }, - { - "aliases": ["Just Act Natural"], - "executables": [{"is_launcher": false, "name": "just act natural/justactnatural.exe", "os": "win32"}], - "hook": true, - "id": "1162154957777162240", - "name": "Just Act Natural" - }, - { - "aliases": ["CombatArms: Reloaded"], - "executables": [{"is_launcher": false, "name": "combat arms reloaded/engine.exe", "os": "win32"}], - "hook": true, - "id": "1162155719399833630", - "name": "CombatArms: Reloaded" - }, - { - "aliases": ["Stormworks: Build and Rescue"], - "executables": [ - {"is_launcher": false, "name": "stormworks/stormworks64.exe", "os": "win32"}, - {"is_launcher": false, "name": "stormworks/stormworks.exe", "os": "win32"} - ], - "hook": true, - "id": "1162157274412892300", - "name": "Stormworks: Build and Rescue" - }, - { - "aliases": ["Hello Neighbor"], - "executables": [{"is_launcher": false, "name": "win64/helloneighbor-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1162158216562614343", - "name": "Hello Neighbor" - }, - { - "aliases": ["Drug Dealer Simulator"], - "executables": [{"is_launcher": false, "name": "win64/drugdealersimulator-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1162159321354874910", - "name": "Drug Dealer Simulator" - }, - { - "aliases": ["Need for Speed\u2122 Payback"], - "executables": [ - {"is_launcher": false, "name": "need for speed payback/needforspeedpayback.exe", "os": "win32"} - ], - "hook": true, - "id": "1162173790449569822", - "name": "Need for Speed\u2122 Payback" - }, - { - "aliases": ["Command and Conquer 3: Tiberium Wars"], - "executables": [{"is_launcher": false, "name": "command and conquer 3 tiberium wars/cnc3.exe", "os": "win32"}], - "hook": true, - "id": "1162176596891943093", - "name": "Command and Conquer 3: Tiberium Wars" - }, - { - "aliases": ["KovaaK 2.0", "KovaaK 2.0: The Meta", "KovaaK's", "KovaaK's FPS Aim Trainer"], - "executables": [ - {"is_launcher": false, "name": "win64/fpsaimtrainer-win64-shipping.exe", "os": "win32"}, - {"is_launcher": false, "name": "fpsaimtrainer/fpsaimtrainer.exe", "os": "win32"} - ], - "hook": true, - "id": "1162428887066742904", - "name": "KovaaK's" - }, - { - "executables": [{"is_launcher": false, "name": "rise of eros/riseoferos.exe", "os": "win32"}], - "hook": true, - "id": "1162555408385310813", - "name": "Rise of Eros" - }, - { - "executables": [{"is_launcher": false, "name": "astrea/astrea.exe", "os": "win32"}], - "hook": true, - "id": "1162751719453769869", - "name": "Astrea: Six-Sided Oracles" - }, - { - "executables": [{"is_launcher": false, "name": "engine evolution 2023/engine evolution.exe", "os": "win32"}], - "hook": true, - "id": "1162812125165658237", - "name": "Engine Evolution 2023" - }, - { - "executables": [{"is_launcher": false, "name": "infinite/infinite.exe", "os": "win32"}], - "hook": true, - "id": "1162827283380310016", - "name": "Star Trek: Infinite" - }, - { - "executables": [{"is_launcher": false, "name": "underground blossom/undergroundblossom.exe", "os": "win32"}], - "hook": true, - "id": "1162902738334654464", - "name": "Underground Blossom" - }, - { - "executables": [{"is_launcher": false, "name": "chants of sennaar/chants of sennaar.exe", "os": "win32"}], - "hook": true, - "id": "1163084017965486161", - "name": "Chants of Sennaar" - }, - { - "aliases": ["Assassin's Creed Mirage"], - "executables": [ - {"is_launcher": false, "name": "assassinscreedmirage/acmirage.exe", "os": "win32"}, - {"is_launcher": false, "name": "assassin's creed mirage/acmirage.exe", "os": "win32"} - ], - "hook": true, - "id": "1163197033901998190", - "name": "Assassin's Creed Mirage" - }, - { - "aliases": ["Zula Europe"], - "executables": [{"is_launcher": false, "name": "game/zula.exe", "os": "win32"}], - "hook": true, - "id": "1163888866550366310", - "name": "Zula" - }, - { - "aliases": ["GROUND BRANCH"], - "executables": [{"is_launcher": false, "name": "win64/groundbranch-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1163889399273111664", - "name": "GROUND BRANCH" - }, - { - "aliases": ["Homeworld Remastered Collection"], - "executables": [{"is_launcher": false, "name": "release/homeworldrm.exe", "os": "win32"}], - "hook": true, - "id": "1163891226672644216", - "name": "Homeworld Remastered Collection" - }, - { - "aliases": ["Madden NFL 21"], - "executables": [{"is_launcher": false, "name": "madden nfl 21/madden21.exe", "os": "win32"}], - "hook": true, - "id": "1163891334126514296", - "name": "Madden NFL 21" - }, - { - "executables": [{"is_launcher": false, "name": "wizard with a gun/wizardwithagun.exe", "os": "win32"}], - "hook": true, - "id": "1163899276317966427", - "name": "Wizard with a Gun" - }, - { - "aliases": ["UNRAVEL\u2122 two"], - "executables": [{"is_launcher": false, "name": "unraveltwo/unraveltwo.exe", "os": "win32"}], - "hook": true, - "id": "1163955570840195122", - "name": "UNRAVEL\u2122 two" - }, - { - "aliases": ["PROTOTYPE 2"], - "executables": [{"is_launcher": false, "name": "prototype 2/prototype2.exe", "os": "win32"}], - "hook": true, - "id": "1163956037909487646", - "name": "PROTOTYPE 2" - }, - { - "aliases": ["Tales of Arise"], - "executables": [{"is_launcher": false, "name": "win64/tales of arise.exe", "os": "win32"}], - "hook": true, - "id": "1163956116716273784", - "name": "Tales of Arise" - }, - { - "aliases": ["Mount & Blade II: Bannerlord"], - "executables": [{"is_launcher": false, "name": "win64_shipping_client/bannerlord.exe", "os": "win32"}], - "hook": true, - "id": "1163956401874403438", - "name": "Mount & Blade II: Bannerlord" - }, - { - "aliases": ["Minesweeper"], - "executables": [{"is_launcher": false, "name": "minesweeper/minesweeper.exe", "os": "win32"}], - "hook": true, - "id": "1163957136213168159", - "name": "Minesweeper" - }, - { - "aliases": ["UNBEATABLE [white label]"], - "executables": [ - {"is_launcher": false, "name": "unbeatable [white label]/unbeatable [white label].exe", "os": "win32"}, - {"is_launcher": false, "name": "unbeatable/unbeatable [white label].exe", "os": "win32"} - ], - "hook": true, - "id": "1163960651039899648", - "name": "UNBEATABLE [white label]" - }, - { - "aliases": ["Call of Duty: Ghosts", "Call of Duty: Ghosts - Multiplayer"], - "executables": [ - {"is_launcher": false, "name": "call of duty ghosts/iw6mp64_ship.exe", "os": "win32"}, - {"is_launcher": false, "name": "call of duty ghosts/iw6sp64_ship.exe", "os": "win32"} - ], - "hook": true, - "id": "1163961885264191538", - "name": "Call of Duty: Ghosts" - }, - { - "executables": [{"is_launcher": false, "name": "sonic superstars/sonicsuperstars.exe", "os": "win32"}], - "hook": true, - "id": "1164004956500660305", - "name": "Sonic Superstars" - }, - { - "executables": [{"is_launcher": false, "name": "endless dungeon/endless dungeon.exe", "os": "win32"}], - "hook": true, - "id": "1164367373571211317", - "name": "ENDLESS\u2122 Dungeon" - }, - { - "executables": [{"is_launcher": false, "name": "resonite/resonite.exe", "os": "win32"}], - "hook": true, - "id": "1164563648820281344", - "name": "Resonite" - }, - { - "executables": [{"is_launcher": false, "name": "football manager 2024/fm.exe", "os": "win32"}], - "hook": true, - "id": "1164609153122172999", - "name": "Football Manager 2024" - }, - { - "aliases": ["FINAL FANTASY XII THE ZODIAC AGE"], - "executables": [{"is_launcher": false, "name": "x64/ffxii_tza.exe", "os": "win32"}], - "hook": true, - "id": "1164622199475413012", - "name": "FINAL FANTASY XII" - }, - { - "aliases": ["STAR WARS\u2122: The Force Unleashed\u2122 II"], - "executables": [{"is_launcher": false, "name": "star wars the force unleashed 2/swtfu2.exe", "os": "win32"}], - "hook": true, - "id": "1164623362501398648", - "name": "STAR WARS\u2122: The Force Unleashed\u2122 II" - }, - { - "aliases": ["Amazing Frog?"], - "executables": [{"is_launcher": false, "name": "amazing frog/amazingfrog.exe", "os": "win32"}], - "hook": true, - "id": "1164636163085193306", - "name": "Amazing Frog?" - }, - { - "aliases": ["Empires of the Undergrowth"], - "executables": [{"is_launcher": false, "name": "win64/eotu-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1164636668654006343", - "name": "Empires of the Undergrowth" - }, - { - "aliases": ["Palia"], - "executables": [{"is_launcher": false, "name": "win64/paliaclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1164638522469261414", - "name": "Palia" - }, - { - "aliases": ["Supraland"], - "executables": [{"is_launcher": false, "name": "win64/supraland-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1164638698244149388", - "name": "Supraland" - }, - { - "aliases": ["FIFA 19"], - "executables": [ - {"is_launcher": false, "name": "fifa 19/fifa19.exe", "os": "win32"}, - {"is_launcher": false, "name": "fifa19/fifa19.exe", "os": "win32"} - ], - "hook": true, - "id": "1164696488589406288", - "name": "FIFA 19" - }, - { - "aliases": ["FIFA 21"], - "executables": [{"is_launcher": false, "name": "fifa 21/fifa21.exe", "os": "win32"}], - "hook": true, - "id": "1164696536035377253", - "name": "FIFA 21" - }, - { - "aliases": ["F1\u00ae 22"], - "executables": [{"is_launcher": false, "name": "f1 22/f1_22.exe", "os": "win32"}], - "hook": true, - "id": "1164696888247861248", - "name": "F1\u00ae 22" - }, - { - "aliases": ["FIFA 20"], - "executables": [{"is_launcher": false, "name": "fifa 20/fifa20.exe", "os": "win32"}], - "hook": true, - "id": "1164697042187194458", - "name": "FIFA 20" - }, - { - "aliases": ["FIFA 23"], - "executables": [{"is_launcher": false, "name": "fifa 23/fifa23.exe", "os": "win32"}], - "hook": true, - "id": "1164697075582238730", - "name": "FIFA 23" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pagan-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1164775021076566106", - "name": "Pagan Online" - }, - { - "aliases": ["AMID EVIL"], - "executables": [{"is_launcher": false, "name": "win64/amidevil-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1164995500081172480", - "name": "AMID EVIL" - }, - { - "aliases": [ - "Minecraft: Story Mode - A Telltale Games Series", - "Minecraft: Story Mode - A Telltale Games Series - Episode 1" - ], - "executables": [ - { - "is_launcher": false, - "name": "minecraft story mode - a telltale game series/minecraftstorymode.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1164995818055549058", - "name": "Minecraft: Story Mode" - }, - { - "aliases": ["iRacing.com Race Simulation"], - "executables": [{"is_launcher": false, "name": "iracing/iracingsim64dx11.exe", "os": "win32"}], - "hook": true, - "id": "1164997420145459210", - "name": "iRacing.com Race Simulation" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ats-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1165756501676269588", - "name": "Alaskan Road Truckers" - }, - { - "executables": [{"is_launcher": false, "name": "the coffin of andy and leyley/game.exe", "os": "win32"}], - "hook": true, - "id": "1165771599031566346", - "name": "The Coffin of Andy and Leyley" - }, - { - "aliases": ["Recettear: An Item Shop's Tale"], - "executables": [{"is_launcher": false, "name": "recettear/recettear.exe", "os": "win32"}], - "hook": true, - "id": "1166051024423886980", - "name": "Recettear: An Item Shop's Tale" - }, - { - "executables": [{"is_launcher": false, "name": "warhammer 40k warpforge/warpforge.exe", "os": "win32"}], - "hook": true, - "id": "1166103825208320101", - "name": "Warhammer 40,000: Warpforge" - }, - { - "executables": [{"is_launcher": false, "name": "cities skylines ii/cities2.exe", "os": "win32"}], - "hook": true, - "id": "1166420945016201326", - "name": "Cities: Skylines II" - }, - { - "executables": [{"is_launcher": false, "name": "the genesis order/game.exe", "os": "win32"}], - "hook": true, - "id": "1166511460600512532", - "name": "The Genesis Order" - }, - { - "executables": [{"is_launcher": false, "name": "mgs1/metal gear solid.exe", "os": "win32"}], - "hook": true, - "id": "1166541661686472754", - "name": "METAL GEAR SOLID - Master Collection Version" - }, - { - "executables": [{"is_launcher": false, "name": "teleforum/teleforum.exe", "os": "win32"}], - "hook": true, - "id": "1166632254735405126", - "name": "TELEFORUM" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "fears to fathom - ironbark lookout/fears to fathom - ironbark lookout.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1166813464631705600", - "name": "Fears to Fathom - Ironbark Lookout" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "infection free zone prologue/infection free zone prologue.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1166828573433286756", - "name": "Infection Free Zone - Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/arkascended_be.exe", "os": "win32"}], - "hook": true, - "id": "1166979555806949406", - "name": "ARK: Survival Ascended" - }, - { - "aliases": ["Night Loops"], - "executables": [{"is_launcher": false, "name": "night loops/night loops.exe", "os": "win32"}], - "hook": true, - "id": "1167189489538576445", - "name": "Night Loops" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thebloodline-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1167341933321011210", - "name": "The Bloodline" - }, - { - "executables": [{"is_launcher": false, "name": "slay the princess/slaytheprincess.exe", "os": "win32"}], - "hook": true, - "id": "1167508044779884624", - "name": "Slay the Princess" - }, - { - "executables": [{"is_launcher": false, "name": "lethal company/lethal company.exe", "os": "win32"}], - "hook": true, - "id": "1167674267748540516", - "name": "Lethal Company" - }, - { - "executables": [ - {"is_launcher": false, "name": "the jackbox party pack 10/the jackbox party pack 10.exe", "os": "win32"} - ], - "hook": true, - "id": "1167674275927429242", - "name": "The Jackbox Party Pack 10" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dont_scream-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1167704323606712400", - "name": "DON'T SCREAM" - }, - { - "executables": [{"is_launcher": false, "name": "fatalzone/fatalzone.exe", "os": "win32"}], - "hook": true, - "id": "1167870454212612257", - "name": "FatalZone" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "mgs master collection bonus content/mgs mc1 bonus content.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1168383799013429278", - "name": "METAL GEAR SOLID: MASTER COLLECTION Vol.1 BONUS CONTENT" - }, - { - "executables": [{"is_launcher": false, "name": "pyroworks/pyroworks v1.0.0.exe", "os": "win32"}], - "hook": true, - "id": "1168534789813448724", - "name": "Pyroworks" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ghostrunner2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1168595214894628874", - "name": "Ghostrunner 2" - }, - { - "executables": [{"is_launcher": false, "name": "dragonheir silent gods/dragonheir.exe", "os": "win32"}], - "hook": true, - "id": "1168655587958063205", - "name": "Dragonheir: Silent Gods" - }, - { - "aliases": [ - "MovieStarPlanet (wersja 1.0.8)", - "MovieStarPlanet 1.0.8 s\u00fcr\u00fcm\u00fc", - "MovieStarPlanet version 1.0.8" - ], - "executables": [{"is_launcher": false, "name": "moviestarplanet/ml.exe", "os": "win32"}], - "hook": true, - "id": "1168672770259959939", - "name": "MovieStarPlanet" - }, - { - "executables": [{"is_launcher": false, "name": "game/sogame.exe", "os": "win32"}], - "hook": true, - "id": "1168700885803733113", - "name": "Stay Out" - }, - { - "aliases": ["Insaniquarium! Deluxe"], - "executables": [{"is_launcher": false, "name": "insaniquarium deluxe/insaniquarium.exe", "os": "win32"}], - "hook": true, - "id": "1169015028012298280", - "name": "Insaniquarium! Deluxe" - }, - { - "executables": [{"is_launcher": false, "name": "win64/wrc.exe", "os": "win32"}], - "hook": true, - "id": "1169017999999643790", - "name": "WRC" - }, - { - "executables": [{"is_launcher": false, "name": "yoogames_hd1/wd.exe", "os": "win32"}], - "hook": true, - "id": "1169591848361271317", - "name": "\u5b8c\u86cb\uff01\u6211\u88ab\u7f8e\u5973\u5305\u56f4\u4e86\uff01" - }, - { - "executables": [{"is_launcher": false, "name": "for the king ii/for the king ii.exe", "os": "win32"}], - "hook": true, - "id": "1169697504942620714", - "name": "For The King II" - }, - { - "executables": [{"is_launcher": false, "name": "hell girls/game.exe", "os": "win32"}], - "hook": true, - "id": "1169742750866997459", - "name": "Hell Girls" - }, - { - "executables": [{"is_launcher": false, "name": "topple tactics/topple tactics.exe", "os": "win32"}], - "hook": true, - "id": "1169772981988368544", - "name": "Topple Tactics" - }, - { - "aliases": ["Arma: Cold War Assault"], - "executables": [{"is_launcher": false, "name": "arma cold war assault/coldwarassault.exe", "os": "win32"}], - "hook": true, - "id": "1170036773443866706", - "name": "Arma: Cold War Assault" - }, - { - "executables": [{"is_launcher": false, "name": "woman_communication/womancommunication.exe", "os": "win32"}], - "hook": true, - "id": "1170044823231795361", - "name": "\u30a6\u30fc\u30de\u30f3\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/jectedrivals-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1170059847153238116", - "name": "Jected - Rivals" - }, - { - "aliases": ["Battlestations: Pacific"], - "executables": [ - {"is_launcher": false, "name": "battlestations pacific/battlestationspacific.exe", "os": "win32"} - ], - "hook": true, - "id": "1170067472599224482", - "name": "Battlestations: Pacific" - }, - { - "aliases": ["M.A.S.S. Builder"], - "executables": [{"is_launcher": false, "name": "win64/mass_builder-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1170069160013877300", - "name": "M.A.S.S. Builder" - }, - { - "aliases": ["Alicia"], - "executables": [{"is_launcher": false, "name": "alicia/alicia.exe", "os": "win32"}], - "hook": true, - "id": "1170070899567906877", - "name": "Alicia" - }, - { - "aliases": ["Wargame: European Escalation"], - "executables": [{"is_launcher": false, "name": "wargame european escalation/wargame.exe", "os": "win32"}], - "hook": true, - "id": "1170071559759728640", - "name": "Wargame: European Escalation" - }, - { - "executables": [{"is_launcher": false, "name": "win64/robocop-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1170090042430075010", - "name": "RoboCop: Rogue City" - }, - { - "executables": [{"is_launcher": false, "name": "star ocean the second story r/so2r.exe", "os": "win32"}], - "hook": true, - "id": "1170090044510457936", - "name": "STAR OCEAN THE SECOND STORY R" - }, - { - "executables": [{"is_launcher": false, "name": "win64/talos2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1170150600349073438", - "name": "The Talos Principle 2" - }, - { - "executables": [{"is_launcher": false, "name": "postal iii/p3.exe", "os": "win32"}], - "hook": true, - "id": "1170256135748603964", - "name": "Postal 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/songofnunu-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1170346729468600330", - "name": "Song of Nunu: A League of Legends Story" - }, - { - "executables": [{"is_launcher": false, "name": "i am future/i am future.exe", "os": "win32"}], - "hook": true, - "id": "1170467525595762849", - "name": "I Am Future: Cozy Apocalypse Survival" - }, - { - "executables": [{"is_launcher": false, "name": "beecarbonize/beecarbonize.exe", "os": "win32"}], - "hook": true, - "id": "1170603416649740308", - "name": "Beecarbonize" - }, - { - "executables": [{"is_launcher": false, "name": "win64/chanbara-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1170648717603393546", - "name": "\u5deb\u514e - KANNAGI USAGI -" - }, - { - "executables": [{"is_launcher": false, "name": "win64/robinhoodfull-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1170769561302347807", - "name": "Robin Hood - Sherwood Builders - Bandit's Trail" - }, - { - "executables": [{"is_launcher": false, "name": "wedding witch/wedding witch.exe", "os": "win32"}], - "hook": true, - "id": "1171237599562702848", - "name": "Wedding Witch" - }, - { - "executables": [{"is_launcher": false, "name": "wildmender/wildmender_win64.exe", "os": "win32"}], - "hook": true, - "id": "1171313098464968705", - "name": "Wildmender" - }, - { - "executables": [{"is_launcher": false, "name": "welcome to kowloon/welcome to kowloon.exe", "os": "win32"}], - "hook": true, - "id": "1171433895439380540", - "name": "Welcome to Kowloon" - }, - { - "executables": [{"is_launcher": false, "name": "win64/deadsignal-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1171539593330446467", - "name": "Dead Signal" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "stronghold definitive edition/stronghold 1 definitive edition.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1171766117610569750", - "name": "Stronghold: Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "headbangers rhythm royale/headbangers.exe", "os": "win32"}], - "hook": true, - "id": "1171841583117762570", - "name": "Headbangers: Rhythm Royale" - }, - { - "executables": [{"is_launcher": false, "name": "risk of rain returns/risk of rain returns.exe", "os": "win32"}], - "hook": true, - "id": "1171901997692223649", - "name": "Risk of Rain Returns" - }, - { - "executables": [{"is_launcher": false, "name": "media/likeadragongaiden.exe", "os": "win32"}], - "hook": true, - "id": "1171932177429168159", - "name": "Like a Dragon Gaiden: The Man Who Erased His Name" - }, - { - "executables": [{"is_launcher": false, "name": "povestka/povestka.exe", "os": "win32"}], - "hook": true, - "id": "1171932180222574662", - "name": "\u041f\u043e\u0432\u0435\u0441\u0442\u043a\u0430" - }, - { - "executables": [{"is_launcher": false, "name": "robocraft 2/startrobocraft2.exe", "os": "win32"}], - "hook": true, - "id": "1172068071666622474", - "name": "Robocraft 2" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "nickelodeon all-star brawl 2/nickelodeon all-star brawl 2.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1172430455526670447", - "name": "Nickelodeon All-Star Brawl 2" - }, - { - "executables": [{"is_launcher": false, "name": "stg football/football.exe", "os": "win32"}], - "hook": true, - "id": "1172702246589448233", - "name": "STG Football" - }, - { - "executables": [{"is_launcher": false, "name": "ak-xolotl/ak-xolotl.exe", "os": "win32"}], - "hook": true, - "id": "1172777744942243900", - "name": "AK-xolotl" - }, - { - "executables": [{"is_launcher": false, "name": "gatekeeper infinity/gatekeeper infinity.exe", "os": "win32"}], - "hook": true, - "id": "1172898543552434186", - "name": "Gatekeeper: Infinity" - }, - { - "executables": [{"is_launcher": false, "name": "bucket brawl ahlman edition/bucketbrawl.exe", "os": "win32"}], - "hook": true, - "id": "1172898547214061681", - "name": "Bucket Brawl: Ahlman Edition" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "warriors rise to glory! online multiplayer open beta/warriors rise to glory.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1172943840617967727", - "name": "Warriors: Rise to Glory! Online Multiplayer Open Beta" - }, - { - "executables": [{"is_launcher": false, "name": "grapples galore/grapples galore.exe", "os": "win32"}], - "hook": true, - "id": "1173004245440675940", - "name": "Grapples Galore" - }, - { - "executables": [{"is_launcher": false, "name": "riichicity/mahjong-jp.exe", "os": "win32"}], - "hook": true, - "id": "1173170338406858773", - "name": "\u9ebb\u96c0\u4e00\u756a\u8857 - \u30aa\u30f3\u30e9\u30a4\u30f3\u5bfe\u6226\u9ebb\u96c0\u30b2\u30fc\u30e0" - }, - { - "executables": [{"is_launcher": false, "name": "class_of_09-1.2/class_of_09.exe", "os": "win32"}], - "hook": true, - "id": "1173200551857627146", - "name": "Class of '09" - }, - { - "executables": [{"is_launcher": false, "name": "scene investigators/scene investigators.exe", "os": "win32"}], - "hook": true, - "id": "1173291173532676247", - "name": "Scene Investigators" - }, - { - "executables": [{"is_launcher": false, "name": "dungeons 4/dungeons 4.exe", "os": "win32"}], - "hook": true, - "id": "1173306232774340669", - "name": "Dungeons 4" - }, - { - "executables": [{"is_launcher": false, "name": "romance club/romance club.exe", "os": "win32"}], - "hook": true, - "id": "1173381734713274408", - "name": "Romance Club" - }, - { - "executables": [{"is_launcher": false, "name": "outpath/outpath.exe", "os": "win32"}], - "hook": true, - "id": "1173442126525247658", - "name": "Outpath" - }, - { - "executables": [{"is_launcher": false, "name": "ratopia/ratopia.exe", "os": "win32"}], - "hook": true, - "id": "1173578049783074838", - "name": "Ratopia" - }, - { - "executables": [ - {"is_launcher": false, "name": "the hardest game ever/the hardest game ever.exe", "os": "win32"} - ], - "hook": true, - "id": "1173759216897490964", - "name": "The Hardest Game Ever" - }, - { - "executables": [{"is_launcher": false, "name": "purple place/purple place.exe", "os": "win32"}], - "hook": true, - "id": "1173880013733507072", - "name": "Purple Place - Classic Games" - }, - { - "aliases": ["eFootball\u2122 2024"], - "executables": [{"is_launcher": false, "name": "win64/efootball.exe", "os": "win32"}], - "hook": true, - "id": "1174039404919144448", - "name": "eFootball\u2122" - }, - { - "aliases": ["Gas Station Simulator", "Gas Station Simulator: Prologue - Early Days"], - "executables": [{"is_launcher": false, "name": "win64/gss2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1174039992859885658", - "name": "Gas Station Simulator" - }, - { - "aliases": ["Ready or Not"], - "executables": [{"is_launcher": false, "name": "win64/readyornot-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1174041358995042375", - "name": "Ready or Not" - }, - { - "aliases": ["Shantae: Half-Genie Hero"], - "executables": [{"is_launcher": false, "name": "executable/shantaehero.exe", "os": "win32"}], - "hook": true, - "id": "1174041581725171834", - "name": "Shantae: Half-Genie Hero" - }, - { - "aliases": ["DOOM II: Hell on Earth"], - "executables": [{"is_launcher": false, "name": "doom 2/base/dosbox.exe", "os": "win32"}], - "hook": true, - "id": "1174042035276230686", - "name": "DOOM II: Hell on Earth" - }, - { - "aliases": ["Worms Ultimate Mayhem"], - "executables": [{"is_launcher": false, "name": "wormsxhd/wormsmayhem.exe", "os": "win32"}], - "hook": true, - "id": "1174042244999807006", - "name": "Worms Ultimate Mayhem" - }, - { - "aliases": ["Mafia - Definitve Edition", "Mafia: Definitive Edition"], - "executables": [ - {"is_launcher": false, "name": "mafia - definitive edition/mafiadefinitiveedition.exe", "os": "win32"}, - {"is_launcher": false, "name": "mafia definitive edition/mafiadefinitiveedition.exe", "os": "win32"} - ], - "hook": true, - "id": "1174042614765457508", - "name": "Mafia: Definitive Edition" - }, - { - "aliases": ["Mafia III: Definitive Edition"], - "executables": [{"is_launcher": false, "name": "mafia iii/mafia3definitiveedition.exe", "os": "win32"}], - "hook": true, - "id": "1174042641814519879", - "name": "Mafia III: Definitive Edition" - }, - { - "aliases": ["Watch Dogs: Legion"], - "executables": [{"is_launcher": false, "name": "bin/watchdogslegion.exe", "os": "win32"}], - "hook": true, - "id": "1174043296864157706", - "name": "Watch Dogs: Legion" - }, - { - "aliases": ["Rumble Fighter: Unleashed"], - "executables": [{"is_launcher": false, "name": "rumblefighter/rumblefighter.exe", "os": "win32"}], - "hook": true, - "id": "1174043556793552906", - "name": "Rumble Fighter: Unleashed" - }, - { - "executables": [{"is_launcher": false, "name": "imomushi/imomushi.exe", "os": "win32"}], - "hook": true, - "id": "1174242404019208283", - "name": "\u3044\u3082\u3080\u3057" - }, - { - "executables": [{"is_launcher": false, "name": "death must die/death must die.exe", "os": "win32"}], - "hook": true, - "id": "1174529287714517002", - "name": "Death Must Die" - }, - { - "executables": [{"is_launcher": false, "name": "sim companies/sim companies.exe", "os": "win32"}], - "hook": true, - "id": "1174574629352902746", - "name": "Sim Companies" - }, - { - "aliases": ["Madden NFL 24"], - "executables": [{"is_launcher": false, "name": "madden nfl 24/madden24.exe", "os": "win32"}], - "hook": true, - "id": "1174755755799355473", - "name": "Madden NFL 24" - }, - { - "aliases": ["Microsoft Halo"], - "executables": [{"is_launcher": false, "name": "halo/halo.exe", "os": "win32"}], - "hook": true, - "id": "1174756409330647060", - "name": "Microsoft Halo" - }, - { - "aliases": ["Trials of Mana"], - "executables": [{"is_launcher": false, "name": "win64/trials of mana-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1174757371856310332", - "name": "Trials of Mana" - }, - { - "aliases": ["Trials Rising"], - "executables": [{"is_launcher": false, "name": "datapack/trialsrising.exe", "os": "win32"}], - "hook": true, - "id": "1174757443767648417", - "name": "Trials Rising" - }, - { - "executables": [{"is_launcher": false, "name": "slime 3k/slime3k.exe", "os": "win32"}], - "hook": true, - "id": "1174891675865333871", - "name": "Slime 3K: Rise Against Despot" - }, - { - "executables": [{"is_launcher": false, "name": "bopl battle/boplbattle.exe", "os": "win32"}], - "hook": true, - "id": "1174921876041125928", - "name": "Bopl Battle" - }, - { - "executables": [ - {"is_launcher": false, "name": "naruto x boruto ultimate ninja storm connections/nsunsc.exe", "os": "win32"} - ], - "hook": true, - "id": "1175057769913659442", - "name": "NARUTO X BORUTO Ultimate Ninja STORM CONNECTIONS" - }, - { - "executables": [{"is_launcher": false, "name": "gunsmith simulator/gunsmith simulator.exe", "os": "win32"}], - "hook": true, - "id": "1175103066966601798", - "name": "Gunsmith Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "win64/overstepclient.exe", "os": "win32"}], - "hook": true, - "id": "1175118175025766511", - "name": "Overstep" - }, - { - "executables": [{"is_launcher": false, "name": "pizza possum/pizzapossum.exe", "os": "win32"}], - "hook": true, - "id": "1175163467318182018", - "name": "Pizza Possum" - }, - { - "executables": [ - {"is_launcher": false, "name": "i'm on observation duty 6/i'm on observation duty 6.exe", "os": "win32"} - ], - "hook": true, - "id": "1175163471315357826", - "name": "I'm on Observation Duty 6" - }, - { - "executables": [{"is_launcher": false, "name": "mining mechs/mining mechs.exe", "os": "win32"}], - "hook": true, - "id": "1175178569807315056", - "name": "Mining Mechs" - }, - { - "executables": [{"is_launcher": false, "name": "otxo/otxo_release.exe", "os": "win32"}], - "hook": true, - "id": "1175480599239204874", - "name": "OTXO" - }, - { - "executables": [{"is_launcher": false, "name": "an arcade full of cats/arcade.exe", "os": "win32"}], - "hook": true, - "id": "1175631552835760188", - "name": "An Arcade Full of Cats" - }, - { - "executables": [ - {"is_launcher": false, "name": "refind self the personality test game/refindself.exe", "os": "win32"} - ], - "hook": true, - "id": "1175661750755008522", - "name": "Refind Self: \u6027\u683c\u8a3a\u65ad\u30b2\u30fc\u30e0" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "warhammer age of sigmar - realms of ruin/warhammer age of sigmar - realms of ruin.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1175782544017473536", - "name": "Warhammer Age of Sigmar: Realms of Ruin" - }, - { - "executables": [{"is_launcher": false, "name": "persona 5 tactica/persona 5 tactica.exe", "os": "win32"}], - "hook": true, - "id": "1175888244785807520", - "name": "Persona 5 Tactica" - }, - { - "executables": [{"is_launcher": false, "name": "win64/trainsimworld.exe", "os": "win32"}], - "hook": true, - "id": "1175903388228124672", - "name": "Train Sim World\u00ae 4" - }, - { - "executables": [{"is_launcher": false, "name": "cuisineer/cuisineer.exe", "os": "win32"}], - "hook": true, - "id": "1176190385614246039", - "name": "Cuisineer" - }, - { - "executables": [{"is_launcher": false, "name": "project hardline/project hardline.exe", "os": "win32"}], - "hook": true, - "id": "1176205337133592667", - "name": "Project Hardline" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sauna-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1176431830480719882", - "name": "Soak & Splash" - }, - { - "executables": [{"is_launcher": false, "name": "cobalt core/cobaltcore.exe", "os": "win32"}], - "hook": true, - "id": "1176688516051259492", - "name": "Cobalt Core" - }, - { - "executables": [{"is_launcher": false, "name": "blasterbeat/blasterbeat.exe", "os": "win32"}], - "hook": true, - "id": "1176779112875032657", - "name": "BlasterBeat" - }, - { - "executables": [{"is_launcher": false, "name": "watermelon game/watermelon game.exe", "os": "win32"}], - "hook": true, - "id": "1176899912970014821", - "name": "Watermelon Game" - }, - { - "executables": [{"is_launcher": false, "name": "the last faith/the last faith.exe", "os": "win32"}], - "hook": true, - "id": "1176930144091373578", - "name": "The Last Faith" - }, - { - "executables": [{"is_launcher": false, "name": "c09ru-1.0/c09ru.exe", "os": "win32"}], - "hook": true, - "id": "1177081141690388480", - "name": "Class of '09: The Re-Up" - }, - { - "executables": [{"is_launcher": false, "name": "cursorblade/cursorblade_1.0.exe", "os": "win32"}], - "hook": true, - "id": "1177111304205508608", - "name": "Cursorblade" - }, - { - "executables": [{"is_launcher": false, "name": "pumping simulator 2/pumping simulator 2.exe", "os": "win32"}], - "hook": true, - "id": "1177277395485593762", - "name": "Pumping Simulator 2" - }, - { - "executables": [{"is_launcher": false, "name": "those games/those games.exe", "os": "win32"}], - "hook": true, - "id": "1177368079412506674", - "name": "YEAH! YOU WANT \"THOSE GAMES,\" RIGHT? SO HERE YOU GO! NOW, LET'S SEE YOU CLEAR THEM!" - }, - { - "executables": [{"is_launcher": false, "name": "trine 5/trine5.exe", "os": "win32"}], - "hook": true, - "id": "1177624686595678228", - "name": "Trine 5: A Clockwork Conspiracy" - }, - { - "executables": [{"is_launcher": false, "name": "gym simulator 24/gymsimulator24.exe", "os": "win32"}], - "hook": true, - "id": "1177745497654558720", - "name": "Gym Simulator 24" - }, - { - "executables": [{"is_launcher": false, "name": "flyout/flyout.exe", "os": "win32"}], - "hook": true, - "id": "1178485361027076246", - "name": "Flyout" - }, - { - "executables": [{"is_launcher": false, "name": "strike force heroes/strike force heroes.exe", "os": "win32"}], - "hook": true, - "id": "1178485365879885885", - "name": "Strike Force Heroes" - }, - { - "executables": [ - {"is_launcher": false, "name": "quickie fantasy adventure/quickie fantasy adventure.exe", "os": "win32"} - ], - "hook": true, - "id": "1178591067399016520", - "name": "Quickie: Fantasy Adventure" - }, - { - "executables": [{"is_launcher": false, "name": "win64/justup-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1178666557858119730", - "name": "Only Up: With Friends" - }, - { - "executables": [{"is_launcher": false, "name": "micro civilization/civ.exe", "os": "win32"}], - "hook": true, - "id": "1178847742664122438", - "name": "Microcivilization" - }, - { - "executables": [{"is_launcher": false, "name": "win64/gopota.exe", "os": "win32"}], - "hook": true, - "id": "1179013841644965900", - "name": "\u0413.\u041e.\u041f.\u041e.\u0422.\u0410" - }, - { - "executables": [{"is_launcher": false, "name": "paleo pines/paleo pines.exe", "os": "win32"}], - "hook": true, - "id": "1179497100430540841", - "name": "Paleo Pines" - }, - { - "executables": [{"is_launcher": false, "name": "untitled ghost game/untitled ghost game.exe", "os": "win32"}], - "hook": true, - "id": "1179587615268294746", - "name": "Untitled Ghost Game" - }, - { - "executables": [{"is_launcher": false, "name": "win64/train-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1179708416843841597", - "name": "Last Train Home" - }, - { - "executables": [{"is_launcher": false, "name": "win64/exit8-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1179783913296625775", - "name": "\uff18\u756a\u51fa\u53e3" - }, - { - "executables": [{"is_launcher": false, "name": "mysuika/mysuika.exe", "os": "win32"}], - "hook": true, - "id": "1179829212572549220", - "name": "My Suika - Watermelon Game" - }, - { - "executables": [{"is_launcher": false, "name": "win64/piratefs-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1179950008880070757", - "name": "Pirate Fighting Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "mglauncher/mgl.exe", "os": "win32"}], - "hook": true, - "id": "1180146300176580719", - "name": "HAWKED" - }, - { - "aliases": ["Old School RuneScape"], - "executables": [ - {"is_launcher": false, "name": "old school runescape/client/osclient.exe", "os": "win32"}, - {"is_launcher": false, "name": "win64/osclient.exe", "os": "win32"} - ], - "hook": true, - "id": "1180205756998488064", - "name": "Old School RuneScape" - }, - { - "executables": [{"is_launcher": false, "name": "win64/the_purge_dilemma-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1180206782904283146", - "name": "The Purge Dilemma" - }, - { - "executables": [{"is_launcher": false, "name": "let's school/letsschool.exe", "os": "win32"}], - "hook": true, - "id": "1180267133918253176", - "name": "Let's School" - }, - { - "executables": [{"is_launcher": false, "name": "holoparade/holoparade.exe", "os": "win32"}], - "hook": true, - "id": "1180357692452261928", - "name": "\u30db\u30ed\u30d1\u30ec\u30fc\u30c9" - }, - { - "executables": [{"is_launcher": false, "name": "quasimorph/quasimorph.exe", "os": "win32"}], - "hook": true, - "id": "1180402992361513060", - "name": "Quasimorph" - }, - { - "executables": [ - {"is_launcher": false, "name": "cats hidden in jingle jam/cats hidden in jingle jam.exe", "os": "win32"} - ], - "hook": true, - "id": "1180629530885500959", - "name": "Cats Hidden in Jingle Jam" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "extremely powerful capybaras training grounds/extremely_powerful_capybaras.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1180674803200434269", - "name": "Extremely Powerful Capybaras: Training Grounds" - }, - { - "executables": [ - {"is_launcher": false, "name": "die in the dungeon origins/die in the dungeon origins.exe", "os": "win32"} - ], - "hook": true, - "id": "1180795587948466216", - "name": "Die in the Dungeon: Origins" - }, - { - "executables": [{"is_launcher": false, "name": "eternights/eternights.exe", "os": "win32"}], - "hook": true, - "id": "1181097576943071344", - "name": "Eternights" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pinballm-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1181127765773267014", - "name": "Pinball M" - }, - { - "executables": [ - {"is_launcher": false, "name": "the cosmic wheel sisterhood/the_cosmic_wheel_sisterhood.exe", "os": "win32"} - ], - "hook": true, - "id": "1181142868178501683", - "name": "The Cosmic Wheel Sisterhood" - }, - { - "executables": [{"is_launcher": false, "name": "mister furry/mister furry.exe", "os": "win32"}], - "hook": true, - "id": "1181595857078993036", - "name": "\u041c\u0438\u0441\u0442\u0435\u0440 \u0424\u0443\u0440\u0440\u0438" - }, - { - "executables": [{"is_launcher": false, "name": "magicraft/magicraft.exe", "os": "win32"}], - "hook": true, - "id": "1182048899444260944", - "name": "Zauberhandwerk Magicraft" - }, - { - "executables": [{"is_launcher": false, "name": "vividstasis/vividstasis.exe", "os": "win32"}], - "hook": true, - "id": "1182048903525306539", - "name": "vivid/stasis" - }, - { - "executables": [{"is_launcher": false, "name": "tevi/tevi.exe", "os": "win32"}], - "hook": true, - "id": "1182094137344925726", - "name": "TEVI" - }, - { - "executables": [{"is_launcher": false, "name": "ff7ec/ff7ec.exe", "os": "win32"}], - "hook": true, - "id": "1182320629832237076", - "name": "FINAL FANTASY VII EVER CRISIS" - }, - { - "executables": [{"is_launcher": false, "name": "revolver/revolver.exe", "os": "win32"}], - "hook": true, - "id": "1182350933275971585", - "name": "Kill The Crows" - }, - { - "executables": [{"is_launcher": false, "name": "j-jump arena/j-jump arena.exe", "os": "win32"}], - "hook": true, - "id": "1182365934841778176", - "name": "J-Jump Arena" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thedaybefore_be.exe", "os": "win32"}], - "hook": true, - "id": "1182396138846957588", - "name": "The Day Before" - }, - { - "executables": [{"is_launcher": false, "name": "warhammer 40,000 rogue trader/wh40krt.exe", "os": "win32"}], - "hook": true, - "id": "1182396144152748072", - "name": "Warhammer 40,000: Rogue Trader" - }, - { - "executables": [{"is_launcher": false, "name": "sledders/sledders.exe", "os": "win32"}], - "hook": true, - "id": "1182456525256663040", - "name": "Sledders" - }, - { - "executables": [{"is_launcher": false, "name": "win64/discovery.exe", "os": "win32"}], - "hook": true, - "id": "1182713227491147776", - "name": "THE FINALS" - }, - { - "executables": [{"is_launcher": false, "name": "win64/azure-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1182743417265070100", - "name": "Life Makeover" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thelastsurvivor-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1182788724552106105", - "name": "Apocalypse Party" - }, - { - "executables": [{"is_launcher": false, "name": "cocoon/universe.exe", "os": "win32"}], - "hook": true, - "id": "1182864211353809016", - "name": "COCOON" - }, - { - "executables": [{"is_launcher": false, "name": "juice galaxy/juice galaxy.exe", "os": "win32"}], - "hook": true, - "id": "1182894408346112050", - "name": "Juice Galaxy" - }, - { - "executables": [{"is_launcher": false, "name": "pathless woods prologue/pathless woods.exe", "os": "win32"}], - "hook": true, - "id": "1182954809532366929", - "name": "Pathless Woods: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "win64/stormstrikerclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1183030307943874630", - "name": "Storm Striker" - }, - { - "executables": [{"is_launcher": false, "name": "steamworld build/steamworld build.exe", "os": "win32"}], - "hook": true, - "id": "1183063100912574605", - "name": "SteamWorld Build" - }, - { - "executables": [{"is_launcher": false, "name": "milfy city final edition/milfycity.exe", "os": "win32"}], - "hook": true, - "id": "1183063108395204768", - "name": "Milfy City - Final Edition" - }, - { - "executables": [{"is_launcher": false, "name": "a date with death/adatewithdeath.exe", "os": "win32"}], - "hook": true, - "id": "1183136060226678834", - "name": "A Date with Death" - }, - { - "executables": [{"is_launcher": false, "name": "win64/standbox-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1183211497279729664", - "name": "STANDBOX" - }, - { - "executables": [{"is_launcher": false, "name": "taora beginning/taora beginning.exe", "os": "win32"}], - "hook": true, - "id": "1183906183837384816", - "name": "Taora : Beginning" - }, - { - "executables": [{"is_launcher": false, "name": "win64/pinballfx-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1183921183595429918", - "name": "Pinball FX" - }, - { - "executables": [{"is_launcher": false, "name": "microclient64/liuseloader.exe", "os": "win32"}], - "hook": true, - "id": "1183981646811254845", - "name": "Blood Strike" - }, - { - "executables": [ - {"is_launcher": false, "name": "shadow gambit the cursed crew/shadowgambit_tcc.exe", "os": "win32"} - ], - "hook": true, - "id": "1184117473222590575", - "name": "Shadow Gambit: The Cursed Crew" - }, - { - "executables": [{"is_launcher": false, "name": "cats and seek/cats and seek.exe", "os": "win32"}], - "hook": true, - "id": "1184147670097465354", - "name": "Cats and Seek" - }, - { - "executables": [ - {"is_launcher": false, "name": "timelinewalkerdarkworld/timeline walker dark world.exe", "os": "win32"} - ], - "hook": true, - "id": "1184208075054399540", - "name": "Time Walker: Dark World" - }, - { - "executables": [{"is_launcher": false, "name": "total war battles kingdom/twb_kingdom.exe", "os": "win32"}], - "hook": true, - "id": "1184268466233016391", - "name": "Total War Battles: KINGDOM" - }, - { - "executables": [{"is_launcher": false, "name": "out of hand/out of hand.exe", "os": "win32"}], - "hook": true, - "id": "1184298663258894426", - "name": "Out of Hand" - }, - { - "executables": [{"is_launcher": false, "name": "grabity/grabity.exe", "os": "win32"}], - "hook": true, - "id": "1184630847140270130", - "name": "Grabity" - }, - { - "executables": [{"is_launcher": false, "name": "win64/gbvsr-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1184812062145265725", - "name": "Granblue Fantasy Versus: Rising" - }, - { - "executables": [{"is_launcher": false, "name": "bin/atlasfallen (vk).exe", "os": "win32"}], - "hook": true, - "id": "1184812066222121040", - "name": "Atlas Fallen" - }, - { - "executables": [{"is_launcher": false, "name": "pioneers of pagonia/pioneers of pagonia.exe", "os": "win32"}], - "hook": true, - "id": "1184887540155691088", - "name": "Pioneers of Pagonia" - }, - { - "executables": [{"is_launcher": false, "name": "house flipper 2/houseflipper2.exe", "os": "win32"}], - "hook": true, - "id": "1184917744454475786", - "name": "House Flipper 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/hw2-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1185038539570814986", - "name": "Five Nights at Freddy's: Help Wanted 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/oar-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1185250055213564034", - "name": "One-armed robber" - }, - { - "executables": [{"is_launcher": false, "name": "ironwolf free non-vr edition/iw.exe", "os": "win32"}], - "hook": true, - "id": "1185265117257019412", - "name": "IronWolf: Free Non-VR Edition" - }, - { - "executables": [{"is_launcher": false, "name": "release/steamwindows.exe", "os": "win32"}], - "hook": true, - "id": "1185325472012320930", - "name": "Overlewd" - }, - { - "executables": [{"is_launcher": false, "name": "100 christmas cats/100 christmas cats.exe", "os": "win32"}], - "hook": true, - "id": "1185521730396106893", - "name": "100 Christmas Cats" - }, - { - "executables": [{"is_launcher": false, "name": "steambuild1.5/flipwitch.exe", "os": "win32"}], - "hook": true, - "id": "1185733153193725952", - "name": "FlipWitch - Forbidden Sex Hex" - }, - { - "executables": [{"is_launcher": false, "name": "nuclear option/nuclearoption.exe", "os": "win32"}], - "hook": true, - "id": "1185793510327210064", - "name": "Nuclear Option" - }, - { - "executables": [{"is_launcher": false, "name": "win64/ride5-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1185869041433321593", - "name": "RIDE 5" - }, - { - "executables": [{"is_launcher": false, "name": "100 asian cats/100 asian cats.exe", "os": "win32"}], - "hook": true, - "id": "1186140812082417695", - "name": "100 Asian Cats" - }, - { - "executables": [{"is_launcher": false, "name": "gnorp/(the) gnorp apologue.exe", "os": "win32"}], - "hook": true, - "id": "1186397491395043458", - "name": "(the) Gnorp Apologue" - }, - { - "executables": [{"is_launcher": false, "name": "parking lot simulator/parkingsimulator.exe", "os": "win32"}], - "hook": true, - "id": "1186427723430768762", - "name": "Parking Tycoon: Business Simulator" - }, - { - "executables": [{"is_launcher": false, "name": "shipping manager/sm_sdl_steam.exe", "os": "win32"}], - "hook": true, - "id": "1186593782423109713", - "name": "Shipping Manager" - }, - { - "aliases": ["Achilles: Legends Untold"], - "executables": [ - { - "is_launcher": false, - "name": "achilles legends untold/achilles/binaries/win64/achilles-win64-shipping.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1186831474461253702", - "name": "Achilles: Legends Untold" - }, - { - "executables": [{"is_launcher": false, "name": "forthequeen/forthequeen.exe", "os": "win32"}], - "hook": true, - "id": "1186880672619577405", - "name": "For the Queen" - }, - { - "executables": [{"is_launcher": false, "name": "royal crown/gameguard.des", "os": "win32"}], - "hook": true, - "id": "1186941072639795291", - "name": "Royal Crown" - }, - { - "executables": [{"is_launcher": false, "name": "win64/sqcclient-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1187016589841809579", - "name": "Survival Quiz CITY \u304a\u307e\u3064\u308a\u7de8" - }, - { - "executables": [{"is_launcher": false, "name": "airportsim/airportsim.exe", "os": "win32"}], - "hook": true, - "id": "1187076972053020712", - "name": "AirportSim" - }, - { - "executables": [{"is_launcher": false, "name": "railroader/railroader.exe", "os": "win32"}], - "hook": true, - "id": "1187394070289600592", - "name": "Railroader" - }, - { - "executables": [{"is_launcher": false, "name": "peeping dorm manager/peeping dorm manager.exe", "os": "win32"}], - "hook": true, - "id": "1187756450412494948", - "name": "Peeping Dorm Manager" - }, - { - "executables": [{"is_launcher": false, "name": "mortal sin/mortal sin.exe", "os": "win32"}], - "hook": true, - "id": "1187847048016437412", - "name": "Mortal Sin" - }, - { - "executables": [{"is_launcher": false, "name": "terracards/terracards.exe", "os": "win32"}], - "hook": true, - "id": "1188073539241259018", - "name": "Terracards" - }, - { - "executables": [{"is_launcher": false, "name": "davigo/davigo.exe", "os": "win32"}], - "hook": true, - "id": "1188194332226879559", - "name": "DAVIGO" - }, - { - "executables": [{"is_launcher": false, "name": "win64/spacemyths-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1188269841535213638", - "name": "RIPOUT" - }, - { - "executables": [{"is_launcher": false, "name": "win64/surrounded.exe", "os": "win32"}], - "hook": true, - "id": "1188451021907828836", - "name": "Surrounded" - }, - { - "executables": [{"is_launcher": false, "name": "hexarchy/hexarchy-win64.exe", "os": "win32"}], - "hook": true, - "id": "1188602018072371271", - "name": "Hexarchy" - }, - { - "executables": [{"is_launcher": false, "name": "ooblets/ooblets.exe", "os": "win32"}], - "hook": true, - "id": "1188692612606078986", - "name": "Ooblets" - }, - { - "executables": [{"is_launcher": false, "name": "win64/thisbedwemade-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1189024812354502667", - "name": "This Bed We Made" - }, - { - "executables": [{"is_launcher": false, "name": "mosa lina/mosa lina.exe", "os": "win32"}], - "hook": true, - "id": "1189221284194828399", - "name": "Mosa Lina" - }, - { - "executables": [{"is_launcher": false, "name": "win64/asc-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1189387199163150356", - "name": "Jusant" - }, - { - "executables": [{"is_launcher": false, "name": "arizona sunshine 2/arizonasunshine2.exe", "os": "win32"}], - "hook": true, - "id": "1189719381937242203", - "name": "Arizona Sunshine\u00ae 2" - }, - { - "executables": [ - {"is_launcher": false, "name": "last train outta' wormtown/last train out of wormtown.exe", "os": "win32"} - ], - "hook": true, - "id": "1189779790815834112", - "name": "Last Train Outta' Wormtown" - }, - { - "executables": [{"is_launcher": false, "name": "x64/crashmailer_64.exe", "os": "win32"}], - "hook": true, - "id": "1190172524848357386", - "name": "Overwatch\u00ae 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/libertycity.exe", "os": "win32"}], - "hook": true, - "id": "1190338464563085364", - "name": "Grand Theft Auto III - The Definitive Edition" - }, - { - "executables": [{"is_launcher": false, "name": "wlkrr/wlkrr.exe", "os": "win32"}], - "hook": true, - "id": "1190549857753104394", - "name": "We Love Katamari REROLL+ Royal Reverie" - }, - { - "executables": [{"is_launcher": false, "name": "win64/lego2kdrive-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1190715968968724570", - "name": "LEGO\u00ae 2K Drive" - }, - { - "executables": [{"is_launcher": false, "name": "mindovermagic/mindovermagic.exe", "os": "win32"}], - "hook": true, - "id": "1190731059231457371", - "name": "Mind Over Magic" - }, - { - "executables": [{"is_launcher": false, "name": "storage hustle/storage hustle.exe", "os": "win32"}], - "hook": true, - "id": "1190791448644296716", - "name": "Storage Hustle" - }, - { - "executables": [{"is_launcher": false, "name": "golfie/golfie.exe", "os": "win32"}], - "hook": true, - "id": "1190882043748425800", - "name": "Golfie" - }, - { - "executables": [{"is_launcher": false, "name": "win64/railgrade-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1190882054179663935", - "name": "RAILGRADE" - }, - { - "executables": [{"is_launcher": false, "name": "win64/penguin-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1191425793469984911", - "name": "United Penguin Kingdom: Huddle up" - }, - { - "executables": [{"is_launcher": false, "name": "snowbreak/game/binaries/win64/game.exe", "os": "win32"}], - "hook": true, - "id": "1191652130323431514", - "name": "SNOWBREAK" - }, - { - "executables": [{"is_launcher": false, "name": "win64/immortalsofaveum-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1191697426113888316", - "name": "Immortals of Aveum\u2122" - }, - { - "executables": [{"is_launcher": false, "name": "hadean tactics/hadeantactics.exe", "os": "win32"}], - "hook": true, - "id": "1191742717487747112", - "name": "Hadean Tactics" - }, - { - "executables": [{"is_launcher": false, "name": "win64/clay_6-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1191984374724431903", - "name": "Garten of Banban 6" - }, - { - "executables": [{"is_launcher": false, "name": "win64/deeply_dark.exe", "os": "win32"}], - "hook": true, - "id": "1192225905771282542", - "name": "Deeply Dark" - }, - { - "executables": [{"is_launcher": false, "name": "mzzxlc/mzzxlc.exe", "os": "win32"}], - "hook": true, - "id": "1192256095222251620", - "name": "Mega Man Zero/ZX Legacy Collection" - }, - { - "executables": [{"is_launcher": false, "name": "moving out 2/mo2.exe", "os": "win32"}], - "hook": true, - "id": "1192301394179399740", - "name": "Moving Out 2" - }, - { - "executables": [{"is_launcher": false, "name": "screamdown/screamdown.exe", "os": "win32"}], - "hook": true, - "id": "1192542992398041219", - "name": "screamdown" - }, - { - "executables": [ - {"is_launcher": false, "name": "win64/multiplayerblueprintlobby-win64-shipping.exe", "os": "win32"} - ], - "hook": true, - "id": "1192618491107348520", - "name": "SKIBIDI BACKROOMS" - }, - { - "executables": [{"is_launcher": false, "name": "born again/born again.exe", "os": "win32"}], - "hook": true, - "id": "1192844983779205170", - "name": "Born Again" - }, - { - "executables": [{"is_launcher": false, "name": "hudsight/hudsightapp64.exe", "os": "win32"}], - "hook": true, - "id": "1193146969821032499", - "name": "HudSight - custom crosshair overlay" - }, - { - "executables": [{"is_launcher": false, "name": "win64/revolution.exe", "os": "win32"}], - "hook": true, - "id": "1193313064892760194", - "name": "Portal: Revolution" - }, - { - "executables": [{"is_launcher": false, "name": "steel_circus/sc.exe", "os": "win32"}], - "hook": true, - "id": "1193554664365506661", - "name": "Steel Circus" - }, - { - "executables": [{"is_launcher": false, "name": "cards and castles 2/c2.exe", "os": "win32"}], - "hook": true, - "id": "1193750953111851059", - "name": "Cards and Castles 2" - }, - { - "executables": [{"is_launcher": false, "name": "win64/fpvkamikazedrone-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1193856647139950622", - "name": "FPV Kamikaze Drone" - }, - { - "executables": [{"is_launcher": false, "name": "summoners war/summonerswar.exe", "os": "win32"}], - "hook": true, - "id": "1193947242319581376", - "name": "Summoners War" - }, - { - "executables": [{"is_launcher": false, "name": "winter memories/game.exe", "os": "win32"}], - "hook": true, - "id": "1194234129798148177", - "name": "Winter Memories" - }, - { - "executables": [{"is_launcher": false, "name": "metel - horror escape/metel.exe", "os": "win32"}], - "hook": true, - "id": "1194656914848612494", - "name": "Metel - Horror Escape" - }, - { - "executables": [{"is_launcher": false, "name": "lizard survivors/lizard survivors.exe", "os": "win32"}], - "hook": true, - "id": "1194672020257001633", - "name": "\u0414\u0440\u0435\u0432\u043d\u0438\u0435 \u042f\u0449\u0435\u0440\u044b \u041f\u0440\u043e\u0442\u0438\u0432 \u0420\u0443\u0441\u043e\u0432: \u0411\u0438\u0442\u0432\u0430 \u0437\u0430 \u0413\u0438\u043f\u0435\u0440\u0431\u043e\u0440\u0435\u044e" - }, - { - "executables": [ - {"is_launcher": false, "name": "laika - aged through blood/laika aged through blood.exe", "os": "win32"} - ], - "hook": true, - "id": "1194792811711709285", - "name": "Laika: Aged Through Blood" - }, - { - "executables": [{"is_launcher": false, "name": "atelierresleriana/atelierresleriana.exe", "os": "win32"}], - "hook": true, - "id": "1194898513587347516", - "name": "\u30ec\u30b9\u30ec\u30ea\u30a2\u30fc\u30ca\u306e\u30a2\u30c8\u30ea\u30a8 \uff5e\u5fd8\u308c\u3089\u308c\u305f\u932c\u91d1\u8853\u3068\u6975\u591c\u306e\u89e3\u653e\u8005\uff5e" - }, - { - "executables": [{"is_launcher": false, "name": "windows-i686/lgp.exe", "os": "win32"}], - "hook": true, - "id": "1195034436773871948", - "name": "Lucy Got Problems" - }, - { - "executables": [{"is_launcher": false, "name": "nothing/nothing.exe", "os": "win32"}], - "hook": true, - "id": "1195185398301868163", - "name": "Nothing" - }, - { - "executables": [{"is_launcher": false, "name": "warudo/warudo.exe", "os": "win32"}], - "hook": true, - "id": "1195366615982817340", - "name": "Warudo" - }, - { - "executables": [{"is_launcher": false, "name": "my little universe/my little universe.exe", "os": "win32"}], - "hook": true, - "id": "1195502740747591731", - "name": "My Little Universe" - }, - { - "executables": [{"is_launcher": false, "name": "lasers/lasers.exe", "os": "win32"}], - "hook": true, - "id": "1195562887209566238", - "name": "LASERS" - }, - { - "executables": [{"is_launcher": false, "name": "factory town idle/factory town idle.exe", "os": "win32"}], - "hook": true, - "id": "1195713893192966194", - "name": "Factory Town Idle" - }, - { - "executables": [{"is_launcher": false, "name": "wulinsh/wulin.exe", "os": "win32"}], - "hook": true, - "id": "1196061167844589619", - "name": "\u5927\u4fa0\u7acb\u5fd7\u4f20\uff1a\u78a7\u8840\u4e39\u5fc3" - }, - { - "executables": [{"is_launcher": false, "name": "hollow cocoon/hollow cocoon.exe", "os": "win32"}], - "hook": true, - "id": "1196061172240224286", - "name": "\u30a6\u30c4\u30ed\u30de\u30e6 - Hollow Cocoon -" - }, - { - "executables": [{"is_launcher": false, "name": "loddlenaut/loddlenaut.exe", "os": "win32"}], - "hook": true, - "id": "1196559452774608906", - "name": "Loddlenaut" - }, - { - "aliases": ["RESIDENT EVIL 3", "Resident Evil 3"], - "executables": [{"is_launcher": false, "name": "re3/re3.exe", "os": "win32"}], - "hook": true, - "id": "1196883977944956962", - "name": "Resident Evil 3" - }, - { - "executables": [{"is_launcher": false, "name": "win64/dontlookaway-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1196891653160571040", - "name": "DON'T LOOK AWAY" - }, - { - "executables": [ - { - "is_launcher": false, - "name": "bunker builder simulator prologue/bunker builder simulator.exe", - "os": "win32" - } - ], - "hook": true, - "id": "1196921867555045447", - "name": "Bunker Builder Simulator: Prologue" - }, - { - "executables": [{"is_launcher": false, "name": "frostrain/frostrain.exe", "os": "win32"}], - "hook": true, - "id": "1196997338921697401", - "name": "Frostrain" - }, - { - "executables": [ - {"is_launcher": false, "name": "the backrooms unbounded/the backrooms unbounded.exe", "os": "win32"} - ], - "hook": true, - "id": "1197238942865555597", - "name": "The Backrooms: Unbounded" - }, - { - "executables": [ - {"is_launcher": false, "name": "momodora moonlit farewell/momodoramoonlitfarewell.exe", "os": "win32"} - ], - "hook": true, - "id": "1197284253193490642", - "name": "Momodora: Moonlit Farewell" - }, - { - "executables": [ - {"is_launcher": false, "name": "chasing tails -a promise in the snow-/chasingtails.exe", "os": "win32"} - ], - "hook": true, - "id": "1197314431886053416", - "name": "Chasing Tails -A Promise in the Snow-" - }, - { - "executables": [{"is_launcher": false, "name": "wrc 9 fia world rally championship/wrc9.exe", "os": "win32"}], - "hook": true, - "id": "1197601319310086275", - "name": "WRC 9 FIA World Rally Championship" - }, - { - "executables": [{"is_launcher": false, "name": "tinysurvivors/tinysurvivors.exe", "os": "win32"}], - "hook": true, - "id": "1197676814139654224", - "name": "Tiny Survivors" - }, - { - "executables": [{"is_launcher": false, "name": "dune imperium/duneimperium.exe", "os": "win32"}], - "hook": true, - "id": "1197767416848068690", - "name": "Dune: Imperium" - }, - { - "aliases": ["Palworld / \u30d1\u30eb\u30ef\u30fc\u30eb\u30c9", "Palworld / \u5e7b\u7378\u5e15\u9b6f"], - "executables": [{"is_launcher": false, "name": "win64/palworld-win64-shipping.exe", "os": "win32"}], - "hook": true, - "id": "1197827812623650866", - "name": "Palworld" - }, - { - "executables": [{"is_launcher": false, "name": "little goody two shoes/lgts.exe", "os": "win32"}], - "hook": true, - "id": "1197963707087593584", - "name": "Little Goody Two Shoes" - } -] diff --git a/src/arrpc/src/process/index.js b/src/arrpc/src/process/index.js deleted file mode 100644 index 116c95f..0000000 --- a/src/arrpc/src/process/index.js +++ /dev/null @@ -1,118 +0,0 @@ -const rgb = (r, g, b, msg) => `\x1b[38;2;${r};${g};${b}m${msg}\x1b[0m`; -const log = (...args) => console.log(`[${rgb(88, 101, 242, "arRPC")} > ${rgb(237, 66, 69, "process")}]`, ...args); - -const DetectableDB = require("./detectable.json"); - -const Natives = require("./native/index.js"); -const Native = Natives[process.platform]; - -const timestamps = {}, - names = {}, - pids = {}; -class ProcessServer { - constructor(handlers) { - if (!Native) return; // log('unsupported platform:', process.platform); - - this.handlers = handlers; - - this.scan = this.scan.bind(this); - - this.scan(); - setInterval(this.scan, 5000); - - log("started"); - } - - async scan() { - // const startTime = performance.now(); - const processes = await Native.getProcesses(); - const ids = []; - - // log(`got processed in ${(performance.now() - startTime).toFixed(2)}ms`); - - for (const [pid, _path, args] of processes) { - const path = _path.toLowerCase().replaceAll("\\", "/"); - const toCompare = []; - const splitPath = path.split("/"); - for (let i = 1; i < splitPath.length; i++) { - toCompare.push(splitPath.slice(-i).join("/")); - } - - for (const p of toCompare.slice()) { - // add more possible tweaked paths for less false negatives - toCompare.push(p.replace("64", "")); // remove 64bit identifiers-ish - toCompare.push(p.replace(".x64", "")); - toCompare.push(p.replace("x64", "")); - } - - for (const {executables, id, name} of DetectableDB) { - if ( - executables?.some((x) => { - if (x.is_launcher) return false; - if ( - x.name[0] === ">" - ? x.name.substring(1) !== toCompare[0] - : !toCompare.some((y) => x.name === y) - ) - return false; - if (args && x.arguments) return args.join(" ").indexOf(x.arguments) > -1; - return true; - }) - ) { - names[id] = name; - pids[id] = pid; - - ids.push(id); - if (!timestamps[id]) { - log("detected game!", name); - timestamps[id] = Date.now(); - } - - // Resending this on evry scan is intentional, so that in the case that arRPC scans processes before Discord, existing activities will be sent - this.handlers.message( - { - socketId: id - }, - { - cmd: "SET_ACTIVITY", - args: { - activity: { - application_id: id, - name, - timestamps: { - start: timestamps[id] - } - }, - pid - } - } - ); - } - } - } - - for (const id in timestamps) { - if (!ids.includes(id)) { - log("lost game!", names[id]); - delete timestamps[id]; - - this.handlers.message( - { - socketId: id - }, - { - cmd: "SET_ACTIVITY", - args: { - activity: null, - pid: pids[id] - } - } - ); - } - } - - // log(`finished scan in ${(performance.now() - startTime).toFixed(2)}ms`); - // process.stdout.write(`\r${' '.repeat(100)}\r[${rgb(88, 101, 242, 'arRPC')} > ${rgb(237, 66, 69, 'process')}] scanned (took ${(performance.now() - startTime).toFixed(2)}ms)`); - } -} -module.exports = ProcessServer; diff --git a/src/arrpc/src/process/native/index.js b/src/arrpc/src/process/native/index.js deleted file mode 100644 index 84b85f9..0000000 --- a/src/arrpc/src/process/native/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const win32 = require("./win32"); -const linux = require("./linux"); -module.exports = {win32, linux}; diff --git a/src/arrpc/src/process/native/linux.js b/src/arrpc/src/process/native/linux.js deleted file mode 100644 index 4353acd..0000000 --- a/src/arrpc/src/process/native/linux.js +++ /dev/null @@ -1,18 +0,0 @@ -const {readFile, readdir} = require("fs/promises"); - -const getProcesses = async () => - ( - await Promise.all( - ( - await readdir("/proc") - ).map( - (pid) => - +pid > 0 && - readFile(`/proc/${pid}/cmdline`, "utf8").then( - (path) => [+pid, path.split("\0")[0], path.split("\0").slice(1)], - () => 0 - ) - ) - ) - ).filter((x) => x); -module.exports = {getProcesses}; diff --git a/src/arrpc/src/process/native/win32.js b/src/arrpc/src/process/native/win32.js deleted file mode 100644 index f99834b..0000000 --- a/src/arrpc/src/process/native/win32.js +++ /dev/null @@ -1,20 +0,0 @@ -const {exec} = require("child_process"); - -const getProcesses = () => - new Promise((res) => - exec(`wmic process get ProcessID,ExecutablePath,Name /format:csv`, (e, out) => { - res( - out - .toString() - .split("\r\n") - .slice(2) - .map((x) => { - // [ProcessId, Name, ExecutablePath] - const parsed = x.trim().split(",").slice(1).reverse(); - return [parseInt(parsed[0]) || parsed[0], parsed[2] || parsed[1]]; - }) - .filter((x) => x[1]) - ); - }) - ); -module.exports = {getProcesses}; diff --git a/src/arrpc/src/server.js b/src/arrpc/src/server.js deleted file mode 100644 index 4f78f70..0000000 --- a/src/arrpc/src/server.js +++ /dev/null @@ -1,173 +0,0 @@ -const rgb = (r, g, b, msg) => `\x1b[38;2;${r};${g};${b}m${msg}\x1b[0m`; -const log = (...args) => console.log(`[${rgb(88, 101, 242, "arRPC")} > ${rgb(87, 242, 135, "bridge")}]`, ...args); -const {EventEmitter} = require("events"); - -const IPCServer = require("./transports/ipc.js"); -const WSServer = require("./transports/websocket.js"); -const ProcessServer = require("./process/index.js"); - -let socketId = 0; -class RPCServer extends EventEmitter { - constructor() { - super(); - return (async () => { - this.onConnection = this.onConnection.bind(this); - this.onMessage = this.onMessage.bind(this); - this.onClose = this.onClose.bind(this); - - const handlers = { - connection: this.onConnection, - message: this.onMessage, - close: this.onClose - }; - - this.ipc = await new IPCServer(handlers); - this.ws = await new WSServer(handlers); - - if (!process.argv.includes("--no-process-scanning") && !process.env.ARRPC_NO_PROCESS_SCANNING) - this.process = await new ProcessServer(handlers); - - return this; - })(); - } - - onConnection(socket) { - socket.send({ - cmd: "DISPATCH", - data: { - v: 1, - config: { - cdn_host: "cdn.discordapp.com", - api_endpoint: "//discord.com/api", - environment: "production" - }, - user: { - // mock user data using arRPC app/bot - id: "1045800378228281345", - username: "arrpc", - discriminator: "0", - global_name: "arRPC", - avatar: "cfefa4d9839fb4bdf030f91c2a13e95c", - avatar_decoration_data: null, - bot: false, - flags: 0, - premium_type: 0 - } - }, - evt: "READY", - nonce: null - }); - - socket.socketId = socketId++; - - this.emit("connection", socket); - } - - onClose(socket) { - this.emit("activity", { - activity: null, - pid: socket.lastPid, - socketId: socket.socketId.toString() - }); - - this.emit("close", socket); - } - - async onMessage(socket, {cmd, args, nonce}) { - this.emit("message", {socket, cmd, args, nonce}); - - switch (cmd) { - case "SET_ACTIVITY": - const {activity, pid} = args; // translate given parameters into what discord dispatch expects - - if (!activity) { - // Activity clear - socket.send?.({ - cmd, - data: null, - evt: null, - nonce - }); - - return this.emit("activity", { - activity: null, - pid, - socketId: socket.socketId.toString() - }); - } - - const {buttons, timestamps, instance} = activity; - - socket.lastPid = pid ?? socket.lastPid; - - const metadata = {}; - const extra = {}; - if (buttons) { - // map buttons into expected metadata - metadata.button_urls = buttons.map((x) => x.url); - extra.buttons = buttons.map((x) => x.label); - } - - if (timestamps) - for (const x in timestamps) { - // translate s -> ms timestamps - if (Date.now().toString().length - timestamps[x].toString().length > 2) - timestamps[x] = Math.floor(1000 * timestamps[x]); - } - - this.emit("activity", { - activity: { - application_id: socket.clientId, - type: 0, - metadata, - flags: instance ? 1 << 0 : 0, - ...activity, - ...extra - }, - pid, - socketId: socket.socketId.toString() - }); - - socket.send?.({ - cmd, - data: { - ...activity, - name: "", - application_id: socket.clientId, - type: 0 - }, - evt: null, - nonce - }); - - break; - - case "GUILD_TEMPLATE_BROWSER": - case "INVITE_BROWSER": - const {code} = args; - - const isInvite = cmd === "INVITE_BROWSER"; - const callback = (isValid = true) => { - socket.send({ - cmd, - data: isValid - ? {code} - : { - code: isInvite ? 4011 : 4017, - message: `Invalid ${isInvite ? "invite" : "guild template"} id: ${code}` - }, - evt: isValid ? null : "ERROR", - nonce - }); - }; - - this.emit(isInvite ? "invite" : "guild-template", code, callback); - break; - - case "DEEP_LINK": - this.emit("link", args.params); - break; - } - } -} -module.exports = RPCServer; diff --git a/src/arrpc/src/transports/ipc.js b/src/arrpc/src/transports/ipc.js deleted file mode 100644 index 6d5d128..0000000 --- a/src/arrpc/src/transports/ipc.js +++ /dev/null @@ -1,271 +0,0 @@ -const rgb = (r, g, b, msg) => `\x1b[38;2;${r};${g};${b}m${msg}\x1b[0m`; -const log = (...args) => console.log(`[${rgb(88, 101, 242, "arRPC")} > ${rgb(254, 231, 92, "ipc")}]`, ...args); - -const {join} = require("path"); -const {platform, env} = require("process"); -const {unlinkSync} = require("fs"); - -const {createServer, createConnection} = require("net"); - -const SOCKET_PATH = - platform === "win32" - ? "\\\\?\\pipe\\discord-ipc" - : join(env.XDG_RUNTIME_DIR || env.TMPDIR || env.TMP || env.TEMP || "/tmp", "discord-ipc"); - -// enums for various constants -const Types = { - // types of packets - HANDSHAKE: 0, - FRAME: 1, - CLOSE: 2, - PING: 3, - PONG: 4 -}; - -const CloseCodes = { - // codes for closures - CLOSE_NORMAL: 1000, - CLOSE_UNSUPPORTED: 1003, - CLOSE_ABNORMAL: 1006 -}; - -const ErrorCodes = { - // codes for errors - INVALID_CLIENTID: 4000, - INVALID_ORIGIN: 4001, - RATELIMITED: 4002, - TOKEN_REVOKED: 4003, - INVALID_VERSION: 4004, - INVALID_ENCODING: 4005 -}; - -let uniqueId = 0; - -const encode = (type, data) => { - data = JSON.stringify(data); - const dataSize = Buffer.byteLength(data); - - const buf = Buffer.alloc(dataSize + 8); - buf.writeInt32LE(type, 0); // type - buf.writeInt32LE(dataSize, 4); // data size - buf.write(data, 8, dataSize); // data - - return buf; -}; - -const read = (socket) => { - let resp = socket.read(8); - if (!resp) return; - - resp = Buffer.from(resp); - const type = resp.readInt32LE(0); - const dataSize = resp.readInt32LE(4); - - if (type < 0 || type >= Object.keys(Types).length) throw new Error("invalid type"); - - let data = socket.read(dataSize); - if (!data) throw new Error("failed reading data"); - - data = JSON.parse(Buffer.from(data).toString()); - - switch (type) { - case Types.PING: - socket.emit("ping", data); - socket.write(encode(Types.PONG, data)); - break; - - case Types.PONG: - socket.emit("pong", data); - break; - - case Types.HANDSHAKE: - if (socket._handshook) throw new Error("already handshook"); - - socket._handshook = true; - socket.emit("handshake", data); - break; - - case Types.FRAME: - if (!socket._handshook) throw new Error("need to handshake first"); - - socket.emit("request", data); - break; - - case Types.CLOSE: - socket.end(); - socket.destroy(); - break; - } - - read(socket); -}; - -const socketIsAvailable = async (socket) => { - socket.pause(); - socket.on("readable", () => { - try { - read(socket); - } catch (e) { - log("error whilst reading", e); - - socket.end( - encode(Types.CLOSE, { - code: CloseCodes.CLOSE_UNSUPPORTED, - message: e.message - }) - ); - socket.destroy(); - } - }); - - const stop = () => { - try { - socket.end(); - socket.destroy(); - } catch {} - }; - - const possibleOutcomes = Promise.race([ - new Promise((res) => socket.on("error", res)), // errored - new Promise((res, rej) => socket.on("pong", () => rej("socket ponged"))), // ponged - new Promise((res, rej) => setTimeout(() => rej("timed out"), 1000)) // timed out - ]).then( - () => true, - (e) => e - ); - - socket.write(encode(Types.PING, ++uniqueId)); - - const outcome = await possibleOutcomes; - stop(); - log("checked if socket is available:", outcome === true, outcome === true ? "" : `- reason: ${outcome}`); - - return outcome === true; -}; - -const getAvailableSocket = async (tries = 0) => { - if (tries > 9) { - throw new Error("ran out of tries to find socket", tries); - } - - const path = SOCKET_PATH + "-" + tries; - const socket = createConnection(path); - - log("checking", path); - - if (await socketIsAvailable(socket)) { - if (platform !== "win32") - try { - unlinkSync(path); - } catch {} - - return path; - } - - log(`not available, trying again (attempt ${tries + 1})`); - return getAvailableSocket(tries + 1); -}; - -class IPCServer { - constructor(handers) { - return new Promise(async (res) => { - this.handlers = handers; - - this.onConnection = this.onConnection.bind(this); - this.onMessage = this.onMessage.bind(this); - - const server = createServer(this.onConnection); - server.on("error", (e) => { - log("server error", e); - }); - - const socketPath = await getAvailableSocket(); - server.listen(socketPath, () => { - log("listening at", socketPath); - this.server = server; - - res(this); - }); - }); - } - - onConnection(socket) { - log("new connection!"); - - socket.pause(); - socket.on("readable", () => { - try { - read(socket); - } catch (e) { - log("error whilst reading", e); - - socket.end( - encode(Types.CLOSE, { - code: CloseCodes.CLOSE_UNSUPPORTED, - message: e.message - }) - ); - socket.destroy(); - } - }); - - socket.once("handshake", (params) => { - log("handshake:", params); - - const ver = parseInt(params.v ?? 1); - const clientId = params.client_id ?? ""; - // encoding is always json for ipc - - socket.close = (code = CloseCodes.CLOSE_NORMAL, message = "") => { - socket.end( - encode(Types.CLOSE, { - code, - message - }) - ); - socket.destroy(); - }; - - if (ver !== 1) { - log("unsupported version requested", ver); - - socket.close(ErrorCodes.INVALID_VERSION); - return; - } - - if (clientId === "") { - log("client id required"); - - socket.close(ErrorCodes.INVALID_CLIENTID); - return; - } - - socket.on("error", (e) => { - log("socket error", e); - }); - - socket.on("close", (e) => { - log("socket closed", e); - this.handlers.close(socket); - }); - - socket.on("request", this.onMessage.bind(this, socket)); - - socket._send = socket.send; - socket.send = (msg) => { - log("sending", msg); - socket.write(encode(Types.FRAME, msg)); - }; - - socket.clientId = clientId; - - this.handlers.connection(socket); - }); - } - - onMessage(socket, msg) { - log("message", msg); - this.handlers.message(socket, msg); - } -} -module.exports = IPCServer; diff --git a/src/arrpc/src/transports/websocket.js b/src/arrpc/src/transports/websocket.js deleted file mode 100644 index e3651d4..0000000 --- a/src/arrpc/src/transports/websocket.js +++ /dev/null @@ -1,135 +0,0 @@ -const rgb = (r, g, b, msg) => `\x1b[38;2;${r};${g};${b}m${msg}\x1b[0m`; -const log = (...args) => console.log(`[${rgb(88, 101, 242, "arRPC")} > ${rgb(235, 69, 158, "websocket")}]`, ...args); - -const {WebSocketServer} = require("ws"); -const {createServer} = require("http"); -const {parse} = require("querystring"); - -const portRange = [6463, 6472]; // ports available/possible: 6463-6472 - -class WSServer { - constructor(handlers) { - return (async () => { - this.handlers = handlers; - - this.onConnection = this.onConnection.bind(this); - this.onMessage = this.onMessage.bind(this); - - let port = portRange[0]; - - let http, wss; - while (port <= portRange[1]) { - log("trying port", port); - - if ( - await new Promise((res) => { - http = createServer(); - http.on("error", (e) => { - // log('http error', e); - - if (e.code === "EADDRINUSE") { - log(port, "in use!"); - res(false); - } - }); - - wss = new WebSocketServer({server: http}); - wss.on("error", (e) => { - // log('wss error', e); - }); - - wss.on("connection", this.onConnection); - - http.listen(port, "127.0.0.1", () => { - log("listening on", port); - - this.http = http; - this.wss = wss; - - res(true); - }); - }) - ) - break; - port++; - } - - return this; - })(); - } - - onConnection(socket, req) { - const params = parse(req.url.split("?")[1]); - const ver = parseInt(params.v ?? 1); - const encoding = params.encoding ?? "json"; // json | etf (erlpack) - const clientId = params.client_id ?? ""; - - const origin = req.headers.origin ?? ""; - - log(`new connection! origin:`, origin, JSON.parse(JSON.stringify(params))); - - if ( - origin !== "" && - ![ - "https://discord.com", - "https://ptb.discord.com", - "https://canary.discord.com", - "https://replugged.dev" - ].includes(origin) - ) { - log("disallowed origin", origin); - - socket.close(); - return; - } - - if (encoding !== "json") { - log("unsupported encoding requested", encoding); - - socket.close(); - return; - } - - if (ver !== 1) { - log("unsupported version requested", ver); - - socket.close(); - return; - } - - /* if (clientId === '') { - log('client id required'); - - socket.close(); - return; - } */ - - socket.clientId = clientId; - socket.encoding = encoding; - - socket.on("error", (e) => { - log("socket error", e); - }); - - socket.on("close", (e, r) => { - log("socket closed", e, r); - this.handlers.close(socket); - }); - - socket.on("message", this.onMessage.bind(this, socket)); - - socket._send = socket.send; - socket.send = (msg) => { - log("sending", msg); - socket._send(JSON.stringify(msg)); - }; - - this.handlers.connection(socket); - } - - onMessage(socket, msg) { - log("message", JSON.parse(msg)); - this.handlers.message(socket, JSON.parse(msg)); - } -} -module.exports = WSServer; diff --git a/src/common/config.ts b/src/common/config.ts index 9b1f62b..cf7fe98 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -149,7 +149,7 @@ export function setup(): void { trayIcon: "default", doneSetup: false, clientName: "ArmCord", - customIcon: path.join(__dirname, "../", "/assets/desktop.png") + customIcon: path.join(import.meta.dirname, "../", "/assets/desktop.png") }; setConfigBulk({ ...defaults diff --git a/src/common/lang.ts b/src/common/lang.ts index 1db80cd..3035256 100644 --- a/src/common/lang.ts +++ b/src/common/lang.ts @@ -30,15 +30,15 @@ export async function getLang(object: string): Promise { if (language.length == 2) { language = `${language}-${language.toUpperCase()}`; } - let langPath = path.join(__dirname, "../", `/assets/lang/${language}.json`); + let langPath = path.join(import.meta.dirname, "../", `/assets/lang/${language}.json`); if (!fs.existsSync(langPath)) { - langPath = path.join(__dirname, "../", "/assets/lang/en-US.json"); + langPath = path.join(import.meta.dirname, "../", "/assets/lang/en-US.json"); } let rawdata = fs.readFileSync(langPath, "utf-8"); let parsed = JSON.parse(rawdata); if (parsed[object] == undefined) { console.log(`${object} is undefined in ${language}`); - langPath = path.join(__dirname, "../", "/assets/lang/en-US.json"); + langPath = path.join(import.meta.dirname, "../", "/assets/lang/en-US.json"); rawdata = fs.readFileSync(langPath, "utf-8"); parsed = JSON.parse(rawdata); return parsed[object]; diff --git a/src/common/version.ts b/src/common/version.ts index 1fb97d4..57cd634 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1,6 +1,6 @@ import {app} from "electron"; -export const packageVersion = require("../package.json").version; +export const packageVersion = "3.2.0"; export function getVersion(): string { return packageVersion; diff --git a/src/discord/extensions/mods.ts b/src/discord/extensions/mods.ts index 1c76380..b41ec70 100644 --- a/src/discord/extensions/mods.ts +++ b/src/discord/extensions/mods.ts @@ -3,8 +3,8 @@ import extract from "extract-zip"; import path from "path"; import {getConfig} from "../../common/config"; import fs from "fs"; -import util from "util"; -const streamPipeline = util.promisify(require("stream").pipeline); +import {pipeline} from "stream"; +const streamPipeline = pipeline; async function updateModBundle(): Promise { if ((await getConfig("noBundleUpdates")) == undefined ?? false) { try { @@ -53,7 +53,7 @@ export function updateModInstallState() { modInstallState = "modDownload"; updateModBundle(); - import("./plugin"); + import("./plugin.js"); modInstallState = "done"; } @@ -63,7 +63,7 @@ export async function installModLoader(): Promise { modInstallState = "none"; fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true}); - import("./plugin"); + import("./plugin.js"); console.log("[Mod loader] Skipping"); return; diff --git a/src/discord/ipc.ts b/src/discord/ipc.ts index e37aefa..dc33a49 100644 --- a/src/discord/ipc.ts +++ b/src/discord/ipc.ts @@ -39,7 +39,7 @@ export function registerIpc(): void { break; case "win32": if (pingCount > 0) { - let image = nativeImage.createFromPath(path.join(__dirname, "../", `/assets/ping.png`)); + let image = nativeImage.createFromPath(path.join(import.meta.dirname, "../", `/assets/ping.png`)); mainWindow.setOverlayIcon(image, "badgeCount"); } else { mainWindow.setOverlayIcon(null, "badgeCount"); diff --git a/src/discord/preload/bridge.ts b/src/discord/preload/bridge.mts similarity index 98% rename from src/discord/preload/bridge.ts rename to src/discord/preload/bridge.mts index ef365b8..ab52faa 100644 --- a/src/discord/preload/bridge.ts +++ b/src/discord/preload/bridge.mts @@ -1,5 +1,5 @@ import {contextBridge, ipcRenderer} from "electron"; -import {injectTitlebar} from "./titlebar"; +import {injectTitlebar} from "./titlebar.mjs"; const CANCEL_ID = "desktop-capturer-selection__cancel"; const desktopCapturer = { getSources: (opts: any) => ipcRenderer.invoke("DESKTOP_CAPTURER_GET_SOURCES", opts) diff --git a/src/discord/preload/capturer.ts b/src/discord/preload/capturer.mts similarity index 91% rename from src/discord/preload/capturer.ts rename to src/discord/preload/capturer.mts index eca5dd2..7216019 100644 --- a/src/discord/preload/capturer.ts +++ b/src/discord/preload/capturer.mts @@ -2,7 +2,7 @@ //original https://github.com/electron/electron/issues/16513#issuecomment-602070250 import fs from "fs"; import path from "path"; -import {addScript, addStyle} from "../../common/dom"; +import {addScript, addStyle} from "../../common/dom.js"; const CANCEL_ID = "desktop-capturer-selection__cancel"; @@ -48,7 +48,7 @@ window.navigator.mediaDevices.getDisplayMedia = () => new Promise(async (resolve document.addEventListener("DOMContentLoaded", function () { addScript(screenShareJS); - const screenshareCss = path.join(__dirname, "../", "/content/css/screenshare.css"); + const screenshareCss = path.join(import.meta.dirname, "../", "/content/css/screenshare.css"); addStyle(fs.readFileSync(screenshareCss, "utf8")); console.log("Capturer injected."); }); diff --git a/src/discord/preload/mobile.ts b/src/discord/preload/mobile.mts similarity index 77% rename from src/discord/preload/mobile.ts rename to src/discord/preload/mobile.mts index 20964d3..01398f2 100644 --- a/src/discord/preload/mobile.ts +++ b/src/discord/preload/mobile.mts @@ -1,9 +1,9 @@ -import {addStyle} from "../../common/dom"; +import {addStyle} from "../../common/dom.js"; import * as fs from "fs"; import * as path from "path"; export function injectMobileStuff(): void { document.addEventListener("DOMContentLoaded", function () { - const mobileCSS = path.join(__dirname, "../", "/content/css/mobile.css"); + const mobileCSS = path.join(import.meta.dirname, "../", "/content/css/mobile.css"); addStyle(fs.readFileSync(mobileCSS, "utf8")); // TO-DO: clicking on the logo, or additional button triggers ESC button to move around the UI quicker // var logo = document.getElementById("window-title"); diff --git a/src/discord/preload/optimizer.ts b/src/discord/preload/optimizer.mts similarity index 100% rename from src/discord/preload/optimizer.ts rename to src/discord/preload/optimizer.mts diff --git a/src/discord/preload/preload.ts b/src/discord/preload/preload.mts similarity index 86% rename from src/discord/preload/preload.ts rename to src/discord/preload/preload.mts index 83b9830..07fc9f2 100644 --- a/src/discord/preload/preload.ts +++ b/src/discord/preload/preload.mts @@ -1,20 +1,20 @@ -import "./bridge"; -import "./optimizer"; -import "./settings"; +import "./bridge.mjs"; +import "./optimizer.mjs"; +import "./settings.mjs"; import {ipcRenderer} from "electron"; import * as fs from "fs"; import * as path from "path"; -import {injectMobileStuff} from "./mobile"; -import {fixTitlebar, injectTitlebar} from "./titlebar"; -import {injectSettings} from "./settings"; -import {addStyle, addScript} from "../../common/dom"; -import {sleep} from "../../common/sleep"; +import {injectMobileStuff} from "./mobile.mjs"; +import {fixTitlebar, injectTitlebar} from "./titlebar.mjs"; +import {injectSettings} from "./settings.mjs"; +import {addStyle, addScript} from "../../common/dom.js"; +import {sleep} from "../../common/sleep.js"; window.localStorage.setItem("hideNag", "true"); if (ipcRenderer.sendSync("legacyCapturer")) { console.warn("Using legacy capturer module"); - import("./capturer"); + import("./capturer.mjs"); } const version = ipcRenderer.sendSync("displayVersion"); @@ -57,10 +57,10 @@ sleep(5000).then(async () => { })(); `); if (ipcRenderer.sendSync("disableAutogain")) { - addScript(fs.readFileSync(path.join(__dirname, "../", "../", "/content/js/disableAutogain.js"), "utf8")); + addScript(fs.readFileSync(path.join(import.meta.dirname, "../", "/content/js/disableAutogain.js"), "utf8")); } - addScript(fs.readFileSync(path.join(__dirname, "../", "../", "/content/js/rpc.js"), "utf8")); - const cssPath = path.join(__dirname, "../", "../", "/content/css/discord.css"); + addScript(fs.readFileSync(path.join(import.meta.dirname, "../", "/content/js/rpc.js"), "utf8")); + const cssPath = path.join(import.meta.dirname, "../", "/content/css/discord.css"); addStyle(fs.readFileSync(cssPath, "utf8")); await updateLang(); }); diff --git a/src/discord/preload/settings.ts b/src/discord/preload/settings.mts similarity index 68% rename from src/discord/preload/settings.ts rename to src/discord/preload/settings.mts index 846cbd1..cf8632c 100644 --- a/src/discord/preload/settings.ts +++ b/src/discord/preload/settings.mts @@ -1,15 +1,21 @@ import * as path from "path"; import * as fs from "fs"; -import {addStyle} from "../../common/dom"; +import {addStyle} from "../../common/dom.js"; import {WebviewTag} from "electron"; var webview = ``; +)}" preload="${path.join( + "file://", + import.meta.dirname, + "../", + "../", + "/settings/preload.mjs" +)}" id="inAppSettings">`; export function injectSettings() { document.getElementById("webviewSettingsContainer")!.innerHTML = webview; @@ -17,7 +23,7 @@ export function injectSettings() { } document.addEventListener("DOMContentLoaded", function (_event) { - const settingsCssPath = path.join(__dirname, "../", "/content/css/inAppSettings.css"); + const settingsCssPath = path.join(import.meta.dirname, "../", "/content/css/inAppSettings.css"); addStyle(fs.readFileSync(settingsCssPath, "utf8")); const webview = document.querySelector("webview") as WebviewTag; webview.addEventListener("console-message", (e) => { diff --git a/src/discord/preload/titlebar.ts b/src/discord/preload/titlebar.mts similarity index 94% rename from src/discord/preload/titlebar.ts rename to src/discord/preload/titlebar.mts index cd14cc6..fd8be02 100644 --- a/src/discord/preload/titlebar.ts +++ b/src/discord/preload/titlebar.mts @@ -1,5 +1,5 @@ import {ipcRenderer} from "electron"; -import {addStyle} from "../../common/dom"; +import {addStyle} from "../../common/dom.js"; import * as fs from "fs"; import * as path from "path"; import os from "os"; @@ -21,8 +21,8 @@ export function injectTitlebar(): void { } else { document.getElementById("app-mount")!.prepend(elem); } - const titlebarcssPath = path.join(__dirname, "../", "../", "/content/css/titlebar.css"); - const wordmarkcssPath = path.join(__dirname, "../", "../", "/content/css/logos.css"); + const titlebarcssPath = path.join(import.meta.dirname, "../", "../", "/content/css/titlebar.css"); + const wordmarkcssPath = path.join(import.meta.dirname, "../", "../", "/content/css/logos.css"); addStyle(fs.readFileSync(titlebarcssPath, "utf8")); addStyle(fs.readFileSync(wordmarkcssPath, "utf8")); document.body.setAttribute("customTitlebar", ""); diff --git a/src/discord/screenshare/main.ts b/src/discord/screenshare/main.ts index 68de431..10a6453 100644 --- a/src/discord/screenshare/main.ts +++ b/src/discord/screenshare/main.ts @@ -1,6 +1,6 @@ import {BrowserWindow, MessageBoxOptions, desktopCapturer, dialog, ipcMain, session} from "electron"; import path from "path"; -import {iconPath} from "../../main"; +import {iconPath} from "../../main.js"; let capturerWindow: BrowserWindow; function showAudioDialog(): boolean { const options: MessageBoxOptions = { @@ -46,7 +46,7 @@ function registerCustomHandler(): void { webPreferences: { sandbox: false, spellcheck: false, - preload: path.join(__dirname, "preload.js") + preload: path.join(import.meta.dirname, "preload.js") } }); ipcMain.once("selectScreenshareSource", (_event, id, name) => { @@ -62,7 +62,7 @@ function registerCustomHandler(): void { callback({video: result}); } }); - capturerWindow.loadURL(`file://${__dirname}/picker.html`); + capturerWindow.loadURL(`file://${import.meta.dirname}/picker.html`); capturerWindow.webContents.send("getSources", sources); } }); diff --git a/src/discord/window.ts b/src/discord/window.ts index ee2477f..0b16159 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -9,6 +9,7 @@ import {setMenu} from "./menu"; import * as fs from "fs"; import contextMenu from "electron-context-menu"; import os from "os"; +import RPCServer from "arrpc"; import {tray} from "../tray"; import {iconPath} from "../main"; import {getConfig, setConfig, firstRun} from "../common/config"; @@ -129,7 +130,7 @@ async function doAfterDefiningTheWindow(): Promise { }); if ((await getConfig("useLegacyCapturer")) == false) { console.log("Starting screenshare module..."); - import("./screenshare/main"); + import("./screenshare/main.js"); } mainWindow.webContents.session.webRequest.onBeforeRequest( @@ -258,14 +259,18 @@ async function doAfterDefiningTheWindow(): Promise { mainWindow.webContents.executeJavaScript(`document.body.removeAttribute("isMaximized");`); }); if ((await getConfig("inviteWebsocket")) == true) { - require("arrpc"); - //await startServer(); + const server = await new RPCServer(); + server.on("activity", (data: string) => mainWindow.webContents.send("rpc", data)); + server.on("invite", (code: string) => { + console.log(code); + createInviteWindow(code); + }); } if (firstRun) { mainWindow.close(); } //loadURL broke for no good reason after E28 - mainWindow.loadFile(`${__dirname}/../splash/redirect.html`); + mainWindow.loadFile(`${import.meta.dirname}/../splash/redirect.html`); if (await getConfig("skipSplash")) { mainWindow.show(); @@ -287,7 +292,7 @@ export async function createCustomWindow(): Promise { webPreferences: { webviewTag: true, sandbox: false, - preload: path.join(__dirname, "preload/preload.js"), + preload: path.join(import.meta.dirname, "preload/preload.mjs"), spellcheck: await getConfig("spellcheck") } }); @@ -309,7 +314,7 @@ export async function createNativeWindow(): Promise { webPreferences: { webviewTag: true, sandbox: false, - preload: path.join(__dirname, "preload/preload.js"), + preload: path.join(import.meta.dirname, "preload/preload.mjs"), spellcheck: await getConfig("spellcheck") } }); @@ -331,7 +336,7 @@ export async function createTransparentWindow(): Promise { webPreferences: { sandbox: false, webviewTag: true, - preload: path.join(__dirname, "preload/preload.js"), + preload: path.join(import.meta.dirname, "preload/preload.mjs"), spellcheck: await getConfig("spellcheck") } }); diff --git a/src/main.ts b/src/main.ts index 50068c6..bf87702 100644 --- a/src/main.ts +++ b/src/main.ts @@ -86,7 +86,7 @@ if (!app.requestSingleInstanceLock() && getConfigSync("multiInstance") == (false if ((await getConfig("customIcon")) !== undefined ?? null) { iconPath = await getConfig("customIcon"); } else { - iconPath = path.join(__dirname, "../", "/assets/desktop.png"); + iconPath = path.join(import.meta.dirname, "../", "/assets/desktop.png"); } async function init(): Promise { if ((await getConfig("skipSplash")) == false) { diff --git a/src/settings/main.ts b/src/settings/main.ts index 78cc5b8..2ca8252 100644 --- a/src/settings/main.ts +++ b/src/settings/main.ts @@ -24,11 +24,11 @@ export function createSettingsWindow(): void { autoHideMenuBar: true, webPreferences: { sandbox: false, - preload: path.join(__dirname, "preload.js") + preload: path.join(import.meta.dirname, "preload.mjs") } }); async function settingsLoadPage(): Promise { - settingsWindow.loadURL(`file://${__dirname}/settings.html`); + settingsWindow.loadURL(`file://${import.meta.dirname}/settings.html`); } const userDataPath = app.getPath("userData"); const themesFolder = `${userDataPath}/themes/`; diff --git a/src/settings/preload.ts b/src/settings/preload.mts similarity index 100% rename from src/settings/preload.ts rename to src/settings/preload.mts diff --git a/src/discord/content/css/settings.css b/src/settings/settings.css similarity index 100% rename from src/discord/content/css/settings.css rename to src/settings/settings.css diff --git a/src/settings/settings.html b/src/settings/settings.html index 5970005..950dff2 100644 --- a/src/settings/settings.html +++ b/src/settings/settings.html @@ -3,7 +3,7 @@ diff --git a/src/setup/main.ts b/src/setup/main.ts index 4f98583..de85fde 100644 --- a/src/setup/main.ts +++ b/src/setup/main.ts @@ -17,7 +17,7 @@ export function createSetupWindow(): void { webPreferences: { sandbox: false, spellcheck: false, - preload: path.join(__dirname, "preload.js") + preload: path.join(import.meta.dirname, "preload.js") } }); ipcMain.on("saveSettings", (_event, args: Settings) => { @@ -38,5 +38,5 @@ export function createSetupWindow(): void { app.quit(); }); }); - setupWindow.loadURL(`file://${__dirname}/setup.html`); + setupWindow.loadURL(`file://${import.meta.dirname}/setup.html`); } diff --git a/src/setup/preload.ts b/src/setup/preload.ts index d7b8313..921901d 100644 --- a/src/setup/preload.ts +++ b/src/setup/preload.ts @@ -1,5 +1,5 @@ import {contextBridge, ipcRenderer} from "electron"; -import {injectTitlebar} from "../discord/preload/titlebar"; +import {injectTitlebar} from "../discord/preload/titlebar.mjs"; injectTitlebar(); contextBridge.exposeInMainWorld("armcordinternal", { diff --git a/src/discord/content/css/setup.css b/src/setup/setup.css similarity index 100% rename from src/discord/content/css/setup.css rename to src/setup/setup.css diff --git a/src/setup/setup.html b/src/setup/setup.html index df56081..b43904f 100644 --- a/src/setup/setup.html +++ b/src/setup/setup.html @@ -7,7 +7,7 @@ ArmCord Setup diff --git a/src/splash/main.ts b/src/splash/main.ts index b86609e..601f5fc 100644 --- a/src/splash/main.ts +++ b/src/splash/main.ts @@ -16,8 +16,8 @@ export async function createSplashWindow(): Promise { autoHideMenuBar: true, webPreferences: { sandbox: false, - preload: path.join(__dirname, "preload.js") + preload: path.join(import.meta.dirname, "preload.mjs") } }); - splashWindow.loadFile(path.join(__dirname, "splash.html")); + splashWindow.loadFile(path.join(import.meta.dirname, "splash.html")); } diff --git a/src/splash/preload.ts b/src/splash/preload.mts similarity index 100% rename from src/splash/preload.ts rename to src/splash/preload.mts diff --git a/src/discord/content/css/splash.css b/src/splash/splash.css similarity index 100% rename from src/discord/content/css/splash.css rename to src/splash/splash.css diff --git a/src/splash/splash.html b/src/splash/splash.html index 7cd2b80..a0663a9 100644 --- a/src/splash/splash.html +++ b/src/splash/splash.html @@ -4,7 +4,7 @@ ArmCord - diff --git a/src/shelter/armcordSettings/pages/SettingsPage.jsx b/src/shelter/armcordSettings/pages/SettingsPage.jsx index c09e6a3..a8bafa7 100644 --- a/src/shelter/armcordSettings/pages/SettingsPage.jsx +++ b/src/shelter/armcordSettings/pages/SettingsPage.jsx @@ -180,10 +180,6 @@ export function SettingsPage() { > Disable Shelter - -
diff --git a/src/tray.ts b/src/tray.ts index 8b294ab..0d30749 100644 --- a/src/tray.ts +++ b/src/tray.ts @@ -2,7 +2,6 @@ import fs from "fs"; import {Menu, MessageBoxOptions, Tray, app, dialog, nativeImage} from "electron"; import {createInviteWindow, mainWindows} from "./discord/window.js"; import path from "path"; -import {createSettingsWindow} from "./settings/main.js"; import {getConfig, getConfigLocation, setConfig} from "./common/config.js"; import {getDisplayVersion} from "./common/version.js"; import {setForceQuit} from "./common/forceQuit.js"; @@ -74,7 +73,20 @@ void app.whenReady().then(async () => { { label: "Open Settings", click() { - void createSettingsWindow(); + mainWindows.forEach((mainWindow) => { + mainWindow.show(); + + mainWindow.webContents.executeJavaScript(`window.shelter.flux.dispatcher.dispatch({ + "type": "USER_SETTINGS_MODAL_OPEN", + "section": "My Account", + "subsection": null, + "openWithoutBackstack": false + })`); + mainWindow.webContents.executeJavaScript( + `window.shelter.flux.dispatcher.dispatch({type: "LAYER_PUSH", component: "USER_SETTINGS"})` + ); + // TODO - open armcord tab in settings + }); } }, { diff --git a/src/types/armcordWindow.d.ts b/src/types/armcordWindow.d.ts index 8a1fdb5..e27a2ab 100644 --- a/src/types/armcordWindow.d.ts +++ b/src/types/armcordWindow.d.ts @@ -16,6 +16,5 @@ export interface ArmCordWindow { getDisplayMediaSelector: () => Promise; version: string; mods: string; - openSettingsWindow: () => void; openThemesWindow: () => void; } From 6c02ee0788dcf87eeed847cf2dca0cdcb271efc3 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 Aug 2024 18:48:14 +0200 Subject: [PATCH 241/896] lint --- src/discord/menu.ts | 4 ++-- src/tray.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/discord/menu.ts b/src/discord/menu.ts index 1768ede..eac4a84 100644 --- a/src/discord/menu.ts +++ b/src/discord/menu.ts @@ -23,13 +23,13 @@ export function setMenu(): void { mainWindows.forEach((mainWindow) => { mainWindow.show(); - mainWindow.webContents.executeJavaScript(`window.shelter.flux.dispatcher.dispatch({ + void mainWindow.webContents.executeJavaScript(`window.shelter.flux.dispatcher.dispatch({ "type": "USER_SETTINGS_MODAL_OPEN", "section": "My Account", "subsection": null, "openWithoutBackstack": false })`); - mainWindow.webContents.executeJavaScript( + void mainWindow.webContents.executeJavaScript( `window.shelter.flux.dispatcher.dispatch({type: "LAYER_PUSH", component: "USER_SETTINGS"})` ); // TODO - open armcord tab in settings diff --git a/src/tray.ts b/src/tray.ts index 0d30749..0954aa5 100644 --- a/src/tray.ts +++ b/src/tray.ts @@ -76,13 +76,13 @@ void app.whenReady().then(async () => { mainWindows.forEach((mainWindow) => { mainWindow.show(); - mainWindow.webContents.executeJavaScript(`window.shelter.flux.dispatcher.dispatch({ + void mainWindow.webContents.executeJavaScript(`window.shelter.flux.dispatcher.dispatch({ "type": "USER_SETTINGS_MODAL_OPEN", "section": "My Account", "subsection": null, "openWithoutBackstack": false })`); - mainWindow.webContents.executeJavaScript( + void mainWindow.webContents.executeJavaScript( `window.shelter.flux.dispatcher.dispatch({type: "LAYER_PUSH", component: "USER_SETTINGS"})` ); // TODO - open armcord tab in settings From 1c9fd5518c08d70fa51bbdab2cc44fc9101b55b4 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 19 Aug 2024 13:55:22 +0200 Subject: [PATCH 242/896] feat: add quick css --- src/common/themes.ts | 14 ++++++++++++++ src/discord/ipc.ts | 4 ++++ src/discord/preload/bridge.ts | 3 ++- src/discord/window.ts | 4 ++-- src/shelter/armcordSettings/pages/ThemesPage.jsx | 4 ++++ 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/common/themes.ts b/src/common/themes.ts index 6dc716e..b8a5110 100644 --- a/src/common/themes.ts +++ b/src/common/themes.ts @@ -165,3 +165,17 @@ export async function installTheme(linkOrPath: string) { fs.writeFileSync(path.join(themePath, "manifest.json"), JSON.stringify(manifest)); fs.writeFileSync(path.join(themePath, "src.css"), code); } + +export function initQuickCss(browserWindow: BrowserWindow) { + const quickCssPath = path.join(userDataPath, "/quickCss.css"); + if (!fs.existsSync(quickCssPath)) { + fs.writeFileSync(quickCssPath, ""); + } + browserWindow.webContents.send("addTheme", "armcord-quick-css", fs.readFileSync(quickCssPath, "utf-8")); + console.log(`[Theme Manager] Loaded Quick CSS`); + fs.watchFile(quickCssPath, {interval: 1000}, () => { + console.log("[Theme Manager] Quick CSS updated."); + browserWindow.webContents.send("removeTheme", "armcord-quick-css"); + browserWindow.webContents.send("addTheme", "armcord-quick-css", fs.readFileSync(quickCssPath, "utf-8")); + }); +} diff --git a/src/discord/ipc.ts b/src/discord/ipc.ts index 00f29b9..9a13a7d 100644 --- a/src/discord/ipc.ts +++ b/src/discord/ipc.ts @@ -16,6 +16,7 @@ const userDataPath = app.getPath("userData"); const storagePath = path.join(userDataPath, "/storage/"); const themesPath = path.join(userDataPath, "/themes/"); const pluginsPath = path.join(userDataPath, "/plugins/"); +const quickCssPath = path.join(userDataPath, "/quickCss.css"); export function registerIpc(passedWindow: BrowserWindow): void { ipcMain.handle("getShelterBundle", () => { return { @@ -144,6 +145,9 @@ export function registerIpc(passedWindow: BrowserWindow): void { ipcMain.on("openPluginsFolder", () => { shell.showItemInFolder(pluginsPath); }); + ipcMain.on("openQuickCssFile", () => { + void shell.openPath(quickCssPath); + }); ipcMain.on("openCrashesFolder", () => { shell.showItemInFolder(path.join(app.getPath("temp"), `${app.getName()} Crashes`)); }); diff --git a/src/discord/preload/bridge.ts b/src/discord/preload/bridge.ts index ff97270..e4d479a 100644 --- a/src/discord/preload/bridge.ts +++ b/src/discord/preload/bridge.ts @@ -67,7 +67,8 @@ contextBridge.exposeInMainWorld("armcord", { version: ipcRenderer.sendSync("get-app-version", "app-version") as string, mods: ipcRenderer.sendSync("clientmod") as string, restart: () => ipcRenderer.send("restart"), - openThemesWindow: () => ipcRenderer.send("openThemesWindow") + openThemesWindow: () => ipcRenderer.send("openThemesWindow"), + openQuickCssFile: () => ipcRenderer.send("openQuickCssFile") } as ArmCordWindow); let windowCallback: (arg0: object) => void; contextBridge.exposeInMainWorld("ArmCordRPC", { diff --git a/src/discord/window.ts b/src/discord/window.ts index 3278a2a..835c67a 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -16,7 +16,7 @@ import {iconPath, init} from "../main.js"; import {getConfig, setConfig, firstRun} from "../common/config.js"; import {getWindowState, setWindowState} from "../common/windowState.js"; import {forceQuit, setForceQuit} from "../common/forceQuit.js"; -import {injectThemesMain} from "../common/themes.js"; +import {initQuickCss, injectThemesMain} from "../common/themes.js"; export let mainWindows: BrowserWindow[] = []; export let inviteWindow: BrowserWindow; @@ -205,7 +205,7 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { }); }); } - + initQuickCss(passedWindow); passedWindow.webContents.on("page-title-updated", (e, title) => { const armCordSuffix = " - ArmCord"; /* identify */ diff --git a/src/shelter/armcordSettings/pages/ThemesPage.jsx b/src/shelter/armcordSettings/pages/ThemesPage.jsx index 61fed54..2d3fc58 100644 --- a/src/shelter/armcordSettings/pages/ThemesPage.jsx +++ b/src/shelter/armcordSettings/pages/ThemesPage.jsx @@ -10,6 +10,10 @@ export function ThemesPage() { + + ); } From f61474880165491f3a91139df2593cfbc9a5a623 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 19 Aug 2024 16:49:06 +0200 Subject: [PATCH 243/896] tweak theme manager UI --- src/common/themes.ts | 1 - src/themeManager/main.ts | 25 ++++++++++++++++++++----- src/themeManager/manager.css | 8 ++++---- src/themeManager/preload.mts | 15 +++++++++------ 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/common/themes.ts b/src/common/themes.ts index b8a5110..f156584 100644 --- a/src/common/themes.ts +++ b/src/common/themes.ts @@ -80,7 +80,6 @@ export function injectThemesMain(browserWindow: BrowserWindow): void { fs.mkdirSync(themesFolder); console.log("Created missing theme folder"); } - browserWindow.webContents.on("did-finish-load", () => { fs.readdirSync(themesFolder).forEach((file) => { try { diff --git a/src/themeManager/main.ts b/src/themeManager/main.ts index 096c821..f0b23e6 100644 --- a/src/themeManager/main.ts +++ b/src/themeManager/main.ts @@ -1,4 +1,4 @@ -import {BrowserWindow, app, dialog, ipcMain, shell} from "electron"; +import {BrowserWindow, MessageBoxOptions, app, dialog, ipcMain, shell} from "electron"; import path from "path"; import fs from "fs"; import {createInviteWindow, mainWindows} from "../discord/window.js"; @@ -65,11 +65,26 @@ export async function createTManagerWindow(): Promise { ) as ThemeManifest; void shell.openPath(`${themesFolder}/${id}/${manifest.theme}`); }); + ipcMain.on("openThemeFolder", (_event, id: string) => { + shell.openPath(path.join(themesFolder, id)); + }); ipcMain.on("uninstallTheme", (_event, id: string) => { - uninstallTheme(id); - themeWindow.webContents.reload(); - mainWindows.forEach((mainWindow) => { - mainWindow.webContents.reload(); + const options: MessageBoxOptions = { + type: "warning", + buttons: ["Yes, please", "No, cancel"], + defaultId: 1, + title: "Remove theme", + message: `Are you sure you want to remove this theme?` + }; + + void dialog.showMessageBox(mainWindows[0], options).then(({response}) => { + if (response == 0) { + uninstallTheme(id); + themeWindow.webContents.reload(); + mainWindows.forEach((mainWindow) => { + mainWindow.webContents.reload(); + }); + } }); }); ipcMain.handle("installBDTheme", async (_event, link: string) => { diff --git a/src/themeManager/manager.css b/src/themeManager/manager.css index 70489fe..e5181f0 100644 --- a/src/themeManager/manager.css +++ b/src/themeManager/manager.css @@ -54,17 +54,17 @@ body { justify-content: space-evenly; } -/* Screen larger than 600px? 2 column */ +/* Screen larger than 600px? 1 column */ @media (min-width: 600px) { .cards { - grid-template-columns: repeat(2, 1fr); + grid-template-columns: repeat(1, 1fr); } } -/* Screen larger than 900px? 3 columns */ +/* Screen larger than 900px? 2 columns */ @media (min-width: 900px) { .cards { - grid-template-columns: repeat(3, 1fr); + grid-template-columns: repeat(2, 1fr); } } diff --git a/src/themeManager/preload.mts b/src/themeManager/preload.mts index 85b083c..afcd365 100644 --- a/src/themeManager/preload.mts +++ b/src/themeManager/preload.mts @@ -3,7 +3,8 @@ import {ThemeManifest} from "../types/themeManifest.d.js"; contextBridge.exposeInMainWorld("themes", { install: async (url: string) => ipcRenderer.invoke("installBDTheme", url) as Promise, uninstall: (id: string) => ipcRenderer.send("uninstallTheme", id), - edit: (id: string) => ipcRenderer.send("editTheme", id) + edit: (id: string) => ipcRenderer.send("editTheme", id), + folder: (id: string) => ipcRenderer.send("openThemeFolder", id) }); ipcRenderer.on("themeManifest", (_event, id: string, json: string) => { const manifest = JSON.parse(json) as ThemeManifest; @@ -19,9 +20,15 @@ ipcRenderer.on("themeManifest", (_event, id: string, json: string) => {

${manifest.description}

+
` ); + document.getElementById(`${id}-shortcuts`)!.innerHTML += + ` + + + `; (document.getElementById(id) as HTMLInputElement).checked = manifest.enabled; document.getElementById(`${id}header`)!.addEventListener("click", () => { document.getElementById("themeInfoModal")!.style.display = "block"; @@ -29,11 +36,7 @@ ipcRenderer.on("themeManifest", (_event, id: string, json: string) => { document.getElementById("themeInfoDesc")!.textContent = `${manifest.description}\n\n${manifest.version}`; if (manifest.supportsArmCordTitlebar !== undefined) { document.getElementById("themeInfoButtons")!.innerHTML += - ` - - - `; - console.log("e"); + ``; if (manifest.supportsArmCordTitlebar == true) { (document.getElementById(`compatibility`) as HTMLImageElement).src = "https://raw.githubusercontent.com/ArmCord/BrandingStuff/main/Window.png"; From 71b0c9230ab8dce57562e3d443e492dcf3dfba1c Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 19 Aug 2024 16:49:41 +0200 Subject: [PATCH 244/896] lint --- src/themeManager/main.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/themeManager/main.ts b/src/themeManager/main.ts index f0b23e6..0ca5efd 100644 --- a/src/themeManager/main.ts +++ b/src/themeManager/main.ts @@ -66,7 +66,7 @@ export async function createTManagerWindow(): Promise { void shell.openPath(`${themesFolder}/${id}/${manifest.theme}`); }); ipcMain.on("openThemeFolder", (_event, id: string) => { - shell.openPath(path.join(themesFolder, id)); + void shell.openPath(path.join(themesFolder, id)); }); ipcMain.on("uninstallTheme", (_event, id: string) => { const options: MessageBoxOptions = { From eb16e714b4f871f40383ac42984130839150e224 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 19 Aug 2024 17:30:02 +0200 Subject: [PATCH 245/896] switch back to script arRPC --- src/discord/preload/mods/shelter.ts | 2 +- src/discord/preload/preload.mts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/discord/preload/mods/shelter.ts b/src/discord/preload/mods/shelter.ts index 78f28b0..b1436af 100644 --- a/src/discord/preload/mods/shelter.ts +++ b/src/discord/preload/mods/shelter.ts @@ -2,7 +2,7 @@ import {ipcRenderer, webFrame} from "electron"; import {sleep} from "../../../common/sleep.js"; import type {ModBundle} from "../../../types/ModBundle.d.js"; const requiredPlugins: Record = { - "armcord-arrpc": "armcord://plugins/armcordRPC/", + // "armcord-arrpc": "armcord://plugins/armcordRPC/", "armcord-settings": "armcord://plugins/armcordSettings/", "armcord-screenshare": "armcord://plugins/screenshareQualityFix/" }; diff --git a/src/discord/preload/preload.mts b/src/discord/preload/preload.mts index d807afb..6a31e36 100644 --- a/src/discord/preload/preload.mts +++ b/src/discord/preload/preload.mts @@ -63,6 +63,7 @@ await sleep(5000).then(() => { if (ipcRenderer.sendSync("disableAutogain")) { addScript(readFileSync(join(import.meta.dirname, "../", "/js/disableAutogain.js"), "utf8")); } + addScript(readFileSync(join(import.meta.dirname, "../", "/js/rpc.js"), "utf8")); const cssPath = join(import.meta.dirname, "../", "/css/discord.css"); addStyle(readFileSync(cssPath, "utf8")); updateLang(); From c7ade70efd16c9757506e87688f14772af2067b4 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 19 Aug 2024 18:40:07 +0200 Subject: [PATCH 246/896] make all assets local --- assets/app/Download.png | Bin 0 -> 793 bytes assets/app/Edit.png | Bin 0 -> 3841 bytes assets/app/Folder.png | Bin 0 -> 2734 bytes assets/app/Loading.webm | Bin 0 -> 160381 bytes assets/app/Trash.png | Bin 0 -> 464 bytes assets/app/Update.webp | Bin 0 -> 5830 bytes assets/app/UpgradeArrow.png | Bin 0 -> 609 bytes assets/app/Window.png | Bin 0 -> 529 bytes assets/app/WindowUnsupported.png | Bin 0 -> 957 bytes src/discord/content/css/discord.css | 7 ------ src/protocol.ts | 36 +++++++++++++++++++++------- src/splash/splash.html | 4 ++-- src/themeManager/manager.html | 2 +- src/themeManager/preload.mts | 13 +++++----- 14 files changed, 36 insertions(+), 26 deletions(-) create mode 100644 assets/app/Download.png create mode 100644 assets/app/Edit.png create mode 100644 assets/app/Folder.png create mode 100644 assets/app/Loading.webm create mode 100644 assets/app/Trash.png create mode 100644 assets/app/Update.webp create mode 100644 assets/app/UpgradeArrow.png create mode 100644 assets/app/Window.png create mode 100644 assets/app/WindowUnsupported.png diff --git a/assets/app/Download.png b/assets/app/Download.png new file mode 100644 index 0000000000000000000000000000000000000000..ab77f32df8fba2ac6f5380c56e08c3533abc48a9 GIT binary patch literal 793 zcmV+!1LpjRP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf6951U69E94oEQKA0k4^vCMbR))h}b~@W*^fkU=Ll$TY16Ao>S%4U>akU@DWPuT35K7apBh~J-&v956 zqq4x5Fo5*r?C4iR(#BxX~Jm?vBTiLxf#N^`mv0GQ20fV9ok7C|YBR(!-#* zk300yddcNO(G^Y-O2YCEA3|k3m9KF*aq!rb_N$eI@k96hk$J8r4vbB80;K#%W1^o= z7vFF-F<`}ov2pdU47FMcr*$WDr)ILpa%X+t&jnZPv)Nkv^lN?P8x^fjZv{d4S9snZ XCs%tQq0HK{00000NkvXXu0mjfJZ)f` literal 0 HcmV?d00001 diff --git a/assets/app/Edit.png b/assets/app/Edit.png new file mode 100644 index 0000000000000000000000000000000000000000..6db6a367bff21d45ab0ac25a07ee74eb52cfa1c9 GIT binary patch literal 3841 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 literal 0 HcmV?d00001 diff --git a/assets/app/Folder.png b/assets/app/Folder.png new file mode 100644 index 0000000000000000000000000000000000000000..4a964e40aed757b455c0947a70d51d1603fd11d8 GIT binary patch literal 2734 zcmeHJi96I=AOFo5GRhKZRQ7Eus-Y>9Wh|kPu}-E8rY<3B&<$go-)O<@;ueh(LrS7h zkGzr5Xpx;OX>MUgVr+LTGh`XY{q_C<_aAuQ^E}_@obUI1zRNk!`J8hyJPF4X6?Q5B z0HEk{+|e5VV0Mt$%gaF)xz1Q+s6$2_KXnNJOx=D8tki~C4jEyWypK5mRo$ACkb(%c zcee+C=h>Ur&d36Q!ciATd*67Na46uS@3EcWx0tw`U7MO~QYW8MD6%*c4bwBZ$5b+m##p6A;Uj_%QT`-tNWN~@5m42&drnmCw@`bVNqw~|w(vkXFHan@Vp&_FB zwtYArlt?62E8o3Je2h{psJw;QrebUZBCtTjTux?%IrFZpi~2llhg>j#yIj;(&bze% z|BTPMlHaHegg^AcVvuA)Le6q+MbZ(Wu?8rBlYXp`1s~b{p*^e%Micdqm`y7$;;iV_ z#}^o-m_}|V;?B}~`z^n<)py=^coF*G*gTQOpVjTPV7^^Atp@9yPaM`CPuZE>qTG%m zrD{)EgEe0w4O*xMy?!QTWo3`z63WFuma~B*#l~+&wQUngsx?_ikRi>?*Dh%NF0}4y zh|LL{GzCNWkF7hgW`=}olefF!@v*V7+yx6$D2aP047;w#go^2P0Z?d8-+Rwf3VoXk z5f~4;cJv_%1aVqSWS|c0+t4$Mr?qpEH>B$i5SbNt7>mWKGA{XRQ6u^ENgI&KiOwyZ zOVddS+jF9(Vm|}rksvkO+J&B;o)#lA%PnDo<$7!VVv(hf+nLk8iO3}MRzm$~oA;gV zL`BLMHCM-4V&KK1Vm+eF#K`zxrq{yVg+|Yi7z~8=5pG+a>?`YQ3m$=oDU`j%-v5fY z^WDPz4+wQE=YVtQPqJr;m7PlU_@PuP6&5A|lY?O%<8JV|tIJzohZ* zju#D3KYX8mdE|OaI7KrR;DjFXxNbGJgGF<-9^~_NKJ^ux0Gq7#bc|{?qjTCuqxoeH zYPxfT?Jr;8;}@s;&#)9;`eY+@=gP>}F$ZqYC#FA=0LF$J@{Dv5cP#29TZ~>z2jH_# zS;HUBo?_=GH~@^LbI(m@x_HF^ocql_Yxuz@91Ky_@j3FaRoF_KEnJ>_529y7M@L6m zrL!l%h#>N0e-#V5jPu?>a}6;LgCi`+w>Huy@kgY|AxD659$LWzW|i7DyW$Ea4`~3} z5y#F>CYcYu&$*9Kd0a)-?tAMEl|^{*Y}Ie*H1_!x$PWpX)Xz6XgLZ1|Lwe=rFvMxE6E%c*!D1N{v&80?*=fQ{lEL4-hv9*DD2KcL(n!VI@+reVl_#uEW5zf zmBHOT0UZ_BTHtm3JVYg1taf&`kC9t>Nn>N<4aA()XD;{21DE5s2(%9>G7~ARMduyWaArRvCZWJ#Z6ICi%nx*IM zt=QRATU(p+^Axv2YJmM!$QLMi#^odH>V-mBV1Cy*+fkRO ze9-gNprql`irdYYwZm#Ez0OmlaTqx$sAybylfFvp%E}5sC`qaQ_&&l+%xFET>~>9~ zy=S$WBmMebN*_-I^OTg7E*2IRt{cFvFzMa4Gb2^mPq5;%3rTy)ELCv`T+YOU?qB)7 zI?Nb!;whUZG6s+uB|`S>67l@;gKooIp-^bkty6@isE9_Fa4psKCiwg<6unf;mdX#+ zVTZwM@(!F@O-@O@@n8Aggq0uiXHUgGxt5s7CmxWA-;)+)K(|(Lm~f>2Smiz9!q|paJ&CkilI{bX zHBrAnaIU&&3ZD)H?$y)Gbf)+4UE|c|UU#9?f@Ybos0SYdfu{>Jss$O($c_O&Ha8|K z@dED7WQlruEo?W|#5u1$68&}r1N>a{J1d&GsUEqDPw87I+6~|E8Hp|U#ZL*FCCZrb z!uPJHr1vHUKzTyq;^IPRG+I7g;+0w~a-Cc*D@s`%|MTdkfB(M$O%1Ck_C6sg_{i|) OpHLSkf@75fCG{V-e39Y+ literal 0 HcmV?d00001 diff --git a/assets/app/Loading.webm b/assets/app/Loading.webm new file mode 100644 index 0000000000000000000000000000000000000000..a345bf77d6a44ab5d35be03e846744e8f3d645f5 GIT binary patch literal 160381 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 axz#$RHLA`RqAB#&7xKana`N04@P7c2qs*HC literal 0 HcmV?d00001 diff --git a/assets/app/Trash.png b/assets/app/Trash.png new file mode 100644 index 0000000000000000000000000000000000000000..af5a5dc08d2246609d3f2f2f4b025ae15536864e GIT binary patch literal 464 zcmV;>0WbcEP)!930WSY1AtZ2w ze<3@zF%ba3f&?^@vMje@7=Dn0wrxL?B-zpkLb@{utlg^bW>r-iK5fX&njCT4U-PqL za{;2(QayfP_=gXM$ z;h3(g__gJ{KpWN$fwdC{=3X_Ync%wokdVt8whyUkdbKe|^r_Sm2ktg~z49^TUW!8< z#GKkNhqiC|k&m2iFX!XAtAp6!?ZX4NCrb5hD+B-lSeSn&W>TxJTmL5j0000Q_WET literal 0 HcmV?d00001 diff --git a/assets/app/Update.webp b/assets/app/Update.webp new file mode 100644 index 0000000000000000000000000000000000000000..fd8e58f0b704a66cf1e3b0559975db32ea116430 GIT binary patch literal 5830 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 QB+P~!qc(E#cmGXj41C8aRsaA1 literal 0 HcmV?d00001 diff --git a/assets/app/UpgradeArrow.png b/assets/app/UpgradeArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..50a98cced5b73f576557178444812305f23ad14a GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eBxo@5>jv*C{Z*O$_GC2w~JS^PEVEurD_Xd;f zjmDtHjZ7PutsS&CutaTO5bER0U^o}KDY>a&L;uXZdsF|XB=0$pVkgJRaKUl**|cqO z>(dLkC3BMfO1{Xt_#}V-{rAuPr#~}Hs@gqVnYSmb%y^;kKs!QED`Lrm#6)(enJHcT)k|bbaX1rx_>kT{eJ=VTZHc;Mn%=qTpvUBGP zE}OJZUounhQsfu;8PeVF72i+aymLLrFNR~>q92m7InJDU;1d2zeyY;6Ne-{mD;k$K zZOBSE7S!{C>%3F*^2Wni0*8WpUPzq}VdY!xDB)fBb|q8WRRK=#!Z#~z+GTk=BVWur zm3-smgd44IR?4)`mA&M;uUe};ajo;NQ|bPxmTw+S&?~+h9LeV`Z literal 0 HcmV?d00001 diff --git a/assets/app/Window.png b/assets/app/Window.png new file mode 100644 index 0000000000000000000000000000000000000000..58896617a4125dcdf526dbf974690be547e7cd97 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eBxn-U%jv*C{Z)e>PJmetIeqEV0fnA3Aycg@G z#)!r!Ae`*CfN3k!2BwdaX&&s$8vYde8~b^D6PP#Y&7XZUXP>_7sCNHt-lrlLpxF-D z7S>yK+A$pOj+*PK`W>%r&fjl4{BTVXe>k6UR^N^re{5?6*DX!is&*<_Y~5Av z_aD?vyCcHd`dXCDbo;m8ejER#$1r@Wv~;nr?vd%2b{fcj%(j1WV(m|3(^SRq=TBqj zsC#ZI5O)-?3E2Gd4|96r+4mw3&na@s&%G4IVe|PrONqj@4{4icPGUOt_~R-o^<^ge zQ>QOs-m^tvjVwnt`=MKn8_IAnV+1A#)f~!xWv88aNnIxBd!)zYMH{x3xynw{JJ)k| z>DK?}qV5%zpFTVHWY*tE?_at{H*kRBk0I)q`Hr9xrR*??KOnBBtDnm{r-UW|tFq>D literal 0 HcmV?d00001 diff --git a/assets/app/WindowUnsupported.png b/assets/app/WindowUnsupported.png new file mode 100644 index 0000000000000000000000000000000000000000..1ebf0608fb1dde41e53f0c2409449fd576066fda GIT binary patch literal 957 zcmV;u148_XP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf6951U69E94oEQKA15!yuK~!i%?VI0A z6j2n%$8lM*LR=&iBidPar5{AmLr^aT{sGoY6cY9qSQaD%Awp0Y)I(48l06jlWcd(9 zNczxQpn?^-*cw(S6>dbV$<8|0=XUe6Sxo39$z~P=dcUk=0d*|%HT$QrKRGJP_ z)QWCNqmt+$YF|(cl!LTNF+nj&v6rGOq_L&zD8?vEijj5cQl%WED@1DpX=(;2cAJ&z z*r)zmxAk4gM(WpKoH28{t`8-X$;YDaNP#ebw6P)jN?ph{W_Ko(>HF6dBUUX&*@FUn zOw+WHm2N($(gjRro>zSy?2Tqq+m-0M4@!M&r=rgO6r9u^(|nRhB#t6qg~t1+$-5RXb7J!Ia9d%!Kp9(N z);&zTp|BrL=*#RCCgFnng=QF&BNN9W>n5BBq-XA4zC@`lJ=OR06vlw6s)t2tL)ThF z$_lqFZHhFP$;j~An++#B+to#?-c50R`r-A;oa)`Xyu5r5NhA_ELygSsY(cxQz^@o# zi`;vf`%jjW@S3)CF01#n%TE@2+*bIsNL`7JzOSxpyLh4U$NW}3Ry{TSpr>bPhc+*U zSwJh?D^hR36B$LQp1mDcIGs)(5$QkKIP^MJ-+twW`fDL>Y^s|0a;NLu!ht<3_IN6l z8WgEb(M8J%u7%8#qUA)G3YjOuAS}|J34<_5dnydLOM5O1I7|B?47f`BCJZ=A`zj2$ zN&7AgI7tU047f-KCJZ=82PzC?O9w6tWJ*gB2C}532?H6@QiVa#($a-NkkTxKK~U0c zgh3F}tb~Ez((HtRpVBOafnU;Wg@GT^tc8Ks((HwSm(rmS23|?K3Cli-;3nKHT9&L)+B$ymCyv6JreStMD=p59Ilc^cd|kSVI0?{3fiqbw&syfb zs$GgV%zwMu(b{mLrC$t}CSg2@@ZYRUuS=IOf0GW)qh&EvDC0BKG*jSgXp*9dqVy3f fjsMFkR}|$ptujgdi(p?d00000NkvXXu0mjf%E++S literal 0 HcmV?d00001 diff --git a/src/discord/content/css/discord.css b/src/discord/content/css/discord.css index da9d664..00d1640 100644 --- a/src/discord/content/css/discord.css +++ b/src/discord/content/css/discord.css @@ -25,13 +25,6 @@ display: none !important; } -div#acThemes:after, -div#acSettings:after, -div#acForceQuit:after, -div#acKeybinds:after { - content: url("https://raw.githubusercontent.com/ArmCord/BrandingStuff/main/ac_white_plug16x.png"); - margin-right: 5px; -} .container-3jbRo5.info-1hMolH.browserNotice-1u-Y5o { visibility: hidden; display: block !important; diff --git a/src/protocol.ts b/src/protocol.ts index 3ed9060..49b8e89 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -10,21 +10,39 @@ protocol.registerSchemesAsPrivileged([ secure: true, supportFetchAPI: true, corsEnabled: false, - bypassCSP: true + bypassCSP: true, + stream: true } } ]); void app.whenReady().then(() => { protocol.handle("armcord", (req) => { - const url = req.url.replace("armcord://plugins/", "").split("/"); - const filePath = path.join(import.meta.dirname, "plugins", `/${url[0]}/${url[1]}`); - if (filePath.includes("..")) { - return new Response("bad", { - status: 400, - headers: {"content-type": "text/html"} - }); + if (req.url.startsWith("armcord://plugins/")) { + const url = req.url.replace("armcord://plugins/", "").split("/"); + const filePath = path.join(import.meta.dirname, "plugins", `/${url[0]}/${url[1]}`); + if (filePath.includes("..")) { + return new Response("bad", { + status: 400, + headers: {"content-type": "text/html"} + }); + } + return net.fetch(Url.pathToFileURL(filePath).toString()); + } else if (req.url.startsWith("armcord://assets/")) { + const file = req.url.replace("armcord://assets/", ""); + const filePath = path.join(import.meta.dirname, "assets", "app", `${file}`); + console.log(filePath); + if (filePath.includes("..")) { + return new Response("bad", { + status: 400, + headers: {"content-type": "text/html"} + }); + } + return net.fetch(Url.pathToFileURL(filePath).toString()); } - return net.fetch(Url.pathToFileURL(filePath).toString()); + return new Response("bad", { + status: 400, + headers: {"content-type": "text/html"} + }); }); }); diff --git a/src/splash/splash.html b/src/splash/splash.html index 38e0b78..ddeca44 100644 --- a/src/splash/splash.html +++ b/src/splash/splash.html @@ -18,7 +18,7 @@

@@ -44,7 +44,7 @@ if (remoteVersion > window.internal.version.replace(/\./g, "")) { var elem = document.createElement("img"); elem.classList.add("logo"); - elem.src = "https://armcord.app/update.webp"; + elem.src = "armcord://assets/Update.webp"; document.body.prepend(elem); document.getElementById("splashscreen-armcord").remove(); text.innerHTML = await internal.getLang("loading_screen_update"); diff --git a/src/themeManager/manager.html b/src/themeManager/manager.html index 082b626..550b3dd 100644 --- a/src/themeManager/manager.html +++ b/src/themeManager/manager.html @@ -15,7 +15,7 @@ title="BetterDiscord theme format" placeholder="https://raw.githubusercontent.com/... [.theme.css] or drag and drop a theme" /> - +

- +
Venmic
Themes
-
); } + +const rootElement = document.getElementById("root"); +if (rootElement) { + render(Stepper, rootElement); +} else { + console.error("Root element not found"); +} From 145f8b06d91707c77e2bc9b069bc5478f78ebc36 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Tue, 11 Feb 2025 21:53:31 +0100 Subject: [PATCH 664/896] fix: remove ts-expect-error --- src/setup/setup.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/setup/setup.tsx b/src/setup/setup.tsx index 58d4706..3ca8c9a 100644 --- a/src/setup/setup.tsx +++ b/src/setup/setup.tsx @@ -338,7 +338,7 @@ export default function Stepper() { } }; - const handleStateUpdate = (step: keyof typeof stepStates) => (value: string | null) => { + const handleStateUpdate = (step: keyof StepStates) => (value: string | null) => { setStepStates((prev) => ({ ...prev, [step]: value, @@ -359,12 +359,10 @@ export default function Stepper() { isValid={steps[currentStep()].isValid} onStateUpdate={ currentStep() === 1 - ? // @ts-expect-error - handleStateUpdate("windowStyle") + ? handleStateUpdate("windowStyle") : currentStep() === 3 - ? // @ts-expect-error - handleStateUpdate("traySettings") - : undefined + ? handleStateUpdate("traySettings") + : undefined } /> From 1c455296b59bb3ebcdd0e8f64c2017439776a110 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 12 Feb 2025 13:42:14 +0100 Subject: [PATCH 665/896] feat: new first-time setup UI Co-authored-by: FlintSH --- src/setup/main.ts | 16 +++- src/setup/newSetup.html | 13 --- src/setup/preload.mts | 2 +- src/setup/setup.html | 184 +++++----------------------------------- src/setup/setup.tsx | 135 +++++++++++++---------------- 5 files changed, 93 insertions(+), 257 deletions(-) delete mode 100644 src/setup/newSetup.html diff --git a/src/setup/main.ts b/src/setup/main.ts index 5c7bfde..089e792 100644 --- a/src/setup/main.ts +++ b/src/setup/main.ts @@ -16,12 +16,22 @@ export async function createSetupWindow(): Promise { title: "Legcord Setup", darkTheme: true, icon: getConfig("customIcon") ?? path.join(import.meta.dirname, "../", "/assets/desktop.png"), - frame: true, + trafficLightPosition: { + x: 13, + y: 10, + }, + titleBarStyle: "hidden", + titleBarOverlay: { + color: "#2c2f33", + symbolColor: "#99aab5", + height: 30, + }, resizable: false, + vibrancy: "fullscreen-ui", maximizable: false, autoHideMenuBar: true, webPreferences: { - sandbox: false, + sandbox: true, spellcheck: false, preload: path.join(import.meta.dirname, "setup", "preload.mjs"), }, @@ -56,6 +66,6 @@ export async function createSetupWindow(): Promise { app.relaunch(); app.exit(); }); - void setupWindow.loadFile(path.join(import.meta.dirname, "/html/newSetup.html")); + void setupWindow.loadFile(path.join(import.meta.dirname, "/html/setup.html")); }); } diff --git a/src/setup/newSetup.html b/src/setup/newSetup.html deleted file mode 100644 index c17d81d..0000000 --- a/src/setup/newSetup.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - Legcord Setup - - - -
- - - \ No newline at end of file diff --git a/src/setup/preload.mts b/src/setup/preload.mts index 6d124bf..7e8d26f 100644 --- a/src/setup/preload.mts +++ b/src/setup/preload.mts @@ -1,4 +1,4 @@ -import { contextBridge, ipcRenderer } from "electron"; +const { contextBridge, ipcRenderer } = require("electron"); import type { Settings } from "../@types/settings.js"; contextBridge.exposeInMainWorld("legcordinternal", { diff --git a/src/setup/setup.html b/src/setup/setup.html index 52e2967..2f42c56 100644 --- a/src/setup/setup.html +++ b/src/setup/setup.html @@ -1,167 +1,25 @@ - + - - - - - + + + Legcord Setup - - - -
- -
- - - - - - -
-
- - - - + + + + +
+
+ + + \ No newline at end of file diff --git a/src/setup/setup.tsx b/src/setup/setup.tsx index 3ca8c9a..03cf2f4 100644 --- a/src/setup/setup.tsx +++ b/src/setup/setup.tsx @@ -11,18 +11,10 @@ import { Settings, Sparkles, } from "lucide-solid"; -import { For, createSignal } from "solid-js"; +import { For, Show, createSignal } from "solid-js"; import { render } from "solid-js/web"; import { Motion } from "solid-motionone"; -interface StepProps { - currentStep: number; - onNext: () => void; - onBack: () => void; - isValid?: boolean; - onStateUpdate?: ((value: string | null) => void) | undefined; -} - const Welcome = ({ onNext }: { onNext: () => void }) => ( @@ -39,13 +31,17 @@ const Welcome = ({ onNext }: { onNext: () => void }) => ( ); -const WindowStyle = ({ onNext, onBack, isValid, onStateUpdate }: StepProps) => { +const WindowStyle = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) => { const [selectedStyle, setSelectedStyle] = createSignal(null); const handleStyleSelect = (styleId: string) => { const newValue = selectedStyle() === styleId ? null : styleId; setSelectedStyle(newValue); - onStateUpdate?.(newValue); + if (newValue === null) { + readyToNext(false); + } else { + readyToNext(true); + } }; const styles = [ @@ -112,13 +108,17 @@ const WindowStyle = ({ onNext, onBack, isValid, onStateUpdate }: StepProps) => { ); }; -const TraySettings = ({ onNext, onBack, isValid, onStateUpdate }: StepProps) => { +const TraySettings = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) => { const [selectedOption, setSelectedOption] = createSignal(null); const handleOptionSelect = (optionId: string) => { const newValue = selectedOption() === optionId ? null : optionId; setSelectedOption(newValue); - onStateUpdate?.(newValue); + if (newValue === null) { + readyToNext(false); + } else { + readyToNext(true); + } }; const options = [ @@ -194,7 +194,7 @@ const TraySettings = ({ onNext, onBack, isValid, onStateUpdate }: StepProps) => ); }; -const Finish = ({ onNext, onBack }: StepProps) => ( +const Finish = ({ restart }: { restart: () => void }) => (

You're All Set!

@@ -206,7 +206,7 @@ const Finish = ({ onNext, onBack }: StepProps) => (

Launch Legcord @@ -214,9 +214,17 @@ const Finish = ({ onNext, onBack }: StepProps) => ( ); -const ModSelector = ({ onNext, onBack, isValid }: StepProps) => { +const ModSelector = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) => { const [selectedMod, setSelectedMod] = createSignal(null); - + const handleModSelect = (optionId: string) => { + const newValue = selectedMod() === optionId ? null : optionId; + setSelectedMod(newValue); + if (newValue === null) { + readyToNext(false); + } else { + readyToNext(true); + } + }; const mods = [ { id: "vencord", @@ -246,7 +254,7 @@ const ModSelector = ({ onNext, onBack, isValid }: StepProps) => { Loading...}> {(mod) => ( setSelectedMod(selectedMod() === mod.id ? null : mod.id)} + onClick={() => handleModSelect(mod.id)} class={`group relative w-full p-4 rounded-xl transition-all duration-300 text-left ${ selectedMod() === mod.id ? "bg-purple-900/40 border border-purple-500/50 shadow-lg shadow-purple-500/20" @@ -285,10 +293,10 @@ const ModSelector = ({ onNext, onBack, isValid }: StepProps) => { handleModSelect("shelter")} class={`w-full px-6 py-2.5 rounded-xl border transition-colors font-medium ${ - selectedMod() === null + selectedMod() === "shelter" ? "border-purple-500/50 text-purple-400 hover:bg-purple-500/10" : "border-gray-700/30 text-gray-500 hover:border-purple-500/50 hover:text-purple-400 hover:bg-purple-500/10" }`} @@ -299,52 +307,24 @@ const ModSelector = ({ onNext, onBack, isValid }: StepProps) => { ); }; -interface StepStates { - windowStyle: string | null; - modSelector: string | null; - traySettings: string | null; -} - export default function Stepper() { const [currentStep, setCurrentStep] = createSignal(0); - - const [stepStates, setStepStates] = createSignal({ - windowStyle: null, - modSelector: null, - traySettings: null, - }); - - const steps = [ - { component: Welcome, label: "Welcome", isValid: true }, - { component: WindowStyle, label: "Window Style", isValid: stepStates().windowStyle !== null }, - { component: ModSelector, label: "Client Mods", isValid: true }, // Always valid bc Shelter is default - { component: TraySettings, label: "Tray Settings", isValid: stepStates().traySettings !== null }, - { component: Finish, label: "Finish", isValid: true }, - ]; - - const CurrentStepComponent = steps[currentStep()].component; - const isLastStep = currentStep() === steps.length - 1; - const isFirstStep = currentStep() === 0; - + const [isValid, setValid] = createSignal(true); + const maxSteps = 5; const handleNext = () => { - if (currentStep() < steps.length - 1 && steps[currentStep()].isValid) { - setCurrentStep((prev) => prev + 1); - } + if (!isValid()) return; + setCurrentStep((prev) => prev + 1); + setValid(false); }; - const handleBack = () => { - if (currentStep() > 0) { - setCurrentStep((prev) => prev - 1); - } + setCurrentStep((prev) => prev - 1); }; - - const handleStateUpdate = (step: keyof StepStates) => (value: string | null) => { - setStepStates((prev) => ({ - ...prev, - [step]: value, - })); + const setReady = (valid: boolean) => { + setValid(valid); + }; + const restart = () => { + console.log("Restarting..."); }; - return (
- + + + + + + + + + + + + + + + - {!isFirstStep && !isLastStep && ( +
- Step {currentStep() + 1} of {steps.length} + Step {currentStep() + 1} of {maxSteps}
- )} +
); From 1bc4ef49137732c9651f9599933715343625c5f9 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:43:07 +0100 Subject: [PATCH 666/896] feat: first-time setup logic --- assets/app/custom.png | Bin 0 -> 82060 bytes assets/app/equicord.png | Bin 0 -> 13787 bytes assets/app/native.png | Bin 0 -> 93766 bytes assets/app/vencord.png | Bin 0 -> 42385 bytes src/discord/venmic.ts | 1 + src/setup/main.ts | 7 +- src/setup/preload.mts | 15 +++- src/setup/setup.css | 165 ---------------------------------------- src/setup/setup.tsx | 116 +++++++++++++++------------- 9 files changed, 79 insertions(+), 225 deletions(-) create mode 100644 assets/app/custom.png create mode 100644 assets/app/equicord.png create mode 100644 assets/app/native.png create mode 100644 assets/app/vencord.png delete mode 100644 src/setup/setup.css diff --git a/assets/app/custom.png b/assets/app/custom.png new file mode 100644 index 0000000000000000000000000000000000000000..b14cd42f8bfbec901a5b5efc5eee2b70565a013a GIT binary patch literal 82060 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 z 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 EKX$&hWdHyG literal 0 HcmV?d00001 diff --git a/assets/app/equicord.png b/assets/app/equicord.png new file mode 100644 index 0000000000000000000000000000000000000000..bee9e34f3d1c1e33f8a83822b0a2a1c13b905f5e GIT binary patch literal 13787 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
%nw2{I!x|!6* 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 Q9|j;Tp&(u@YWU}W09)nX0RR91 literal 0 HcmV?d00001 diff --git a/assets/app/native.png b/assets/app/native.png new file mode 100644 index 0000000000000000000000000000000000000000..d89a9cc4f0d9bef3a12f1a10f0d68a3a7cead73a GIT binary patch literal 93766 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%0AVIi#@j`d#<<1LG;Xd`DQlSPa3KaEoH_vfP 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
!X|15n*gzbK*?4L!ry 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 Ls>)PJnT7lxddru- literal 0 HcmV?d00001 diff --git a/assets/app/vencord.png b/assets/app/vencord.png new file mode 100644 index 0000000000000000000000000000000000000000..3598e401ffec125052dbbdee09d4e6dab99ee72c GIT binary patch literal 42385 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

;ev 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

    F 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 { if (platform() !== "darwin") import("./tray.js"); - return new Promise((resolve) => { + return new Promise(() => { setupWindow = new BrowserWindow({ width: 800, height: 600, @@ -36,11 +36,6 @@ export async function createSetupWindow(): Promise { preload: path.join(import.meta.dirname, "setup", "preload.mjs"), }, }); - ipcMain.on("saveSettings", (_event, args: Settings) => { - console.log(args); - setConfigBulk(args); - resolve(); - }); ipcMain.on("setup-minimize", () => { setupWindow.minimize(); }); diff --git a/src/setup/preload.mts b/src/setup/preload.mts index 7e8d26f..2d2d4b4 100644 --- a/src/setup/preload.mts +++ b/src/setup/preload.mts @@ -1,12 +1,23 @@ const { contextBridge, ipcRenderer } = require("electron"); import type { Settings } from "../@types/settings.js"; -contextBridge.exposeInMainWorld("legcordinternal", { +contextBridge.exposeInMainWorld("setup", { restart: () => ipcRenderer.send("setup-restart"), - getOS: ipcRenderer.sendSync("setup-getOS") as string, + os: ipcRenderer.sendSync("setup-getOS") as string, saveSettings: (...args: [Settings]) => ipcRenderer.send("setup-saveSettings", ...args), getLang: (toGet: string) => ipcRenderer.invoke("setup-getLang", toGet).then((result: string) => { return result; }), }); + +declare global { + interface Window { + setup: { + // biome-ignore lint/suspicious/noExplicitAny: + saveSettings: (settings: any) => void; + restart: () => void; + getOS: string; + }; + } +} diff --git a/src/setup/setup.css b/src/setup/setup.css deleted file mode 100644 index 5cb4760..0000000 --- a/src/setup/setup.css +++ /dev/null @@ -1,165 +0,0 @@ -/* Meta {{{ */ -:root { - --background-primary: #282b30; - --background-secondary: rgba(255, 255, 255, 0.1); - --background-modifier-hover: rgba(106, 116, 128, 0.16); - --brand-experiment: #7289da; - --brand-experiment-560: #5c6fb1; - --brand-experiment-600: #4e5d94; - --interactive-normal: #b9bbbe; - --interactive-hover: #dcddde; - --text-muted: #72767d; - --font-primary: "Whitney"; -} - -@font-face { - font-family: Whitney; - font-weight: 400; - font-style: normal; - src: url(https://legcord.app/whitney_400.woff) format("woff"); -} - -html, -body { - overflow: hidden; - margin: 0; - width: 100%; - height: 100%; - background: #1e2836; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -* { - font-family: var(--font-primary), sans-serif; - - box-sizing: border-box; - user-select: none; - cursor: default; -} -/* }}} */ - -/* Utility classes {{{ */ -.hidden { - display: none !important; -} -.text-center { - text-align: center; -} -.setup-ask { - font-size: 20px; -} - -.center { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} -/* }}} */ - -#setup { - display: flex; - flex-direction: column; - align-items: center; - - color: white; -} - -/* Warning {{{ */ -#warning { - font-size: 1.5em; - font-weight: bold; - text-align: center; - margin-top: 10px; - margin-bottom: 10px; - - max-width: 328px; - background-color: rgba(255, 0, 0, 0.1); - - border: red solid 2px; - border-radius: 0.5rem; -} -#warning > p { - color: white; - font-weight: bold; - margin: 1rem; -} -/* }}} */ - -/* Titlebar {{{ */ -div { - margin: 0; - padding: 0; - border: 0; - display: block; - font-weight: inherit; - font-style: inherit; - font-family: inherit; - font-size: 100%; - vertical-align: baseline; -} - -/* }}} */ - -/* Buttons {{{ */ -#buttons { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - gap: 1rem; - user-select: all !important; - margin-top: 10px; - margin-bottom: 10px; -} -button { - background: #9739ec; - color: var(--header-primary); - outline: none; - border: none; - border-radius: 4px; - padding: 8px 20px; - transition: 0.17s ease; -} -button:hover { - background: #aa6ce0; - cursor: pointer; - transition: 0.17s ease; -} - -button:active { - background: #d29fff; - cursor: pointer; - transition: 0.17s ease; -} -/* }}} */ - -/* Dropdowns {{{ */ -select { - -webkit-appearance: button; - -moz-appearance: button; - -webkit-padding-end: 20px; - -moz-padding-end: 20px; - -webkit-padding-start: 2px; - -moz-padding-start: 2px; - background-color: #2c2f33; - background-position: center right; - background-repeat: no-repeat; - border: 1px solid #aaa; - border-radius: 2px; - box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); - color: #fff; - font-size: inherit; - margin: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - text-align: center; -} -option { - text-align: left; -} -/* }}} */ diff --git a/src/setup/setup.tsx b/src/setup/setup.tsx index 03cf2f4..ff67018 100644 --- a/src/setup/setup.tsx +++ b/src/setup/setup.tsx @@ -41,6 +41,7 @@ const WindowStyle = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) readyToNext(false); } else { readyToNext(true); + window.setup.saveSettings({ windowStyle: newValue }); } }; @@ -49,13 +50,13 @@ const WindowStyle = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) id: "native", title: "Native Window", description: "Use your system's default window decorations", - screenshot: "https://placehold.co/600x400", + screenshot: "legcord://assets/native.png", }, { - id: "custom", + id: "default", title: "Custom Titlebar", description: "Use Legcord's custom titlebar design", - screenshot: "https://placehold.co/600x400", + screenshot: "legcord://assets/custom.png", }, ]; @@ -118,18 +119,19 @@ const TraySettings = ({ readyToNext }: { readyToNext: (valid: boolean) => void } readyToNext(false); } else { readyToNext(true); + window.setup.saveSettings({ tray: newValue }); } }; const options = [ { - id: "enable", + id: "dynamic", title: "Enable Tray Icon", description: "Show Legcord in your system tray", icon: LaptopMinimalCheck, }, { - id: "disable", + id: "disabled", title: "Disable Tray Icon", description: "Don't show Legcord in your system tray", icon: LaptopMinimal, @@ -143,53 +145,53 @@ const TraySettings = ({ readyToNext }: { readyToNext: (valid: boolean) => void }

    System Tray

    Choose whether to enable the system tray icon

    - -
    -
    - -
    -

    - System tray functionality may have issues or behave differently on Linux systems. -

    + +
    +
    + +
    +

    + System tray functionality may have issues or behave differently on Linux systems. +

    +
    - - - {(option) => ( - handleOptionSelect(option.id)} - class={`group relative w-full p-4 rounded-xl transition-all duration-300 text-left ${ - selectedOption() === option.id - ? "bg-purple-900/40 border border-purple-500/50 shadow-lg shadow-purple-500/20" - : "bg-gray-800/40 border border-gray-700/30 hover:bg-gray-800/60" - }`} - > -
    -
    - -
    -
    -

    {option.title}

    -

    {option.description}

    -
    -
    - {selectedOption() === option.id && ( -
    - )} -
    + + + {(option) => ( + handleOptionSelect(option.id)} + class={`group relative w-full p-4 rounded-xl transition-all duration-300 text-left ${ + selectedOption() === option.id + ? "bg-purple-900/40 border border-purple-500/50 shadow-lg shadow-purple-500/20" + : "bg-gray-800/40 border border-gray-700/30 hover:bg-gray-800/60" + }`} + > +
    +
    +
    - - )} - -
    +
    +

    {option.title}

    +

    {option.description}

    +
    +
    + {selectedOption() === option.id && ( +
    + )} +
    +
    +
    + )} +
    ); }; @@ -223,6 +225,11 @@ const ModSelector = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) readyToNext(false); } else { readyToNext(true); + if (newValue !== "shelter") { + window.setup.saveSettings({ mods: [newValue] }); + } else { + window.setup.saveSettings({ mods: [] }); + } } }; const mods = [ @@ -230,13 +237,13 @@ const ModSelector = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) id: "vencord", title: "Vencord", description: "Client mod with plugins and themes.", - icon: "/vencord.png", + icon: "legcord://assets/vencord.png", }, { id: "equicord", title: "Equicord", description: "A fork of Vencord with more plugins.", - icon: "/equicord.png", + icon: "legcord://assets/equicord.png", }, ]; @@ -307,7 +314,7 @@ const ModSelector = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) ); }; -export default function Stepper() { +function Stepper() { const [currentStep, setCurrentStep] = createSignal(0); const [isValid, setValid] = createSignal(true); const maxSteps = 5; @@ -318,12 +325,17 @@ export default function Stepper() { }; const handleBack = () => { setCurrentStep((prev) => prev - 1); + if (currentStep() === 0) { + setValid(true); + } }; const setReady = (valid: boolean) => { setValid(valid); }; const restart = () => { console.log("Restarting..."); + window.setup.saveSettings({ doneSetup: true }); + window.setup.restart(); }; return (
    From c819c35e8358ce8c623ee1479abf0b8b73afee79 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 12 Feb 2025 21:09:44 +0100 Subject: [PATCH 667/896] feat: cross-platform styling in new setup --- assets/app/mockup.jpg | Bin 0 -> 133487 bytes src/setup/main.ts | 33 +++++++++++++++++++-------------- src/setup/preload.mts | 18 +++++++++++++++++- src/setup/setup.html | 1 + src/setup/setup.tsx | 2 +- 5 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 assets/app/mockup.jpg diff --git a/assets/app/mockup.jpg b/assets/app/mockup.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b89578eb901ef453c388cd0583c8fccf055da7e GIT binary patch literal 133487 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%0DrDnyH$9?RFX}R z!usS#@Z=0Augi=cZjWn_^u?C?(@Xk>-HKJc{xfY`J!q8pP<~x3Ki=l&Lb}qDE(``c>wier_ZCU zE0OZk%$S8iL(g-!<1WQLo4-dh)g`bn+w_vca2q}?YPpaO#?ob=7(#5rpIx9vk~h?v z?=^ckLRiWu#emT5@|M4!0DTuqJtMvvLWy~D!`$Pn7X~+l5 z0z%9P`C0%=gw9u^=W6#?m-qakBn0wu94TN~a?1feS%UN%ZiT&Pl&sl036RF~a$w;WDNQy|zA~W{lG!D9B=}*=(g$s#<5#xGB1j5|aoiT6#o3V|3 z_^^)$Ge0jWEBbaiz>-zZm}KZH$`b`by`Hy$p#^%k*PrFv(Gvw8cVI_=Yo&10HeVeO zjNaII-j(ZUZ0w6^9tn7FvP9}D!D-v~xc)RWQ2{c!>0>us1<3&Ch<2;xA_~yf5aXa5 z8=ukvzAGX#?nu#-nu(>KM3PKw=PAH31WDKyEe>>XLNearpeoUb-vyA*;R9i%3aOS^5hl`9c#9^+*Q8TQ*J9l9&h_%t zS)U@-x?az}S0s}73UR)h8vm6K+ws$!nObrP@*m4?5I0R_uC!Hw!I=T~oKj^ZUT+7% zLaH$oP(~$36<9)>&@?X--r)4K&t%{CI65k<@ELyvnlQhgpW?|U^s%NAN`(pM#Qza8 zZk~yJD~qIkZ7wequ?LC*nYReCJJYE#e3VlvX^cZVDMi1h8U4nb7s$4mf9r06Sn&L zQWC?Odl^WLyHKP-=3*U7zero26;_oYIy%aBEY)xpaq!x|OhYw|Al-MMUJ}lzx@Am#s!3s=S4t|V4xY^^XaWjr7}|7=(l73FWGWW z8)Unyo!!MA2)SBe-RZi}uAc^d=~GnzO^hZtfwe8~Yz{NXZqE(vDS8s6q)w3ufq*EH zWhl$=g8x`R_*6N4l<$BX!|UATO{uxYTrTT2gGz2FOBxSybz%?U8!eU?2@Aw=vXR|$ z)r+T@VPP!E4RI|!rbq9pNo`_iyrBn%Cpxs=(z*2D)+6X^vj-{3S{q`Q+@Fk28s!us zP$@(;2Oe*%SI(hC~#qn$18KbX@O6<1(NFOQ?6Ks)Df55F=`L72E#)K1PhcE93 zagKClqAerA4$JOUVhBcL97{Q_7hih3lZf7>>ZvFV?~j>>V^P@Vd-h&t9H)y~gkcuD zi@)D7B#Q6?1?yP)9~pxPMwFVswhT?oOWkVk^;5nQchxjCgkQK-yk(L(MM;*|Pfw#< z1ce02y9n&uGPD`i`09e}7%z{bLgl6gk&|5t*66LIb^z80BT|)jFH!AjhGQ?Y3YvsA zK7oUN1au>JTwF`}Vr*b5KO)heNi+=_0ipcpby!2xIZjkI|v3a&HkkU7!6C%3GcS@3mkHP@os1#D`8P9O0OO5g8zC zULoCdCZB}5p~|=nGmK7^2<^~Wsi%(lDyQ4MOJM|Y^j|f%)P(bU-8=S@&O74djH^OwyN zHRB`o=ZAqV%f1Yzvhk?h;Q+?~jJ2XsM{a~j-v5+xV?vqV4Tg=UZb(bxbmaw73rEUT z`$6t1IV3U^scHCBN$(YC7wT)O&}t@RXpqxMXC?N8s;ahlyaldr!akK7mq%OXk+3@x z#2b4E&NR~B;jFmDhV}d`YOLipvE!L#kLjy9KgCjwjLD3@-p5*io|H(delrMwmfF1w zU^ec+yS!$Gdl9s)5X&Q$e)Lf!cB#&T^acXdB$O()1w#daSm;2^uX2C%Me&BzM$r8J z@jO14!jX0r=5?cQqz*L}CR~Z>tEG-`y`itA4m*>vCavuJ2f$Zw8k>)t3Mcqja^}+y zca(A^PVPPX0P>)r z?GE$Ox1x|h(~Eu=P4F>!kI~gF;{;-%mYb+MM^gXaiN&M^dhH(XAypUmydo`fa%gzeUiiDTou58oC2g%kvhKcDNSvK zskNG{DL2|wQGkurtw7HJ(}?$(kV^j27KJVIl);cOT`gYMw^}%FtdOCZc$ITa*PZop$J%TfYB9#4`i7fF&BiH*%e zlKQo~$(OC-fK($qa9ktiK*E>Rtd+j_$51K0Y*pUyW)mmAB8eE;@;F^{zb7Jl3>uco z56)FmJN^}wY(B43<17n)evrD!|G25M4+AIzFOz;*cbco&vRXZ3|x;)R{N4G)r5$WOmPS=Cb>}(*eYE9 zM~=ThTR-@ILvA1Goz7g$BuJ^v>-5~H*%!%2<{Nk4__mbzgC@o@d0&#A|5+gWfX6q) zSA|^EvN4g+`d!67@KpQmc^L%PaIayR$d~!fdE-G5mF4X~if1{wgvoch!ezcbmbWQi zeupCo=;2C|ZO^G(e2EC1pADiGBsdD9ISJ{)#YIv;%ui6tpfgHb-Wca<&Wcw?k$Eh* z(645aLsQ8i$jLX;l9bz0Q?Qjm;w6;cnKyd3k)$>$h%C|V=sl3LE(2RTSW>rA^Bum(ZXMm0 zT<88f>Lf{CCAnl0$AZp|>l&a4R5Hx>cdB-dP%B(LM~I}S+}x#Q$A$&190xUdw5RQ<=RJHKyfG%7y^;>wUb=r zJg8=aqzJkQk|-CR7w+X!zY&bj7l@Bnx91Zg+2|h$G6-_=#H|U~-qzpt#Mo)D^&+ge zNiWFlaU*JArN8OSvszrWjUFxdexdnH)(JTfk=o|V%FkeiV%-iJZ_tlFM z+S+NGCV?Iqdb@x8KB zcIx&+sTZT;l#YYTd)rbcJ64W{(WWOU-miQ)eozw1SNfno?M{La?KljP6v*6IV~_bp zR*sL!f+Chwi7yCg7uzR~#yS=;k+HbMTorO5Yk>L?@-oTa?^>xS1v%4Y6tgob#z0w= zq$o*}WwRGaGVe?fbPfNJ61#HdnOAi=INN?^9FW06`z1*x|4(~B`O2g<78gWk5o$|a za><;}4d6iv_K7{?kUY-w`k5!XC#Fyah9NS(Y^2H?YM;W0E)uEq0fO@hdK!qtIKUxE z=}3><)xV$amzCg%0e#kzOO}-!xIk)V$I-wApCn0QWRqlF6WiG2+j7GKO_W5XA(|pC z68_Uw{Y>u6!yzGkA8SgXLnSBwk?_vggB%kn4!V$R-a=D4p1k55%O**hyOI0XHMemo znxUXZW`v1ITo!7^kndEH7d5)L6FYqy*LF19ucX3E(mS`5K*)jO@J~#;5Q;h#D)&Yd zFk`_QsIVZO#Jyi@j%7!BTKK>H@*X;5@k5(VWa_Ln zI{iDRtA9*RIrIHYCX>aeMv1x-WQv6R$4~H&Gm@4S86mpldDLywEKIY46uON19T6MpaU2xV88R54rp;xMiAlIEgACTm64NA)1xrt@WYza& z6M9UHI`P;vUMu0D>lZ;1ztb9|5}Cjs*<@&me=C}S7o}rb zK;IG{OLD_O5;eMs2#&mwIrD{*OC+10V06-n^gzi->_pdrDHct+qnxu&64O2#*U$C& z2A#WO;fsM+Fjn_<#a8qZTc_2qH>x_TfBTh^u2dRnDlp&Rh2KTgH6EY?1!b`%-dh21&>XyDN>`D#K7luhu< zQiv@!f>eTCQ8cU@dI)OWy5T_FaIh2yISFbk^__0ExhA>Ros2>nD=RYctS=1C4-`jW z!~)=c3~XQUhV>6iUjdo@lN@leg#Tm?4e zXYsG&{>dEaO`(_YGovVX74ZQ^(-WfU%J_2_&7ScHRSJ1o45Bm|k1i-kAq zT1jlBUTGiHe6z_z#BBCSh%MRd)lQ_67N#lj4`&oEi_6w^Luk-zu8~+PUpOod1*>A& zA4Zn4;CK#o%!Nd%nw?mxYG8)6xlyBuIMfzimeWxr&xL+S_K5Q#krX==7o5^sNzX-JrHfyH81j%G)*cJmOO~-$02AflpN_nqj3_sFJ@B~jfEBLL||*2pAP}n zEK)}Y)1o|Em^d;Brf8{~G;2S4A?;`olvRxQQAKf<_C0863ZqnA;?G*s!gp_J#ZPry z6@RrZF5yXQDb1DY)^tEdLIb{2Au4M%2u73^nPOWGSqT>}wD(MAM=`RX+nG$s3X|5s zQY)>S%SAr8anYj5QmJXCKhha1E>*keg&J z{*?9)zY&Z!VLM@=J2wz46CE}j`qOqwID{`dX(XC3&Z1rI%Q&)ya87EX@K%-y@gqXT za6(p#`cuV-D$hz`^{_Vf+L_X7(QbvxXwz|%3N%*TpTFZT5SyAp(ruK6sNZXV3>Q{A zCYZWN%um=US*QwYdqK$up1h5`JMZ!kV%SgG{P!SXNhHF>Gp^!WR{Rw;C{!ZKbGlc_6g^5=@Qd z#KM-|`gxWh?g1-mJ73I6cc3|#&j_6IMgjv zjCOGeR?%=-f?Qj$vCyI(y(7k9E7+z}9o-~3SZzG!i7aoOu%ZN|?@!BI@rfmk27Vgx z^o=xaT`OpN;+;;9C%>^BgsW*W$;->)flg&nMTo)WB@IcXDy^8ah-GO7qdO?ipfPC0;A(?|+$dFT1 zJuCMOX4z6BEKb)Mfy_)6#U#BXcX9M=I&M^6WF#^hGTSK^ zXv3E!jlYo*+y}(<66xP*e=;-t^LHx1scZU@1^}s$Mqhc)N16P+KAC@n4~>En!Woh| zpt3DGi7G2q5fYNRCYq&cmn4%TuJrpaP?RbUHj1QBBO&`cY2NH6I}Lu68}s5=ag-Kj zC-jSun_4y=TH^Gtk7g8x4~zSS$(EzqWYJO;Hb;FqFk5J8N&zm^l=7fpN9%-(ArxC^ zI&mgACDcTb)#3GrOmg+mBp#e*K$STsgor=VxugqV^GyH z2I(bvOge8GE~3omtqTWkWi_51g}_%0Sva9kh=#{$2&RRRS$6RtqF!)`Ie}Q6H7}#2m zRIky5ZlZSGYbid_TZ-}tEt6|1#K>=#9NJXSy|)ttwRX4mMT48{9wntKZ71hj z;zXrWZnQD0nvOe~alyPhIJkJ{h)Fmx4A~UCQKKlk zf59M~*f!b1sno`;rxF}3TbY0L0bn)a#Q5GVyv%&|K=?d9I41;4`H>YUt}~~^xe~Tm zZdkSHoYbUSG4d;>u2-C7>a*ddOsF7BjfIcxVsyqU@#2jEZfA1GenFw9o|#pz6C!$` zL*s~`HSKVXyjM&VKjS=i(5m)`LeLoZ4>)qFQ*3gWt<{T9qT!Wv`Uk~%-&E0uMO(O7 z)42C)`TUJZ@4L?vO;kqpPB3lB-gsN)`acL+6HQgx8v7274;;M9w|lHeZ{r#<#ei9v zECkRlsmH$Ln?5jbY`N5hetkhelOb<#N^&@;!p!zCPfV^g~zYec&<5CEU)qx zULbdTGcS5>jA&sRe}&pkpfNR6<1dc%27$0^{=v;ReO~&S`e3ZO%t6~qDAXl$6ukGw z$l+22XA%E!cs|s>VzDkeg6AuS0JpmRBrIGK;+-ANrGQ;ds>IOD(+fPg&h*vY$cUu? zw8ntOASO{oMA4TxS2o}r{3klg6*RRfy_hsXjAEc1YLeTF+n3nwMIm}iXCe*#J4Bhv zNuNlcOLrqxN$wy;!4$>FVb!7dQx$n>b>$6bo7UA}8P!;%t$$#I3A>s9u!_1Xg9+fR z(&imv^W4WRekNg9!+#XDI;mjt43~kr4Q*yE<0Kdnm3H;{_GOz7p96u3V~ z3VWW?jmrvz$>89l!c?$f4z{*L-H5P|bg4S2n24TM46^r#ynqb_BdjHP_q`!Lc{WYX zT-SaT-b4#A<%@7-$j+~&WGkz__jw_T!ib5gJbNKNri4GN$u?zlln?5oHP9o)O z{@J`<5?85L+6TGNY~nX^F6R`~rey9$H%dth!=#YIDVfv4nsvhv3go79B+l|X7L!fE ziddGz$YK`Ej{_ZJA%Uu9C#I?zs3CP8q^Q;52CF3d;sts*az#n9)Vi=}2mj$&PrW2Z zk;zo+T6lwWP|QvbPCmBZwY&_bqa+pHTHe98-@muN#wgiRN<`?CwVz4)f9VfC)6sgN zuxLr$ai@wM(BAb1OYBNW({hxO`Me{X{?cyJrAkfgoa2_$xGY*@(~aA5J$BC`Gz5Tf z49_wnvyCf7HGDkTIbur5;K!n}qa{Ix@pl!rks5mi(^l~|X)mzIQi?kPjPwKKJyj#~ zI}oWQ)kPAlzQenAWZQCYk`}g{>F8a$ zQ_)*|qeh*xaEHWMS=o*XWqGiqR*R!?D!2;RuYyJN0)o_7#KbOUXG=C;cIglXeTRZ7 z1-R@)?BQD4F~0Pa+>DuD(E(GNQ#V(#gI@If;zH`oXRM5p9M>ArVcoSSnxXVsXxA7? zMG{JP$*cVV-^s5EqfIzYnHVk&L`x(G4F?`u&WHyHWhcxezl<~KSNc-uOe)dYR2WHB z3b?bgf=4Ns??@=P2JgM|ekG~ei3r_P<)o^#Ws2%l%t98!^cL_jl7Loa`G&Y$9cWD6 z{6Z+K>_ipRPDJWn$P&rQ{>iTET*;K4@WvbewH@1}dZVwp_Jg{eSg6a}e&^gz-q;6Y z5(Y!86dzk_{)#&>m+qzhRw7GNvJxq^WR;sPnI$g55o~Z_3AvF$okU-w2k%T&ME9fGypZa(3LQ+tL7oLgm!{K-g?daTuE>tr6=E2R zqb=eOI7X1=>VhHpVs%Z4K1 zN-{YDTDc-Tr?Iin;#akAoo&`xPbI?7Iknp$_$$F)sOEnDLBxOYLjVJT02m@bz`()( z%?|+#^dEi*$3UXQ!bT~fChtjWV%Z&}J*Cv8e}R4(=(ETA}g_>RIII{joeKUx${%+Sw8d8;AqJwA1Xj;C+_u^IIQyZ$CnR<*+Q-adi#U{ zt;;j z%;K;s)Q}R!w%VqS`0{5&sZ&$QJxS^uXeCyvQRD=j{)TrR`DFEd?x%h$fAn*CX+H4t zE7Cd}f|m|XRrCEv!v)a7n>iZdUm&LG*-N0KsvOa9!UH_$siic@saE_>cfL#c-u$l#^`v) zh9sOV+L-T8^iQ}Sa9SDZog=FJzIFDTU-*^03c-<)vIiNM*F3Wl`I17WYU^J53bFP~ zhFXd5ezCuu5PRC`FIL}{vhDhasaizg&Rs6`8{7AK*GB20=($4uHQTV_##5D$`LUz} zLh@-u0P+~7GVYKv{qkx*I6O5j`H1K&O5MPIIx^-Dscz693yZp<>W9?K=8C^SoywQT zhB5PK2#f5yOM^aqp@q+}j89o&OqXBup^6=>K7|p^z2uu#2WQ+SnCLp zwqcel&cSakM+cS&PRbKcw~#TV->6A^!`CXzNKcFP6KJNXUNmc~`aOk(5t~j4ai+Fv zBzN@X=e~r*vYR*|!6qGIkk@uzzle#_>M86^1b)wg@_I?XkY-)2OcT-T4{R6oAQ|%7T+dUdHjj+J3g|%1kp&o#rh)r zFHoxWB-10(jsAeKP`jm6n?~4i<=n0HUQ3T!)!J#eqtPXoxr}?Z_xqPpg44`l9H&x1 z5r-DtAOB)|ZpygG-CBM~kc+{c;8{I_Up@vWR~eXUa&sd;*FUGF>H?lIA~HQ=ERAFA z-eGsM4ANWm_Mje&A9x|vveqWHelYHB%#&ZMx9>Z-&Sx|h1os;ZCl9rxiD%B2><9M? z7K2gg9=8NV}ymM#$ zs{X1<=QIT?qZj$K=cFi_zKFrrc>^@59q83Q1&iiUpE(6Qs&5i#NJc3wA@uo$cj=v3 z6K|TY3?{Rw+$tP2DB=wCD`PyPr~#-fND_Gs}C;2S)S-AvDkD!}glYACyw)T2{Tq*tV48X91omQZyYE zn!q6S%vSN!(V@+ur6T538Rb15bpcOeH<&JSkM-6+PQANF-G>bG7k3fCoTR7;2O*Mw z_Ph_#nTJ2Vj%OoZv-<|z$|hUq5MgefwE@$djzM5*E8o0|1ES`sQIl{G)=l(ILe2?f z{mk#c2?7N$y27XL-Sy!askGNcl%O)i3))}t&H&shmh#fPFN7!k$EQqBhv$mT&|%TI z4?HhP7`3|5UFUQ9=%gEuD(KW#?M+{iv->h!<~CwcwB)&=+iQ8^v|qKYv)d)nI*_Pu zA^%>559(oTmR9J#7S5fIb8hCdb1G8Bqccx<^Vima45&GL5af)n*m`RN?x^?z4spG7 z+*#@I>;ue(wiHLCHWLy1rD7l2W;nrvu698D>`$#BaAVa?ykbuf@v|?+B51x)GYUv8 zE>pd;5wl`)O5c1X2R9M0ZXUK6Mge8($|pOJY+d*j0lU2Y<7o?nva5%`Q~1y^4_oTzcJDu z`!o*__nsqGs#g{yQi1T>3$3i=26Qs@A(BYSjzVYjxC4vf}i~lU8`!LukgFrpSw&*EjP% z*Pr1V*-3ea5WcSaVSPD2c-upU@w(X7&5TnPVC#)ce4A4)c#RD}orkPMI4YHJC!D_o zAX;*_e{k?kyNsR9dlTXeK$pfcp8Md_M|Vi$%58oJ5;X38;9}bO;hzicefpLIob9H+ z{oms4|2$_a@zJ6OvY*q!jeS&#<;ON^pz0+x=z6B|HN`((zfwwf>*weNblro{uTmYZ zSj33yr=E#>-{+@3nHRLM`(C_rb)1#{oFRweU6~`HR-rjvj8{6J*C8yc{8sni4pINK znc;qY0Le0{+bD&EPxRZx|91BM!B1O;tpvCNW{yv^Pn@c%$I8{pFJ0AtiF&DAtNch+ zRaH$j?LPvs@Q{FjJ|bPw?4XQMen~fdH!VLascl40;IwsN`Y+M{WSEP9<1XlV30NNsAqF*f#3X_emg#oD?SgoE=Qy%Ni2e=DBi6EprD-I#}}XYa}x`$Q2i zY)u+VUBrw9o=4N;OV7r$DKju0GJXMN=kFcUlvz5HTQq3r8y#frI8#vvk#vp|+-7^z z#_c?#N~9kDQU&mgWy9?zY50Se(njyD{K(%J^R(Qyj8abBhUiq|!DpP8jdBX>Gx3yz z`|&987fARf8h_y3z#tY6A(gxc^U!SpWpb$lnIxS_sh>u#c2gJHfwvZY9+h570i|>A zabZ{AW@wqNyho{MB&fFQ<`b66%i=Yd3uP-c-aR`D84Iz#uH1IY6AFy`+e+}g%EW{f zo2ACt{@aZar;{-S_-#wJj^xFH?~o?6gQ888_>C+~w|HW6!?e57N)B2>#G3WaY;K7_ z$=cxGci_L4UaG18qnxY#kD^|x`9F$Y>VIYAUjTSQs(NW$tNsG1|NFsFJy)((Kdh?y zR7Fo1<738-s0E<=jNg%C){{I@&bD7S+m@w2N))x+b+{M6@DEgOowb7+aS@0w>OpIL z1GmZEdTHR|mQ=no9^wnrqs15$x3vBR;t;zY0rYOa-^Pz(tcy_dDxG<#d;bCjIDW?J z_z&0dCsxP5x{iNMfLbjg=cq_Kglx=ruZ&JlPqs@0AXyR+3F5iLc?<<*Ac2?F-U5Nd z0?!HbU^!*v=E)wk(+aSRfqtkiFo#VR?-jf&sdnb-=u~1^?L-7ZBpw2x$B8HpVWHEQ zb+t=8CR>1jdMzTS0uIrC^7$v{U=OY78P2}Qw&!&ZscHW<9Mgd(qlUVpCJ?CMkB)22 zqARbWRVz3t2%taV`oAH~%K+XC+u`)Hw`~+1s{2;^+p$O*KB@7kE##t40+%@l9~ z7XZGjKh2^8p{zA1Qx`qP;g@nxMpF9x`Ku^50p~0aE7~cL_f+f)VR>n^qz-)#Z~T7l zwRYBC#;57;y8ySDgzxmDZ+yqs)9?Z$#U5WGBVBlWZIUaSAo}0eI6ssKgXKTi_<2Q` z9M*XVgE)%PQAo5^YhuJ8kguKJe8j%0ZlJg+G@ITf#_DOfLj4g8&Rm6|+|Dum;3i8o zH2vPwQYzPd#+n~XwVcy1ToSJINP=xg^pS>=dXUl4dc@w_X$nf?4GOL;056Qez{u~| z78OeXewhp$qIKBKWr)G*&D&Aud}dGp5#_!7s+ybY%*=Q97^%PDAvNe}PzQzlvyXwS0qX_dx#wWutUGTv)0qQ?HRW?0|Kd?GpJH^t3FXr=fCHoUX@Ta-w=Pl#29Y31!p9fuF z0Hqqi!sL66S->Q3xAQCJ#6#y2qQ>@VoY-<$keJ_Msr zMiks>ZVaG?YpX})kAd}DaqFEW+5PPD$6nJ=3XCnVVm5t<_ytfz4&ION`CTS3lU9ig zF=8L0(4tmO|KnL(|9wB}MOc|k@E#0%^^o1iJ=r=v2-6*QrMs?IKLM)sN z1w8$z>YKjHj?;nH29!aMDy8@Ng%uz3AN|`u{Yx7o@fgC*43V(#5yr(Tc2G|nxwBhN{UUvZ#Z#xvj}<U$X0dC({SP-h?$$ z-YRFJ%n#jAy;fwGL$~51h6~&4MFK$_MA90kxN`F|V|(G2dM{QCe(Q?SQ|Em|v+Az! zyb$fsyc^}TzKyn6^+m-a6{ltpJ*x{J@0nCr*U=qF!FRKJtYZ_LP6T&yo!xR)3iZ+e|+CO_+MS6oI zm~8R_;pM#X`Y(utcbD;_+|~=Y^KW;86w`8J_u(|t}vn()Y z+$`4n^*1?x@o4_wXc40GYkyFET1o*Qj)`sqz&SeT7K z7{tz+V1d${ecd)n6$ zBOOI*N1~+4Ek=+9pyalieXzEl_M)83*lHb^>TKrJ_qkh_f}+8Z4x|9n0phH$9ysqO8+5)ClUqB022ux`uGdvcl1ZTW#l#ZVpRt!SV51r z-y(nEME58)vtX`UeUl^hiCGV1(}VQ9k&h2$%f@kh<6!&yYFxF8pXx|NV1^e;>c$V- zzAtca+TC^Lb9`RhjNW02>Up@Mn32$8ZYc2XpyY4+)DSm}v1wrb@R4^##vHB{HJpF#rOX~!eXsIcLC|uE4(&%lg zg`WM(wRKxX`{);Mu`q%^bC-=z1}1vNujg8^_8421aI~g7(Q9h;?QOrB>haKhUJB!~ z)@zX%yTQ`uT*HIXOQVtMj@q zWSWuw=$`dG;#xxJm&W{V{F}c3fBn1RjnVf{hGl+!5rfJ6rl0Xas%LD24(kFIjhGfy zo^y!$11t+P&d3TzG%=b2j$k;I#uUW`^7jYU2{~-mQWh~Bv=18t84s$nm6l zw3Cg(c02arKJ3ajmy8|j6Jzbw+a;3K2lvDykY9FBILeXDnWf-5lKIwWxT_0|(mlqT z6sDq^aE|!57ha{kTtCj4UQ_$0esgO^{aIV@cF;Fl2Ydqgmr`$mX}|l^ywul0Gfm88 zU&kSrHKpjQ7wqo|G5lFa(yob&s9CSDcHVl$t6{3Gvz$w7sHmM6jSs)F%3F-{d0iYF z(?m$@zLI9IbbG+YjQQ*@e|*CMZ%z||kxQKqqmkw0u0_~oZ6H7*;m4=XK(3P#O7Jrd z0*#9fe$fF2P4T~eGj8CERNz^zJbbBVp?g_bs6N`(a2bC)rz>95%ZNL)?}!T+^g>yu zyH8L3YA6qyZ%C5K%}Ci91<}qhAXhLll4*div7)zf8q5K7`Bw+VldO7Caiv`ZV>1bZz2Y#mSzPY zOcCb?vdMhpfUGV@Nm4fX?M}$uW{YJ(saFdXDQ9wEN!|SfvOD2ZdfX|tJ(31lo?Cx$ zDcolC$oyqaI1m$BQvvIF-0(p|{fAoTN}NZcSyR$@P`IV_6Df((nf2OzRQ}8TIpwJ` zH7Z0Y>rxmq$CM#Ssnrn+d6Tf_-Nn4b%D3#hWwb;1JR;uP7>d{W_99;Zy-r_a>(xx# z@4&ASbo9qdpv0;)3tdGR&2eM4u0o*4o-^&ZPD#JsT5`tnil97zMJdP^!?^R96tbSl zroZ&)`#6Ho_VJJx8|uXi4%szq-3=NmL$oW+O|as!c%8v4)A3Hk&+2+jM#invD>0g# zWtOkM!BYEsaqX7fbv-cc@(ARQt6>FM^RIF{bgXE9xxS~SSotG=%TN1jkk=$PkMHLA zaco>=ueDByvTIkU8A?2v+S^QrF5qXF&8QbzguRe#)I}`5NiLG#F!Va2vPD5TvQLW6 zJ;@cemJep>AI^Iyu(1Y zy{&U(b+;i>JLbaYS}{Okw$ZKr(g5uS8=HNbIAW{3hb6c71O;i~&R;~==Ot0~{VGQ6 z7r_@BjWXZ^G0qIWj#LDscle`Ek4R(v*{nkjhJtnM2mgQvz_4t>)MlljG^sV$cX)Nr z0PJbnoLA0wUz88WCRF42PijxcFI3ATR4_yIi8M}H5v8{NeI0*@yL?4o5}M`PmzZz+ zc(^-4bYFksZ9gpUG`(ILLRVgnAZ8X{IAU%6kPni2{m7Xe!kvqM6vO|L%F(MF05~%* zC>@=imo=McK%gU!aK2pJRvU*v>U~>;=NVc)I>6drPzzpz@lax>3)_Vb&>D{xIV4C2 z>?^yE81?M}QiRd(?{z=2{8;HdeUv}O38Pr7s1S_QTAIHolFJ+MF`dCr5Gb>QS2RNa zy?ab&i32{IA2;+A4c`sIAmRn813w3+BCCoHp7Qm%zgTwe=<(oK8Dj=sqgC}&&{^0yMBqTJy3VpSpOp?l z$BiT6196PNLpS-ibG&55>v5l=IM@cof28$;S)GQ5(6pU=qVnkdS=p@clhgiQX?oPE zwchXf9%STi_{8(0a`2zI9|8B&A<4*1Yjd;A_k50Ne^WuNw8}^9%hX>cu~{bc;n(o4 z`4H0BRCo}Ppv8XyV)S3*>vPQ(<)x3_ZAJP;iymg@oG&YAbjFwcg)Pp;?H5O1I)KxL z8=+~tL^B*skI9DVabjqpD9RzCy@)7hYF=9e%QNpF&eglqh%$LaKMiWak=qDfpx0QH+nqfJqONqjHEJNEk+&yNS$-Ash+j*~|)0jRZWmH^DcM_fHnaj^kbba}aEO(6d^7_|urkn96jHu?_R6z*2Ku>E?1p zFQ{iCt?_i|UDn0XAK@zNOOtVNPA-*hqNz~rx`F`b!vI?GAk3!dC%(i4MO-I z{oK4a3dfwya45}QNGdeZTHAc#poQu7lf}FGy0zkA6tR>}h-m@vM$y5zrC zd+H>^OYmuxaHg&o5`&)TDKO`-u1fu;i2JOk170>J4qTTBOhg*9sM+1A#kZW&1(uEy|5h|3m)1 zm-s5VoNM*>wJpk8>eMZ>Cx4B&=bT+a(LjCR7Ia4?)}N=sD)>YB_wBx_`~IN~E5fPT zM!m+VG9CqY8W<9`WGY^poaw6y`)K6}0o82LNC zk#KkJJ1M9U3av4ctW*(Vm|9b=w8iMt_?=+KN5IsyZcMMPwVF>!>H&~q-a5TEpPAN2 zvNb~LL!CiaDlbUYqWT04-2=UgEivh&L}N`9`@rg0sTn5{2kFEMt#P<(Gw8!a`*8<5 zPk32rxZ|F+Am}yHi-=sRqA)#DJ1axTM8Qyh5S5e6C8Ab=rY%ailna!Y0GypQlKi&$ zX$L${qSm;@7%33NSPCOP(8DrDw*^|w_Qi0?8qV|UZ6`yC^*m5Xep~$X)4c9G{Q1{} z)9zx(|0(n?n2 ze}Q_wl?K0~-fp52dT3YRw$WntbwV{BLri7X)DFN3t37GTWA?T2A$N2HA4_^D17#pO z(n!h_pTS2Tp}AIvGLKuU#D=I z2=Tsei;raY>WOSY7ZxqgLcx7Rmr>1`e~s2Wey}dTPeT^tHDJ^udmtdjN9%%GV`a@!uOZqJd>2F70u>piO*4x>m2sd7LO+YW zWyUZ(^mCY%Tf@E`?$rcFp={J$aQUZo8`H%R`0Yd3oxf{h-F~>1IIg%tFXLqQnkCH` z_Q@OKWaD1CcYx=wh9DoCfq-mjrRSOmwT%%Ge0^hN>Ylsf36}_86%ujUmsbV)M zp?Ogt4Sxy)wXK#OZ6ICy#3Jde-p>B}&Itrj=U|waMazJ?&MaSRkSk{uZFtz)qp?7N5$$%*!FF=yqta<#BHPd=(>}_qhYd zH0=G0wed95=?p#8Wgq>SBs{8ErI->6Z|n?kFrZ(*cl`CLt{mJXeB~C)`&Kuce>Gcs+e6$8Ea2dB|9d}S z$|T^e0H9YTambsW{K3`c?_T+j`S)Kd<*0>M^!r;kmyp3EWzLrQYYz=+)VbwJZBgLg znKZ;|=DD9fO6+NsJ)T5FD;v?EEytjUiw;_~%MX@Lw^ZFfb4v{)H9KOY9;mM|^bl8c zrx?>`W-x|r7nCZRMetY;&;veM(fQI@zsqMXw3ayp`f}`8qouv-m#o)=wQOFxIrFDV z)8|#!iKE&V0+`94B_-DG-E^bV*1c|Ooi#tZB)l$bui+si6fbm^-KxDg>6U$MaXYF4 zU)Dkdt4*cAe;}k5RC`5=*rz6*7+lu15G@cD#A^lmL}x21j;32u6Kady&=gj2>C(+y zEtuD;tn6x$3K@qFGOt+4q9unv8X=}7sq%i*qY2xy+BO|t&QnlrG8PUq_LddeX?SgT zCQ5q`8&7M?DQ~#8>rWEBpKu=0CaI--` zXliBg>)$lzN6_x+sM)*wHM(qLGQg0Q`I-EbKf$jNS4FSe(4p5pBOq=O|7>Xfpg>vG}Mi9PV z2G6keg#`o<`u_RDpxC7{sy9LZr_NuvJ%p%jQyrtKQ9b<|@r`S%g=sJ<9z2rU6|o~X zC$EfQ2%p1Dn}+!x&ozGP)|+Z19o-DD_1TDG0}9d)&zJooD&pGto9Yd%pZ$;xz!Rte zJw{m7lqkvOLl;t7`OwP7yj{xb8m~eDtq}typM{=de65)U8+EB2ka)AK8%qRio0`31 z1LF2Z$f3X@kJetR{JJER7~S`C2gQ-T1P$d=sXwBn87{LZfV@EOZtA@ zBV*;$U7QqysTeq?q#>V~!R$R7|TwUyC zPr!g`*b-Dlc!v_RnDaBDR(fd}>LMI?!+}{4IzA8w(3YSYcr0^}bPmPC_ebisd29Pw z5p_+`?TT7&9?4D?6dVS9(N0foy#>=CUGP~r9nk~3qp6wQ1^N)Lf!4F2uyz?Du!wjg zlJ$jYr8_ujr5h618TZOq9c=t)RhM+%xxt=ZTgi9go%%PR^cl^d&Mgq)%1!gU&qzy4 z%*0**HWF71z%M&tk08kQ+{U%?YIqHVfM13>C-YLI*$`A)v*-i8Db=4i>6gA5khCnw zXC_SXPF%N5@5({NrB|H;A4OvZO_4((lJEG+DEpE;Jj{OPOw7M5|9Fu@EUr|lH(a)x zvA0o&U3VpL+C5ktO1flAZ$n=u4?YCLpa|~~fYn7NwkR9ui>f5Jqc3(?UrcAV!&lI5 zU8Y3vz*qnZp!V=zIsEN?J~C9fdDJz!WL~7w^F@58-f|}=ULg15JLl8oFOdCDnXbM! z_`LF=;-;DULRiVaKoEPfjOwC(@c81a1EbfvU+?iDeMmpfMU2`#x&}A3e-A%`u(*zV z(TBU>KAy$LUOzQZSAQHs@mx*bTK--RZi*Z@-IyzxtfeHAg_XuQ0P3D%`jFnpW7&-i z)El-qEb10_-p;Zkhgx*T-fiRET^z#Y)D>0Jz0DBYD&Dz8L22cD%KE}Gf;GI^$Fx6F zmG&q1OLQyk&wuaB;Q6r7s8Ve`gDs4A;l-+)QL1x3!bZ-)I>eF>9KIZ0O#D}M)+>Hx3n%V8LE*Br z`Ii-m>hM={qu+9?QPe0RudKnX|CQ-`5C4H5a&CRlc?9Jsv0Z16_eV2-FK!164`~-t z8SlfxOPZR;KbN+ z8@#OS0)^0W!~U-K$wl7&hx&K~qLtmCN+1ClJbR!SS`>Sekyx)}tY4B46oFg*XpywhBiqIlC5YLamhuF0&LWVP^D`&PzGSbL z7aq?^*;4Y3!2+)qXg9ongF6T*(eD4VpCgbWgv3xq^`5m_-;iSshPj4@0&?&f?-EG$K9=7SGHeWbcg$L-%Bf?TAMjJyFDCQh@}d z)t1==G~zCeQLdx1^a?)42RsF;YjiW{6YfMhcX`CfwaANrF}L+y73yZfxV_G{yS*-! zmjpF@;=Tl(I=_i=K!Gqp7ZA{ozRdctVx1h8j*-FzKHisqQyfG^od=+k<8S}0p}whu z{w3aTUO@vUqSuT|#?~0K?JcBCl*l#kozgIw01R+myp`wV?a~rGPU^O$4V+i|U?$0a zhV9a#cD>yAe=gtDbR3@oAbMyvkrSQf$tYRgJ&D?>RmJXcFS-G?WON)o@pBG!{D1Nn zH0@wU@d!^G1}2`X^4su{>eMzJGGGQG-k!vqS;`0pbd-M}0!Ax4LoG`roR`Aaub8wk znB{k*TJfQ6U}5u%{m%f1bomyno3fV0E*K&=8!9skp7JRBR-Q{IN z2*_3V0dBZDTi>nxsOb_^k-hS@|Bk$9h4jq@^{;3x-KsLvJH9N2L{|XIIIn(cAxA&` zOWsg31Im+#XHmDYAjwqA&*c&pN^6;4-!9My6CSiw?bIH=e>9C^b8_ba0sHk=>f$HP z&J}h@6Hg>NBB`V8hXHyr>g{>M9;d1;=S{CvzORJDtr(L>=}!)x+n6B~aG=>y{4V^k z+aJt3ss%0iN>`97`3^HvXnEn-F#|yddwPd zd820EM{TSGwk!myy_uR*ElYM_yG7IbjrFTHI`HETAB&E&%>#FbBb!{%%{VV650v^T z!vE9;gd>#TLJ4;~Yok`@5y0yMdNO!-UPVgPKm$>$7@+-ASz=mR`m{_}wkF?%(vIIy zdmNmU-luK0?8@Ep_QK7X?q-=1P-=d@wv0hW%?G!r=LQ;@2^S0yeF#vIHJ0nhV@*M0 z26YN^kDLV@okyKtxj;BAuY=k#rMMRhi|v^=(Z|w!RzHA{2DHcWu`FeSzkVIEHm!A@%+m{{;M)<-+982 zmRwfH1cqEB3y0j1-MUU|toEJ6R6y_0Bq2|1m*Qll0Q%!)Hwc8PkPAhY!Cv7OGz0;z zE)-MRe)Tjsakl-tT{c7-v5tlP=W0Xm;OGkvq1kPVq`z$6^itHCsa)bEcbziQ6tnv<|9yO)e!HFSFD?01zONVFDg5VHQ-nGdr6q@<~w=tP}C zJfNJ%+t%wi%TC=QgJOYRDI{NVLy=0!`ktL$Ph|iFXOn1WO@rH7cNw(^8Utp+VvYr= zne^W^06ANi`#a}2m0d{p&aOWcNC-#TC2jy6ya9vhv09adW& zs+7W_c^DU7%cpD$-urNh*@Pt;~i29o^VN?c`^+jIi^ExMQ@4{VKxCU!&P= zy!`3OM^;4t=3fa+SZ!gI4=3Zz}eGoo=`WBLh|KExa_11ne0Yw- zr$!nm`)M1c!`h5GBIPDXNAAXJ{B9^w;=U=tUSFVpCk|J*5>zGs@(M{r-1t6Eh+ENz zx2Am@uJLK(P2dE`n^|=MY~_cTd$;xPgVn1T+I|{lD_lzAiO@bV92tTpVVa3Pr`w(* zt9q=S5!-x`zHQ~;@^3%c$P`wntXrM{zRWRqNO$+KDvl4_So44bdg2Y}cFD1!&v8k# zv5&NO@i}_P7VnakJQgxnP>!vmdOZ3LqK#@!LQ~jVJ$Pr43@hq{M zqI_)xQLtI=xN==bESz{KNfh)NKp-4D(Rsby@w+6>t&~;?wg^&&2I6nydm3$0+>d3R z(`UGx&AX2s&|H1iXkI6P)V#ib!BP#+5belf!3RT5LhGw08xauH3ip5T(}Pk#Zr=^2_Sh z2Wu%3aIUr5ju2s>6Q4H^)o0IZeEiq`b4f7if{8?^ca|Qf@s-a#kT_`IX5rlbERmMF zQmiw#TsmyC?H75TEC%F&*B@2zP|l-$ln;ZSbx(RLy(hTitnd5)=mQN1Cu82p;>O^H z8^Ew_(9MEKi6HcfEFoycVfs-tKMXFomrE8E&&|d~$g-lY4tm&5b@BZsoOJwdsX(qn zVR2F3{?V{*{d|RIY09$QmYk% zLy*!1um+%<(Q>5%m?RrE5t#J2Z`IvJH4+y^JvrC?w7tg2b3YvF_L2&1y;CDt3|uDh zLHY7Xh^0;h-@YayGPU!gbYe0a!v5zxw{ZLKCGob0{jRsU$E@k^U+Mj$t)kc|&lSLE zi#-ku???HCu*|y1AtR4EF`;25G4+NCo}RH}yiEQh-n;UFF2ArF+C0q|c71eyHqval z7h~O}=Mh)y-tz?1A~gVMlZI$f?yyZ&EyFG>QkRD33Z76&WQdmz^ks1D{y2bZqH2Q} z&X5{nTOK@g@48YS017U<~#HoC!Jo)EL4G^c;Z(xUnyaR5W` z0LGoi=V|ql@gImfZ~C|(+rkN=`|dkovZlGQEKPK@FVh@s!&v{W{=(lM;L&M&#mimK zW(KJ1mpfBv^I!1*B+Fth;~ic=ZJe|m*Mm)5l!gWZcNLRgL1yQWcUVVcgRK zl?UnkLzZuO>b7=DucmsVsT&F{+}udPs^(sLqRw@^x=sC~WjnLaGQ&~*X4hz7ECV4{ zPg*<#FUo5`+QHc@84e)2Pl`4uZcsOquy2j&s_MZ#*2nsDs}ltcK)iMyKh26rtvK0S zyQeb0#LHlil8IvS6l!+f`6~Ax$oZ1CK$8kCbcaC9)hOSz%0-kuvdbgj6OK~BM@>-c z+_{JJx6?m<7nBW-cNd~;rKj>`A0kp?{l0aw(jJr^q&x^z+u=*2t$hKkac7B?Bbp4U8NOx)V$XtU2e}j9+O)46B)<+ z{=Hf%E}Fn%NB-hsXYQIbZn@f~x^Q_4W1m{ElQi<-l|KA+dwQpztSXeRzJNqwC_(Pc zlZ?4EWxl*<98TO4nWb!045;S+4-$5ttx6F&iT>azJI&2+QaC#=CC<*6G`EKlUsk0wPtDP z*P}uSExo(;6mm?)h~r+NBHOp=*Z-AN8#QL}KGI#LK7<5_kgC~M) z_$JCE7ezuk%wddp!I)7F@OsBPdN6)l2e>9`DbkyejoUzU`5z#K_WvwR-4p#=091G0 zZr%TH4-yc`|2^Wm*4?SP%6_gQK)^4;XuE+;~j=5t$X`BbSMYp z*@&g4y9prE5Omulp+AQoT-Dg=R>>4j)7dVyo2Qd@D~*%SRSTO0y;geD6)lM( zkfYE;O_JSFdM=1J)`A^S*HKGNk9icO6YtU|W2}ETm}veo1sAoCp5Wz!7}DcGomTZL z^|1U*{`bb0PUAJM$FC=3c^&JFr}UKjsV_|$hrHCQsn`@`0L9A{go#t>=@7prCsj^H zlY>>+uh7(#y8BAQftEtG;2(XynYi?soMVMIeC-`6r8M@(;@7z^I81VR^^mMBl!y4* zpLBWj@Y)jtJqNryN@-~yFGxmjE$?QMDDlyvVC;1B@=tdxk&QdDay*LAmx-Bjw~?fiOf#^iar;qkS+#r+xi86R6(A?1Vq9}O5jf?(vx zx-^1!qlzB#O6uAckH#sPA&%?bMy=7;n*fNdmH*wQ-5iutd;LN_Nvk1)MlQSF9s$5-JwEcD~DceH?4k&?L63= z@Tzj6X=eKR$CvDgd@dh9{TSDyLI4JAJrfwWj=b6?>Y0~=`OU41-}0y$sIV%0}ZXXs=IW$2}1O^ z2f@ZeRgr;Jk~5*k#YKerFrL=lTXbB1;Kq#qeW##cIPFA*+M*BqlEyz2V(m~<&Q8^l zy7kO79H-9H&S<=1mCYIkH^!BbpZr6<$+a2THjZVX6zUb>d=G<>PN-&k_a97bPl17c z@q0xa|JTJv=HwVR)s*H5GV0jI8C-U1?=C)OV;$=PigXK}mzg)Aq!611sDHdpSm`Z} zItp*(q!&Bd2#U^hai(rgf)J~2! z^R0O>H*n-*&7v1X6xM~|y@3YG>{%4pLR8@tF-m$^Fen^!TdM+62?6HjjFU86M-ev<-E^(@+wnTLW{#zu-lhR~0Y|lODIT&?R zV5%-L$bZ@3AJFKOj5CL&k$lxpNCf6+Z>Ic}W&OLU9HB8^%Bkrk%h2h1^E2tH=n321 zPrUqS-Rv#E@}D5mBI^ZG1jIL}8)H?qJleT|GapkG z4ztLIDy13N{7Iw)#{+8hhgI!Ot}(VGc={oggHJpx4JubPw+6o+G6rN%@h-Caf2iI2WYP*F)}1zel0vzC zn8jTU*BT#`>N<~gGuC8@A<;q{D#-K(HYcJ2L1d{BZCy|sS8Se9COSj~Mf`4M=l$ z5OhNcQ1l`ea^BuPCTY43xi?;~E~ib3vVe>(h}AeHgbW($Z3-g#@7*O+q!HF8r;b~S zga24jQon9vK^GRDA`{r`+B|o>J4)Lyx2K&0>83R+5sSbEES;)Fltw*(zkBXUS{Djj zuqx5=85trb__tOnIXEMKs$}})nq{(wRk5RsFctBIp(-`U%TLi(_N3UBzK_w}G3M{C zdKek~`1(VnY{=NO6_NLP+%RipzH`)sx);^#Hoip_Uaz6|c2qvDgdwa+QDg)gzGlPx z{{uObOZcP|cYFEgDy~bv569M=>&?&~7?wc^)r2X$q5b^|8Xpt#t||G=`!Q|M$P=Z= zwNQ?}MA=?(dk7LPc7TwCj(E>Z9boP%B+hd8Ra>{~ zO{7HyYh;T4lHSyO5D7IT?sZ9M*hSdos`r_&S7__aMv`ws@Xe$L_xkHMJ89Do{tO)h zqy;ealJcFcs>rq`+44z!+YCFyxVxYs?++S>il_NM)*3;S|K|=z6HW=*qfN-h8&0!2 zAceL5$?^FmN}35_L@c2qF5@Jlbav=-85< zC#U-Z-SbbKXDmUX_&$UT?*JhIf4xD0ugvF=k+X#}L zW-r|%#f%)HI$Hv?)_UPxMjV^y6m@%7G~aDM<~qN1AatOEEv3}lB*m8^u)}_n(g@>e zP*jl?|2`9Lw-$ijHFgkJrv4ZM+8D?BOM$hmvyhc> zbu8bSISgL1Kbvhhwzlm$e3hs4Kq&McFrzX%e8nMCxV^@dHM=)2yG~}?-mFwR*8p|l zb^%UoT4PWq`+aDpRcSeqm|f8Rs%3@jOo`Cg@@t-H%#NeB$IKcnsDGfJBI#fgAZ8hf ziS{3eiYR=#0~RS2tlV$Dnu1nL5*`(lsB+Vh_S7Z!;{Q3;bArDd<^4F0POQn`mi4`b zI$z8|$rtQIF9MgtZJo@oXGy>Pd(rD6O)T39go=$2Sl~31)!r=%kt+hZQ_mA-d*^+t zwwKb;)}~$RoYC$X+jN8$b7At&3FmQhnRhuxGrW6`lP&RaO)LiNZ?7lyN`fLGU$Fth z&cu8F`(6Yf_DT_d|BJasQDcioWsa+nFx$XbSH1JE$?p1}BICFO-VapU$;oRGC0i_W zJenrd(OvABMa1cF?xDw5`9fCOM$FpgCBKK)8|2A=Q5Ao)&;8a} zsz2Nbq)}^yeSinH+`O#?V{cLDHOb$)d*W4*70rq&QN67nnG8f)ZRT)Zx%UFcC3@*T z2iq!0U5m798tPXML>kMJ?EXn^J4GxNp+CM&n`aI1HOKoq4C85a)1C@B zNc!t!K!C``7M`^KuIMcEnmP7M{KgzMva9D5+1PDs*88U~?Hl-G? z^dBQcDCrQPdSeA{n@@B5<%gDYI8;P-eB)X3w@K%Z$W;RGQbagM=6U~c774P`JA?i* zb+yg?;>5;{9FggYvwqm*r^;*as}Kj59`j^J%%rep!68}Y)WGUn5Qu$YbW~=F*r%2i zz1hW$M3RN|!AoN&wK@Hsf(@gK@i<71pWCx^YdIU|oX&G4tpc5_A0fg>R@QCV6#ik`&?}&?G3O|p0V}JB3 zB&Y?M73x;t&nj2!gR_45$q$=C___y{)8_Nr6<_CPTXFH3`Hky~G+D5e3&EdiFz1Xe z*A3j6mJ&U&Fvl_h$^GAyZ13xZ>qsb2$p<=SYxlF=EC)^e^DR-OF12P?0Lwd)L$j0p z1_D@%#xz+TQ?|b+*v9GQ=5KF;td-;hjN!&asbz=|q$Pcw4N#L$~~A>I?5qT&M`IzHEex%S<&6q*Cv) zOrL#oq{84?-`DPon%OK>%1b&R%#N+seTOFPwBBx}iqAq^CP%>*{%$+>V|s)GE);eL zFTHSh_PAE%%G{z~z4j2U7A z6Xh zxxhxw*ZNqKUMf4tyCKyv>_II_kEOVw4IEd`ERvnUj7Qm{r+TQPPvFE@nl2dd2byE~Fps2I{ISw%V^Aym}2?0fCOrIVUmP_cB{#BFD9YuXLMt+B-~V z7MTASBA=vYWgrOFMSHQNm-_U*jEE(Be(MTeUzqehd7wOSUItA!hwdn2#t)WR<0pXf zp0_qcgm3NF@DfDE{tX246c~{Nf%}j|H|sTyysW?8X!i(p7|0fd_5>>91PHa)XN&(QyvyU3zSw^QW1h;1# zHCnM>fN`h%aDy$=2VD&Dc1X*cp0fwxmnZVL5$E`~GQap-lrjyF* zruL&yp6V__@Cpn4l%4=aJqRmZ*X|`9CiK&tu9pQO1T}-_!G;V`Lt-w0a&^czfJpQ> zR%`=zlaC205-)|$SW$%ZjJP@eK7NAT(lnzJgW_&PqOLU4t&BHzl5cDVCzjq8#6nAB znj}(4@SAu9jPa9`c^T(5n^%r79fMzZl8XG^l~?*{m92fCU=fKpS|KYYx9~PU&>wz+ zjnrpQd>t#C0+3k(>|}0u8S!=R>ynz)uMBs~w$PF;9Ch%o%AY=U+XwFy%E()tSqk1} z3_m4i6@I7xB}f#=6DxL1K6ce*-&^S}Hr>!>Mqw~*1U#I#=P?9}M`I9HlL107>a$~I zhkatv+;>k0?yO*wRbM=@K#;+YJ7Yg-Ty)8q%(k60GVERm(}WVM=wiuYfFtcAqT!V~ zSVb4@$KJjlj|T}&1&uGhJNo@ONX^ztB62K zl%}bv>#MOJCxGV)x`!cMaBkPK~qyaeMqJ50>fy7!L&v|Uzl1n%X zr^7T3aWziu5I^6guQic-f0uVZ@9OlV8<8*LeMrgXQJ5Gqaq&^gg7|(7Dc53RAQ<8` zvhc>tVc2sbNto~JHs1ub@?~-F|5-CNmwY+cVI-;U`uGEoFF%Hd@;9C6?L#tu@=&-M zu={z;D!rHRRJ6Z3bH18!{;b@VjUo-#TjJ0BAp!b^ij$Lw_gDP-2H~Y7y4+c}GX=S~ zMzyzZ9$}vXb^X91=3F_TbK!Z+f;gNMbxdYv3GW_ii+i>v@N^naVAZcr$ z8{TaeedBw2M{D$$5r^!@18_KFLwwtNXGirj-B#@=@=VWW-@KwjpY{N`;oIg(`?KYh zZSX0%qtw5($;tuhZSRwJr`Ntq9N~i6m z-#$`YSsZF3vX>-`$Hyr=p@9Y&DXvwZ?oY?g#Jh!b3Iy64B)0Tc4PMfQd@*Yt-?%od z0mUxy`9cy6gM4j|VwXd{b!nx2dtuvBo0#*I%dp(>6OBFZOf!j-2c{&lwP8_?3>|`S zgnKQPeG4yleC~XcxR9)Xa)Zk+BkQV2Y+3hno+g0qM(NlxBi|iC=FAyu5na9p!K@C% zic~GxbfFom1|rt*q_Pp2js5QLr3VyR`uv(9y9=g#6W9l;G~q~(RV;Iq}hXM+mp`p-)2z16_+cO8GsjRpRRef4+3RHe=_ z-Ul|TbaB<*w)uBfhMbbbX|Gi4bF_f&E|-pmyLpq^pS7u9qlH(y!TVCwq(u%-;*Z2P z)|9~kBzPt(x~@p9*LiJ>p_$A??vNU(8-r?YvdQ$P=aTC{Ghv0$!0T4c>2(XG3O?); zV-ck8Jesw6Y=b1&$=jRUrb|wPPlfgTE^jvx7o|yys)?0^W{`s6Vh7t31%U2dz&D4< z;qn{nAmSP;+UiB#uBp*da;-sD{`sf(cpa0-Vy{~NcCD!DAe|47M-I8>O-d7ndY9 z6SDrD3deC&$b(mU2YKLD?39Zz?3C>g;%kU8BG_@K%nw9rI5cqjd(S|yd?pVD7#DSZ4R(HVLQDJ%`AU{JH81M}?DpPMII$JUJhW zjQi>heZEBaVgs)MP~> zg)rHOWAI5*w9G!OqfoD6c-m3E9A>LZS8`CdK||y`e-UH`xqhb`YJ;ggmsA%N(*UKw z)k|bf9FrF{Et4Dir~h`JmP&41mASExxU2dOUx68T zBSD-X3*f}a*f%E7n0%WCtPx(`jj!TtrIjk5sq#X80bjaARl5I)W?W ztN{C&S;8(*zg=S!pm4aS$DAW<6ScWfwB)h)bOuWA%!@V!rH(+-C-kcs!X(oaW?BttW^cp22w+13pCm%;Xob!( z{Ss1!$Ywo--h{BrL_ruYK5On|MRVLdab5hi?mrt=5EkB{zl54;gySipGpIR1en*4R z_!0KzfZTdscC;P9-_xqfeN)Su&vu%y2HnbAp>_k$wqG~s6MgW?1q$ynH2`S834PZT z!|rpIay!CiqjnUSN#~J4Xd>>-Nnqi{*=(($_n;Z>zLFLV#?S%=#MD9`T6~1d3QASx z9||%@CgqjUV;SF^(&pT+ee9jKKWtYhIK4N+5LAu_8FFx({^oRSHv$%s6&u4ijmT6u z573i*tORYxa1&aD5F2jP_zQGH)G}*3>m*QS@ps!Kk=Iz-!Ewj9tPJ{dv>VM+<{y*W zPN<}Y?-YAEYUQ2j>Q%ZTsna*m&NQ+sjJlYBzfasV+Jd}ZIs{C@!@)xCZ9%lxs!ZIcTG&hU;V0z+S9x^v2r zIYDRYku;$aPdmr}BqJCh8bgrHM;ZCQof_gYqmk!i-eZ4;dCckPD58(Kj6+$ruiR=$ zabPT(Yiao4LI;gR+`VpC8FD=%Ea}{ft^--%?keO#QS+?UbB$|EMmZs;L?EnVu*)9?44zGY$}TSllgS84~K#`T&bNZKh-c->_%0}fVifa z#tO{$dO(;|Fh!my6GR~`_{UA%NKJ>6c+;Cwq`@iN<`Qp$ZAWhor?w4mmBre=%sTTY z+w4_NBqsY#0z6Xl`1W1)d&TRz=~8@(C)M5r4Uxp!9X6#{UvtexgJHu*81nLu{N}g? zF0j)A38iqd*Np08zp{!eMa5#?!@j*-v+55slJKx~w-0$s>8`26z7|t&RC}}49aN&{ z)L`YkY>i8~uJ-h~;cJk5m$!=Ax6Uq@&N@|*H8XCnR14lvL^td-;TB(@FM`!J6}BK% zNni%3O{EP_p~ckQ-sN{E0l`3UiLd{w;1WCX9l|sp<}X=+Jepr7xP^AQYPGI)b3t4__udt!h>3IH5u~c# zHL~TS;JF7N&T|O$dYQePG!2ezlZz*PxO2wRCt9X>P_&hq-7CcY2(~p}^&K_U9y+oM zx=?@1@sC=&JVH8x&c?9J6mk`SF@UPAz)=R>`6xr{qm)+S?FO?8VNx;8j7GBBBLYWm zH?;*cZgP}pUC%1}^CWq;!V6>O&Fb$Dt4vCHxurI$@cK>S5gpILk00xnsZ-wqS!P?* zU+PFAq`6^e-CKU=k(E;ot;7Vm=Yb2!DueJ&GMt$0r3VPl%)0S(>Oj!hz0&+e(MkUy zehCDgu&zi^y1=Q^e&r}rZ zl-o4WegV)$YGp$l_3atd6Qu2LzsT9Mf&Hyf)$?%^TlF{F)`4SxmZ%vU-v1Ey-ffc| z@nzjG`N%l2Viwf;jDP{o+=eMu<-%8TO?2>r3i28e6XAu~gpc)6+kik`|MKd|wq@er z^gc8j>&T{?zIj`C=rzy=_0sT+7}Y}lvo*+u!51nah>A)Ty^qoRFy}jhJJx{el{dGK zWOyi?f5SHU2F}G-px`A$kR0aw#Xhnb{KS>J@~LesqbEwJw|6R(7VkK`@@h^@7QIK0 z_&d@ewi@o#X(dM%9%w_gJZK6sKx-2NYVl5nE%E|x_Y7gNr713!` zn}DRo??n7pSm(vGiJGmD;+!#wYZnzI%QQKQ?hbe3(cQ_|cFPWTCZWI#E!%tpCfS*3J-&70 zxMFMSB$W1sJ81QdY$1gpdk6#OMVn?=`=abiMzc3tb-010>gg;G%JC-|7Jee_XlTf_ zhpk%~`+I-aA~#$Iy!E`o;1=Zpo*DPRrET&9>5}fn5q@*?{G~}jrSWxg@W=EP3+%-j zhi)kAq!@}+y04>wtP`|FS5hY;VPshDH0uK?CZkF~7>Z0PnHSTabn<*%H0;g+F7b~hDU>!AnQkA&pGWQ?CC^*rF_@t zWlO{ZY?u)Yy*aYUjs9lceY6el zfbq?<$V5@VNv}b}?mv*?JGwq3$qQDri&?6m4m}K7EY#c>yR@_=WRE;cKsY;ajB1dD zldpy=Vqs+%4YJn|l31QZ+v$u+7V7o%TDLdlP29@RiEHx5ry8~IaVdh=OS0DFl6BQl z#&=B5By3i0SgQr-X&iof7an3DhN9m_KPipj0WxjMIN2pX$CfU?kiha8*$gj zh9T745lRjsKXwy`0*k?O#&|$LKiG zpZN>N$W*YGO#+e;P$~ikSlG?Nqm?qtWwNkRp*u*3NnFnblA1hKSe!+; z(dIPx^fA5qiPy*%C0cSHywA}-_4#H41HJ-cQSIH0Qm#m;Wsm$t9P*9>(;J%qdN@$` z&NCct$61f8>53+r6-%Ci@@GJ1{hXd5^;?^v@K&QPveewsgH8^&Gw-Fye{4aH~!kXIuwjeb@3RcIoY0m$bxwf_gE%p2!!-8W5K6~vf zv&f47eM<`XNP9nhLNyznN+0s_B!UCLSl!1?B22_)?;K#vZCCm_5u=8e(U^vFt^+Vd`AQV`Tt6E1W z$rCV?|B#*kDnuAjSy7%c=w@!ICmtzMPSu8;O%g~_pOjt6cphuZ@Dn5aCL_Gv++<6% zRfU2dscM-J(+R`Tgw^3o5bCoOc)zhF1iucRHqi8{+lIvPbE0)nsI|Dw`^UCZoIW%= zo0_s%{Zv9zfd6f-2Xf5h{f7#Lk`uR%6UNC%GtDNF%QNO_aq7!lF+DR~X_~@isnl^Y zSX%@)@&=0`ZrJ+w&96xNcxDsl-l;d++h8r$3@(xO2*QCc4bpmQ0x0BNd zPuBgu^RDpT=8~GeJzT_Qx<&{PJLG~6suG@-<1l8<`ghvk9ZD?*;e_Frv}K~8{Fias zAa%LzVA7_$xuu`ck6j^dFKfv5fiV=BR`L*+cTo1o;m<;F_6*rF7hdCLM}kjG%9X}b zs#Are^^HJlK0`V_aQ!*5>}K0YITli4XxmDd`bZ8JDC)GosTh@0m}9gC;yN|bP+|9@ zArp96Fd!~8dV~(UGzLJJA;((cMWj^)Gq{02>izv-OHPCp|f-ooA`!>VXD-=VA)461K0x*ky*Jr5tVI;w>$uG35%jWQE8pO3Ud$Lntxc4 zTnPp7q5Wk>cllb;g`q5$cf@`b(4D(g(q`M|aSv+}#7`-$O_h>gghB<1hb5CrGpK$x zjxvmVh(2{r@MFI5BK09VE%Pwi_lCD7Y}mxVaY6Ck%i(4RsR!e981Y7tw(BLgU*)Zl zSaeTcNEbJW@`C`p0QDh9T{Zsj(c;Uh{(CFM@Q-?!cp%uJcDx@IK6#241T}mgu(9YC z-!4Sm!0v5{iXOJ$+WCVQAt@dkOjh8xz*3l8J=Y)^tb+-71 z8uFBDH#m~c+LL~%>-n;HWwijyMamFNYCY!Rs~I8zrpmFZ?%RTjF0IZmkR z0gMARRmH}I+GJe~U0(DrJ(Wj?cuw8AMJ8K{;*nfOUm^r?7j3HTK< z>m-nuE3GR%Vn+6Aj=M(A+Z#qrkog81VFz-;sf+vqs%xy|@LdMR@#r+uPy;WDs<6b~ z-7FR>Bj_6nwtFJ()ePKnv%(Xbd7ZrRj`@DES9+Wgi;*(Jmj=F#XH{+xX$hp#h2US2 zN&A3Q<{j**8gR{lRq{7af^U&E5}*`b;)Gb1o9yrD13J?-u-VuqDcG?kT)R=Hk7Xe> z(?-$ERbJ--cT{sFO0-VK!Yk+VHF6}v0X5*JK4dGZQHhO z+v?c1ZRb7xKjXVO7iWAo-K%T$SiP!ijjB0jJ@ffJK1c2@Huovh|0K+(w=Fz?^}MB+ zy%QY650?+1!#9n53Ke*%7ip3Gayij>K-@9oKzu#%^aM4RPDvtsbV%<7A%*cs5-iwI zq4W!=9KJ6An6oRr^B3vD%|@h?&BZ3>2alk2A2xgK;Fv_Caht}5m>BCHGQCH06x~7; zg{#?frBYn9K;Yp6u*cGy+kDBFyInKUeDYU|<5)&Ac~$=r(PTDmb2zG8nis^LHFnVG zQa_cW4)-R^mGf+Fr*-0e1#X0OSN2aibS7&>1SPG&7Cr)ca?L8dmz1{rQwq%37Bhsq z!uED%(&G&yYeT9^qGR|;_onb%m@#|X+#M1#@JHWnpTcoHnTC2C%k2=Hn5I;(muMD` z0=12RRheUUcZl@&92;m5@5yBtOhONmhboP+D zjcK)aZ){*Y@Sbw|98V7ikoJlt?EyU^HU;gRunf@yX%LC)UZPA>nFs9i_E>Z;`i9U! z_5zI`fcgV^Im&62@^&OF-$!?-#C`UP;VZ5!h%yW0%JH}KmY93aDt7An_7U+auoK`;a7zwm`h2C?Eqsp=z{c9_;P{Bg z9Fzr%H7^s4Z(hB0zHpUG$gp(Za@}H5n?E_1l7(TQXShj?MqeQu)I;=`WO&NU2bt2b zV+~1;-tkTk{$K4pV$2__Y%hT77~&6eBd3J0US_$#(SgRr&*JO}%SIyEnjMxgg-6aQ z@`%yZb8N0r8>AV1w2>{m^q>(0{Go2DQt{)6CO)JibV`K1bMNo{bX{7b)EMGBC+$au>#+?1 z?rVC>zANR&Fkcd{Q6PkEG=%6KmiO(J{`MB}q6a8|Se9WlrqK);b7i6Z?YSC_Xi%*J zJAFe=egGEKcETWe>2lSiYLIqIC-h4z#EAb=BQ%Ca*w&N|Q~Yz87KQ_T>N;8o}IgAbHP> zVXyaam7w{v>*OEJ3Ktbb>$DB>=He22-)-94;iGA{)YVHED_0DZ^9Nbs%urRh({3Em zsTfo!UIdRULf`l@Am~F%tFKI()7AuYd|TIp*X`_KXtQSWLQfuA%=DaD^M&vmC&N** zEIzN`)-p1;6BtU_iysT*?BCI-vK@cOX4H>W;;26lp_WZz*Q@UsGN7yP=Z`V6Bz1)K zvyaSR+FbJD`;dpJ#qwC_oo;;v?*1<0^p*=MUqAP;?Y__=62jEgX2yk!2y=hA&{TU* zsRv+uNP=zo0%mIyQ@?q*+{_P{lBLbr0tw)l8vJQM9(&DUr!#}CVNQ91ud*63^b^2Q z>1VJnH$G(ta*Gu5!i`5w`p)I|fhHeN&FwGFn5>9Q2RdVTV5iS%WDnTsy{T%APP7Z? zre*}p%%B;Da7P2P9b(eI^(5LFDz;Q+mYqX!LCg_GeY-#;8Qn(X@e*S13eEkRFeedhni@(d`(l>qi=OQCEF6)=T z`f7%{HO1Z`!v4NTlw}vUxex7HCPP)ztVeQzCgB>9CjDX_)4cYyZ1ZI|{!0F?62GUx z5sp#eJru1E@rH@=XA>QmKzK`{o(IX4U-8k(DVA1lFro{$Ue2eW(e{$o%y%b2ucX3X zeUqNI2p82ytfGwEjWdZSt=HuCNjn^IooZMA0_M2~Rmaeb^n{e`N$a;bBUE~p+sVBq z2=&v5A)gZdw9TTRWR7g$=6}W)UFQl{5BUb`++F4p0;j(hY zCLO77339b|^wk9V-$fhUTra$_kERNIaN5rw;qnhK+d+3|?hdp{!7wchs55(|TxSYg zck)vf(FkZzuERn2ZVXa@;K(5-QLD%Xx3F$!1IOIh-UP!eS&lT_5r~5VFPV|Ay;nwn zEBhzBjxV4P)pDZp3Ac9A}&iJz5KZA|96!?w9qhXWD;K5?UG%J?|S z@MPc8FpPhfKqE%NodPv8ycSu-!GtV_Rn}O`x>J?f2*;>n(!jM1g9Sj^QR{|{<9wjp z$!Y>D>)$*@ma*o1Q~i5SU#6rJKJF6;MQthujd+9`B#bF0V77erdVssW7ub7l_4flh z*-&@H^t*IvU^cxjIE@kY2iIw)K(6L)=CEl)&%~uNRZVK#DF=1la)!c1CZuJ|BcapA zDG<&L@hT_Q9A98wdcdd-Z5~niQ6`sYoR;^A2girPyahAI8$GACo5qzmwOn}M!*RV;SL zOWN+4tBZ=pBbF~o58=6&6Zfn{n>&GRrS0WuYLRljjIM@dR%yJkHI zV-VFuckg|118-7~6Za&!BLuHUS|i<#BbGz9s-4dX@`tp4BRC>~JTUcXXU-{4J{97O z;}NA2L|Jx3V5I(**3^x!w^`wwXE#6ce&Dgr8o%q|R)6Z17tLrs< zJamKGkz>sZ@H&8%Hp_hML|<-`Xwkr`ro!pd+cbT9&fung7~Y4l!>CwPR@IrUR9 zfEFkSmg7U)UVCqm$w?QRcZiWqs7u)NMTVXa`ufUTDcfnlTWWjY3|vZE5xNyXru?QF z4W=MK)k5te)d*B=l&m%z$m+gE9aX+>PhXV6r1N92z=&7MJf`@?cNDq!9|#(|Y|FL* z^Hggmf*Ofg-k)fz08x(V*89pc*)bzXnkKWEnY(}hfOfyNu{D9wazd0(g7Twn|CVx1 zpVibH2W!T^x3uKITS5{sk8EQO`&4r{X&*o0_9E2BX!)z1U5{ZKe7?cKTb^vy6|-0J zlnM(gGi!s`jL1F|~+(kO$S}G9^!Rzp1tqIUp zDjbvMww5tr^zXuZjjdb0+(&{jkF8y>KAEkmpk@sQPF2>Rv^b%KPDgHDxxXDdTjJH# z2CJoPvi8P2Gv;7D{jBTU%)`yR4GafjEHCK|McWR|yv%Si?d%KiU&ysHUU%{r)?u*lA~CTmYxhzHyE&W@{$qygcZdT5-2LHed2=TjPmhjRty^YhW^~TD z&=a|zqs3+RDi3lptOfVT_Yc_*SL2 z&ZySAP~lAgBSLw|u7|^Yp5`l@NenVOx?6BF{Q><16t~-5)fLV0k)5{7KoB$$!Wwts#KBp$ropD* z2{rsBB9f02P|(aH z$n?yv7Tzmb>kPMzhzNVlGBHQU0$scTYC>QOy854_`Io$3K{iFYV%8-!NCaGUVQ7w! z-OhN~H;T`FTiH*IAG)3&lg0HW8M;H+2l_d(sYpW8k>>CuU=6 z=0dB6En3k06|T38>C#utut`H@r_^h9;b3thXkBd%NuRFa73HYc>2PAPqvO(E2cfEs zv1B=RBNol+*GWDR;$x27bq}zO_x>wR*P42cwTpMSA;Y!iVP>E6Uv~5`&4G%ZOz;$I53A?+Xr&>*VNG6lH=+~O!X-yK z?blR|;|_jy6FhR|Y_|YZ$?3nHZ1LX)z)Rq-z)It3)E(6NMBtv`tTxa2VbHPQ5ZQ<lu6I0Np@;dqFqd~ZVrd0bfl+E0vKrIuf4JIr zsdJu48TL4xNCIlj5Dbci9BOoO0>iT- z7!h0ta&65seV*UUXp&%?>kSNZhIYp&g{Fx*=i+ze*?E*Mowkj`M%&`BZ1_vMmh|fq zeEmOP5l7}Xk|Mn#`EcFK;U$HOGl(q4mI2`cw92=8)?_~M&&t=-EuGV5r$eP}gJrbL zO{RvYTgFT18dfwZ$;=fM4PRbyyy$|casyXhx7e>D&bOz;~9?aKc{_#iPn;AL6u_&x? zuIAeWT`jTv8Zods&E*{eP@w>nwbL>arqJ%;bsp&3q?hcxle_1Z3-=SmX82%rOBHAa zTW&s@$FyG3tusy&9-aVt`ArHppJQh9teO5kM%{Y^UiWcns1WK0P@bMMsKC;#pP-gB zi80>YgR0q{Pm2WR&NCxV3KhR@zMznI-itTztHY?AKVhHMB7I(KSkCw$ zzgCmCyi~KJh9{b?iP=sUU$?+oDfiLlO%}f@D+CAk0PZ%!dlP<(PC%*K9dUkj^}Stm z?gQB?R&~{q5$CfOmCeB2-t9QIX?3?`s+h_T^2zNmVMP5odCO#Jwh?U7{$F#jliTHnNHf6LFT z=0(hY^0$0wjY*SFi1D9+^AvXJ&;8_x7>L=*(O{%esE2>=4ka~I2{$JIP=uR0nU2IK z2#!c1SlY&nE|3)Zv7|msKemfpVFIcI2`xu@vVRkd9yPVgO2b8>LRihV+U(*beXi3k zI*>i=lp(E()djfPF?N#JA09R5m6gj{)#Do8#M^4A9+OAWuKEhR9n0C$lLex#+~gzu)L z91h#Lk5;=bN!e73a-LkMTvGdoC0nMT;-k*o!BRsd#`7vepRKaC!!1%%??bjhN$g_A z>cj>9ghwmdIFawuhGbc*Y`p{#W*BX3v6R6h$rhn=&RT*=%z!s|1hoJWe3eJS@9_DP zx0I*20kc9o^#>?R5UbLX5vZAxcmt0cCjNq>5!!=ps#OOioS@VElmJdNIK{R)WL)VK zk806n)B?q@@lcipFJs&Z+T>x0Kp=~_VuP*bM3WO_5%&GUkg<7qEYpQ~R+@)7J-Esa z;;G;ewRp4z#lIz_Kh`uP9}?)orQ?P>ZSyufRJrHEf*UyLk>Z^=z)w)B z04)k{?tm}jh=<99>;l(zPJ22lA6G1jxR0ESBHEaE(%VoBr$H42aKv0pSQ0GjYPJO5 z3+dL1xjJl?g4G-QZFvDju~1`v5V-km-oDBb&xGU=FpKuQ+P?~S3u?zMW{?+vYsda? z^x~11zm3Vtjt$R=c@Yn@WWVbKWAtm*S^wv5(ADH<2!2j8-Nu69jF~80t z95=-(owOn_!$fESVqHZfBP1-5`5H?*4A!;IL)7>`5YfWT_h1BF1{K9xtO`A;j+&|T z3s`R2TRKUm;}~rN?pWOSIY87Us2HOrla)Vhy2V^{W@lWH9vdpqckwB;Kst;#G7X0? zyD?Pc1o8^tsSAA@ef3oy0!=WErl=~)0K{--i{G57CU_AP2)$z`87xoVKA01Gopuk; zR>L>qM3!0`&&qy5s5cR;ne0uAKR;&;yYS+Ra__pYHD{39TyiIDcjVQc+nlg7~NjenWY-Wr{40D+1*18E^vLt zQ1CN{gk%uy<+^Ej7%E~U%^&Qij^h7;FzJGeW)1Qw&RL-!5FT*OCDB?=>F4kt3m=vl z@8-ygf$oqg*t1g9DiZt$VrjP8O*NwWD_WG0{u)$fzjuy(klGrHAiPy8vu=eyh@b@F z_<#b+o1m>kSSWS2v|t1K#do0+umH}X(ann+IGtKo-Hd+&$DcE^_IiG;hv3_!FBN6- zqre^;GV3G!+_8z)&D!UbF~FWt+J-XYclE^B{qo{(T2=1qae$@?qidTXS~pG)&r!m4 zkH*qvZh=MnuV8L1+suOR!b!G7ct|wk0gB}s_&eNK_6n+47lYx{(s?8r zF~WUu4&_FEA`&aT8K_!Xe@y%LK@FE-PydK`Owf=95Jm{8ih)#LORw_~Vq~^6SGSvU`aO7HWu;_MzOKBWVcyKYPQl~5{-k2(40 z_r3xPTfKnzXP^N(QSlGsX577B@t>$~V$YvHQeSy(NWdh8B+y12>UxGD<`n3ETKp&O zn{+dJ8C&~o#*gwt#MxU9Z(0xkKajka)4QLoAEM2?*-xjS_wO>O$4`l*w{NoPFW;m$ zKXX6It0&UUC}0t!HLXUG#Se;@t2gQHL(Xk+9spR3GOVx%UHcR0;1j(63GH`8`4FsH zc18)bIJpO(_A>%ool`ja-+7|9aLnF7dLX{$tB~kT z?)WKh;M3{7&yHx|C;rFp>FhQ2A5l;p?;9oi>{nmg{LSp?3-BHtfTzO#*P$PS&Ah2k z#~*{Ixc~F|5djm=e^v63FZ8~iJ ztARgTz_B6=0`;Sr53QkKOz(RGjPO#PX3DdA~L2!Bf9a12%?)+QuwenG)TE}WyL6$KUS*yUH^2@q%xA-s+8Pa zo1c{`v5A8tU{MP<)XrbP6!pZ^l5l=e1KZNWBGJ@oT8nKJ|6h;<5-l}IVs1ef0XG;xG*VZEhd;LI6fY~e;7lYDM( zNeqJi9_r|B+U^~m0Lg-=n~vpt&uc7ma6@~yi>2^C5IC%4I=SOBg4od0r&XlET(y8) zCdi1FK64+F8<&5GUE+~6dq@a9R(WPGJU;lEc4~FjVN9$AcOdPZCIy?u;aa5$hngt_Em``ykUTRbD%UfM+ zArPGb?<`_$-w@XWbP#2aB6FU2c)Vq+c;a>0qg zJ{b}@-}&Yrg@W{t_mY}rPd2ksW3z*-O!>%)uLIhysOu^UeNHlyGc*${Z|=S0U(#6w zS~VCYd?jd>4FJl&%}s32n?kh)X^0+3#2+O*?d0;<0UEtY>pse06X8QI>-GV}Xu(kj zuI?2{5>F0GQElmE@L|YNA`M|T;oZr%hm_}f6TCxlL5U^-5xP||4h6JFa-jcu*7w~^ zVG|1EZC*{lUBLc-Ag^_MJpS}}mJzm1WN!O*bpuVs*s1rZ?wg3Ak6VA=tll=g=b+jz zeo*^7Yxbm+B5PcN4m+3hQIn`QBHtMJJQ`PwQh@9_u8H|KVD)3uvw`5btwpvj{XLQx zpi;Di;RB@Ybq90)uOtWnq_Mpe>V2+i#F?ZJV-v2$>g#s0^25#;Jk&WRZh89TojisCBB2@X7ttLR1np4Cs^ul|%3%ozMOJ6e%iCvc(;jM|*K7o8I-10TCA}qPiRLI-y^T5}@ zM()PMlue{Rkl=baf_T-3_E|1A5Tx$LGoR2vwW5^H9Q{SoZ?0DF5@zD|?9iys|LayE zio&mqc!R=aM$g$+Vg}Z$EUV>|c0m}TXCn#SV^TcOx0xzP@p8NlvXEbiZ1s8BC$7sz zJF}jnfAxrx9Q7b!jHh_Pg6gy5U3i$aBQn24JLF~-4RCJ)5aK@N+6zQDvKwE+CR{r^ z%iWB(>JPK$G!s)0pW%y?igk@HbW<>Fp4H~WmVtA<|7@^GdUBFv=oeDvdWDmB{cG57 z(+36E=rMFsoS$Am`>wOeemvXAQBF7Z zVmRu1-G(6Zx*}&;|Jm$9pZPzlHs9{~A#7z4*ACf~&^|BpS%hxOl{g*8YzJXhD*Vu9cu5%k%80AiA%x#G%etCJy zdKlaJp4A0SjQSOjuTHaNKAj3*SRNU#pTl>;A#$O?=LkLQw)TzfA11s-Tbr>?29T$Z zK1pwgcbFt>C33)&%r#H<6n_1uD%m<&8ZH0|d2Y>c(AgWue1BFeV#L~|< z4Xi>Rk^HBN@9MI}%J)wgT1Sb`98jjuZ@)6o-8MW?F*Eh1eKhXaqHZ*aqN`oU@S9jxzxV}BQL!hp5Uh%2X=!-z=qa_sUU_d^04gFlz|JY9hE#e?`dH->%g2-Oa%#${I4Vu$@% zYd9;mB0c1Gac56Ji?q)GUd8VH6PiHb%%$JOdv-|^8dvPwijtbT#N z^}A=_KM>HK0JV_&7+XIelwhI-Gf&Iz$IIUkiPaR0a6Oq<2L_leUKdE^c*3PfnER=C zF?|2nIfn!C(&hf5=M)1Y-wanth%Ko4_S;ydNM|*6Mt*Q=Qn+M>3vAnBO`Xg7kQ-jh zJu_9zZRk+9+(N=FdbBl2X*`1 zL^`};d$DSWJYi2ZoTf4hub5%3AJw59HWPFXfg)sCHjwH!|9LQDSt}3!xWq1C8ydqV zS}}o10fMwtBbcYX4@UcS0CF52h!-*q7(%HsG2i2%_&HR^S zYh#bZOOCZa`X%{e!nrS&lfq|)WJhi0vx>u0t;1>4dRauu+KWAc$x?qu>{-`KeUUDq8^8yXo(*@A;>LW6GXM2$~E6AzkWCdfo}mE48a1Jh5^ z@-bw-o|o!!sewm8n5p@=G1TG5y8=9@`;+qNs;aeuH(vV;KS&Ez7@|mXrAw?wZu_JY z#&ROG3CL1B*b<}R;7fuZ(4`g4g;M*}OJd;5K{cSmVYt}$++bCNE4p1`ZHl-7i?K{c-=iXP4AD4Z!)X-uiDoQ^ha}2lUyzPAcc*5>27jP+r1?bCJP@@kv-L z7}=)}gZn!taHECNO!k!xYY8$+Oh2(MA1=IAFa`gi5f|X=LrzzuB1LKZ`vqg+(XH>l zZ&@7u^{y{~^7E0T-W7vT@nnYeoO9_|b5z1{S+=>rB7K-qxaQz{-}{riT4(DV$~mvr z;tJh5d@j4x6O4n}t4e@!WOn2V;||tMZ!5rG%HVNQARQZ^g*)C-%KL_~?caQ=gW~%< zGO`E@iA$oTei{$DQ*wTMmeLIFEC261ZNBF2=~qG1zpgnP3W8yezNO2MYlFcwyu6hJE*bP!H_ z{bAZFA(JVkxnt8*BP}hch8G%?aIAGBa)lE39%8vGJ349Evf1VTrHj%pEHpb}36*aQTSaX+^fFTnN}c^3m|n#h6Ztd` zslTb|9jfm&F8tiPy3OCAq4f@+WB3|Y*FeMaud4pq<3C%knPumCI!kvLz%>@YahHTS zv&x(Fv)VctvHP8Qz5|g1bl)oC>|e@Q;J=oBGD6m&RbQ zoG$eYl9KXVl#2B+M*7N|A2a0o-Qb1l)7c_?r@i>HK?Ihs{AzeU?H_y4D>$al{f65i z*z%haclmmU-5h9d-v?(VV)B2bm@=+R<3F=Er)o{rsTe z?lG0)F9HHM+4(t5Oo!m)`o0oKlZxeY+C#!Ih{JxcybYze;N7%}#3z@P1Mo1X(_4R3 z1)<<>B2w@Q;yj{zcItw=3`!JJpwXtRr{XxW4#c$#%}0p#ljb_g&X?FNyfCn1hF~{G zxZ(xAJC#|TaF;2K`G(w@gPEPIk;hTw&BPgrN`8$DG?1l(8AYbC1Ldu_he6f zsuZS%YI3{Ucjb+q=$&WRfdM4NHgSx-u9sTL-@EG*->-zE7sCfSi6##udLPR0dpGx- z$b_k!bCJrBvmleED`AIjF8>JUs13vwzL>uY?NMsbl`Ml+&bX>kmO{!(B5NRDv0%~& z(U5Zi&+Q#+-#pCs_T>xg*Y&QqpuLqb59Znx`U;%pFt=i4~83xuN}J z)XWf^xp@<>m(!K>Fqa{)5ye5Di=D!83xau`P+owetjQBU%5{OZ>)Eo|)6apI=_5yZ zhDzTsf?}VDFCx}wt#!O3c1E`uKdDSUjZ@?ZxvcvkArTSt-@^Bs%|80%cgL}d{;QIDrDLzy{o?mR9@$aw~jXe+Zk-V&@d1vHmoD1Rc|qPf8l zDl)-TrRp`PJUOplFOVRc%9BIf%0MJ1n_F(5xSHQFVhr=W0BG~EuUgBzc3#oIs&U2X zR=a=mG^U*LKjLm!rsP=~eh4>B=5%!Y`wTR0Cg7qxUC4PONL%$rThN+*F*kp8K%6|W zz|?QDb433r90yT(KzzmgI2e}?YstDr%%2RUp+e}CO={u{aIYo*@-$L%MAz0d;EnMh zA0S8GF9a*<`m4&u(!=GFr@nXCYU04Cs7vEyS6;hT87H`CxM0KCYN^PoR3PX0PP`VI zZr4{Ov6Q7?N||0f3yiMP^0xDzjc%8|U+jInTYA06`b1tQ_W9O)h^ElihfZ-b>XjI) zLOAwU=uKr4ckr9Xkg{30Qq;4Cbeq5*VF^Pm<^S?d+76U0zV zm|5C43Udly&4}>TqcK0@h%*hy|0iL8&^!ohdC6W*WHx2Cq;0LuFYM~>mpJUpRH3Oc^ohwjQ!3@xHT3w`R=^E5wm zbc1T=3nSaXhU~R1)_r30BrwrZdzX>Y=pV&Dg+ze(Z#w}p)fl`ji0Yp+y$BuV$EZ0p zW$7BN?7T^ECBzO#)V8EapSrc2p8r6o&VwbP)yL#tN^1TCSyy2ACEOi zBzuB9w0721x(w$7O5nZprZVSMu#kgr$H``=cB4XRBWjB$1?cEi#1;-%>=@7Br+t4^ zQY(CM7!jYGA7ExE!qR&0SMWjE)D>-YRUDWj?x(u(8X0Mh;$y2(B^PxRC7!Zj5}UHO z)oy(+y9_;e6Y4N?-$UrnZ3BEa`mfF2DQeOY!4B)|@c-g5*>8ik*1=fay)Dq+GA zq6KP!K6B%HRjq`IqN6efQVfT*?*nPaV#Qrj` zLVDPcdLFHxk}H?`H8k8<#XHsiHGe?CS{4nh9Ep{k-|JETi#{ZBf^&O|1ma=an07~Z zYYzN1eoJg%iI_d4K|WCfFRjA_3)iSjSfo!6m3m48{Zp7bW9Px_z%>5Jfx(YxP4s@v zR@{=*rgTizPp+%>sui3bz0ui3!g`n&p+Vo+E86J)%*wv;6n^YP>?U52b~zDdrTLzG zvnfwbHU+A*O>Qj1#(cV59W9Dbx-$bj4qHSP1`bcO5PBYJsr>U0>Wcw*{HShcqr4Ha z$)S*Tx5~F5Khn5N{riFVl;7hEN#J~K$iMKwx(3jAb4o=P<;sqx6{+*x;}lZ-=xk;i zTHa*U)m|F{O*EKYa)Z9M*TjDm^^Za;J#_co~OHGg79&+^{*lbfs5!1foLK zD(ANhkFPP>QsJ*%v-gkUPe@F&vI#D`xQC9tP_{L&Xrf^PjEod~LtL60qt?t=y?`du zP=KnQPfVEk+%}|Ed$LGJ7nNt94_9Dw{vX3sXlIR}=OH;NO?LSxgHqDNKXH{8Xg>`h ztaFjQ$#Ld9ws~U7-z}%r3*9abmYj{oxOM?` zvg8Q|9#{v)Y_On)ku^1aDC`>ILe5RV@R@>!D;;KJlTo6850?}-XoEz3EN5ze|Apn$ zyRpl-k|~8zd~C^VrqUl4%DpmG9m}2U3UKa3%#u9WQDF>^S#T0hrsr{?%xwKPP>Ak; z3912;iet?u-MwfY6t(1R?IW6F85vaY7DEMbMK4T(eEpx~bPGx0|2sRLNaz>db?&Vu z>Y^$k0x^w7r>^N<@;m>5K-b9=SS+`HC~c5kjna9<^Kjcu1qvb@un`Wo|8N@3@*d~p z+;HOXyG>k>9>W`~pJ(Mu!}TwE?UK`(Vc3 z7|HS5=tz!izAPgPcbl%&dY*J3c-}^av_sbLVD{R8Sa1+@#yEOzStek#xDP~$9&)(8 zK21u2{c_s+UJ+5xBFkuu6uh5(7MO~_BZ+8b@3(8>?3|gdfohIwCfvR@hpDq^6-eTf zVe25pRK@4SP@~oPOyPtd?uKmWhoFQUX$UzGlsuP#V|L-S`#Opk_2FQXj>Uqh%5Tgh zkTWBIWlCHu?dV%b$q>!7Dx_loXl|f~^sER~H`lMgV3h4%#mutJTN*M$9UJ5i`$==b z3%;uyIw5dr%)LnwPY6%4a#=|=wWkm#4Z4~kK*J&KkNv!F&D~4fs1F}Rn|kXaXXIj| zGc{r!TOPf(#4tGKqa3bzFN=58?HwF6l+(D&GSdAK9+cc-JL*?G^j|cSOK_PNX@5IbXM(Do!_ZmY@IrAC^S%(S_GcP)7j)N0rbf$${^s zXj?#QK}f<(J{D4c8}#hNwxfO8JU*GXguhBoN^!MmQ_D!*k5VIQ=kqI)p?ewQg4p}_ zBoXMKui4nPCh5!vwZl77V?EkI6SUFF2OTEbfFXStWosUuek_H0(gEh%WO-acuvy zZWWjruOK7|`zZ-O5F4WN^z{v$Ky=nJ<(9&9`7O?l*VvVnes2$^sBo2qSL8r!(Dbv2 zdvIAB!ohhia;(%iCHPnUawr+DMm&<^$k0BYF(vxPMCQ5PPuaBE?;-1hg0S&%I8Zx` zZ;A!bL^s940%BPWJPi1J#EPB#Ctfr-%LSOXbf{K(SIz!|2Ieilor;E+ew5@_FgmwN zC^l^gP)%Y#9fBj%-Z&*G9!ul;+fpV)!ce424^s>|(@M{x1>Lj`HTmzd6YzSxszW>K zj^nvaMpsbOv*2}Pv~<4BY0!J`gYsuWcI*4;0G5Po*{s zL%w{K39n|6u=%`>AjZIj7(FzN@Fvff39yUm^Dys^tUN_4N}^hZqc0;HGGI6cHEy4 z?xsY^h~35^1@pcyq>%|UGxWWZ{n~ffZ}9JAUG`mWrQx*@HXnq-Kz~r|5)KY*{T2Qt zDb1^rz2JS5Eu{80MbKIwtxkjTFN*O~H3YPxmt#lVwbkSgPR_q-pT3MTC3w$J9}(gf z&IDFC#aM=x(RFQRcofra-!(YfWimuCVj5%I*LLT?>FFUP?DsGh>i+HUIFXS8s1sOL z4N@0VQyc7KmT^w>kTZ?0qLW{!Pck`Y9VPr=By!u(-3J*oF=z=z|NQ3$Gnik>Ug9aL zCHfgC2Lc&FbgPXigw-7nsF@5oXi{a&VCB^VS^8U5o0jO2Z?0zOKU{P{_J9HtN2HKi z@4tp}%p_7H=9s(Upe48f2rWNTB`ypreP(a%-cl>2%tV86r}z zWtZKR^QwvwMSD|RSHve?%{(+5$0EYgdD{{0gh)jO2MR5f8s61MA~c_-WeEf`X;1!& z=ZHHtlD9m2k|(5(XHy!ydOF%yJBz}zj9;>;bh1gFbrPIfD&oyDd?LXSvZAMw2iw9| zbZL(Zj&tE1XG3n1 zbI+Bgp)GH6-H)(jOYhh_v=3Us*Rax6^-?32%rhb9r3=_V-;%ZO6y2RGj%T9epWQZP zw`%0hqAErLZXc^$wI?)UXPM|iUb1>sUv12JNp=Zc@2nVRzI2(qBCIKRMS*z|e--2E zb2+}Xv2iKM4-rQ7`j4>TH|h zPRSq`CTRN%!iFlInrV(-zN=_UeZmDN!Y9)ev4$pR@kS`a@KKs8&iU8h;QQU?Oe3ND zQ2*ani`Ir2wq;(@A&m>7)I|qhTGqk6z3efj#a@o*y26fv!ANgJJVu1?B&HkQ|8?uL z4h}h#?$jlE2;TeURSjZr_Pmr!W}#YpwEwrcQTwUMfmBJ>#yZ<>p^zgXJ>M;tE``6P zbf~Os6O!f0OE!5pTbg}D+s^SH#Lp~zfik<-7-hGl_iQ)j! z`p>z!SMH!MVNcbQG8d^K3#+i3oQbv+mGhA#M&>&5CI-GC5%^d(_1UxV{62w2n5%FP%|?(T$|*GW@_%S2BL+;Iq*}# zA=(kQmm&F52;R$}z(wJnT!5TEUkMNcPJhw#W(!SSmDBg1Xod4o9ZeS;^KOmmxGBpi zo!F}#vaw;g$S0pHS~pXG=C|K;i@yq8v+Mb`5VZ+XX=C@#&zm?>A}$jDjptCh@4vMJ zf?6RWY<;m4a(p|6%@gSgLTel*kRpXHpUy-g7|wzOl?AtogBQi$r57%0&xEf=U(TX_ z=hGJ2Du8I7OEO;(FP}^HU)6wp5?!e>W47=9_*iqMZ{eeBp5?O7OY!|ibF)f^XOkkVa@C@n zNlPJPM*Aj%HM7Xwy|Il0t2!s>T8c=4IFho z{tcoOBgw`;yTw~H0bUp55-4wSxzoxCv&?^(O2BkJoJu?5z8}Z?Uyk|4ir1i^DT%L+ z-lAfHal}6T=?>5f&F?8qgLUyCUZ__r6I9m?)aU?EW8D{_tOpRf(=WH z)iIxSCc7L=kywh7$gJNl>1OG9%n%{v5*f<;D z+J$~$%8lIPZtmbrQ`P_e3-2)CmnXSbN%V~`ln*55=#HnzZyNE0SybWk!&1KoBqqEk zK{X1>;vW)!C86n1N}r;yU{URZnptXTH-gWfxK^x(so_QJ0 zGQ+*gqc&5QwDCw!3HxoNx7PF$RKcf(;EflQ#Z{FXmOfZvMP@ z9F1LME13WIgX2(YuVVyM(kot3;LekE8MW-6HKFGbM)gFk;OE7YMrHDx_=Fs;hcn?G z#fL;=e4;Rh+gA1t-u+7^eS$MCWTqLh;RE<^(1bo@0{IE<(b>!S|1kkls<7XySensEqt? zN{5Bg6|AL)zs*P#M@&)mtX3hAqg=$aMu(@1{?(wFez!M4(NE#%$^}*`vTaNPZ|9nW zREj*Y-_2ES9xJ{nofGZgYEpn+xOZiu5PAH&WRJ}fa%d4*QY&Zo%ly}zAznVHSOALd z3un(b%!wj?-((>b7CHt^4#Tr73V##th|zLmF;gf$NKIM-3o2-h zZlo2gP7H>EBWZJ?{O}$WGrUMDnxXUj2m#D2q4T_Rd}my|p9&lV7wP{AXb+e0N5)(|_W*x4DXn+zMSf87CHZ_^<64FOh9_{?@$-Fu<8p&$Rm z05lN*0R#X91Ox>G1pxs80000100ILM1QH=J5EDUgATU5t1tL&jVH7fpc$&oRe4)xH=N!S15~m*YFSEi z9NouhxqqmTxyFD`!@*x6Dkvasud;-AS80@lVty8H$G;fmXoFqFfTWeC8|r8$7Tcd= zP=wUsu9<(86Z07L*Hj)Gls(pM8e?b?d97k-fNx*Fz_pO9j#&yKzJ|tu6IMX71k&8X zm&7##{UPFGiw%#t8pk}-LT|&3TigPF!yW~&+H)MkPW4R|X#re$WjVbHB8`0tQt01D z_LL-OPJCc!>ra*teo~DeFG zRuqr!8ZF9mn8@=D(=ksD*T`#&O@+^Yp^K_%qhUcXckbO!g@xlY^hJyZ<>4<+q87Mr zKJBYUFJvOnwZ`o?2m`F2RT-k2NIH#$H13yvG8;cah6hdiR8iD{rDH&_Q2?h3;`}*m zLQ7A>mPQ|Yp&P6MDLw$!xZcK*V~0hQ`yvR?_5rectnFFav$Z-;Z=vBHSZH-li!+0| zg)|)As%Q*J!p9c9hNCA!2mMZwvNVEg=Kd4h(AvJC85#3g{^a-N4kg!nE@VX2=yg&% zJIU+_X*(`c{gG)K{SyV3B5@#C7LIKxV*xA#ZQ!MqQl(0eVIsn%N|7IaMHT8)n22ID z<4F8M0o6y1hF4@#MOu%c;2bRb@GcD&Rwj0qb?n;c*^#o44` zjlzbMX+9{yp}nHWhHW-MtY&RApt%euH%hc3h?DJBn8@BV8v7>-`|dX8a+X0G3yPV= z?=Cz6AlO(*#PQ!=sz&8^(3;}YVK#i%%bM*) z?u_p{lx18Z4%KWZ%x+5o9>1 z!Q2&!!x$Z1KI@c8iFs=_3D{{`X$%XxxG1yXq{#h`t80r*gxSYc&SG@qqAo5reuspJ zMGy-V;_2K^xlM`A1c1H{Pc6XvtXx7^i2JRKsK@w7ZH|!Rr!^;ov z72pY`z#(IsSce6J#t0f(MX!cp*%>jvODV>Iw0`QA;&!_x;v>J9rbyg|Ph{Lv^J}*T zoTkDvJ3lk36A(!{+A|aX04WJbufpd5#(*^mvydo@LTWcc_e9>lhDlB3YG@?tiVmd| zr09KMLOxs>W6>~k@WVe*;lg5?V7G47Jcd~d&s7rxhy>C&QXO3scQl4kEnKY-mCY2QesYPX}9z{19i=3xIlyVWYT15C>H@?XE$X=eo%No{Dhyvj#HSI zo`pv%KyCE2*Rq;#Wh29wE8O}*(BVZ#hL<%Bkb&X3LXub3R)qGr8UY*}pz4~?(L?A{ z%pxC^B(9L#j|k;-X4+H}2}kFT>Aq%wcVDKbxuoo}yV+!Z^otw~QpoM8Whu;acOP)i z5qO}0co|4hMV#!I`2PTCKCP}THWOzZS2c;!j)4+Rr|5jY)JR<8KqukguaK1#5I0xZ zLOd(9%0e+e3peB6jB>O=uHwK_O4AMXG!u($&#|aNYH-&~zsiaEjC$*;4-Lv5>o$!s zvv6YIhIc~BYMhw|Fz%S@JZSotzb{K%-|F2RlOLO@T%41_kUDe&Qj*lciva(#kiuY168>ZD^1V%~*24l>yOR#r8S1JmU^%-@fr^4-0C z+klvxjGzG7d`}Q#Z3Ns?^J}*TJh0eCZKwc*q+jP$XC~-UbmW34YxT@F9n-pkmH2E3 zs#3aEPJ{7V`Pr zPr7RyK_D-KxR{7N3dTYui1xg0o3N#hZd^l$c2 z*MFx&hjfiD3ke%())5KKt`J7ozMZm;8nw$Z$#LJU3a=h5?n(@%a-qCSmAfm z>sU-nOcr`>u@dv8FZWS1ISnR}!n``VbWHe!xg8tz{QYwd#=7ldTk?;mVA%1f*#-bf z_fuh57+et-!Y2mZ`y(@Qir=aaj>*2M(y)`STSe@6BI{d1cII(E>;C{knn31?{{Vkl z4j>RZqQVh*YBS;`H?jhU*CUX|bW+S@)9Kh3mq$vqwTYFG$49DeC5|)?Y+%GX6ZlQV zxSLq==>be*i>PO>%e2 zH{CeK!=tS=@5D+h=shK@I0S@a1Rx0-sWi0Xd@Ua#iJStUs47*$xKLHYP6P)658sl+ zB@|Scc^UasRCsA0(M1r5Q1rNEdMnbD#UCw+h`$w;g>}1l*HPU0)bcH z)3JeWg9%wk^Lnf(L?@jT=Tqhc&C^P1XjSA_9-mhOi63RKDA`R?w^V$w!wNzm2I{1g zR_aP8jVka`uLDY9vYHV444Mlu_e?tL_G3*Z$^w>FyJUCp9~E(mT$-n2NluWtS@DYT z#ky|D6@Fh&tCON30^;41PL=jpD)=8Ig3)SsqiLiiq$f?Dm+C=HIhA<_>hA=g5dp2y zSJ|N-4JtfXXs0+LeMED)sgl^Wej4mK@Lvl|)TY7_gar6N)fUn|t&$d$*#TLC%ocEi zhZ63^R|tY*v`%)3=R{HQ*BbN`scX>(Ic9PMp!LjL(z&}7vKhpgBOv0y^HnCPR2z_S+ne|TD5BJUtc<6(QKhp~AQiA)|mz3m|eZBLQ53odc7jb5&Oh;7^%q`xwxG zQLr7*fF6n1b;w+jxhs}YX$p!ZT_{dsn-C~M)FJ@}Ql&vs%lJ=?r*Mo6JruZl**RZk znox3$$%ln3t12v{T8mSfsW#iFQOZ+Y!quwbs;(273C8;~YWM<~B93sIC_%wk;Nl7- zBJdNB5acAJ*}c%2tDMv&YUYK_YILn!;H7=4?Cq;T^n{^vfM2M!%nHIKTD~@kK$T@? zD$lyJ?v4AcebF2bWowOjR#sxHt18N}tg9-@vaG8r%CfAhSN}1=7MZ*WAxl6d`~=OuN3O- zgC=_#=8mX>H$qIBr(@pte@(yj0o3o?EREj3#&^mZET+6TSSUNdFwzlVCr0LgPgK~P z>aMFPCn|6)G<#A?nfc%N36nK|(uL;il+(r1GBC#-={3N%Fh$*{+8SC%xmiP~me#6Z z1dapWwKF>_2~jgSqETTAHj-?33yIxlcAD(7yWJTcO_GTu+3ic%94MoPb54kd1jwH4 r_CmX0Lda;lph7_HMyZm6yHlN*?b{&6jfeQo?TY3 { if (platform() !== "darwin") import("./tray.js"); return new Promise(() => { - setupWindow = new BrowserWindow({ + const windowOptions: BrowserWindowConstructorOptions = { width: 800, height: 600, title: "Legcord Setup", darkTheme: true, icon: getConfig("customIcon") ?? path.join(import.meta.dirname, "../", "/assets/desktop.png"), - trafficLightPosition: { - x: 13, - y: 10, - }, - titleBarStyle: "hidden", - titleBarOverlay: { - color: "#2c2f33", - symbolColor: "#99aab5", - height: 30, - }, resizable: false, - vibrancy: "fullscreen-ui", + frame: true, maximizable: false, autoHideMenuBar: true, webPreferences: { @@ -35,7 +25,22 @@ export async function createSetupWindow(): Promise { spellcheck: false, preload: path.join(import.meta.dirname, "setup", "preload.mjs"), }, - }); + }; + if (platform() === "darwin") { + windowOptions.titleBarStyle = "hidden"; + windowOptions.titleBarOverlay = { + color: "#2c2f33", + symbolColor: "#99aab5", + height: 30, + }; + windowOptions.trafficLightPosition = { + x: 13, + y: 10, + }; + windowOptions.frame = false; + windowOptions.vibrancy = "fullscreen-ui"; + } + setupWindow = new BrowserWindow(windowOptions); ipcMain.on("setup-minimize", () => { setupWindow.minimize(); }); diff --git a/src/setup/preload.mts b/src/setup/preload.mts index 2d2d4b4..9b979f8 100644 --- a/src/setup/preload.mts +++ b/src/setup/preload.mts @@ -11,13 +11,29 @@ contextBridge.exposeInMainWorld("setup", { }), }); +if (ipcRenderer.sendSync("setup-getOS") !== "darwin") { + document.addEventListener("DOMContentLoaded", () => { + const css = document.createElement("style"); + css.innerHTML = `.bg { + background-image: url("legcord://assets/mockup.jpg"); + background-repeat: round; + height: 100%; + width: 100%; + position: absolute; + outline: 80px solid black; + -webkit-filter: blur(10px); + }`; + document.head.appendChild(css); + }); +} + declare global { interface Window { setup: { // biome-ignore lint/suspicious/noExplicitAny: saveSettings: (settings: any) => void; restart: () => void; - getOS: string; + os: string; }; } } diff --git a/src/setup/setup.html b/src/setup/setup.html index 2f42c56..5347bc2 100644 --- a/src/setup/setup.html +++ b/src/setup/setup.html @@ -19,6 +19,7 @@
    +
    diff --git a/src/setup/setup.tsx b/src/setup/setup.tsx index ff67018..e8dc2f4 100644 --- a/src/setup/setup.tsx +++ b/src/setup/setup.tsx @@ -145,7 +145,7 @@ const TraySettings = ({ readyToNext }: { readyToNext: (valid: boolean) => void }

    System Tray

    Choose whether to enable the system tray icon

    - +
    From 33ca0079c6bc5480c00a570085e986c86ba066cf Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 12 Feb 2025 21:19:25 +0100 Subject: [PATCH 668/896] chore: bump electron --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index c68c63a..b957945 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "34.0.1", + "electron": "34.1.1", "electron-builder": "^25.1.8", "lucide-solid": "^0.475.0", "rollup": "^4.27.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c4c872..40124aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,8 +71,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 34.0.1 - version: 34.0.1 + specifier: 34.1.1 + version: 34.1.1 electron-builder: specifier: ^25.1.8 version: 25.1.8(electron-builder-squirrel-windows@25.1.8) @@ -1692,8 +1692,8 @@ packages: electron-updater@6.3.9: resolution: {integrity: sha512-2PJNONi+iBidkoC5D1nzT9XqsE8Q1X28Fn6xRQhO3YX8qRRyJ3mkV4F1aQsuRnYPqq6Hw+E51y27W75WgDoofw==} - electron@34.0.1: - resolution: {integrity: sha512-aArw5tAM80i3CKwEREnyZSM1SkARf5Jd1yBMTIdOL4pB1M+p/oDeyWSFI9Dl+vujyfJKiK4SS5+j19wna1onMw==} + electron@34.1.1: + resolution: {integrity: sha512-1aDYk9Gsv1/fFeClMrxWGoVMl7uCUgl1pe26BiTnLXmAoqEXCa3f3sCKFWV+cuDzUjQGAZcpkWhGYTgWUSQrLA==} engines: {node: '>= 12.20.55'} hasBin: true @@ -3279,7 +3279,7 @@ snapshots: '@electron/get@2.0.3': dependencies: - debug: 4.3.7 + debug: 4.4.0 env-paths: 2.2.1 fs-extra: 8.1.0 got: 11.8.6 @@ -4633,7 +4633,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@34.0.1: + electron@34.1.1: dependencies: '@electron/get': 2.0.3 '@types/node': 20.17.9 @@ -4778,7 +4778,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.7 + debug: 4.4.0 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: From 871d29b059bce852af87ece14db04c57b6a45c4e Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 12 Feb 2025 21:26:39 +0100 Subject: [PATCH 669/896] feat: import touchbar plugin only on macOS --- src/discord/preload/mods/shelter.mts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/discord/preload/mods/shelter.mts b/src/discord/preload/mods/shelter.mts index d26222a..28149c0 100644 --- a/src/discord/preload/mods/shelter.mts +++ b/src/discord/preload/mods/shelter.mts @@ -6,8 +6,10 @@ const requiredPlugins: Record { From 07451f0d7e110cf6d31d0e32abedcefcff256d78 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 12 Feb 2025 21:26:49 +0100 Subject: [PATCH 670/896] chore: linting --- src/discord/preload/mods/shelter.mts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/discord/preload/mods/shelter.mts b/src/discord/preload/mods/shelter.mts index 28149c0..8e5a881 100644 --- a/src/discord/preload/mods/shelter.mts +++ b/src/discord/preload/mods/shelter.mts @@ -8,7 +8,10 @@ const requiredPlugins: Record Date: Thu, 13 Feb 2025 11:08:06 -0600 Subject: [PATCH 671/896] added macports installation info to README (#834) --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 5cb74e8..b45a9b3 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,13 @@ Legcord is also available on the [Homebrew Cask](https://github.com/Homebrew/hom ```zsh brew install --cask legcord ``` +### MacPorts + +Legcord is available [via MacPorts](https://ports.macports.org/port/Legcord/) + +```sh +sudo port install legcord +``` ### FreeBSD From 1833760c8be5b5fd4a76bbcd0cf1632d7bff0216 Mon Sep 17 00:00:00 2001 From: Fabricio Silva Date: Fri, 14 Feb 2025 16:35:07 +0000 Subject: [PATCH 672/896] fix: move package tsx to devDependencies (#835) --- package.json | 4 ++-- pnpm-lock.yaml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b957945..74b2c81 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "@rollup/plugin-esm-shim": "^0.1.7", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-typescript": "^12.1.1", "@types/node": "^22.10.1", "@types/ws": "^8.5.13", @@ -48,9 +49,9 @@ "rollup": "^4.27.4", "rollup-plugin-copy": "^3.5.0", "rollup-plugin-esbuild": "^6.1.1", - "@rollup/plugin-replace": "^6.0.2", "solid-js": "^1.9.3", "solid-motionone": "^1.0.3", + "tsx": "^4.19.2", "typescript": "^5.7.2" }, "dependencies": { @@ -58,7 +59,6 @@ "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.3.9", - "tsx": "^4.19.2", "ws": "^8.18.0" }, "optionalDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 40124aa..8d42147 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,9 +20,6 @@ importers: electron-updater: specifier: ^6.3.9 version: 6.3.9 - tsx: - specifier: ^4.19.2 - version: 4.19.2 ws: specifier: ^8.18.0 version: 8.18.0 @@ -94,6 +91,9 @@ importers: solid-motionone: specifier: ^1.0.3 version: 1.0.3(solid-js@1.9.3) + tsx: + specifier: ^4.19.2 + version: 4.19.2 typescript: specifier: ^5.7.2 version: 5.7.2 From e293f9c7353cfda83d7be65841ade9f8c904b346 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 8 Mar 2025 15:00:35 +0100 Subject: [PATCH 673/896] feat: modern macOS transparency --- assets/lang/en-US.json | 2 +- src/discord/window.ts | 14 ++++++++++---- src/shelter/settings/pages/SettingsPage.tsx | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index 95585b7..f53a667 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.json @@ -23,7 +23,7 @@ "settings-transparency": "Transparency", "settings-transparency-desc": "Set the transparency mode Legcord uses.", "settings-transparency-universal": "Universal", - "settings-transparency-modern": "Modern (Windows 11 only)", + "settings-transparency-modern": "Modern", "settings-theme-transparent": "Transparent", "settings-popoutPiP": "Call Popout Always on Top", "settings-popoutPiP-desc": "When enabled, the call popout will be in Always on Top mode.", diff --git a/src/discord/window.ts b/src/discord/window.ts index 45f23b0..521077e 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -368,10 +368,16 @@ export function createWindow() { browserWindowOptions.transparent = true; break; case "modern": - browserWindowOptions.backgroundColor = "#00000000"; - browserWindowOptions.transparent = false; - browserWindowOptions.frame = true; - browserWindowOptions.backgroundMaterial = "acrylic"; + if (os.platform() === "win32") { + browserWindowOptions.backgroundColor = "#00000000"; + browserWindowOptions.transparent = false; + browserWindowOptions.frame = true; + browserWindowOptions.backgroundMaterial = "acrylic"; + } else if (os.platform() === "darwin") { + browserWindowOptions.backgroundColor = "#00000000"; + browserWindowOptions.vibrancy = "fullscreen-ui"; + browserWindowOptions.transparent = true; + } break; case "none": break; diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index 01a202d..29e3de6 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -76,7 +76,7 @@ export function SettingsPage() { link="https://github.com/Legcord/Legcord/wiki/Transparency-options" > - + From 94a7185db03a2fadd84d6e5b44133ed7aa605940 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 14 Mar 2025 08:57:42 +0100 Subject: [PATCH 674/896] chore: bump electron --- package.json | 2 +- pnpm-lock.yaml | 24 ++++++------------------ 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 74b2c81..a658b14 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "34.1.1", + "electron": "35.0.1", "electron-builder": "^25.1.8", "lucide-solid": "^0.475.0", "rollup": "^4.27.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8d42147..70248e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,8 +68,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 34.1.1 - version: 34.1.1 + specifier: 35.0.1 + version: 35.0.1 electron-builder: specifier: ^25.1.8 version: 25.1.8(electron-builder-squirrel-windows@25.1.8) @@ -1205,9 +1205,6 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@20.17.9': - resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} - '@types/node@22.10.1': resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} @@ -1692,8 +1689,8 @@ packages: electron-updater@6.3.9: resolution: {integrity: sha512-2PJNONi+iBidkoC5D1nzT9XqsE8Q1X28Fn6xRQhO3YX8qRRyJ3mkV4F1aQsuRnYPqq6Hw+E51y27W75WgDoofw==} - electron@34.1.1: - resolution: {integrity: sha512-1aDYk9Gsv1/fFeClMrxWGoVMl7uCUgl1pe26BiTnLXmAoqEXCa3f3sCKFWV+cuDzUjQGAZcpkWhGYTgWUSQrLA==} + electron@35.0.1: + resolution: {integrity: sha512-iQonj6lnPhqfqha2KXx6LzV1dnu6UPTCWK+b7f9Zvg828umGemi22DKbcJ3/q+Opn7iUVTWyqp9z1JQqkIi6OA==} engines: {node: '>= 12.20.55'} hasBin: true @@ -2913,9 +2910,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} @@ -3964,10 +3958,6 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@20.17.9': - dependencies: - undici-types: 6.19.8 - '@types/node@22.10.1': dependencies: undici-types: 6.20.0 @@ -4633,10 +4623,10 @@ snapshots: transitivePeerDependencies: - supports-color - electron@34.1.1: + electron@35.0.1: dependencies: '@electron/get': 2.0.3 - '@types/node': 20.17.9 + '@types/node': 22.10.1 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -5950,8 +5940,6 @@ snapshots: typescript@5.7.2: {} - undici-types@6.19.8: {} - undici-types@6.20.0: {} unique-filename@2.0.1: From 69f89e0884895a1cb5bed5da0a2173d7f5a1a5ab Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 14 Mar 2025 09:11:33 +0100 Subject: [PATCH 675/896] bump: electron-builder --- package.json | 2 +- pnpm-lock.yaml | 237 +++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 210 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index a658b14..7739bf5 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", "electron": "35.0.1", - "electron-builder": "^25.1.8", + "electron-builder": "^26.0.11", "lucide-solid": "^0.475.0", "rollup": "^4.27.4", "rollup-plugin-copy": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 70248e7..145beab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,8 +71,8 @@ importers: specifier: 35.0.1 version: 35.0.1 electron-builder: - specifier: ^25.1.8 - version: 25.1.8(electron-builder-squirrel-windows@25.1.8) + specifier: ^26.0.11 + version: 26.0.11(electron-builder-squirrel-windows@25.1.8) lucide-solid: specifier: ^0.475.0 version: 0.475.0(solid-js@1.9.3) @@ -293,15 +293,25 @@ packages: resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} engines: {node: '>= 8.9.0'} - '@electron/asar@3.2.17': - resolution: {integrity: sha512-OcWImUI686w8LkghQj9R2ynZ2ME693Ek6L1SiaAgqGKzBaTIZw3fHDqN82Rcl+EU1Gm9EgkJ5KLIY/q5DCRbbA==} + '@electron/asar@3.2.18': + resolution: {integrity: sha512-2XyvMe3N3Nrs8cV39IKELRHTYUWFKrmqqSY1U+GMlc0jvqjIVnoxhNd2H4JolWQncbJi1DCvb5TNxZuI2fEjWg==} engines: {node: '>=10.12.0'} hasBin: true + '@electron/fuses@1.8.0': + resolution: {integrity: sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==} + hasBin: true + '@electron/get@2.0.3': resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} engines: {node: '>=12'} + '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': + resolution: {tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2} + version: 10.2.0-electron.1 + engines: {node: '>=12.13.0'} + hasBin: true + '@electron/notarize@2.5.0': resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} engines: {node: '>= 10.0.0'} @@ -316,6 +326,11 @@ packages: engines: {node: '>=12.13.0'} hasBin: true + '@electron/rebuild@3.7.0': + resolution: {integrity: sha512-VW++CNSlZwMYP7MyXEbrKjpzEwhB5kDNbzGtiPEjwYysqyTCF+YbNJ210Dj3AjWsGSV4iEEwNkmJN9yGZmVvmw==} + engines: {node: '>=12.13.0'} + hasBin: true + '@electron/universal@2.0.1': resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} engines: {node: '>=16.4'} @@ -1292,6 +1307,9 @@ packages: app-builder-bin@5.0.0-alpha.10: resolution: {integrity: sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==} + app-builder-bin@5.0.0-alpha.12: + resolution: {integrity: sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==} + app-builder-lib@25.1.8: resolution: {integrity: sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==} engines: {node: '>=14.0.0'} @@ -1299,6 +1317,13 @@ packages: dmg-builder: 25.1.8 electron-builder-squirrel-windows: 25.1.8 + app-builder-lib@26.0.11: + resolution: {integrity: sha512-bsfSjSZp9dg7q28+4NPLJ2ldq3j1ESP2LJ+8AibaPqQb2lTIJeQW1JmgdAs9KuYTtkswiZ/+PMyokC9M7hwnjQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + dmg-builder: 26.0.11 + electron-builder-squirrel-windows: 26.0.11 + aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1417,9 +1442,16 @@ packages: resolution: {integrity: sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==} engines: {node: '>=12.0.0'} + builder-util-runtime@9.3.1: + resolution: {integrity: sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==} + engines: {node: '>=12.0.0'} + builder-util@25.1.7: resolution: {integrity: sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==} + builder-util@26.0.11: + resolution: {integrity: sha512-xNjXfsldUEe153h1DraD0XvDOpqGR0L5eKFkdReB7eFW5HqysDZFfly4rckda6y9dF39N3pkPlOblcfHKGw+uA==} + cacache@16.1.3: resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -1635,8 +1667,8 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dmg-builder@25.1.8: - resolution: {integrity: sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==} + dmg-builder@26.0.11: + resolution: {integrity: sha512-C+SaRneQ11OxG99EeGp3TvPrlkW9ZaiukxB9Z7+OhhO1ge0nAtq9uD0ILt1JpvNAQ1de3gzX7TFRYJrSGsNe+Q==} dmg-license@1.0.11: resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} @@ -1663,8 +1695,8 @@ packages: electron-builder-squirrel-windows@25.1.8: resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==} - electron-builder@25.1.8: - resolution: {integrity: sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==} + electron-builder@26.0.11: + resolution: {integrity: sha512-u7Qgge5ue5oOPDbZEseor7RjxKSYAekVflHkbNIY6te1kbtShQFqESq3FZakMBsQf/3SkEycvWhHHRb8zjqBqg==} engines: {node: '>=14.0.0'} hasBin: true @@ -1683,6 +1715,9 @@ packages: electron-publish@25.1.7: resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==} + electron-publish@26.0.11: + resolution: {integrity: sha512-a8QRH0rAPIWH9WyyS5LbNvW9Ark6qe63/LqDB7vu2JXYpi0Gma5Q60Dh4tmTqhOBQt0xsrzD8qE7C+D7j+B24A==} + electron-to-chromium@1.5.90: resolution: {integrity: sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==} @@ -2537,6 +2572,10 @@ packages: resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} engines: {node: '>=10.4.0'} + proc-log@2.0.1: + resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -2701,6 +2740,10 @@ packages: semver-compare@1.0.0: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -2873,6 +2916,9 @@ packages: temp-file@3.4.0: resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} + tiny-async-pool@1.3.0: + resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} + tiny-typed-emitter@2.1.0: resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} @@ -3265,12 +3311,18 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - '@electron/asar@3.2.17': + '@electron/asar@3.2.18': dependencies: commander: 5.1.0 glob: 7.2.3 minimatch: 3.1.2 + '@electron/fuses@1.8.0': + dependencies: + chalk: 4.1.2 + fs-extra: 9.1.0 + minimist: 1.2.8 + '@electron/get@2.0.3': dependencies: debug: 4.4.0 @@ -3285,6 +3337,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 8.1.0 + graceful-fs: 4.2.11 + make-fetch-happen: 10.2.1 + nopt: 6.0.0 + proc-log: 2.0.1 + semver: 7.7.0 + tar: 6.2.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + '@electron/notarize@2.5.0': dependencies: debug: 4.4.0 @@ -3324,9 +3392,29 @@ snapshots: - bluebird - supports-color + '@electron/rebuild@3.7.0': + dependencies: + '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2 + '@malept/cross-spawn-promise': 2.0.0 + chalk: 4.1.2 + debug: 4.4.0 + detect-libc: 2.0.3 + fs-extra: 10.1.0 + got: 11.8.6 + node-abi: 3.71.0 + node-api-version: 0.2.0 + ora: 5.4.1 + read-binary-file-arch: 1.0.6 + semver: 7.7.0 + tar: 6.2.1 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - supports-color + '@electron/universal@2.0.1': dependencies: - '@electron/asar': 3.2.17 + '@electron/asar': 3.2.18 '@malept/cross-spawn-promise': 2.0.0 debug: 4.4.0 dir-compare: 4.2.0 @@ -4071,7 +4159,9 @@ snapshots: app-builder-bin@5.0.0-alpha.10: {} - app-builder-lib@25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8): + app-builder-bin@5.0.0-alpha.12: {} + + app-builder-lib@25.1.8(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.5.0 @@ -4086,12 +4176,12 @@ snapshots: builder-util-runtime: 9.2.10 chromium-pickle-js: 0.2.0 config-file-ts: 0.2.8-rc1 - debug: 4.3.7 - dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8) + debug: 4.4.0 + dmg-builder: 26.0.11(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@25.1.8) + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.11) electron-publish: 25.1.7 form-data: 4.0.1 fs-extra: 10.1.0 @@ -4104,13 +4194,54 @@ snapshots: minimatch: 10.0.1 resedit: 1.7.2 sanitize-filename: 1.6.3 - semver: 7.6.3 + semver: 7.7.0 tar: 6.2.1 temp-file: 3.4.0 transitivePeerDependencies: - bluebird - supports-color + app-builder-lib@26.0.11(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8): + dependencies: + '@develar/schema-utils': 2.6.5 + '@electron/asar': 3.2.18 + '@electron/fuses': 1.8.0 + '@electron/notarize': 2.5.0 + '@electron/osx-sign': 1.3.1 + '@electron/rebuild': 3.7.0 + '@electron/universal': 2.0.1 + '@malept/flatpak-bundler': 0.4.0 + '@types/fs-extra': 9.0.13 + async-exit-hook: 2.0.1 + builder-util: 26.0.11 + builder-util-runtime: 9.3.1 + chromium-pickle-js: 0.2.0 + config-file-ts: 0.2.8-rc1 + debug: 4.4.0 + dmg-builder: 26.0.11(electron-builder-squirrel-windows@25.1.8) + dotenv: 16.4.5 + dotenv-expand: 11.0.7 + ejs: 3.1.10 + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.11) + electron-publish: 26.0.11 + fs-extra: 10.1.0 + hosted-git-info: 4.1.0 + is-ci: 3.0.1 + isbinaryfile: 5.0.4 + js-yaml: 4.1.0 + json5: 2.2.3 + lazy-val: 1.0.5 + minimatch: 10.0.1 + plist: 3.1.0 + resedit: 1.7.2 + semver: 7.7.0 + tar: 6.2.1 + temp-file: 3.4.0 + tiny-async-pool: 1.3.0 + transitivePeerDependencies: + - bluebird + - supports-color + aproba@2.0.0: {} archiver-utils@2.1.0: @@ -4260,6 +4391,13 @@ snapshots: transitivePeerDependencies: - supports-color + builder-util-runtime@9.3.1: + dependencies: + debug: 4.4.0 + sax: 1.4.1 + transitivePeerDependencies: + - supports-color + builder-util@25.1.7: dependencies: 7zip-bin: 5.2.0 @@ -4269,7 +4407,7 @@ snapshots: builder-util-runtime: 9.2.10 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7 + debug: 4.4.0 fs-extra: 10.1.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 @@ -4281,6 +4419,28 @@ snapshots: transitivePeerDependencies: - supports-color + builder-util@26.0.11: + dependencies: + 7zip-bin: 5.2.0 + '@types/debug': 4.1.12 + app-builder-bin: 5.0.0-alpha.12 + builder-util-runtime: 9.3.1 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + fs-extra: 10.1.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + is-ci: 3.0.1 + js-yaml: 4.1.0 + sanitize-filename: 1.6.3 + source-map-support: 0.5.21 + stat-mode: 1.0.0 + temp-file: 3.4.0 + tiny-async-pool: 1.3.0 + transitivePeerDependencies: + - supports-color + cacache@16.1.3: dependencies: '@npmcli/fs': 2.1.2 @@ -4515,11 +4675,11 @@ snapshots: dependencies: path-type: 4.0.0 - dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): + dmg-builder@26.0.11(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) - builder-util: 25.1.7 - builder-util-runtime: 9.2.10 + app-builder-lib: 26.0.11(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8) + builder-util: 26.0.11 + builder-util-runtime: 9.3.1 fs-extra: 10.1.0 iconv-lite: 0.6.3 js-yaml: 4.1.0 @@ -4554,9 +4714,9 @@ snapshots: dependencies: jake: 10.9.2 - electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8): + electron-builder-squirrel-windows@25.1.8(dmg-builder@26.0.11): dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 25.1.8(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8) archiver: 5.3.2 builder-util: 25.1.7 fs-extra: 10.1.0 @@ -4565,13 +4725,13 @@ snapshots: - dmg-builder - supports-color - electron-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): + electron-builder@26.0.11(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) - builder-util: 25.1.7 - builder-util-runtime: 9.2.10 + app-builder-lib: 26.0.11(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8) + builder-util: 26.0.11 + builder-util-runtime: 9.3.1 chalk: 4.1.2 - dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.0.11(electron-builder-squirrel-windows@25.1.8) fs-extra: 10.1.0 is-ci: 3.0.1 lazy-val: 1.0.5 @@ -4608,6 +4768,19 @@ snapshots: transitivePeerDependencies: - supports-color + electron-publish@26.0.11: + dependencies: + '@types/fs-extra': 9.0.13 + builder-util: 26.0.11 + builder-util-runtime: 9.3.1 + chalk: 4.1.2 + form-data: 4.0.1 + fs-extra: 10.1.0 + lazy-val: 1.0.5 + mime: 2.6.0 + transitivePeerDependencies: + - supports-color + electron-to-chromium@1.5.90: {} electron-updater@6.3.9: @@ -5522,6 +5695,8 @@ snapshots: base64-js: 1.5.1 xmlbuilder: 15.1.1 + proc-log@2.0.1: {} + process-nextick-args@2.0.1: {} progress@2.0.3: {} @@ -5727,6 +5902,8 @@ snapshots: semver-compare@1.0.0: optional: true + semver@5.7.2: {} + semver@6.3.1: {} semver@7.6.3: {} @@ -5758,7 +5935,7 @@ snapshots: simple-update-notifier@2.0.0: dependencies: - semver: 7.6.3 + semver: 7.7.0 slash@3.0.0: {} @@ -5907,6 +6084,10 @@ snapshots: async-exit-hook: 2.0.1 fs-extra: 10.1.0 + tiny-async-pool@1.3.0: + dependencies: + semver: 5.7.2 + tiny-typed-emitter@2.1.0: {} tmp-promise@3.0.3: From 221fcdc1e6f42d33c455be64e6b2fa7e4f135c2f Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 14 Mar 2025 09:13:23 +0100 Subject: [PATCH 676/896] fix: update vaapi flags for e34+ Solves https://github.com/Legcord/Legcord/issues/861 --- src/common/flags.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/flags.ts b/src/common/flags.ts index e7be680..6f7955b 100644 --- a/src/common/flags.ts +++ b/src/common/flags.ts @@ -29,7 +29,7 @@ export function injectElectronFlags(): void { "--enable-gpu-rasterization --enable-zero-copy --ignore-gpu-blocklist --enable-hardware-overlays=single-fullscreen,single-on-top,underlay --enable-features=EnableDrDc,CanvasOopRasterization,BackForwardCache:TimeToLiveInBackForwardCacheInSeconds/300/should_ignore_blocklists/true/enable_same_site/true,ThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes,UseSkiaRenderer,WebAssemblyLazyCompilation --disable-features=Vulkan --force_high_performance_gpu", // Performance battery: "--enable-features=TurnOffStreamingMediaCachingOnBattery --force_low_power_gpu --enable-low-end-device-mode --enable-low-res-tiling --process-per-site", // Known to have better battery life for Chromium? - vaapi: "--ignore-gpu-blocklist --enable-features=VaapiVideoDecoder --enable-gpu-rasterization --enable-zero-copy --force_high_performance_gpu --use-gl=desktop --disable-features=UseChromeOSDirectVideoDecoder", + vaapi: "--ignore-gpu-blocklist --enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoEncoder,AcceleratedVideoDecoder,AcceleratedVideoDecodeLinuxZeroCopyGL --enable-gpu-rasterization --enable-zero-copy --force_high_performance_gpu --use-gl=desktop --disable-features=UseChromeOSDirectVideoDecoder", }; switch (getConfig("performanceMode")) { case "dynamic": From ec1557d13d09b094bcc0cdf5332889a5bd7c1827 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 14 Mar 2025 09:20:57 +0100 Subject: [PATCH 677/896] feat: 4k screensharing --- src/shelter/screenshare/components/ScreensharePicker.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/shelter/screenshare/components/ScreensharePicker.tsx b/src/shelter/screenshare/components/ScreensharePicker.tsx index 5ac2147..db3b686 100644 --- a/src/shelter/screenshare/components/ScreensharePicker.tsx +++ b/src/shelter/screenshare/components/ScreensharePicker.tsx @@ -121,6 +121,7 @@ export const ScreensharePicker = (props: { +
    From f20e5b83a4c8e1f88ec17fbf799755d06c2725ff Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 14 Mar 2025 09:57:10 +0100 Subject: [PATCH 678/896] fix: handle sigterm/sigint gracefully --- src/main.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.ts b/src/main.ts index f7e23ea..c1f5434 100644 --- a/src/main.ts +++ b/src/main.ts @@ -132,6 +132,8 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { if (getConfig("disableHttpCache")) app.commandLine.appendSwitch("disable-http-cache"); void app.whenReady().then(async () => { + process.on("SIGINT", () => app.quit()); + process.on("SIGTERM", () => app.quit()); // Patch for linux bug to ensure things are loaded before window creation (fixes transparency on some linux systems) await new Promise((resolve) => setTimeout(() => { From f12d9857a1df15871255d17c63d755b25dabdacf Mon Sep 17 00:00:00 2001 From: Nihaal Sangha Date: Fri, 14 Mar 2025 09:11:13 +0000 Subject: [PATCH 679/896] fix: traffic lights not centered with "overlay" (#860) --- src/discord/window.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/discord/window.ts b/src/discord/window.ts index 521077e..8497f95 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -357,7 +357,7 @@ export function createWindow() { height: 30, }; browserWindowOptions.trafficLightPosition = { - x: 13, + x: 10, y: 10, }; break; From 3575d3298a39d6f2937b9eee45256790db7b62f0 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 14 Mar 2025 10:41:21 +0100 Subject: [PATCH 680/896] feat: bounce on ping --- assets/lang/en-US.json | 2 ++ src/@types/settings.d.ts | 1 + src/common/config.ts | 1 + src/discord/window.ts | 5 ++++- src/shelter/settings/pages/SettingsPage.tsx | 9 +++++++++ 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index f53a667..232c199 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.json @@ -11,6 +11,8 @@ "next": "Next", "setup_question4": "Select a client mod you want to install:", "setup_question5": "Do you want to use a tray icon?", + "settings-bounceOnPing": "Bounce in dock on ping", + "settings-bounceOnPing-desc": "Bounce the app in the dock when you receive a ping.", "settings-theme": "Window style", "settings-theme-desc": "Window style manages what titlebar Legcord uses.", "settings-theme-default": "Default (Custom)", diff --git a/src/@types/settings.d.ts b/src/@types/settings.d.ts index 91b4205..0144652 100644 --- a/src/@types/settings.d.ts +++ b/src/@types/settings.d.ts @@ -58,6 +58,7 @@ export interface Settings { doneSetup: boolean; spellcheckLanguage: string[]; smoothScroll: boolean; + bounceOnPing: boolean; popoutPiP: boolean; sleepInBackground: boolean; useSystemCssEditor: boolean; diff --git a/src/common/config.ts b/src/common/config.ts index a9b436b..9060810 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -7,6 +7,7 @@ export let firstRun: boolean; const defaults: Settings = { windowStyle: "default", channel: "stable", + bounceOnPing: false, legcordCSP: true, minimizeToTray: true, keybinds: [], diff --git a/src/discord/window.ts b/src/discord/window.ts index 8497f95..d0e7a12 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -237,7 +237,10 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { } if (process.platform === "darwin") { if (title.startsWith("•")) return app.dock.setBadge("•"); - if (title.startsWith("(")) return app.setBadgeCount(Number.parseInt(/\((\d+)\)/.exec(title)![1])); + if (title.startsWith("(")) { + if (getConfig("bounceOnPing")) app.dock.bounce(); + return app.setBadgeCount(Number.parseInt(/\((\d+)\)/.exec(title)![1])); + } app.setBadgeCount(0); } if (!title.endsWith(legcordSuffix)) { diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index 29e3de6..308b051 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -90,6 +90,15 @@ export function SettingsPage() { {store.i18n["settings-autoHideMenuBar"]} + + setConfig("bounceOnPing", e, true)} + > + {store.i18n["settings-bounceOnPing"]} + + setConfig("tray", (e.target as HTMLInputElement).value as Settings["tray"], true)} From 13c3ca026bb143ff13d5c560e34603153ab16677 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 14 Mar 2025 11:14:18 +0100 Subject: [PATCH 681/896] feat: rebrand titlebar --- assets/app/css/newTitlebar.css | 367 -------------------- assets/app/css/winTitlebar.css | 3 + src/@types/settings.d.ts | 2 +- src/discord/preload/newTitlebar.mts | 30 +- src/discord/preload/preload.mts | 2 + src/discord/window.ts | 12 + src/shelter/settings/pages/SettingsPage.tsx | 3 + 7 files changed, 33 insertions(+), 386 deletions(-) delete mode 100644 assets/app/css/newTitlebar.css create mode 100644 assets/app/css/winTitlebar.css diff --git a/assets/app/css/newTitlebar.css b/assets/app/css/newTitlebar.css deleted file mode 100644 index d744929..0000000 --- a/assets/app/css/newTitlebar.css +++ /dev/null @@ -1,367 +0,0 @@ -a[href="https://support.discord.com"] { - margin-right: 50px; -} -.titlebar { - display: block; - top: 0; - left: 0; - right: 0; - flex-shrink: 0; - overflow: hidden; - zoom: 1; - box-sizing: border-box; - width: 100%; - clear: both; - height: 30px; - line-height: 30px; - -webkit-app-region: drag !important; - user-select: none; - -webkit-user-select: none; - position: fixed; - z-index: 99999; -} - -.titlebar #window-controls-container { - float: right; - width: 150px; - height: 100%; - line-height: 30px; - -webkit-app-region: no-drag; -} - -.titlebar #window-controls-container #minimize, -.titlebar #window-controls-container #maximize, -.titlebar #window-controls-container #quit { - float: left; - height: 100%; - width: 33.3%; - text-align: center; - color: var(--interactive-normal); - cursor: default; -} -.titlebar #window-controls-container #spacer { - pointer-events: none; -} - -/* Legcord on Linux */ -[legcord-platform="linux"] .container-2RRFHK { - padding-top: 45px; - top: -45px; -} -[legcord-platform="linux"] .titlebar { - height: 45px; - line-height: 45px; -} -[legcord-platform="linux"] .titlebar #window-controls-container { - line-height: 45px; - transform: translateY(-8px); -} -[legcord-platform="linux"] .titlebar #window-controls-container #minimize:hover { - background-color: var(--background-modifier-hover); - transition: 0.2s ease; -} -[legcord-platform="linux"] .titlebar #window-controls-container #maximize:hover { - background-color: var(--background-modifier-hover); - transition: 0.2s ease; -} -[legcord-platform="linux"] .titlebar #window-controls-container #minimize:hover #minimize-icon { - background-color: var(--interactive-hover); - transition: 0.2s ease; -} -[legcord-platform="linux"] .titlebar #window-controls-container #maximize:hover #maximize-icon { - background-color: var(--interactive-hover); - transition: 0.2s ease; -} -[legcord-platform="linux"] .titlebar #window-controls-container #quit:hover { - background-color: var(--brand-experiment-560); - transition: 0.2s ease; -} -[legcord-platform="linux"] .titlebar #window-controls-container #quit #quit-icon { - background-color: #ffffff; - display: list-item; - transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] .titlebar #window-controls-container #minimize-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] .titlebar #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} - -[legcord-platform="linux"][isMaximized] .titlebar #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] .titlebar #window-controls-container #minimize { - background-color: transparent; - transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] .titlebar #window-controls-container #maximize { - background-color: transparent; - transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] .titlebar #window-controls-container #quit { - background-color: var(--brand-experiment); - transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] .titlebar #window-controls-container #quit:active { - background-color: var(--brand-experiment-600); - transition: 0.1s ease; -} - -/* Legcord on Windows */ -[legcord-platform="win32"] .titlebar #window-controls-container { - width: 142px; -} -[legcord-platform="win32"] .titlebar #window-controls-container #minimize:hover { - background-color: var(--background-modifier-hover); - transition: 0.2s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #maximize:hover { - background-color: var(--background-modifier-hover); - transition: 0.2s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #minimize:hover #minimize-icon { - background-color: var(--interactive-hover); - transition: 0.2s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #maximize:hover #maximize-icon { - background-color: var(--interactive-hover); - transition: 0.2s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #quit:hover { - background-color: #e81123; - transition: 0.2s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #quit:hover #quit-icon { - background-color: #ffffff; - transition: 0.1s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #minimize { - background-color: transparent; - transition: 0.1s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #maximize { - background-color: transparent; - transition: 0.1s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #quit { - background-color: transparent; - transition: 0.1s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #quit:active { - background-color: #f1707a; - transition: 0.1s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #quit:active #quit-icon { - background-color: #000000cc; - transition: 0.1s ease; -} -[legcord-platform="win32"] .titlebar #window-controls-container #quit-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="win32"] .titlebar #window-controls-container #minimize-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="win32"] .titlebar #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} - -[legcord-platform="win32"][isMaximized] .titlebar #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} - -/* Legcord on macOS */ - -[legcord-platform="darwin"] .sidebar-1tnWFu { - border-top-left-radius: 0px !important; -} - -[legcord-platform="darwin"] .container__037ed { - overflow: unset !important; - padding-top: 48px; - top: -48px; -} -[legcord-platform="darwin"] .titlebar { - height: 48px; - line-height: 48px; -} - -[legcord-platform="darwin"] .titlebar #window-controls-container { - float: left; - width: 150px; - height: 60%; - line-height: 45px; - transform: translate(-82px, 4px); -} - -[legcord-platform="darwin"] .titlebar #window-controls-container:hover #minimize #minimize-icon, -[legcord-platform="darwin"] .titlebar #window-controls-container:hover #maximize #maximize-icon, -[legcord-platform="darwin"] .titlebar #window-controls-container:hover #quit #quit-icon { - display: list-item; -} - -[legcord-platform="darwin"][unFocused] .titlebar #window-controls-container #minimize, -[legcord-platform="darwin"][unFocused] .titlebar #window-controls-container #maximize, -[legcord-platform="darwin"][unFocused] .titlebar #window-controls-container #quit { - background-color: #d6d6d5 !important; - pointer-events: none; - transition: background-color 0.1s ease-in; -} - -[legcord-platform="darwin"]:not([unFocused]) .titlebar #window-controls-container #quit #quit-icon { - background-color: #79282b; - -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") - no-repeat 50% 50%; - transform: translate(-0.3px, -11.7px); -} -[legcord-platform="darwin"]:not([unFocused]) .titlebar #window-controls-container #minimize #minimize-icon { - background-color: #7d631b; - -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") - no-repeat 50% 50%; - transform: translate(-0px, -11.7px); -} -[legcord-platform="darwin"]:not([unFocused]) .titlebar #window-controls-container #maximize #maximize-icon { - background-color: #1d7525; - -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") - no-repeat 50% 50%; - transform: translate(-0.2px, -11.7px); -} - -[legcord-platform="darwin"] .titlebar #window-controls-container #minimize { - background-color: #fac536; - transition: background-color 0.1s ease-in; - border: 1px solid #da9e10; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - transform: translateX(-21.5px); -} -[legcord-platform="darwin"] .titlebar #window-controls-container #maximize { - background-color: #39ea49; - transition: background-color 0.1s ease-in; - border: 1px solid #13c11e; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - transform: translateX(21.5px); -} -[legcord-platform="darwin"] .titlebar #window-controls-container #quit { - background-color: #f25056; - transition: background-color 0.1s ease-in; - border: 1px solid #d52735; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="darwin"] .titlebar #window-controls-container:hover #maximize:active { - background-color: #13c11e; -} -[legcord-platform="darwin"] .titlebar #window-controls-container:hover #minimize:active { - background-color: #da9e10; -} -[legcord-platform="darwin"] .titlebar #window-controls-container:hover #quit:active { - background-color: #d52735; -} -[legcord-platform="darwin"] .titlebar #window-controls-container #spacer, -[legcord-platform="darwin"] .titlebar #window-controls-container #minimize, -[legcord-platform="darwin"] .titlebar #window-controls-container #maximize, -[legcord-platform="darwin"] .titlebar #window-controls-container #quit { - float: right; - height: 80%; - width: 13%; - text-align: center; - color: transparent; - cursor: default; -} - -[legcord-platform="darwin"] .titlebar #window-controls-container #minimize-icon, -[legcord-platform="darwin"] .titlebar #window-controls-container #maximize-icon, -[legcord-platform="darwin"] .titlebar #window-controls-container #quit-icon { - display: none; -} - -[legcord-platform="darwin"] .titlebar #window-controls-container #spacer { - display: none; -} - -[legcord-platform="darwin"] .window-title { - float: none; - position: fixed; - left: 50%; -} - -.window-title { - content: url("legcord://assets/Wordmark.png"); - height: 15px; - margin-left: initial; - transform: translate(9px, 9px); - float: left; - padding: 0; - filter: invert(30%); -} - -div#app-mount { - height: calc(100% - 30px); - position: absolute; - bottom: 0; -} diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css new file mode 100644 index 0000000..9542efd --- /dev/null +++ b/assets/app/css/winTitlebar.css @@ -0,0 +1,3 @@ +a[href="https://support.discord.com"] { + margin-right: 150px; +} diff --git a/src/@types/settings.d.ts b/src/@types/settings.d.ts index 0144652..72ff45e 100644 --- a/src/@types/settings.d.ts +++ b/src/@types/settings.d.ts @@ -31,7 +31,7 @@ export interface Settings { // Only used for external url warning dialog. ignoreProtocolWarning?: boolean; customIcon: string; - windowStyle: "default" | "native" | "overlay" | "transparent"; + windowStyle: "default" | "native" | "overlay" | "transparent" | "rebrand"; channel: "stable" | "ptb" | "canary"; transparency: "universal" | "modern" | "none"; audio: AudioSettings; diff --git a/src/discord/preload/newTitlebar.mts b/src/discord/preload/newTitlebar.mts index 9ca8c11..8cb0f64 100644 --- a/src/discord/preload/newTitlebar.mts +++ b/src/discord/preload/newTitlebar.mts @@ -1,25 +1,19 @@ +const { ipcRenderer } = require("electron"); import { addStyle } from "../../common/dom.js"; import { sleep } from "../../common/sleep.js"; -// titlebar for discord visual refresh -const titlebarHTML = ` -
    -
    -
    -
    -
    -
    `; document.addEventListener("DOMContentLoaded", () => { + if (ipcRenderer.sendSync("getConfig", "windowStyle") === "rebrand") return; sleep(500); - const targetElement = document.querySelector('a[href="https://support.discord.com"]'); - //if (!targetElement?.classList.toString().includes("anchor")) return; - addStyle("legcord://assets/css/newTitlebar.css"); - - document.body.setAttribute("legcord-platform", "win32"); - if (targetElement) { - targetElement.append(titlebarHTML); - document.body.setAttribute("customTitlebar", ""); - } else { - alert(1); + switch (ipcRenderer.sendSync("getOS")) { + case "darwin": + document.body.setAttribute("class", "platform-osx"); + break; + case "win32": + document.body.setAttribute("class", "platform-win"); + addStyle("legcord://assets/css/winTitlebar.css"); + break; + default: + break; } }); diff --git a/src/discord/preload/preload.mts b/src/discord/preload/preload.mts index 7f33d94..b925c6e 100644 --- a/src/discord/preload/preload.mts +++ b/src/discord/preload/preload.mts @@ -5,8 +5,10 @@ import "./mods/vencord.mjs"; import "./mods/equicord.mjs"; import "./mods/custom.mjs"; import "./patches.mjs"; +import "./newTitlebar.mjs"; import "./titlebar.mjs"; import "./themes.js"; + console.log("Legcord"); window.localStorage.setItem("hideNag", "true"); declare global { diff --git a/src/discord/window.ts b/src/discord/window.ts index d0e7a12..fd78a75 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -364,6 +364,18 @@ export function createWindow() { y: 10, }; break; + case "rebrand": + browserWindowOptions.titleBarStyle = "hidden"; + browserWindowOptions.titleBarOverlay = { + color: "#28282D", + symbolColor: "#99aab5", + height: 36, + }; + browserWindowOptions.trafficLightPosition = { + x: 10, + y: 10, + }; + break; } switch (getConfig("transparency")) { case "universal": diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index 308b051..d92372e 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -65,6 +65,9 @@ export function SettingsPage() { + + +
    Date: Sat, 15 Mar 2025 17:54:06 +0100 Subject: [PATCH 682/896] fix: include venmic on prod too --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7739bf5..7cffd7d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "build:dev": "rollup -c --environment BUILD:dev && tsx scripts/copyVenmic.mts", "build:plugins": "lune ci --repoSubDir src/shelter --to ts-out/plugins", - "build": "pnpm build:plugins && rollup -c --environment BUILD:prod", + "build": "pnpm build:plugins && rollup -c --environment BUILD:prod && tsx scripts/copyVenmic.mts", "start": "pnpm build:plugins && pnpm run build:dev && electron --trace-warnings --ozone-platform-hint=auto ./ts-out/main.js", "startThemeManager": "pnpm run build:dev && electron ./ts-out/main.js themes", "package": "pnpm run build && electron-builder", From ec3e9e4d1f7623185528ee951640d2d7ea4e222b Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 15 Mar 2025 19:38:41 +0100 Subject: [PATCH 683/896] feat: seperate arRPC into a utility process might help with performance --- assets/app/js/rpc.js | 184 ++++++++---------------------------------- rollup.config.js | 19 +++++ src/discord/window.ts | 33 +++++--- src/rpc.ts | 17 ++++ 4 files changed, 90 insertions(+), 163 deletions(-) create mode 100644 src/rpc.ts diff --git a/assets/app/js/rpc.js b/assets/app/js/rpc.js index 616649f..b132ad9 100644 --- a/assets/app/js/rpc.js +++ b/assets/app/js/rpc.js @@ -1,184 +1,64 @@ (() => { - let Dispatcher, - lookupAsset, + let lookupAsset, lookupApp, apps = {}; console.log("Starting RPC Bridge"); LegcordRPC.listen(async (msg) => { - if (!Dispatcher) { + console.log("RPC Bridge", msg); + try { let wpRequire; - window.webpackChunkdiscord_app.push([[Symbol()], {}, (x) => (wpRequire = x)]); + window.webpackChunkdiscord_app.push([[Symbol()], {}, x => wpRequire = x]); window.webpackChunkdiscord_app.pop(); - + const modules = wpRequire.c; - for (const id in modules) { - const mod = modules[id].exports; - - for (const prop in mod) { - const candidate = mod[prop]; - try { - if (candidate && candidate.register && candidate.wait) { - Dispatcher = candidate; - break; - } - } catch { - continue; - } - } - - if (Dispatcher) break; - } - const factories = wpRequire.m; for (const id in factories) { - if (factories[id].toString().includes("getAssetImage: size must === [number, number] for Twitch")) { + if (factories[id].toString().includes('getAssetImage: size must === [number, number] for Twitch')) { const mod = wpRequire(id); // fetchAssetIds - const _lookupAsset = Object.values(mod).find( - (e) => typeof e === "function" && e.toString().includes("APPLICATION_ASSETS_FETCH_SUCCESS"), - ); - if (_lookupAsset) - lookupAsset = async (appId, name) => (await _lookupAsset(appId, [name, undefined]))[0]; + const _lookupAsset = Object.values(mod).find(e => typeof e === 'function' && e.toString().includes('APPLICATION_ASSETS_FETCH_SUCCESS')); + if (_lookupAsset) lookupAsset = async (appId, name) => (await _lookupAsset(appId, [name, undefined]))[0]; } if (lookupAsset) break; } for (const id in factories) { - if (factories[id].toString().includes("APPLICATION_RPC(")) { + if (factories[id].toString().includes('APPLICATION_RPC(')) { const mod = wpRequire(id); // fetchApplicationsRPC - const _lookupApp = Object.values(mod).find((e) => { - if (typeof e !== "function") return; + const _lookupApp = Object.values(mod).find(e => { + if (typeof e !== 'function') return; const str = e.toString(); - return str.includes(",coverImage:") && str.includes("INVALID_ORIGIN"); + return str.includes(',coverImage:') && str.includes('INVALID_ORIGIN'); }); - if (_lookupApp) - lookupApp = async (appId) => { - const socket = {}; - await _lookupApp(socket, appId); - return socket.application; - }; + if (_lookupApp) lookupApp = async appId => { + let socket = {}; + await _lookupApp(socket, appId); + return socket.application; + }; } if (lookupApp) break; } + + if (msg.activity?.assets?.large_image) msg.activity.assets.large_image = await lookupAsset(msg.activity.application_id, msg.activity.assets.large_image); + if (msg.activity?.assets?.small_image) msg.activity.assets.small_image = await lookupAsset(msg.activity.application_id, msg.activity.assets.small_image); + + if (msg.activity) { + const appId = msg.activity.application_id; + if (!apps[appId]) apps[appId] = await lookupApp(appId); + + const app = apps[appId]; + if (!msg.activity.name) msg.activity.name = app.name; + } + } catch (e) { + console.error(e); } - if (msg.activity?.assets?.large_image) - msg.activity.assets.large_image = await lookupAsset( - msg.activity.application_id, - msg.activity.assets.large_image, - ); - if (msg.activity?.assets?.small_image) - msg.activity.assets.small_image = await lookupAsset( - msg.activity.application_id, - msg.activity.assets.small_image, - ); - - if (msg.activity) { - const appId = msg.activity.application_id; - if (!apps[appId]) apps[appId] = await lookupApp(appId); - - const app = apps[appId]; - if (!msg.activity.name) msg.activity.name = app.name; - } - - Dispatcher.dispatch({ type: "LOCAL_ACTIVITY_UPDATE", ...msg }); // set RPC status + shelter.flux.dispatcher.dispatch({ type: 'LOCAL_ACTIVITY_UPDATE', ...msg }); // set RPC status }); -})(); -(() => { - let Dispatcher, - lookupAsset, - lookupApp, - apps = {}; - console.log("Starting RPC Bridge"); - LegcordRPC.listen(async (msg) => { - if (!Dispatcher) { - let wpRequire; - window.webpackChunkdiscord_app.push([[Symbol()], {}, (x) => (wpRequire = x)]); - window.webpackChunkdiscord_app.pop(); - - const modules = wpRequire.c; - - for (const id in modules) { - const mod = modules[id].exports; - - for (const prop in mod) { - const candidate = mod[prop]; - try { - if (candidate && candidate.register && candidate.wait) { - Dispatcher = candidate; - break; - } - } catch { - continue; - } - } - - if (Dispatcher) break; - } - - const factories = wpRequire.m; - for (const id in factories) { - if (factories[id].toString().includes("getAssetImage: size must === [number, number] for Twitch")) { - const mod = wpRequire(id); - - // fetchAssetIds - const _lookupAsset = Object.values(mod).find( - (e) => typeof e === "function" && e.toString().includes("APPLICATION_ASSETS_FETCH_SUCCESS") - ); - if (_lookupAsset) - lookupAsset = async (appId, name) => (await _lookupAsset(appId, [name, undefined]))[0]; - } - - if (lookupAsset) break; - } - - for (const id in factories) { - if (factories[id].toString().includes("APPLICATION_RPC(")) { - const mod = wpRequire(id); - - // fetchApplicationsRPC - const _lookupApp = Object.values(mod).find((e) => { - if (typeof e !== "function") return; - const str = e.toString(); - return str.includes(",coverImage:") && str.includes("INVALID_ORIGIN"); - }); - if (_lookupApp) - lookupApp = async (appId) => { - let socket = {}; - await _lookupApp(socket, appId); - return socket.application; - }; - } - - if (lookupApp) break; - } - } - - if (msg.activity?.assets?.large_image) - msg.activity.assets.large_image = await lookupAsset( - msg.activity.application_id, - msg.activity.assets.large_image - ); - if (msg.activity?.assets?.small_image) - msg.activity.assets.small_image = await lookupAsset( - msg.activity.application_id, - msg.activity.assets.small_image - ); - - if (msg.activity) { - const appId = msg.activity.application_id; - if (!apps[appId]) apps[appId] = await lookupApp(appId); - - const app = apps[appId]; - if (!msg.activity.name) msg.activity.name = app.name; - } - - Dispatcher.dispatch({type: "LOCAL_ACTIVITY_UPDATE", ...msg}); // set RPC status - }); -})(); +})(); \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js index 1417b17..ad6ecee 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -51,6 +51,25 @@ export default defineConfig([ }), ], }, + { + input: "src/rpc.ts", + output: { + dir: "ts-out", + format: "esm", + sourcemap: true, + }, + external: [ + ...electronExternals, + "arrpc", + ], + plugins: [ + commonjs(), + esmShim(), + json(), + minify({ minify: prodEnv }), + typescript(), + ], + }, { input: "src/discord/preload/preload.mts", output: { diff --git a/src/discord/window.ts b/src/discord/window.ts index fd78a75..0b4f623 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -1,11 +1,6 @@ import { readFileSync } from "node:fs"; import os from "node:os"; import path from "node:path"; -import RPCServer from "arrpc"; -// To allow seamless switching between custom titlebar and native os titlebar, -// I had to add most of the window creation code here to split both into separate functions -// WHY? Because I can't use the same code for both due to annoying bug with value `frame` not responding to variables -// I'm sorry for this mess but I'm not sure how to fix it. import { BrowserWindow, type BrowserWindowConstructorOptions, @@ -14,6 +9,7 @@ import { dialog, nativeImage, shell, + utilityProcess, } from "electron"; import contextMenu from "electron-context-menu"; import { firstRun, getConfig, setConfig } from "../common/config.js"; @@ -293,13 +289,28 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { void passedWindow.webContents.executeJavaScript(`document.body.removeAttribute("isMaximized");`); }); if (getConfig("inviteWebsocket") && mainWindows.length === 1) { - const RPC = new RPCServer(); + const child = utilityProcess.fork(path.join(import.meta.dirname, 'rpc.js')) - RPC.on("activity", (data: string) => passedWindow.webContents.send("rpc", data)); - RPC.on("invite", (code: string) => { - console.log(code); - createInviteWindow(code); - }); + child.on('spawn', () => { + console.log("arRPC process started") + console.log(child.pid) + }) + + child.on('message', (message) => { + const json = JSON.parse(message) + if (json.type === "invite") { + createInviteWindow(json.code); + } else if (json.type === "activity") { + console.log("activity pulse") + console.log(json.data) + passedWindow.webContents.send("rpc", json.data); + } + }) + + child.on('exit', () => { + console.log("arRPC process exited") + console.log(child.pid) + }) } if (firstRun) { passedWindow.close(); diff --git a/src/rpc.ts b/src/rpc.ts new file mode 100644 index 0000000..3da0688 --- /dev/null +++ b/src/rpc.ts @@ -0,0 +1,17 @@ +// this file is executed in the utility process +// check window.ts for more details +// see more here https://www.electronjs.org/docs/latest/api/utility-process +import RPCServer from "arrpc"; + +const RPC = new RPCServer(); + +RPC.on("activity", (data: string) => { + console.log(data); + const response = {type: "activity", data: data}; + process.parentPort.postMessage(JSON.stringify(response)); +}); +RPC.on("invite", (code: string) => { + console.log(code); + const response = {type: "invite", code: code}; + process.parentPort.postMessage(JSON.stringify(response)); +}); From 24410982534c9fcc83fe4448433547da4c9f4121 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 15 Mar 2025 19:38:55 +0100 Subject: [PATCH 684/896] chore: linting --- rollup.config.js | 13 ++----------- src/discord/window.ts | 28 ++++++++++++++-------------- src/rpc.ts | 4 ++-- 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/rollup.config.js b/rollup.config.js index ad6ecee..8ee4650 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -58,17 +58,8 @@ export default defineConfig([ format: "esm", sourcemap: true, }, - external: [ - ...electronExternals, - "arrpc", - ], - plugins: [ - commonjs(), - esmShim(), - json(), - minify({ minify: prodEnv }), - typescript(), - ], + external: [...electronExternals, "arrpc"], + plugins: [commonjs(), esmShim(), json(), minify({ minify: prodEnv }), typescript()], }, { input: "src/discord/preload/preload.mts", diff --git a/src/discord/window.ts b/src/discord/window.ts index 0b4f623..64a65c9 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -289,28 +289,28 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { void passedWindow.webContents.executeJavaScript(`document.body.removeAttribute("isMaximized");`); }); if (getConfig("inviteWebsocket") && mainWindows.length === 1) { - const child = utilityProcess.fork(path.join(import.meta.dirname, 'rpc.js')) + const child = utilityProcess.fork(path.join(import.meta.dirname, "rpc.js")); - child.on('spawn', () => { - console.log("arRPC process started") - console.log(child.pid) - }) + child.on("spawn", () => { + console.log("arRPC process started"); + console.log(child.pid); + }); - child.on('message', (message) => { - const json = JSON.parse(message) + child.on("message", (message) => { + const json = JSON.parse(message); if (json.type === "invite") { createInviteWindow(json.code); } else if (json.type === "activity") { - console.log("activity pulse") - console.log(json.data) + console.log("activity pulse"); + console.log(json.data); passedWindow.webContents.send("rpc", json.data); } - }) + }); - child.on('exit', () => { - console.log("arRPC process exited") - console.log(child.pid) - }) + child.on("exit", () => { + console.log("arRPC process exited"); + console.log(child.pid); + }); } if (firstRun) { passedWindow.close(); diff --git a/src/rpc.ts b/src/rpc.ts index 3da0688..2d3fce2 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -7,11 +7,11 @@ const RPC = new RPCServer(); RPC.on("activity", (data: string) => { console.log(data); - const response = {type: "activity", data: data}; + const response = { type: "activity", data: data }; process.parentPort.postMessage(JSON.stringify(response)); }); RPC.on("invite", (code: string) => { console.log(code); - const response = {type: "invite", code: code}; + const response = { type: "invite", code: code }; process.parentPort.postMessage(JSON.stringify(response)); }); From ed2c44542707dabe257b52963e12fc8f965691ac Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 15 Mar 2025 21:24:15 +0100 Subject: [PATCH 685/896] feat: enable speech dispatcher on linux --- src/main.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.ts b/src/main.ts index c1f5434..55fccd4 100644 --- a/src/main.ts +++ b/src/main.ts @@ -73,6 +73,7 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { if (process.platform === "linux") { app.commandLine.appendSwitch("enable-features", "PulseaudioLoopbackForScreenShare"); app.commandLine.appendSwitch("disable-features", "WebRtcAllowInputVolumeAdjustment"); + app.commandLine.appendSwitch("enable-speech-dispatcher"); } // enable webrtc capturer for wayland if (process.platform === "linux" && process.env.XDG_SESSION_TYPE?.toLowerCase() === "wayland") { From 26f784c5c924312fa07e8ceebec0d6a77197dc00 Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 16 Mar 2025 10:12:40 +0100 Subject: [PATCH 686/896] chore: bump electron fixes windows builds --- package.json | 5 +++-- pnpm-lock.yaml | 35 ++++++++++++++--------------------- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index 7cffd7d..4b61d60 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "packageQuick": "pnpm run build && electron-builder --dir", "lint": "biome check", "lint:fix": "biome check --write", + "postinstall": "electron-builder install-app-deps", "CIbuild": "pnpm run build && electron-builder --linux zip && electron-builder --windows zip && electron-builder --macos zip" }, "repository": { @@ -43,7 +44,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "35.0.1", + "electron": "35.0.2", "electron-builder": "^26.0.11", "lucide-solid": "^0.475.0", "rollup": "^4.27.4", @@ -58,7 +59,7 @@ "arrpc": "https://github.com/Legcord/arrpc.git", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", - "electron-updater": "^6.3.9", + "electron-updater": "^6.6.2", "ws": "^8.18.0" }, "optionalDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 145beab..e92aa99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^3.0.1 version: 3.0.1 electron-updater: - specifier: ^6.3.9 - version: 6.3.9 + specifier: ^6.6.2 + version: 6.6.2 ws: specifier: ^8.18.0 version: 8.18.0 @@ -68,8 +68,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 35.0.1 - version: 35.0.1 + specifier: 35.0.2 + version: 35.0.2 electron-builder: specifier: ^26.0.11 version: 26.0.11(electron-builder-squirrel-windows@25.1.8) @@ -1721,11 +1721,11 @@ packages: electron-to-chromium@1.5.90: resolution: {integrity: sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==} - electron-updater@6.3.9: - resolution: {integrity: sha512-2PJNONi+iBidkoC5D1nzT9XqsE8Q1X28Fn6xRQhO3YX8qRRyJ3mkV4F1aQsuRnYPqq6Hw+E51y27W75WgDoofw==} + electron-updater@6.6.2: + resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@35.0.1: - resolution: {integrity: sha512-iQonj6lnPhqfqha2KXx6LzV1dnu6UPTCWK+b7f9Zvg828umGemi22DKbcJ3/q+Opn7iUVTWyqp9z1JQqkIi6OA==} + electron@35.0.2: + resolution: {integrity: sha512-jo8S4GfBpVIBDGitUrv+Vo/I/ZEEs6IvWprG2KJlxayYIKpufulbQaxDt78cC/79FwFo8MA0JOIwx/b9r5NRag==} engines: {node: '>= 12.20.55'} hasBin: true @@ -2748,11 +2748,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.0: resolution: {integrity: sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==} engines: {node: '>=10'} @@ -4386,7 +4381,7 @@ snapshots: builder-util-runtime@9.2.10: dependencies: - debug: 4.3.7 + debug: 4.4.0 sax: 1.4.1 transitivePeerDependencies: - supports-color @@ -4546,7 +4541,7 @@ snapshots: node-api-headers: 1.5.0 npmlog: 6.0.2 rc: 1.2.8 - semver: 7.6.3 + semver: 7.7.0 tar: 6.2.1 url-join: 4.0.1 which: 2.0.2 @@ -4783,20 +4778,20 @@ snapshots: electron-to-chromium@1.5.90: {} - electron-updater@6.3.9: + electron-updater@6.6.2: dependencies: - builder-util-runtime: 9.2.10 + builder-util-runtime: 9.3.1 fs-extra: 10.1.0 js-yaml: 4.1.0 lazy-val: 1.0.5 lodash.escaperegexp: 4.1.2 lodash.isequal: 4.5.0 - semver: 7.6.3 + semver: 7.7.0 tiny-typed-emitter: 2.1.0 transitivePeerDependencies: - supports-color - electron@35.0.1: + electron@35.0.2: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 @@ -5906,8 +5901,6 @@ snapshots: semver@6.3.1: {} - semver@7.6.3: {} - semver@7.7.0: {} serialize-error@7.0.1: From d974d27fb6d424e9c50c95675fa56ae8d952b42b Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 16 Mar 2025 10:16:30 +0100 Subject: [PATCH 687/896] v1.1.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4b61d60..71c9cb7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "legcord", - "version": "1.1.0", + "version": "1.1.1", "description": "Legcord is a custom client designed to enhance your Discord experience while keeping everything lightweight.", "main": "ts-out/main.js", "engines": { From 2f6beb8bf24d117c30877025d246fcc3cf727664 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 27 Mar 2025 10:19:05 +0100 Subject: [PATCH 688/896] feat: remove the download apps button correctly + some css fixes --- assets/app/css/discord.css | 6 +++--- src/common/dom.ts | 2 +- src/discord/preload/patches.mts | 5 ----- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/assets/app/css/discord.css b/assets/app/css/discord.css index e8aaf00..4e3bf63 100644 --- a/assets/app/css/discord.css +++ b/assets/app/css/discord.css @@ -10,16 +10,16 @@ color: var(--text-muted); } -[data-list-item-id="guildsnav___app-download-button"] { +div:has(:has(:has([data-list-item-id="guildsnav___app-download-button"]))) { display: none !important; } /* custom keybinds are not supported on web information */ -.container_be45f6.info_be45f6.browserNotice_f916fc { +.container__6436f.info__6436f.browserNotice__740f2 { visibility: hidden; display: block !important; } -.container_be45f6.info_be45f6.browserNotice_f916fc:after { +.container__6436f.info__6436f.browserNotice__740f2:after { content: "You can modify global keybinds using the keybind maker on the left sidebar"; visibility: visible; } diff --git a/src/common/dom.ts b/src/common/dom.ts index 53aafee..b690acd 100644 --- a/src/common/dom.ts +++ b/src/common/dom.ts @@ -15,7 +15,7 @@ export function addTheme(id: string, styleString: string): void { export function addScript(scriptString: string): void { const script = document.createElement("script"); - script.src = scriptString; + script.appendChild(document.createTextNode(scriptString)); document.body.append(script); } diff --git a/src/discord/preload/patches.mts b/src/discord/preload/patches.mts index 3fdd65b..7f6afbb 100644 --- a/src/discord/preload/patches.mts +++ b/src/discord/preload/patches.mts @@ -52,11 +52,6 @@ async function load() { }); })(); `); - - // remove the annoying "download the app" button - addScript( - "document.querySelector('.guilds_a4d4d9 .scroller_fea3ef').lastChild.previousSibling.style.display = 'none';", - ); addScript(` shelter.plugins.removePlugin("armcord-settings") shelter.plugins.removePlugin("armcord-screenshare") From 2d2b9e3bb29a6bb7ac591a33d32c1df24e19bc7b Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 27 Mar 2025 10:19:20 +0100 Subject: [PATCH 689/896] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 71c9cb7..3fc5174 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "legcord", - "version": "1.1.1", + "version": "1.1.2", "description": "Legcord is a custom client designed to enhance your Discord experience while keeping everything lightweight.", "main": "ts-out/main.js", "engines": { From 06468a51c07fee6484e64a57c51556a5d957bda2 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 27 Mar 2025 10:30:27 +0100 Subject: [PATCH 690/896] bump electron --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- src/discord/preload/bridge.ts | 1 - 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 3fc5174..fe03a55 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "35.0.2", + "electron": "35.1.1", "electron-builder": "^26.0.11", "lucide-solid": "^0.475.0", "rollup": "^4.27.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e92aa99..ae0c8a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,8 +68,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 35.0.2 - version: 35.0.2 + specifier: 35.1.1 + version: 35.1.1 electron-builder: specifier: ^26.0.11 version: 26.0.11(electron-builder-squirrel-windows@25.1.8) @@ -1724,8 +1724,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@35.0.2: - resolution: {integrity: sha512-jo8S4GfBpVIBDGitUrv+Vo/I/ZEEs6IvWprG2KJlxayYIKpufulbQaxDt78cC/79FwFo8MA0JOIwx/b9r5NRag==} + electron@35.1.1: + resolution: {integrity: sha512-0c4q8SuYsec9uqb1d2B/FDP/pifAT/Rc7721EjUdRfTKABFqXgYKAtyEKIlmFPjxPbwQt2EMfL35zVmpEAGI3A==} engines: {node: '>= 12.20.55'} hasBin: true @@ -4791,7 +4791,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@35.0.2: + electron@35.1.1: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 diff --git a/src/discord/preload/bridge.ts b/src/discord/preload/bridge.ts index 16a414b..93e83ac 100644 --- a/src/discord/preload/bridge.ts +++ b/src/discord/preload/bridge.ts @@ -88,7 +88,6 @@ contextBridge.exposeInMainWorld("legcord", { let windowCallback: (arg0: object) => void; contextBridge.exposeInMainWorld("LegcordRPC", { - // REVIEW - I don't think this is right listen: (callback: () => void) => { windowCallback = callback; }, From 98b583160d131223abc1b34365df19e20f7790b9 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 27 Mar 2025 11:17:46 +0100 Subject: [PATCH 691/896] feat: rolldown bundler will replace rollup in the future, 8x faster builds --- package.json | 5 +- pnpm-lock.yaml | 196 +++++++++++++++++++++++++++++++++++++++++++++ rolldown.config.js | 112 ++++++++++++++++++++++++++ 3 files changed, 312 insertions(+), 1 deletion(-) create mode 100644 rolldown.config.js diff --git a/package.json b/package.json index fe03a55..fa67401 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "build:dev": "rollup -c --environment BUILD:dev && tsx scripts/copyVenmic.mts", "build:plugins": "lune ci --repoSubDir src/shelter --to ts-out/plugins", "build": "pnpm build:plugins && rollup -c --environment BUILD:prod && tsx scripts/copyVenmic.mts", - "start": "pnpm build:plugins && pnpm run build:dev && electron --trace-warnings --ozone-platform-hint=auto ./ts-out/main.js", + "buildNew": "rolldown -c rolldown.config.js && tsx scripts/copyVenmic.mts", + "start": "pnpm build:plugins && pnpm run buildNew && electron --trace-warnings --ozone-platform-hint=auto ./ts-out/main.js", "startThemeManager": "pnpm run build:dev && electron ./ts-out/main.js themes", "package": "pnpm run build && electron-builder", "packageQuick": "pnpm run build && electron-builder --dir", @@ -31,6 +32,7 @@ }, "homepage": "https://github.com/Legcord/Legcord#readme", "devDependencies": { + "@babel/preset-flow": "^7.25.9", "@biomejs/biome": "1.9.4", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.1", @@ -47,6 +49,7 @@ "electron": "35.1.1", "electron-builder": "^26.0.11", "lucide-solid": "^0.475.0", + "rolldown": "1.0.0-beta.7", "rollup": "^4.27.4", "rollup-plugin-copy": "^3.5.0", "rollup-plugin-esbuild": "^6.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae0c8a5..20145c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,6 +28,9 @@ importers: specifier: ^6.1.0 version: 6.1.0 devDependencies: + '@babel/preset-flow': + specifier: ^7.25.9 + version: 7.25.9(@babel/core@7.26.7) '@biomejs/biome': specifier: 1.9.4 version: 1.9.4 @@ -76,6 +79,9 @@ importers: lucide-solid: specifier: ^0.475.0 version: 0.475.0(solid-js@1.9.3) + rolldown: + specifier: 1.0.0-beta.7 + version: 1.0.0-beta.7(typescript@5.7.2) rollup: specifier: ^4.27.4 version: 4.27.4 @@ -194,6 +200,12 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-syntax-flow@7.26.0': + resolution: {integrity: sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.25.9': resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} @@ -206,6 +218,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-flow-strip-types@7.26.5': + resolution: {integrity: sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.26.3': resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} engines: {node: '>=6.9.0'} @@ -218,6 +236,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-flow@7.25.9': + resolution: {integrity: sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.26.0': resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} engines: {node: '>=6.9.0'} @@ -839,6 +863,9 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This functionality has been moved to @npmcli/fs + '@oxc-project/types@0.61.2': + resolution: {integrity: sha512-rfuwJwvwn9MRthHNXlSo9Eka/u7gC0MhnWAoX3BhE1+rwPOl22nq0K0Y997Hof0tHCOuD7H3/Z8HTfCVhB4c5Q==} + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -930,61 +957,121 @@ packages: cpu: [arm64] os: [darwin] + '@rolldown/binding-darwin-arm64@1.0.0-beta.7': + resolution: {integrity: sha512-spVRMdG9NotVYfrc94W8zMKEqLFbxm/dzkBjTfKzXMqhyBryo1lwZ14o8xFb3lM/ON/ZUT7laR9y+r6SIUtFrg==} + cpu: [arm64] + os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-beta.1': resolution: {integrity: sha512-+WHRLrogJl99EQ6HtYhy7EwIZ1wicD0RSX2T5mjfOM6AmPwPTXQ0n6MKOs1abU6ZyCj5Izlo6rLsao0h9FMUDA==} cpu: [x64] os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-beta.7': + resolution: {integrity: sha512-6d6PicpBNLWJUyGO1b87QOBtQuqL1X9qVugi+kyGcChxW2bL87/CIBAJDu1g3mM62xSzxUitGa2YWRMhMJu2OA==} + cpu: [x64] + os: [darwin] + '@rolldown/binding-freebsd-x64@1.0.0-beta.1': resolution: {integrity: sha512-ZP9Q1q4IfvJ8dfWTHOF3cquNpAKuQQ+kZJQTxo85fGnKqtqMWFNouaBVd79pqCxU3w4oIjuZ8o55qNDomMTbVA==} cpu: [x64] os: [freebsd] + '@rolldown/binding-freebsd-x64@1.0.0-beta.7': + resolution: {integrity: sha512-RCKUAMUr1+F1wDSUmWUoGimCNAoQ9km5SRIEhrTlCOXe4wv+rY4o07cTaBjehBm+GtT+u0r36SW2gOmikivj9Q==} + cpu: [x64] + os: [freebsd] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.1': resolution: {integrity: sha512-B/R4Vt8f8z/WmW9Y9NMgA+t5bCfRLmgZohs5mWf8KoD5FRlpvJtCo/SnD7fEg9npHEP5A28+Cikiyd7aCcKPSA==} cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.7': + resolution: {integrity: sha512-SRGp4RaUC2oFZTDtLSRePWWE5F4C5vrlsr/a3+/mBlBVUdSrB7341hqAEcezW3YYHQOT/j9CPXu2NULENSywwQ==} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.1': resolution: {integrity: sha512-xkGD+YLH+vQZiqxKEsXe8xS/owQXkyARaNB9NfFrAacLoNIRZM5UEZGNKxXyRWd1kSEkYkJ3/WiqvGGCcqUg1A==} cpu: [arm64] os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.7': + resolution: {integrity: sha512-q6Szr5o54lJWir2uYxwxDoOUdSCrA2Nb8sKqQRnJHP9985o0uxeq85LKvMubFRgTKq9Q71ZZPrZBs7pwr4ji1Q==} + cpu: [arm64] + os: [linux] + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.1': resolution: {integrity: sha512-Ey2UxKFL74JuWpdNl9stpV0kxHZIgCWCEUnDnpQ1hcBwO9KwDM5qicLtXfsjozD6vt+xzbrL2D/uTrziYZ7IDQ==} cpu: [arm64] os: [linux] + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.7': + resolution: {integrity: sha512-MiEE4ReEw7jdxKE8eKTdt3z7N1sucgSb1J0BUY3Dd8YKLjh2jNYHhJu13/tCo2DBMZxT+FDJE3WJ5kCxZA7+YA==} + cpu: [arm64] + os: [linux] + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.1': resolution: {integrity: sha512-a8QP35x/3mggWqCpFtaF3/PbWl5P9QKpP/muk3iMPgzrXto8zPsEl3imsP3EBh4KwanBVHIf8pEkBQ+/7iMTgQ==} cpu: [x64] os: [linux] + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.7': + resolution: {integrity: sha512-2yDNUKQidgcZr/VSJCUy9IGvtcF/GfBEBrCsqvSkVKMNLNySICvybAwKtCNPeZSOwf875CWnnyKNeg5vwV6rMg==} + cpu: [x64] + os: [linux] + '@rolldown/binding-linux-x64-musl@1.0.0-beta.1': resolution: {integrity: sha512-uIqKwnkZjTY8FmqGMaSjwtWlCdV88LV9bjdkv+mb7I+BBw+9cJlIQy0P8YnGEOEcnDPis/SiraCpkJ/eHYaSZw==} cpu: [x64] os: [linux] + '@rolldown/binding-linux-x64-musl@1.0.0-beta.7': + resolution: {integrity: sha512-72LjHkY9Sqav35qopNh4fabhSsqKWmOwMtjmrNgONTtC5LhALjNZlaXkAaFvQRJ8N7ftT8BOITzaZeqrF6BYdg==} + cpu: [x64] + os: [linux] + '@rolldown/binding-wasm32-wasi@1.0.0-beta.1': resolution: {integrity: sha512-RB+gbhwZtTbKbvHzUcaRFva2ONCUTuxDEb/b3/rd3O82OTPUZzOY24mqreiXH1XG09p6WFXSE8dzUrN120Q29w==} engines: {node: '>=14.21.3'} cpu: [wasm32] + '@rolldown/binding-wasm32-wasi@1.0.0-beta.7': + resolution: {integrity: sha512-sR8q2p3j5ZCkFWPbm6LUIYE7SHfmrVqXu0n4CFpzmAM95pDhFRx8SzT/oL5tkFN+mCdnPpzcvpn9OioVXQ8CxA==} + engines: {node: '>=14.21.3'} + cpu: [wasm32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.1': resolution: {integrity: sha512-NSccQD7+9vhEfDMc8HyODuUU1jLYEsEiICc1zwmbeg0FXx1pwpFpZZQby4bAMnK2obav7D9FfsruYWodhNdIqQ==} cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.7': + resolution: {integrity: sha512-eeSNGdZt01NelYGl5LZc3cSwN4iYG5XE8zMqkILErfW6ndpc74DKeDWI0aG8jmtjz5VerLA4B9DzOkhuFj4lNg==} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.1': resolution: {integrity: sha512-bUQOqqHfqgX9gHGZFGVYQRtc4+9diFDS/f85dKrzzUg7MF91ZU9mJUoemL4eyyj3B83N3FlHZtAPvDX3N2Zz8A==} cpu: [ia32] os: [win32] + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.7': + resolution: {integrity: sha512-d7Uhs3LWirrE4+TRa2N25AqrZaZjYZdOrKSYbZFMF42tFkWIgGWPCQouTqjMgjVGX0feJpF7+9dwVhjZFzZbYA==} + cpu: [ia32] + os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.1': resolution: {integrity: sha512-k8Ld05OlxkzR/+Ob8+IESaZ4uFcgLwbbwtUZLoryn3S6lCogkclcN/4m1wo/PyWtUAWF5mdz83SrkRL8dS4AqA==} cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.7': + resolution: {integrity: sha512-Z3P1JHx+U7Sr73v5wJtEygxboF2VR9ds4eSAgFfslhIxFI48FFm+WEMeuLLeqnx0tiq1UL6cIIg5+h3mlaG6UA==} + cpu: [x64] + os: [win32] + '@rollup/plugin-babel@6.0.4': resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} engines: {node: '>=14.0.0'} @@ -1248,6 +1335,11 @@ packages: '@uwu/shelter-defs@1.4.1': resolution: {integrity: sha512-KDQQf7S8yT1/ZxBZ8Ch5zHZ1ps9QcVtRWfnzK0pqrQb++5Tb2hqD0RiL5IrdS765/ZXglq0cgKWB6xesHVCZKg==} + '@valibot/to-json-schema@1.0.0': + resolution: {integrity: sha512-/9crJgPptVsGCL6X+JPDQyaJwkalSZ/52WuF8DiRUxJgcmpNdzYRfZ+gqMEP8W3CTVfuMWPqqvIgfwJ97f9Etw==} + peerDependencies: + valibot: ^1.0.0 + '@vencord/venmic@6.1.0': resolution: {integrity: sha512-YiCtzml/W8tYbGhu3jm5jfbbEnl2slKKARNK0jO+8qV979k9eFnfIRTxvhMN/SWq1h8ZNJdXVwvXpffQwq0RuA==} engines: {node: '>=14.15'} @@ -2698,6 +2790,15 @@ packages: '@babel/runtime': optional: true + rolldown@1.0.0-beta.7: + resolution: {integrity: sha512-IUa/9lZVqgFilYggiY7jxUbmvU4Q8wVvVqsru+AeMldBccBEhTYZ6/XP6cWsznb8Fv49zfYGaeEpJ5WeVdo6Mg==} + hasBin: true + peerDependencies: + '@oxc-project/runtime': 0.61.2 + peerDependenciesMeta: + '@oxc-project/runtime': + optional: true + rollup-plugin-copy@3.5.0: resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} engines: {node: '>=8.3'} @@ -2992,6 +3093,14 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + valibot@1.0.0: + resolution: {integrity: sha512-1Hc0ihzWxBar6NGeZv7fPLY0QuxFMyxwYR2sF1Blu7Wq7EnremwY2W02tit2ij2VJT8HcSkHAQqmFfl77f73Yw==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + validate-html-nesting@1.2.2: resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} @@ -3203,6 +3312,11 @@ snapshots: dependencies: '@babel/types': 7.26.7 + '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -3213,6 +3327,12 @@ snapshots: '@babel/core': 7.26.7 '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-flow-strip-types@7.26.5(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.7) + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -3232,6 +3352,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-flow@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.7) + '@babel/preset-typescript@7.26.0(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -3750,6 +3877,8 @@ snapshots: mkdirp: 1.0.4 rimraf: 3.0.2 + '@oxc-project/types@0.61.2': {} + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -3817,41 +3946,79 @@ snapshots: '@rolldown/binding-darwin-arm64@1.0.0-beta.1': optional: true + '@rolldown/binding-darwin-arm64@1.0.0-beta.7': + optional: true + '@rolldown/binding-darwin-x64@1.0.0-beta.1': optional: true + '@rolldown/binding-darwin-x64@1.0.0-beta.7': + optional: true + '@rolldown/binding-freebsd-x64@1.0.0-beta.1': optional: true + '@rolldown/binding-freebsd-x64@1.0.0-beta.7': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.1': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.7': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.1': optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.7': + optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.1': optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.7': + optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.1': optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.7': + optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-beta.1': optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-beta.7': + optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-beta.1': dependencies: '@napi-rs/wasm-runtime': 0.2.6 optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-beta.7': + dependencies: + '@napi-rs/wasm-runtime': 0.2.6 + optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.1': optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.7': + optional: true + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.1': optional: true + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.7': + optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.1': optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.7': + optional: true + '@rollup/plugin-babel@6.0.4(@babel/core@7.26.7)(rollup@4.27.4)': dependencies: '@babel/core': 7.26.7 @@ -4092,6 +4259,10 @@ snapshots: solid-js: 1.6.16 spitroast: 1.4.4 + '@valibot/to-json-schema@1.0.0(valibot@1.0.0(typescript@5.7.2))': + dependencies: + valibot: 1.0.0(typescript@5.7.2) + '@vencord/venmic@6.1.0': dependencies: cmake-js: 7.3.0 @@ -5827,6 +5998,27 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.1 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.1 + rolldown@1.0.0-beta.7(typescript@5.7.2): + dependencies: + '@oxc-project/types': 0.61.2 + '@valibot/to-json-schema': 1.0.0(valibot@1.0.0(typescript@5.7.2)) + valibot: 1.0.0(typescript@5.7.2) + optionalDependencies: + '@rolldown/binding-darwin-arm64': 1.0.0-beta.7 + '@rolldown/binding-darwin-x64': 1.0.0-beta.7 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.7 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.7 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.7 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.7 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.7 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.7 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.7 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.7 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.7 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.7 + transitivePeerDependencies: + - typescript + rollup-plugin-copy@3.5.0: dependencies: '@types/fs-extra': 8.1.5 @@ -6150,6 +6342,10 @@ snapshots: util-deprecate@1.0.2: {} + valibot@1.0.0(typescript@5.7.2): + optionalDependencies: + typescript: 5.7.2 + validate-html-nesting@1.2.2: {} verror@1.10.1: diff --git a/rolldown.config.js b/rolldown.config.js new file mode 100644 index 0000000..5bbb8d7 --- /dev/null +++ b/rolldown.config.js @@ -0,0 +1,112 @@ +import babel from "@rollup/plugin-babel"; +import esmShim from "@rollup/plugin-esm-shim"; +import json from "@rollup/plugin-json"; +import { defineConfig } from "rolldown"; +import copy from "rollup-plugin-copy"; + +const electronExternals = ["electron", "node:fs", "node:path", "node:os", "node:url", "@vencord/venmic"]; + +export default defineConfig([ + { + input: "src/main.ts", + output: { + dir: "ts-out", + format: "esm", + sourcemap: true, + }, + platform: "node", + external: [ + ...electronExternals, + "electron", + "electron-is-dev", + "electron-updater", + "electron-context-menu", + "arrpc", + "path", + "stream", + "stream/promises", + ], + plugins: [ + esmShim(), + json(), + copy({ + targets: [ + { src: "src/**/**/*.html", dest: "ts-out/html/" }, + { src: "src/**/**/*.css", dest: "ts-out/css/" }, + { src: "src/**/**/*.js", dest: "ts-out/js/" }, + { src: "package.json", dest: "ts-out/" }, + { src: "assets/**/**", dest: "ts-out/assets/" }, + ], + }), + ], + }, + { + input: "src/rpc.ts", + output: { + dir: "ts-out", + format: "esm", + sourcemap: true, + }, + external: [...electronExternals, "arrpc"], + plugins: [esmShim(), json()], + }, + { + input: "src/discord/preload/preload.mts", + output: { + dir: "ts-out/discord", + entryFileNames: "[name].mjs", + format: "esm", + sourcemap: true, + }, + external: electronExternals, + }, + { + input: "src/splash/preload.mts", + output: { + dir: "ts-out/splash", + format: "esm", + entryFileNames: "[name].mjs", + sourcemap: true, + }, + external: electronExternals, + }, + { + input: "src/setup/preload.mts", + output: { + dir: "ts-out/setup", + format: "esm", + entryFileNames: "[name].mjs", + sourcemap: true, + }, + external: electronExternals, + }, + { + input: "src/cssEditor/preload.mts", + output: { + dir: "ts-out/cssEditor", + format: "esm", + entryFileNames: "[name].mjs", + sourcemap: true, + }, + external: electronExternals, + }, + { + input: "src/setup/setup.tsx", + output: { + dir: "ts-out/html", + format: "esm", + entryFileNames: "[name].js", + sourcemap: true, + }, + platform: "browser", + external: electronExternals, + plugins: [ + babel({ + presets: ["solid", "@babel/preset-flow"], + babelHelpers: "bundled", + exclude: "node_modules/**", + extensions: [".ts", ".tsx"], + }), + ], + }, +]); From 3dda27c303fe4fb1c2a6870ee4f68d2515ec6cd5 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 27 Mar 2025 16:20:06 +0100 Subject: [PATCH 692/896] fix: rebrand css --- src/discord/preload/newTitlebar.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/discord/preload/newTitlebar.mts b/src/discord/preload/newTitlebar.mts index 8cb0f64..66e0f66 100644 --- a/src/discord/preload/newTitlebar.mts +++ b/src/discord/preload/newTitlebar.mts @@ -3,7 +3,7 @@ import { addStyle } from "../../common/dom.js"; import { sleep } from "../../common/sleep.js"; document.addEventListener("DOMContentLoaded", () => { - if (ipcRenderer.sendSync("getConfig", "windowStyle") === "rebrand") return; + if (ipcRenderer.sendSync("getConfig", "windowStyle") !== "rebrand") return; sleep(500); switch (ipcRenderer.sendSync("getOS")) { case "darwin": From 8f222227edc4893dc42cbb996ede4e691046965d Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 4 Apr 2025 08:12:27 +0200 Subject: [PATCH 693/896] feat: overlay rebrand adaptation --- assets/app/css/winTitlebar.css | 31 +++++++++++++++++++++ src/@types/settings.d.ts | 1 + src/common/config.ts | 1 + src/discord/preload/mods/shelter.mts | 1 + src/discord/window.ts | 18 ++---------- src/shelter/titlebar/index.ts | 41 ++++++++++++++++++++++++++++ src/shelter/titlebar/plugin.json | 5 ++++ 7 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 src/shelter/titlebar/index.ts create mode 100644 src/shelter/titlebar/plugin.json diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index 9542efd..9b59204 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -1,3 +1,34 @@ a[href="https://support.discord.com"] { margin-right: 150px; } + +.titlebar { + display: block; + top: 0; + left: 0; + right: 0; + flex-shrink: 0; + overflow: hidden; + zoom: 1; + box-sizing: border-box; + width: 100%; + clear: both; + height: 36px; + line-height: 30px; + -webkit-app-region: drag !important; + user-select: none; + background-color: var(--background-base-lowest); + -webkit-user-select: none; + position: fixed; + z-index: 99999; +} + +.window-title { + content: url("legcord://assets/Wordmark.png"); + height: 15px; + margin-left: initial; + transform: translate(9px, 9px); + float: left; + padding: 0; + filter: invert(30%); +} \ No newline at end of file diff --git a/src/@types/settings.d.ts b/src/@types/settings.d.ts index 72ff45e..852f723 100644 --- a/src/@types/settings.d.ts +++ b/src/@types/settings.d.ts @@ -65,5 +65,6 @@ export interface Settings { autoScroll: boolean; additionalArguments: string; noBundleUpdates: boolean; + overlayButtonColor: string; modCache?: Record; } diff --git a/src/common/config.ts b/src/common/config.ts index 9060810..c547234 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -10,6 +10,7 @@ const defaults: Settings = { bounceOnPing: false, legcordCSP: true, minimizeToTray: true, + overlayButtonColor: "#121214", keybinds: [], audio: { workaround: false, diff --git a/src/discord/preload/mods/shelter.mts b/src/discord/preload/mods/shelter.mts index 8e5a881..213f3ec 100644 --- a/src/discord/preload/mods/shelter.mts +++ b/src/discord/preload/mods/shelter.mts @@ -6,6 +6,7 @@ const requiredPlugins: Record + +const { + util: { log }, + flux: { dispatcher }, +} = shelter; +const titlebarOverlayHTML = ``; + +let isTitlebarOn = false; + +function layerPush(payload: {type: string, component: string}) { + console.log(payload.component) + if (payload.component === "USER_SETTINGS") { + const elem = document.createElement("div"); + elem.innerHTML = titlebarOverlayHTML; + elem.id = "legcordTitlebar" + isTitlebarOn = true; + document.body.prepend(elem); + } +} + +function layerPop() { + console.log("pop!") + document.getElementById("legcordTitlebar")?.remove() + isTitlebarOn = false; +} + +export function onLoad() { + if (window.legcord.platform === "win32") { + log("Legcord Titlebar Controller"); + dispatcher.subscribe("LAYER_PUSH", layerPush); + dispatcher.subscribe("LAYER_POP", layerPop); + } +} + +export function onUnload() { + dispatcher.unsubscribe("LAYER_PUSH", layerPush); + dispatcher.unsubscribe("LAYER_POP", layerPop); +} diff --git a/src/shelter/titlebar/plugin.json b/src/shelter/titlebar/plugin.json new file mode 100644 index 0000000..88e4fec --- /dev/null +++ b/src/shelter/titlebar/plugin.json @@ -0,0 +1,5 @@ +{ + "name": "Legcord Titlebar Controller", + "author": "smartfrigde", + "description": "Useful hooks into Discord for our custom titlebar implementation" +} \ No newline at end of file From fcf4881b4a8c32bef3ac7f5e318b046a872d1158 Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 4 Apr 2025 09:26:30 +0200 Subject: [PATCH 694/896] feat: custom rebrand titlebar --- assets/app/css/winTitlebar.css | 106 +++++++++++++++++++- src/@types/legcordWindow.d.ts | 4 + src/@types/settings.d.ts | 2 +- src/discord/preload/bridge.ts | 4 + src/discord/preload/newTitlebar.mts | 2 +- src/discord/preload/titlebar.mts | 11 +- src/shelter/settings/pages/SettingsPage.tsx | 8 +- src/shelter/titlebar/index.ts | 71 +++++++++++-- src/shelter/titlebar/plugin.json | 2 +- 9 files changed, 180 insertions(+), 30 deletions(-) diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index 9b59204..f629f7d 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -31,4 +31,108 @@ a[href="https://support.discord.com"] { float: left; padding: 0; filter: invert(30%); -} \ No newline at end of file +} + +/* Legcord on Windows */ +[legcord-platform="win32"] #window-controls-container { + width: 142px; +} +[legcord-platform="win32"] #window-controls-container #minimize:hover { + background-color: var(--background-modifier-hover); + transition: 0.2s ease; +} +[legcord-platform="win32"] #window-controls-container #maximize:hover { + background-color: var(--background-modifier-hover); + transition: 0.2s ease; +} +[legcord-platform="win32"] #window-controls-container #minimize:hover #minimize-icon { + background-color: var(--interactive-hover); + transition: 0.2s ease; +} +[legcord-platform="win32"] #window-controls-container #maximize:hover #maximize-icon { + background-color: var(--interactive-hover); + transition: 0.2s ease; +} +[legcord-platform="win32"] #window-controls-container #quit:hover { + background-color: #e81123; + transition: 0.2s ease; +} +[legcord-platform="win32"] #window-controls-container #quit:hover #quit-icon { + background-color: #ffffff; + transition: 0.1s ease; +} +[legcord-platform="win32"] #window-controls-container #minimize { + background-color: transparent; + transition: 0.1s ease; +} +[legcord-platform="win32"] #window-controls-container #maximize { + background-color: transparent; + transition: 0.1s ease; +} +[legcord-platform="win32"] #window-controls-container #quit { + background-color: transparent; + transition: 0.1s ease; +} +[legcord-platform="win32"] #window-controls-container #quit:active { + background-color: #f1707a; + transition: 0.1s ease; +} +[legcord-platform="win32"] #window-controls-container #quit:active #quit-icon { + background-color: #000000cc; + transition: 0.1s ease; +} +[legcord-platform="win32"] #window-controls-container #quit-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="win32"] #window-controls-container #minimize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="win32"] #window-controls-container #maximize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} + +[legcord-platform="win32"][isMaximized] #window-controls-container #maximize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +#window-controls-container { + float: right; + display: flex; + height: 100%; + position: sticky; + right: 0; + top: 0; + z-index: 99999999; + line-height: 36px; + -webkit-app-region: no-drag; +} + +#window-controls-container #minimize, +#window-controls-container #maximize, +#window-controls-container #quit { + float: left; + height: 100%; + width: 33.3%; + text-align: center; + color: var(--interactive-normal); + cursor: default; +} diff --git a/src/@types/legcordWindow.d.ts b/src/@types/legcordWindow.d.ts index 3c455bb..75ab3b7 100644 --- a/src/@types/legcordWindow.d.ts +++ b/src/@types/legcordWindow.d.ts @@ -9,6 +9,10 @@ export interface LegcordWindow { hide: () => void; minimize: () => void; maximize: () => void; + unmaximize: () => void; + quit: () => void; + maximized: () => boolean; + isNormal: () => boolean; }; electron: string; getLang: (toGet: string) => Promise; diff --git a/src/@types/settings.d.ts b/src/@types/settings.d.ts index 852f723..e261d3a 100644 --- a/src/@types/settings.d.ts +++ b/src/@types/settings.d.ts @@ -31,7 +31,7 @@ export interface Settings { // Only used for external url warning dialog. ignoreProtocolWarning?: boolean; customIcon: string; - windowStyle: "default" | "native" | "overlay" | "transparent" | "rebrand"; + windowStyle: "default" | "native" | "overlay" | "transparent" | "legacy"; channel: "stable" | "ptb" | "canary"; transparency: "universal" | "modern" | "none"; audio: AudioSettings; diff --git a/src/discord/preload/bridge.ts b/src/discord/preload/bridge.ts index 93e83ac..1314abb 100644 --- a/src/discord/preload/bridge.ts +++ b/src/discord/preload/bridge.ts @@ -17,6 +17,10 @@ contextBridge.exposeInMainWorld("legcord", { hide: () => ipcRenderer.send("win-hide"), minimize: () => ipcRenderer.send("win-minimize"), maximize: () => ipcRenderer.send("win-maximize"), + unmaximize: () => ipcRenderer.send("win-unmaximize"), + maximized: () => ipcRenderer.sendSync("win-isMaximized"), + isNormal: () => ipcRenderer.sendSync("win-isNormal"), + quit: () => ipcRenderer.send("win-quit"), }, settings: { getConfig: () => ipcRenderer.sendSync("getEntireConfig") as Settings, diff --git a/src/discord/preload/newTitlebar.mts b/src/discord/preload/newTitlebar.mts index 66e0f66..9ef5410 100644 --- a/src/discord/preload/newTitlebar.mts +++ b/src/discord/preload/newTitlebar.mts @@ -3,7 +3,7 @@ import { addStyle } from "../../common/dom.js"; import { sleep } from "../../common/sleep.js"; document.addEventListener("DOMContentLoaded", () => { - if (ipcRenderer.sendSync("getConfig", "windowStyle") !== "rebrand") return; + document.body.setAttribute("legcord-platform", ipcRenderer.sendSync("getOS")); sleep(500); switch (ipcRenderer.sendSync("getOS")) { case "darwin": diff --git a/src/discord/preload/titlebar.mts b/src/discord/preload/titlebar.mts index 961283b..04679f8 100644 --- a/src/discord/preload/titlebar.mts +++ b/src/discord/preload/titlebar.mts @@ -25,9 +25,6 @@ function injectTitlebar(isOverlay?: boolean): void { } document.body.prepend(elem); addStyle("legcord://assets/css/titlebar.css"); - document.body.setAttribute("customTitlebar", ""); - - document.body.setAttribute("legcord-platform", ipcRenderer.sendSync("getOS")); const minimize = document.getElementById("minimize"); const maximize = document.getElementById("maximize"); @@ -65,15 +62,9 @@ function injectTitlebar(isOverlay?: boolean): void { } switch (ipcRenderer.sendSync("getConfig", "windowStyle")) { - case "default": + case "legacy": injectTitlebar(false); break; - case "transparent": - injectTitlebar(false); - break; - case "overlay": - injectTitlebar(true); - break; default: break; } diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index d92372e..bfa21aa 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -62,12 +62,8 @@ export function SettingsPage() { > - - - - - - + + - const { util: { log }, flux: { dispatcher }, @@ -8,30 +7,82 @@ const titlebarOverlayHTML = ``; +const titlebarNavControls = ` +
    +
    +
    +
    +
    +
    +`; + let isTitlebarOn = false; -function layerPush(payload: {type: string, component: string}) { - console.log(payload.component) +const settings = window.legcord.settings.getConfig(); + +function injectButtonControls() { + const elem = document.createElement("div"); + elem.innerHTML = titlebarNavControls; + elem.id = "legcordNavControls"; + document.body.prepend(elem); + const minimize = document.getElementById("minimize"); + const maximize = document.getElementById("maximize"); + const quit = document.getElementById("quit"); + + minimize!.addEventListener("click", () => { + window.legcord.window.minimize(); + }); + + maximize!.addEventListener("click", () => { + if (window.legcord.window.maximized() === true) { + window.legcord.window.unmaximize(); + document.body.removeAttribute("isMaximized"); + } else if (window.legcord.window.isNormal() === true) { + window.legcord.window.maximize(); + } + }); + const minimizeToTray = settings.minimizeToTray; + quit!.addEventListener("click", () => { + if (minimizeToTray === true) { + window.legcord.window.hide(); + } else if (minimizeToTray === false) { + window.legcord.window.quit(); + } + }); +} + +function layerPush(payload: { type: string; component: string }) { + console.log(payload.component); if (payload.component === "USER_SETTINGS") { const elem = document.createElement("div"); elem.innerHTML = titlebarOverlayHTML; - elem.id = "legcordTitlebar" + elem.id = "legcordTitlebar"; isTitlebarOn = true; document.body.prepend(elem); } } function layerPop() { - console.log("pop!") - document.getElementById("legcordTitlebar")?.remove() + console.log("pop!"); + document.getElementById("legcordTitlebar")?.remove(); isTitlebarOn = false; } export function onLoad() { - if (window.legcord.platform === "win32") { - log("Legcord Titlebar Controller"); - dispatcher.subscribe("LAYER_PUSH", layerPush); - dispatcher.subscribe("LAYER_POP", layerPop); + if (window.legcord.platform !== "win32") return; + log("Legcord Titlebar Controller"); + switch (settings.windowStyle) { + case "default": + document.body.setAttribute("customTitlebar", ""); + injectButtonControls(); + break; + case "overlay": + document.body.setAttribute("customTitlebar", ""); + dispatcher.subscribe("LAYER_PUSH", layerPush); + dispatcher.subscribe("LAYER_POP", layerPop); + break; + default: + log("Unsupported window style"); } } diff --git a/src/shelter/titlebar/plugin.json b/src/shelter/titlebar/plugin.json index 88e4fec..bffa8de 100644 --- a/src/shelter/titlebar/plugin.json +++ b/src/shelter/titlebar/plugin.json @@ -2,4 +2,4 @@ "name": "Legcord Titlebar Controller", "author": "smartfrigde", "description": "Useful hooks into Discord for our custom titlebar implementation" -} \ No newline at end of file +} From 8791e9cbde8090f2be7b998f632ff1a3dac72aa4 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 4 Apr 2025 09:39:00 +0200 Subject: [PATCH 695/896] bump electron --- package.json | 4 ++-- pnpm-lock.yaml | 56 +++++++++++++++++++++++++------------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index fa67401..c84fa66 100644 --- a/package.json +++ b/package.json @@ -46,8 +46,8 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "35.1.1", - "electron-builder": "^26.0.11", + "electron": "35.1.3", + "electron-builder": "^26.0.12", "lucide-solid": "^0.475.0", "rolldown": "1.0.0-beta.7", "rollup": "^4.27.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20145c4..7130905 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,11 +71,11 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 35.1.1 - version: 35.1.1 + specifier: 35.1.3 + version: 35.1.3 electron-builder: - specifier: ^26.0.11 - version: 26.0.11(electron-builder-squirrel-windows@25.1.8) + specifier: ^26.0.12 + version: 26.0.12(electron-builder-squirrel-windows@25.1.8) lucide-solid: specifier: ^0.475.0 version: 0.475.0(solid-js@1.9.3) @@ -1409,12 +1409,12 @@ packages: dmg-builder: 25.1.8 electron-builder-squirrel-windows: 25.1.8 - app-builder-lib@26.0.11: - resolution: {integrity: sha512-bsfSjSZp9dg7q28+4NPLJ2ldq3j1ESP2LJ+8AibaPqQb2lTIJeQW1JmgdAs9KuYTtkswiZ/+PMyokC9M7hwnjQ==} + app-builder-lib@26.0.12: + resolution: {integrity: sha512-+/CEPH1fVKf6HowBUs6LcAIoRcjeqgvAeoSE+cl7Y7LndyQ9ViGPYibNk7wmhMHzNgHIuIbw4nWADPO+4mjgWw==} engines: {node: '>=14.0.0'} peerDependencies: - dmg-builder: 26.0.11 - electron-builder-squirrel-windows: 26.0.11 + dmg-builder: 26.0.12 + electron-builder-squirrel-windows: 26.0.12 aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1759,8 +1759,8 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dmg-builder@26.0.11: - resolution: {integrity: sha512-C+SaRneQ11OxG99EeGp3TvPrlkW9ZaiukxB9Z7+OhhO1ge0nAtq9uD0ILt1JpvNAQ1de3gzX7TFRYJrSGsNe+Q==} + dmg-builder@26.0.12: + resolution: {integrity: sha512-59CAAjAhTaIMCN8y9kD573vDkxbs1uhDcrFLHSgutYdPcGOU35Rf95725snvzEOy4BFB7+eLJ8djCNPmGwG67w==} dmg-license@1.0.11: resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} @@ -1787,8 +1787,8 @@ packages: electron-builder-squirrel-windows@25.1.8: resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==} - electron-builder@26.0.11: - resolution: {integrity: sha512-u7Qgge5ue5oOPDbZEseor7RjxKSYAekVflHkbNIY6te1kbtShQFqESq3FZakMBsQf/3SkEycvWhHHRb8zjqBqg==} + electron-builder@26.0.12: + resolution: {integrity: sha512-cD1kz5g2sgPTMFHjLxfMjUK5JABq3//J4jPswi93tOPFz6btzXYtK5NrDt717NRbukCUDOrrvmYVOWERlqoiXA==} engines: {node: '>=14.0.0'} hasBin: true @@ -1816,8 +1816,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@35.1.1: - resolution: {integrity: sha512-0c4q8SuYsec9uqb1d2B/FDP/pifAT/Rc7721EjUdRfTKABFqXgYKAtyEKIlmFPjxPbwQt2EMfL35zVmpEAGI3A==} + electron@35.1.3: + resolution: {integrity: sha512-z7zZtvoK40ynKmgZ5dfD5xhsAXHxNShWgx9vIpC/ZMawBB93sBTWU83gHrjSzAcY9n0Io1WJCyUt/UIQHzlDXA==} engines: {node: '>= 12.20.55'} hasBin: true @@ -4327,7 +4327,7 @@ snapshots: app-builder-bin@5.0.0-alpha.12: {} - app-builder-lib@25.1.8(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@25.1.8(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.5.0 @@ -4343,11 +4343,11 @@ snapshots: chromium-pickle-js: 0.2.0 config-file-ts: 0.2.8-rc1 debug: 4.4.0 - dmg-builder: 26.0.11(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.0.12(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.11) + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.12) electron-publish: 25.1.7 form-data: 4.0.1 fs-extra: 10.1.0 @@ -4367,7 +4367,7 @@ snapshots: - bluebird - supports-color - app-builder-lib@26.0.11(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/asar': 3.2.18 @@ -4384,11 +4384,11 @@ snapshots: chromium-pickle-js: 0.2.0 config-file-ts: 0.2.8-rc1 debug: 4.4.0 - dmg-builder: 26.0.11(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.0.12(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.11) + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.12) electron-publish: 26.0.11 fs-extra: 10.1.0 hosted-git-info: 4.1.0 @@ -4841,9 +4841,9 @@ snapshots: dependencies: path-type: 4.0.0 - dmg-builder@26.0.11(electron-builder-squirrel-windows@25.1.8): + dmg-builder@26.0.12(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.0.11(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8) builder-util: 26.0.11 builder-util-runtime: 9.3.1 fs-extra: 10.1.0 @@ -4880,9 +4880,9 @@ snapshots: dependencies: jake: 10.9.2 - electron-builder-squirrel-windows@25.1.8(dmg-builder@26.0.11): + electron-builder-squirrel-windows@25.1.8(dmg-builder@26.0.12): dependencies: - app-builder-lib: 25.1.8(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 25.1.8(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8) archiver: 5.3.2 builder-util: 25.1.7 fs-extra: 10.1.0 @@ -4891,13 +4891,13 @@ snapshots: - dmg-builder - supports-color - electron-builder@26.0.11(electron-builder-squirrel-windows@25.1.8): + electron-builder@26.0.12(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.0.11(dmg-builder@26.0.11)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8) builder-util: 26.0.11 builder-util-runtime: 9.3.1 chalk: 4.1.2 - dmg-builder: 26.0.11(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.0.12(electron-builder-squirrel-windows@25.1.8) fs-extra: 10.1.0 is-ci: 3.0.1 lazy-val: 1.0.5 @@ -4962,7 +4962,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@35.1.1: + electron@35.1.3: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 From f5f43211f78e49dde566984ad460b72fcf9d3fa5 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:33:17 +0200 Subject: [PATCH 696/896] feat: linux button css --- assets/app/css/winTitlebar.css | 89 +++++++++++++++++++++++++++++ src/discord/preload/newTitlebar.mts | 4 ++ 2 files changed, 93 insertions(+) diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index f629f7d..b98a38e 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -136,3 +136,92 @@ a[href="https://support.discord.com"] { color: var(--interactive-normal); cursor: default; } + +/* Legcord on Linux */ + +[legcord-platform="linux"] #window-controls-container { + line-height: 45px; + transform: translateY(-8px); +} +[legcord-platform="linux"] #window-controls-container #minimize:hover { + background-color: var(--background-modifier-hover); + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #maximize:hover { + background-color: var(--background-modifier-hover); + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #minimize:hover #minimize-icon { + background-color: var(--interactive-hover); + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #maximize:hover #maximize-icon { + background-color: var(--interactive-hover); + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #quit:hover { + background-color: var(--brand-experiment-560); + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #quit #quit-icon { + background-color: #ffffff; + display: list-item; + transition: 0.1s ease; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="linux"] #window-controls-container #minimize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="linux"] #window-controls-container #maximize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} + +[legcord-platform="linux"][isMaximized] #window-controls-container #maximize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="linux"] #window-controls-container #minimize { + background-color: transparent; + transition: 0.1s ease; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="linux"] #window-controls-container #maximize { + background-color: transparent; + transition: 0.1s ease; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="linux"] #window-controls-container #quit { + background-color: var(--brand-experiment); + transition: 0.1s ease; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="linux"] #window-controls-container #quit:active { + background-color: var(--brand-experiment-600); + transition: 0.1s ease; +} diff --git a/src/discord/preload/newTitlebar.mts b/src/discord/preload/newTitlebar.mts index 9ef5410..495a38e 100644 --- a/src/discord/preload/newTitlebar.mts +++ b/src/discord/preload/newTitlebar.mts @@ -13,6 +13,10 @@ document.addEventListener("DOMContentLoaded", () => { document.body.setAttribute("class", "platform-win"); addStyle("legcord://assets/css/winTitlebar.css"); break; + case "linux": + document.body.setAttribute("class", "platform-linux"); + addStyle("legcord://assets/css/winTitlebar.css"); + break; default: break; } From 728750f37b921f2374855b598010d18bec1aef2a Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:40:35 +0200 Subject: [PATCH 697/896] fix: enable titlebar plugin on all platforms --- src/shelter/titlebar/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shelter/titlebar/index.ts b/src/shelter/titlebar/index.ts index 6198968..1db05db 100644 --- a/src/shelter/titlebar/index.ts +++ b/src/shelter/titlebar/index.ts @@ -69,7 +69,6 @@ function layerPop() { } export function onLoad() { - if (window.legcord.platform !== "win32") return; log("Legcord Titlebar Controller"); switch (settings.windowStyle) { case "default": From f1ae18c3363013ed93bea3d2d4af22ddb2b077d0 Mon Sep 17 00:00:00 2001 From: Liam Rooney <80072393+lbrooney@users.noreply.github.com> Date: Fri, 4 Apr 2025 02:30:50 -0700 Subject: [PATCH 698/896] fix: make it so switch flags set all at once (#884) Co-authored-by: Lemon --- src/common/flags.ts | 83 +++++++++++++++++++++++++++++++++------------ src/main.ts | 75 +++++++++++++++++++++++++++++++++------- 2 files changed, 123 insertions(+), 35 deletions(-) diff --git a/src/common/flags.ts b/src/common/flags.ts index 6f7955b..ca6c830 100644 --- a/src/common/flags.ts +++ b/src/common/flags.ts @@ -1,8 +1,61 @@ -import { app, powerMonitor } from "electron"; +import { powerMonitor } from "electron"; import { getConfig } from "./config.js"; -export let transparency: boolean; -export function injectElectronFlags(): void { +interface Preset { + switches: [string, string?][]; + enableFeatures: string[]; + disableFeatures: string[]; +} + +const performance: Preset = { + switches: [ + ["enable-gpu-rasterization"], + ["enable-zero-copy"], + ["ignore-gpu-blocklist"], + ["enable-hardware-overlays", "single-fullscreen,single-on-top,underlay"], + ["force_high_performance_gpu"], + ], + enableFeatures: [ + "EnableDrDc", + "CanvasOopRasterization", + "BackForwardCache:TimeToLiveInBackForwardCacheInSeconds/300/should_ignore_blocklists/true/enable_same_site/true", + "ThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes", + "UseSkiaRenderer", + "WebAssemblyLazyCompilation", + ], + disableFeatures: ["Vulkan"], +}; + +const battery: Preset = { + // Known to have better battery life for Chromium? + switches: [ + ["force_low_power_gpu"], + ["enable-low-end-device-mode"], + ["enable-low-res-tiling"], + ["process-per-site"], + ], + enableFeatures: ["TurnOffStreamingMediaCachingOnBattery"], + disableFeatures: [], +}; + +const vaapi: Preset = { + switches: [ + ["ignore-gpu-blocklist"], + ["enable-gpu-rasterization"], + ["enable-zero-copy"], + ["force_high_performance_gpu"], + ["use-gl", "desktop"], + ], + enableFeatures: [ + "AcceleratedVideoDecodeLinuxGL", + "AcceleratedVideoEncoder", + "AcceleratedVideoDecoder", + "AcceleratedVideoDecodeLinuxZeroCopyGL", + ], + disableFeatures: ["UseChromeOSDirectVideoDecoder"], +}; + +export function getPreset(): Preset | undefined { // MIT License // Copyright (c) 2022 GooseNest @@ -24,39 +77,25 @@ export function injectElectronFlags(): void { // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. - const presets = { - performance: - "--enable-gpu-rasterization --enable-zero-copy --ignore-gpu-blocklist --enable-hardware-overlays=single-fullscreen,single-on-top,underlay --enable-features=EnableDrDc,CanvasOopRasterization,BackForwardCache:TimeToLiveInBackForwardCacheInSeconds/300/should_ignore_blocklists/true/enable_same_site/true,ThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes,UseSkiaRenderer,WebAssemblyLazyCompilation --disable-features=Vulkan --force_high_performance_gpu", // Performance - battery: - "--enable-features=TurnOffStreamingMediaCachingOnBattery --force_low_power_gpu --enable-low-end-device-mode --enable-low-res-tiling --process-per-site", // Known to have better battery life for Chromium? - vaapi: "--ignore-gpu-blocklist --enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoEncoder,AcceleratedVideoDecoder,AcceleratedVideoDecodeLinuxZeroCopyGL --enable-gpu-rasterization --enable-zero-copy --force_high_performance_gpu --use-gl=desktop --disable-features=UseChromeOSDirectVideoDecoder", - }; switch (getConfig("performanceMode")) { case "dynamic": if (powerMonitor.isOnBatteryPower()) { console.log("Battery mode enabled"); - app.commandLine.appendArgument(presets.battery); + return battery; } else { console.log("Performance mode enabled"); - app.commandLine.appendArgument(presets.performance); + return performance; } - break; case "performance": console.log("Performance mode enabled"); - app.commandLine.appendArgument(presets.performance); - break; + return performance; case "battery": console.log("Battery mode enabled"); - app.commandLine.appendArgument(presets.battery); - break; + return battery; case "vaapi": console.log("VAAPI mode enabled"); - app.commandLine.appendArgument(presets.vaapi); - break; + return vaapi; default: console.log("No performance modes set"); } - if (getConfig("windowStyle") === "transparent" && process.platform === "win32") { - transparency = true; - } } diff --git a/src/main.ts b/src/main.ts index 55fccd4..73c7ac5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -14,7 +14,7 @@ import { setConfig, } from "./common/config.js"; import "./updater.js"; -import { injectElectronFlags } from "./common/flags.js"; +import { getPreset } from "./common/flags.js"; import { setLang } from "./common/lang.js"; import { fetchMods } from "./discord/extensions/modloader.js"; import { createWindow } from "./discord/window.js"; @@ -61,24 +61,36 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { app.quit(); } else { app.setAppUserModelId("app.legcord.Legcord"); + + const enableFeatures = new Set(app.commandLine.getSwitchValue("enable-features").split(",")); + const disableFeatures = new Set(app.commandLine.getSwitchValue("disable-features").split(",")); + const enableBlinkFeatures = new Set(app.commandLine.getSwitchValue("enable-blink-features").split(",")); + const disableBlinkFeatures = new Set(app.commandLine.getSwitchValue("disable-blink-features").split(",")); + // unneeded as the last switch is the applied one, however cleans up the commandline + app.commandLine.removeSwitch("enable-features"); + app.commandLine.removeSwitch("disable-features"); + app.commandLine.removeSwitch("enable-blink-features"); + app.commandLine.removeSwitch("disable-blink-features"); + // WinRetrieveSuggestionsOnlyOnDemand: Work around electron 13 bug w/ async spellchecking on Windows. // HardwareMediaKeyHandling,MediaSessionService: Prevent Discord from registering as a media service. - app.commandLine.appendSwitch( - "disable-features", - "WidgetLayering,WinRetrieveSuggestionsOnlyOnDemand,HardwareMediaKeyHandling,MediaSessionService", - ); // fix dev tools layers + disableFeatures + .add("WidgetLayering") + .add("WinRetrieveSuggestionsOnlyOnDemand") + .add("HardwareMediaKeyHandling") + .add("MediaSessionService"); // Your data now belongs to CCP crashReporter.start({ uploadToServer: false }); // enable pulseaudio audio sharing on linux if (process.platform === "linux") { - app.commandLine.appendSwitch("enable-features", "PulseaudioLoopbackForScreenShare"); - app.commandLine.appendSwitch("disable-features", "WebRtcAllowInputVolumeAdjustment"); + enableFeatures.add("PulseaudioLoopbackForScreenShare"); + disableFeatures.add("WebRtcAllowInputVolumeAdjustment"); app.commandLine.appendSwitch("enable-speech-dispatcher"); } // enable webrtc capturer for wayland if (process.platform === "linux" && process.env.XDG_SESSION_TYPE?.toLowerCase() === "wayland") { - app.commandLine.appendSwitch("disable-features", "UseMultiPlaneFormatForSoftwareVideo"); - app.commandLine.appendSwitch("enable-features", "WebRTCPipeWireCapturer"); + enableFeatures.add("WebRTCPipeWireCapturer"); + disableFeatures.add("UseMultiPlaneFormatForSoftwareVideo"); console.log("Wayland detected, using PipeWire for video capture."); } if (process.platform === "darwin") { @@ -90,7 +102,12 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { app.commandLine.appendSwitch("enable-transparent-visuals"); checkIfConfigIsBroken(); - injectElectronFlags(); + const preset = getPreset(); + if (preset) { + preset.switches.forEach(([key, val]) => app.commandLine.appendSwitch(key, val)); + preset.enableFeatures.forEach((val) => enableFeatures.add(val)); + preset.disableFeatures.forEach((val) => disableFeatures.add(val)); + } await fetchMods(); void import("./discord/extensions/plugin.js"); // load chrome extensions console.log(`[Config Manager] Current config: ${readFileSync(getConfigLocation(), "utf-8")}`); @@ -126,12 +143,44 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { setConfig("tray", "disabled"); } } - if (getConfig("additionalArguments") !== undefined) - app.commandLine.appendArgument(getConfig("additionalArguments")); + if (getConfig("additionalArguments") !== undefined) { + for (const arg of getConfig("additionalArguments").split(" ")) { + if (arg.startsWith("--")) { + const [key, val] = arg.substring(2).split("=", 1) as [string, string?]; + if (val === undefined) { + app.commandLine.appendSwitch(key); + } else { + if (key === "enable-features") { + val.split(",").forEach((flag) => enableFeatures.add(flag)); + } else if (key === "disable-features") { + val.split(",").forEach((flag) => disableFeatures.add(flag)); + } else if (key === "enable-blink-features") { + val.split(",").forEach((flag) => enableBlinkFeatures.add(flag)); + } else if (key === "disable-blink-features") { + val.split(",").forEach((flag) => disableBlinkFeatures.add(flag)); + } else { + app.commandLine.appendSwitch(key, val); + } + } + } + } + } if (getConfig("smoothScroll") === false) app.commandLine.appendSwitch("disable-smooth-scrolling"); - if (getConfig("autoScroll")) app.commandLine.appendSwitch("enable-blink-features", "MiddleClickAutoscroll"); + if (getConfig("autoScroll")) enableBlinkFeatures.add("MiddleClickAutoscroll"); if (getConfig("disableHttpCache")) app.commandLine.appendSwitch("disable-http-cache"); + enableFeatures.delete(""); + disableFeatures.delete(""); + enableBlinkFeatures.delete(""); + disableBlinkFeatures.delete(""); + if (enableFeatures.size > 0) app.commandLine.appendSwitch("enable-features", Array.from(enableFeatures).join(",")); + if (disableFeatures.size > 0) + app.commandLine.appendSwitch("disable-features", Array.from(disableFeatures).join(",")); + if (enableBlinkFeatures.size > 0) + app.commandLine.appendSwitch("enable-blink-features", Array.from(enableBlinkFeatures).join(",")); + if (disableBlinkFeatures.size > 0) + app.commandLine.appendSwitch("disable-blink-features", Array.from(disableBlinkFeatures).join(",")); + void app.whenReady().then(async () => { process.on("SIGINT", () => app.quit()); process.on("SIGTERM", () => app.quit()); From 2bccfe6e9af5cbcc78fc154bfe038810fd97da19 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Tue, 8 Apr 2025 19:04:27 +0200 Subject: [PATCH 699/896] fix: store and discover not loading --- src/discord/window.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/discord/window.ts b/src/discord/window.ts index 3e6cd00..9e165e0 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -169,12 +169,18 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { registerCustomHandler(); - passedWindow.webContents.session.webRequest.onBeforeRequest( - { - urls: ["https://*/api/v*/science", "https://sentry.io/*", "https://*.nel.cloudflare.com/*"], - }, - (_, callback) => callback({ cancel: true }), - ); + const blockedPatterns = [ + /https:\/\/.*\/api\/v\d+\/science/, + /https:\/\/sentry\.io\/.*/, + /https:\/\/.*\.nel\.cloudflare\.com\/.*/, + ]; + passedWindow.webContents.session.webRequest.onBeforeRequest((details, callback) => { + if (details.url.startsWith("ws://") || blockedPatterns.some((pattern) => pattern.test(details.url))) { + return callback({ cancel: true }); + } + return callback({}); + }); + // fix UMG video playback passedWindow.webContents.session.webRequest.onBeforeSendHeaders( { urls: ["https://www.youtube.com/embed/*"] }, From 4280257fc61a6113a397536700374026330241af Mon Sep 17 00:00:00 2001 From: Ven0m0 <82972344+Ven0m0@users.noreply.github.com> Date: Thu, 10 Apr 2025 11:51:07 +0200 Subject: [PATCH 700/896] Update README.md (#887) skip-ci --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index b45a9b3..6e2f21f 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,10 @@ Legcord is also available in [Pi-Apps](https://github.com/Botspot/pi-apps). - We utilize the official web app and package it within Electron. While this approach may seem familiar, our focus is on delivering a truly customized and enhanced experience. Unlike many others, we provide seamless integration for loading themes and mods without the need for installers or injectors. You can easily enable transparency effects and adopt Windows' Fluent Design, offering a modern and sleek interface. Though it's fundamentally a web wrapper, we have implemented numerous optimizations and patches to ensure a smooth and tailored experience for you. +## Does Legcord have a portable mode for windows? + +- Yes it does! Simply add a folder called "legcord-data" in the folder where your legcord executable is located and start Legcord. Make sure to download the archive/zip file. + ## Where can I find the source code? - The source code is on [GitHub](https://github.com/Legcord/Legcord/). From a5e0c2e5ae7d2be97bf8407eb5d2bfc89671b5dd Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 21 Apr 2025 22:37:52 +0200 Subject: [PATCH 701/896] wip: macOS titlebar --- assets/app/css/winTitlebar.css | 120 ++++++++++++++++++++++++++++ src/discord/preload/newTitlebar.mts | 1 + 2 files changed, 121 insertions(+) diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index b98a38e..5103dc1 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -225,3 +225,123 @@ a[href="https://support.discord.com"] { background-color: var(--brand-experiment-600); transition: 0.1s ease; } + + +/* Legcord on macOS */ + +[legcord-platform="darwin"] .sidebar-1tnWFu { + border-top-left-radius: 0px !important; +} + +.platform-osx .wrapper_ef3116 { + margin-top: 0px !important; +} + +[legcord-platform="darwin"] #window-controls-container { + float: left; + width: 150px; + height: 40px; + display: block; + line-height: 45px; + left: 0; + transform: translate(-82px, 4px); +} + +[legcord-platform="darwin"] #window-controls-container:hover #minimize #minimize-icon, +[legcord-platform="darwin"] #window-controls-container:hover #maximize #maximize-icon, +[legcord-platform="darwin"] #window-controls-container:hover #quit #quit-icon { + display: list-item; +} + +[legcord-platform="darwin"][unFocused] #window-controls-container #minimize, +[legcord-platform="darwin"][unFocused] #window-controls-container #maximize, +[legcord-platform="darwin"][unFocused] #window-controls-container #quit { + background-color: #d6d6d5 !important; + pointer-events: none; + transition: background-color 0.1s ease-in; +} + +[legcord-platform="darwin"]:not([unFocused]) #window-controls-container #quit #quit-icon { + background-color: #79282b; + -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") + no-repeat 50% 50%; + transform: translate(-0.3px, -9px); +} +[legcord-platform="darwin"]:not([unFocused]) #window-controls-container #minimize #minimize-icon { + background-color: #7d631b; + -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") + no-repeat 50% 50%; + transform: translate(-0px, -9px); +} +[legcord-platform="darwin"]:not([unFocused]) #window-controls-container #maximize #maximize-icon { + background-color: #1d7525; + -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") + no-repeat 50% 50%; + transform: translate(0.1px, -9px); +} + +[legcord-platform="darwin"] #window-controls-container #minimize { + background-color: #fac536; + transition: background-color 0.1s ease-in; + border: 1px solid #da9e10; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + transform: translateX(-21.5px); +} +[legcord-platform="darwin"] #window-controls-container #maximize { + background-color: #39ea49; + transition: background-color 0.1s ease-in; + border: 1px solid #13c11e; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + transform: translateX(21.5px); +} +[legcord-platform="darwin"] #window-controls-container #quit { + background-color: #f25056; + transition: background-color 0.1s ease-in; + border: 1px solid #d52735; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="darwin"] #window-controls-container:hover #maximize:active { + background-color: #13c11e; +} +[legcord-platform="darwin"] #window-controls-container:hover #minimize:active { + background-color: #da9e10; +} +[legcord-platform="darwin"] #window-controls-container:hover #quit:active { + background-color: #d52735; +} +[legcord-platform="darwin"] #window-controls-container #spacer, +[legcord-platform="darwin"] #window-controls-container #minimize, +[legcord-platform="darwin"] #window-controls-container #maximize, +[legcord-platform="darwin"] #window-controls-container #quit { + float: right; + height: 80%; + width: 13%; + text-align: center; + color: transparent; + cursor: default; +} + +[legcord-platform="darwin"] #window-controls-container #minimize-icon, +[legcord-platform="darwin"] #window-controls-container #maximize-icon, +[legcord-platform="darwin"] #window-controls-container #quit-icon { + display: none; +} + +[legcord-platform="darwin"] #window-controls-container #spacer { + display: none; +} diff --git a/src/discord/preload/newTitlebar.mts b/src/discord/preload/newTitlebar.mts index 495a38e..8a0586f 100644 --- a/src/discord/preload/newTitlebar.mts +++ b/src/discord/preload/newTitlebar.mts @@ -8,6 +8,7 @@ document.addEventListener("DOMContentLoaded", () => { switch (ipcRenderer.sendSync("getOS")) { case "darwin": document.body.setAttribute("class", "platform-osx"); + addStyle("legcord://assets/css/winTitlebar.css"); break; case "win32": document.body.setAttribute("class", "platform-win"); From c7963dddaf126124a4731d5dfa8d02aeab62f83b Mon Sep 17 00:00:00 2001 From: Poseidon <92352131+DoYouEvenSheesh@users.noreply.github.com> Date: Fri, 2 May 2025 16:29:53 +0530 Subject: [PATCH 702/896] add pacstall link and install commands (#893) --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6e2f21f..77346fa 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,11 @@ Not available yet. ### Debian, Ubuntu and Raspbian repository -Not available yet. +legcord-deb is available on [pacstall](https://pacstall.dev/packages/legcord-deb) +```sh +sudo bash -c "$(wget -q https://pacstall.dev/q/install -O -)" # Install pacstall if not installed +pacstall -I legcord-deb +``` ### Snap package From af4bcfae386543854be07651cab52b28f3df407f Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 4 May 2025 13:26:13 +0200 Subject: [PATCH 703/896] fix: macOS rebrand titlebar --- assets/app/css/winTitlebar.css | 5 +++++ src/discord/preload/newTitlebar.mts | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index 5103dc1..7b7a852 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -345,3 +345,8 @@ a[href="https://support.discord.com"] { [legcord-platform="darwin"] #window-controls-container #spacer { display: none; } + +div[class*="bar__"][class*="hidden__"] { + pointer-events: unset !important; + visibility: unset !important; + } \ No newline at end of file diff --git a/src/discord/preload/newTitlebar.mts b/src/discord/preload/newTitlebar.mts index 8a0586f..4f5745d 100644 --- a/src/discord/preload/newTitlebar.mts +++ b/src/discord/preload/newTitlebar.mts @@ -7,7 +7,8 @@ document.addEventListener("DOMContentLoaded", () => { sleep(500); switch (ipcRenderer.sendSync("getOS")) { case "darwin": - document.body.setAttribute("class", "platform-osx"); + // breaks traffic lights with bar__ and hidden__ classes + // document.body.setAttribute("class", "platform-osx"); addStyle("legcord://assets/css/winTitlebar.css"); break; case "win32": From a5d259e3c1aa0e44bfb90056ace3109cff9ac612 Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sun, 4 May 2025 13:54:26 +0200 Subject: [PATCH 704/896] chore: formatting --- assets/app/css/winTitlebar.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index 7b7a852..890a98b 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -226,7 +226,6 @@ a[href="https://support.discord.com"] { transition: 0.1s ease; } - /* Legcord on macOS */ [legcord-platform="darwin"] .sidebar-1tnWFu { @@ -349,4 +348,4 @@ a[href="https://support.discord.com"] { div[class*="bar__"][class*="hidden__"] { pointer-events: unset !important; visibility: unset !important; - } \ No newline at end of file +} From a329978945ee6d15a407f15786abc477cd7a852c Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 4 May 2025 13:57:35 +0200 Subject: [PATCH 705/896] feat: linux rebrand titlebar --- assets/app/css/winTitlebar.css | 149 +++++++++------------------------ 1 file changed, 39 insertions(+), 110 deletions(-) diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index 890a98b..6344ae3 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -1,7 +1,3 @@ -a[href="https://support.discord.com"] { - margin-right: 150px; -} - .titlebar { display: block; top: 0; @@ -33,55 +29,74 @@ a[href="https://support.discord.com"] { filter: invert(30%); } -/* Legcord on Windows */ -[legcord-platform="win32"] #window-controls-container { +/* Legcord on Windows and Linux */ + +[legcord-platform="win32"], +[legcord-platform="linux"] a[href="https://support.discord.com"] { + margin-right: 150px; +} + +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container { width: 142px; } -[legcord-platform="win32"] #window-controls-container #minimize:hover { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #minimize:hover { background-color: var(--background-modifier-hover); transition: 0.2s ease; } -[legcord-platform="win32"] #window-controls-container #maximize:hover { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #maximize:hover { background-color: var(--background-modifier-hover); transition: 0.2s ease; } -[legcord-platform="win32"] #window-controls-container #minimize:hover #minimize-icon { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #minimize:hover #minimize-icon { background-color: var(--interactive-hover); transition: 0.2s ease; } -[legcord-platform="win32"] #window-controls-container #maximize:hover #maximize-icon { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #maximize:hover #maximize-icon { background-color: var(--interactive-hover); transition: 0.2s ease; } -[legcord-platform="win32"] #window-controls-container #quit:hover { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #quit:hover { background-color: #e81123; transition: 0.2s ease; } -[legcord-platform="win32"] #window-controls-container #quit:hover #quit-icon { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #quit:hover #quit-icon { background-color: #ffffff; transition: 0.1s ease; } -[legcord-platform="win32"] #window-controls-container #minimize { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #minimize { background-color: transparent; transition: 0.1s ease; } -[legcord-platform="win32"] #window-controls-container #maximize { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #maximize { background-color: transparent; transition: 0.1s ease; } -[legcord-platform="win32"] #window-controls-container #quit { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #quit { background-color: transparent; transition: 0.1s ease; } -[legcord-platform="win32"] #window-controls-container #quit:active { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #quit:active { background-color: #f1707a; transition: 0.1s ease; } -[legcord-platform="win32"] #window-controls-container #quit:active #quit-icon { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #quit:active #quit-icon { background-color: #000000cc; transition: 0.1s ease; } -[legcord-platform="win32"] #window-controls-container #quit-icon { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #quit-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") @@ -89,7 +104,8 @@ a[href="https://support.discord.com"] { mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") no-repeat 50% 50%; } -[legcord-platform="win32"] #window-controls-container #minimize-icon { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #minimize-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") @@ -97,7 +113,8 @@ a[href="https://support.discord.com"] { mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") no-repeat 50% 50%; } -[legcord-platform="win32"] #window-controls-container #maximize-icon { +[legcord-platform="win32"], +[legcord-platform="linux"] #window-controls-container #maximize-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") @@ -106,7 +123,8 @@ a[href="https://support.discord.com"] { no-repeat 50% 50%; } -[legcord-platform="win32"][isMaximized] #window-controls-container #maximize-icon { +[legcord-platform="win32"], +[legcord-platform="linux"][isMaximized] #window-controls-container #maximize-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") @@ -137,95 +155,6 @@ a[href="https://support.discord.com"] { cursor: default; } -/* Legcord on Linux */ - -[legcord-platform="linux"] #window-controls-container { - line-height: 45px; - transform: translateY(-8px); -} -[legcord-platform="linux"] #window-controls-container #minimize:hover { - background-color: var(--background-modifier-hover); - transition: 0.2s ease; -} -[legcord-platform="linux"] #window-controls-container #maximize:hover { - background-color: var(--background-modifier-hover); - transition: 0.2s ease; -} -[legcord-platform="linux"] #window-controls-container #minimize:hover #minimize-icon { - background-color: var(--interactive-hover); - transition: 0.2s ease; -} -[legcord-platform="linux"] #window-controls-container #maximize:hover #maximize-icon { - background-color: var(--interactive-hover); - transition: 0.2s ease; -} -[legcord-platform="linux"] #window-controls-container #quit:hover { - background-color: var(--brand-experiment-560); - transition: 0.2s ease; -} -[legcord-platform="linux"] #window-controls-container #quit #quit-icon { - background-color: #ffffff; - display: list-item; - transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] #window-controls-container #minimize-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} - -[legcord-platform="linux"][isMaximized] #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); - display: list-item; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] #window-controls-container #minimize { - background-color: transparent; - transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] #window-controls-container #maximize { - background-color: transparent; - transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] #window-controls-container #quit { - background-color: var(--brand-experiment); - transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="linux"] #window-controls-container #quit:active { - background-color: var(--brand-experiment-600); - transition: 0.1s ease; -} - /* Legcord on macOS */ [legcord-platform="darwin"] .sidebar-1tnWFu { From 30a305057de817aa28eaefc28a59946e7db77cf0 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 4 May 2025 14:02:07 +0200 Subject: [PATCH 706/896] fix: migrate rebrand windowStyle --- src/@types/settings.d.ts | 2 +- src/main.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/@types/settings.d.ts b/src/@types/settings.d.ts index e261d3a..b91ee29 100644 --- a/src/@types/settings.d.ts +++ b/src/@types/settings.d.ts @@ -31,7 +31,7 @@ export interface Settings { // Only used for external url warning dialog. ignoreProtocolWarning?: boolean; customIcon: string; - windowStyle: "default" | "native" | "overlay" | "transparent" | "legacy"; + windowStyle: "default" | "native" | "overlay" | "transparent" | "legacy" | "rebrand"; channel: "stable" | "ptb" | "canary"; transparency: "universal" | "modern" | "none"; audio: AudioSettings; diff --git a/src/main.ts b/src/main.ts index 73c7ac5..cab8f1a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -134,6 +134,7 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { if (getConfig("additionalArguments") === undefined) setConfig("additionalArguments", ""); if (getConfig("transparency") === undefined) setConfig("transparency", "none"); if (getConfig("windowStyle") === "transparent") setConfig("windowStyle", "default"); + if (getConfig("windowStyle") === "rebrand") setConfig("windowStyle", "default"); if (typeof getConfig("tray") === "boolean") { //@ts-expect-error if (getConfig("tray") === true) { From f1c484c70363c56ffafcff3c26e4694a100a36f6 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 4 May 2025 14:18:23 +0200 Subject: [PATCH 707/896] bump to electron v36 --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index c84fa66..152cc4f 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "35.1.3", + "electron": "36.1.0", "electron-builder": "^26.0.12", "lucide-solid": "^0.475.0", "rolldown": "1.0.0-beta.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7130905..991182a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,8 +71,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 35.1.3 - version: 35.1.3 + specifier: 36.1.0 + version: 36.1.0 electron-builder: specifier: ^26.0.12 version: 26.0.12(electron-builder-squirrel-windows@25.1.8) @@ -1816,8 +1816,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@35.1.3: - resolution: {integrity: sha512-z7zZtvoK40ynKmgZ5dfD5xhsAXHxNShWgx9vIpC/ZMawBB93sBTWU83gHrjSzAcY9n0Io1WJCyUt/UIQHzlDXA==} + electron@36.1.0: + resolution: {integrity: sha512-gnp3BnbKdGsVc7cm1qlEaZc8pJsR08mIs8H/yTo8gHEtFkGGJbDTVZOYNAfbQlL0aXh+ozv+CnyiNeDNkT1Upg==} engines: {node: '>= 12.20.55'} hasBin: true @@ -4962,7 +4962,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@35.1.3: + electron@36.1.0: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 From e165356c6f9ff5805ad6ad23cb18cb6bfeb1ec44 Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 4 May 2025 19:54:34 +0200 Subject: [PATCH 708/896] fix: broken titlebar on windows --- assets/app/css/baseTitlebar.css | 52 +++++++ assets/app/css/darwinTitlebar.css | 121 +++++++++++++++ assets/app/css/linuxTitlebar.css | 84 ++++++++++ assets/app/css/winTitlebar.css | 230 +++------------------------- src/discord/preload/newTitlebar.mts | 5 +- 5 files changed, 278 insertions(+), 214 deletions(-) create mode 100644 assets/app/css/baseTitlebar.css create mode 100644 assets/app/css/darwinTitlebar.css create mode 100644 assets/app/css/linuxTitlebar.css diff --git a/assets/app/css/baseTitlebar.css b/assets/app/css/baseTitlebar.css new file mode 100644 index 0000000..5667282 --- /dev/null +++ b/assets/app/css/baseTitlebar.css @@ -0,0 +1,52 @@ +.titlebar { + display: block; + top: 0; + left: 0; + right: 0; + flex-shrink: 0; + overflow: hidden; + zoom: 1; + box-sizing: border-box; + width: 100%; + clear: both; + height: 36px; + line-height: 30px; + -webkit-app-region: drag !important; + user-select: none; + background-color: var(--background-base-lowest); + -webkit-user-select: none; + position: fixed; + z-index: 99999; +} + +.window-title { + content: url("legcord://assets/Wordmark.png"); + height: 15px; + margin-left: initial; + transform: translate(9px, 9px); + float: left; + padding: 0; + filter: invert(30%); +} +#window-controls-container { + float: right; + display: flex; + height: 100%; + position: sticky; + right: 0; + top: 0; + z-index: 99999999; + line-height: 36px; + -webkit-app-region: no-drag; +} + +#window-controls-container #minimize, +#window-controls-container #maximize, +#window-controls-container #quit { + float: left; + height: 100%; + width: 33.3%; + text-align: center; + color: var(--interactive-normal); + cursor: default; +} diff --git a/assets/app/css/darwinTitlebar.css b/assets/app/css/darwinTitlebar.css new file mode 100644 index 0000000..396387a --- /dev/null +++ b/assets/app/css/darwinTitlebar.css @@ -0,0 +1,121 @@ +[legcord-platform="darwin"] .sidebar-1tnWFu { + border-top-left-radius: 0px !important; +} + +.platform-osx .wrapper_ef3116 { + margin-top: 0px !important; +} + +[legcord-platform="darwin"] #window-controls-container { + float: left; + width: 150px; + height: 40px; + display: block; + line-height: 45px; + left: 0; + transform: translate(-82px, 4px); +} + +[legcord-platform="darwin"] #window-controls-container:hover #minimize #minimize-icon, +[legcord-platform="darwin"] #window-controls-container:hover #maximize #maximize-icon, +[legcord-platform="darwin"] #window-controls-container:hover #quit #quit-icon { + display: list-item; +} + +[legcord-platform="darwin"][unFocused] #window-controls-container #minimize, +[legcord-platform="darwin"][unFocused] #window-controls-container #maximize, +[legcord-platform="darwin"][unFocused] #window-controls-container #quit { + background-color: #d6d6d5 !important; + pointer-events: none; + transition: background-color 0.1s ease-in; +} + +[legcord-platform="darwin"]:not([unFocused]) #window-controls-container #quit #quit-icon { + background-color: #79282b; + -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") + no-repeat 50% 50%; + transform: translate(-0.3px, -9px); +} +[legcord-platform="darwin"]:not([unFocused]) #window-controls-container #minimize #minimize-icon { + background-color: #7d631b; + -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") + no-repeat 50% 50%; + transform: translate(-0px, -9px); +} +[legcord-platform="darwin"]:not([unFocused]) #window-controls-container #maximize #maximize-icon { + background-color: #1d7525; + -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") + no-repeat 50% 50%; + transform: translate(0.1px, -9px); +} + +[legcord-platform="darwin"] #window-controls-container #minimize { + background-color: #fac536; + transition: background-color 0.1s ease-in; + border: 1px solid #da9e10; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + transform: translateX(-21.5px); +} +[legcord-platform="darwin"] #window-controls-container #maximize { + background-color: #39ea49; + transition: background-color 0.1s ease-in; + border: 1px solid #13c11e; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + transform: translateX(21.5px); +} +[legcord-platform="darwin"] #window-controls-container #quit { + background-color: #f25056; + transition: background-color 0.1s ease-in; + border: 1px solid #d52735; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="darwin"] #window-controls-container:hover #maximize:active { + background-color: #13c11e; +} +[legcord-platform="darwin"] #window-controls-container:hover #minimize:active { + background-color: #da9e10; +} +[legcord-platform="darwin"] #window-controls-container:hover #quit:active { + background-color: #d52735; +} +[legcord-platform="darwin"] #window-controls-container #spacer, +[legcord-platform="darwin"] #window-controls-container #minimize, +[legcord-platform="darwin"] #window-controls-container #maximize, +[legcord-platform="darwin"] #window-controls-container #quit { + float: right; + height: 80%; + width: 13%; + text-align: center; + color: transparent; + cursor: default; +} + +[legcord-platform="darwin"] #window-controls-container #minimize-icon, +[legcord-platform="darwin"] #window-controls-container #maximize-icon, +[legcord-platform="darwin"] #window-controls-container #quit-icon { + display: none; +} + +[legcord-platform="darwin"] #window-controls-container #spacer { + display: none; +} + +div[class*="bar__"][class*="hidden__"] { + pointer-events: unset !important; + visibility: unset !important; +} diff --git a/assets/app/css/linuxTitlebar.css b/assets/app/css/linuxTitlebar.css new file mode 100644 index 0000000..1e2eaf8 --- /dev/null +++ b/assets/app/css/linuxTitlebar.css @@ -0,0 +1,84 @@ +[legcord-platform="linux"] a[href="https://support.discord.com"] { + margin-right: 150px; +} + +[legcord-platform="linux"] #window-controls-container { + width: 142px; +} +[legcord-platform="linux"] #window-controls-container #minimize:hover { + background-color: var(--background-modifier-hover); + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #maximize:hover { + background-color: var(--background-modifier-hover); + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #minimize:hover #minimize-icon { + background-color: var(--interactive-hover); + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #maximize:hover #maximize-icon { + background-color: var(--interactive-hover); + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #quit:hover { + background-color: #e81123; + transition: 0.2s ease; +} +[legcord-platform="linux"] #window-controls-container #quit:hover #quit-icon { + background-color: #ffffff; + transition: 0.1s ease; +} +[legcord-platform="linux"] #window-controls-container #minimize { + background-color: transparent; + transition: 0.1s ease; +} +[legcord-platform="linux"] #window-controls-container #maximize { + background-color: transparent; + transition: 0.1s ease; +} +[legcord-platform="linux"] #window-controls-container #quit { + background-color: transparent; + transition: 0.1s ease; +} +[legcord-platform="linux"] #window-controls-container #quit:active { + background-color: #f1707a; + transition: 0.1s ease; +} +[legcord-platform="linux"] #window-controls-container #quit:active #quit-icon { + background-color: #000000cc; + transition: 0.1s ease; +} +[legcord-platform="linux"] #window-controls-container #quit-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="linux"] #window-controls-container #minimize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} +[legcord-platform="linux"] #window-controls-container #maximize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} + +[legcord-platform="linux"][isMaximized] #window-controls-container #maximize-icon { + background-color: var(--interactive-normal); + display: list-item; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + no-repeat 50% 50%; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + no-repeat 50% 50%; +} diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index 6344ae3..99ab9cf 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -1,102 +1,57 @@ -.titlebar { - display: block; - top: 0; - left: 0; - right: 0; - flex-shrink: 0; - overflow: hidden; - zoom: 1; - box-sizing: border-box; - width: 100%; - clear: both; - height: 36px; - line-height: 30px; - -webkit-app-region: drag !important; - user-select: none; - background-color: var(--background-base-lowest); - -webkit-user-select: none; - position: fixed; - z-index: 99999; -} +/* Legcord on Windows */ -.window-title { - content: url("legcord://assets/Wordmark.png"); - height: 15px; - margin-left: initial; - transform: translate(9px, 9px); - float: left; - padding: 0; - filter: invert(30%); -} - -/* Legcord on Windows and Linux */ - -[legcord-platform="win32"], -[legcord-platform="linux"] a[href="https://support.discord.com"] { +[legcord-platform="win32"] a[href="https://support.discord.com"] { margin-right: 150px; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container { +[legcord-platform="win32"] #window-controls-container { width: 142px; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #minimize:hover { +[legcord-platform="win32"] #window-controls-container #minimize:hover { background-color: var(--background-modifier-hover); transition: 0.2s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #maximize:hover { +[legcord-platform="win32"] #window-controls-container #maximize:hover { background-color: var(--background-modifier-hover); transition: 0.2s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #minimize:hover #minimize-icon { +[legcord-platform="win32"] #window-controls-container #minimize:hover #minimize-icon { background-color: var(--interactive-hover); transition: 0.2s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #maximize:hover #maximize-icon { +[legcord-platform="win32"] #window-controls-container #maximize:hover #maximize-icon { background-color: var(--interactive-hover); transition: 0.2s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #quit:hover { +[legcord-platform="win32"] #window-controls-container #quit:hover { background-color: #e81123; transition: 0.2s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #quit:hover #quit-icon { +[legcord-platform="win32"] #window-controls-container #quit:hover #quit-icon { background-color: #ffffff; transition: 0.1s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #minimize { +[legcord-platform="win32"] #window-controls-container #minimize { background-color: transparent; transition: 0.1s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #maximize { +[legcord-platform="win32"] #window-controls-container #maximize { background-color: transparent; transition: 0.1s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #quit { +[legcord-platform="win32"] #window-controls-container #quit { background-color: transparent; transition: 0.1s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #quit:active { +[legcord-platform="win32"] #window-controls-container #quit:active { background-color: #f1707a; transition: 0.1s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #quit:active #quit-icon { +[legcord-platform="win32"] #window-controls-container #quit:active #quit-icon { background-color: #000000cc; transition: 0.1s ease; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #quit-icon { +[legcord-platform="win32"] #window-controls-container #quit-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") @@ -104,8 +59,7 @@ mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") no-repeat 50% 50%; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #minimize-icon { +[legcord-platform="win32"] #window-controls-container #minimize-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") @@ -113,8 +67,7 @@ mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") no-repeat 50% 50%; } -[legcord-platform="win32"], -[legcord-platform="linux"] #window-controls-container #maximize-icon { +[legcord-platform="win32"] #window-controls-container #maximize-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") @@ -123,8 +76,7 @@ no-repeat 50% 50%; } -[legcord-platform="win32"], -[legcord-platform="linux"][isMaximized] #window-controls-container #maximize-icon { +[legcord-platform="win32"][isMaximized] #window-controls-container #maximize-icon { background-color: var(--interactive-normal); display: list-item; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") @@ -132,149 +84,3 @@ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") no-repeat 50% 50%; } -#window-controls-container { - float: right; - display: flex; - height: 100%; - position: sticky; - right: 0; - top: 0; - z-index: 99999999; - line-height: 36px; - -webkit-app-region: no-drag; -} - -#window-controls-container #minimize, -#window-controls-container #maximize, -#window-controls-container #quit { - float: left; - height: 100%; - width: 33.3%; - text-align: center; - color: var(--interactive-normal); - cursor: default; -} - -/* Legcord on macOS */ - -[legcord-platform="darwin"] .sidebar-1tnWFu { - border-top-left-radius: 0px !important; -} - -.platform-osx .wrapper_ef3116 { - margin-top: 0px !important; -} - -[legcord-platform="darwin"] #window-controls-container { - float: left; - width: 150px; - height: 40px; - display: block; - line-height: 45px; - left: 0; - transform: translate(-82px, 4px); -} - -[legcord-platform="darwin"] #window-controls-container:hover #minimize #minimize-icon, -[legcord-platform="darwin"] #window-controls-container:hover #maximize #maximize-icon, -[legcord-platform="darwin"] #window-controls-container:hover #quit #quit-icon { - display: list-item; -} - -[legcord-platform="darwin"][unFocused] #window-controls-container #minimize, -[legcord-platform="darwin"][unFocused] #window-controls-container #maximize, -[legcord-platform="darwin"][unFocused] #window-controls-container #quit { - background-color: #d6d6d5 !important; - pointer-events: none; - transition: background-color 0.1s ease-in; -} - -[legcord-platform="darwin"]:not([unFocused]) #window-controls-container #quit #quit-icon { - background-color: #79282b; - -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") - no-repeat 50% 50%; - transform: translate(-0.3px, -9px); -} -[legcord-platform="darwin"]:not([unFocused]) #window-controls-container #minimize #minimize-icon { - background-color: #7d631b; - -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") - no-repeat 50% 50%; - transform: translate(-0px, -9px); -} -[legcord-platform="darwin"]:not([unFocused]) #window-controls-container #maximize #maximize-icon { - background-color: #1d7525; - -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") - no-repeat 50% 50%; - mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") - no-repeat 50% 50%; - transform: translate(0.1px, -9px); -} - -[legcord-platform="darwin"] #window-controls-container #minimize { - background-color: #fac536; - transition: background-color 0.1s ease-in; - border: 1px solid #da9e10; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - transform: translateX(-21.5px); -} -[legcord-platform="darwin"] #window-controls-container #maximize { - background-color: #39ea49; - transition: background-color 0.1s ease-in; - border: 1px solid #13c11e; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - transform: translateX(21.5px); -} -[legcord-platform="darwin"] #window-controls-container #quit { - background-color: #f25056; - transition: background-color 0.1s ease-in; - border: 1px solid #d52735; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") - no-repeat 50% 50%; -} -[legcord-platform="darwin"] #window-controls-container:hover #maximize:active { - background-color: #13c11e; -} -[legcord-platform="darwin"] #window-controls-container:hover #minimize:active { - background-color: #da9e10; -} -[legcord-platform="darwin"] #window-controls-container:hover #quit:active { - background-color: #d52735; -} -[legcord-platform="darwin"] #window-controls-container #spacer, -[legcord-platform="darwin"] #window-controls-container #minimize, -[legcord-platform="darwin"] #window-controls-container #maximize, -[legcord-platform="darwin"] #window-controls-container #quit { - float: right; - height: 80%; - width: 13%; - text-align: center; - color: transparent; - cursor: default; -} - -[legcord-platform="darwin"] #window-controls-container #minimize-icon, -[legcord-platform="darwin"] #window-controls-container #maximize-icon, -[legcord-platform="darwin"] #window-controls-container #quit-icon { - display: none; -} - -[legcord-platform="darwin"] #window-controls-container #spacer { - display: none; -} - -div[class*="bar__"][class*="hidden__"] { - pointer-events: unset !important; - visibility: unset !important; -} diff --git a/src/discord/preload/newTitlebar.mts b/src/discord/preload/newTitlebar.mts index 4f5745d..59b1433 100644 --- a/src/discord/preload/newTitlebar.mts +++ b/src/discord/preload/newTitlebar.mts @@ -4,12 +4,13 @@ import { sleep } from "../../common/sleep.js"; document.addEventListener("DOMContentLoaded", () => { document.body.setAttribute("legcord-platform", ipcRenderer.sendSync("getOS")); + addStyle("legcord://assets/css/baseTitlebar.css"); sleep(500); switch (ipcRenderer.sendSync("getOS")) { case "darwin": // breaks traffic lights with bar__ and hidden__ classes // document.body.setAttribute("class", "platform-osx"); - addStyle("legcord://assets/css/winTitlebar.css"); + addStyle("legcord://assets/css/darwinTitlebar.css"); break; case "win32": document.body.setAttribute("class", "platform-win"); @@ -17,7 +18,7 @@ document.addEventListener("DOMContentLoaded", () => { break; case "linux": document.body.setAttribute("class", "platform-linux"); - addStyle("legcord://assets/css/winTitlebar.css"); + addStyle("legcord://assets/css/linuxTitlebar.css"); break; default: break; From 77e2ccafb221936a99654c237cb385d486780bc7 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 4 May 2025 20:16:36 +0200 Subject: [PATCH 709/896] 1.1.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 152cc4f..c78369c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "legcord", - "version": "1.1.2", + "version": "1.1.3", "description": "Legcord is a custom client designed to enhance your Discord experience while keeping everything lightweight.", "main": "ts-out/main.js", "engines": { From d973796b141b61a2bb8a6bd28f447c8c9aea3520 Mon Sep 17 00:00:00 2001 From: Zachary Lowery Date: Sat, 17 May 2025 02:31:04 -0400 Subject: [PATCH 710/896] fix: better selector for version injecting + bypassSetup flag (#917) --- src/common/config.ts | 4 ++++ src/discord/preload/patches.mts | 6 ++++++ src/main.ts | 22 ++++++++++++++++++---- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/common/config.ts b/src/common/config.ts index c547234..c1d74d1 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -179,3 +179,7 @@ export function setup(): void { ...defaults, }); } + +export function setFirstRun(value: boolean): void { + firstRun = value; +} diff --git a/src/discord/preload/patches.mts b/src/discord/preload/patches.mts index 7f6afbb..a58e771 100644 --- a/src/discord/preload/patches.mts +++ b/src/discord/preload/patches.mts @@ -68,6 +68,12 @@ async function load() { if (!host || host.querySelector("#ac-ver")) { return; } + + const discordVersionInfoPattern = /(stable|ptb|canary) \d+|Electron|Chromium/i; + if (!discordVersionInfoPattern.test(host.textContent || "")) { + return; + } + const el = host.firstElementChild!.cloneNode() as HTMLSpanElement; el.id = "ac-ver"; el.textContent = `Legcord Version: ${version}`; diff --git a/src/main.ts b/src/main.ts index cab8f1a..45e4573 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,6 +12,8 @@ import { getConfig, getConfigLocation, setConfig, + setFirstRun, + setup, } from "./common/config.js"; import "./updater.js"; import { getPreset } from "./common/flags.js"; @@ -21,6 +23,7 @@ import { createWindow } from "./discord/window.js"; import { createSetupWindow } from "./setup/main.js"; import { createSplashWindow } from "./splash/main.js"; export let settings: Settings; +export let bypassSetup = false; checkForDataFolder(); checkIfConfigExists(); @@ -30,6 +33,16 @@ app.on("render-process-gone", (_event, _webContents, details) => { } }); function args(): void { + // check for bypass-setup flag + if (process.argv.includes("--bypass-setup")) { + console.log("Bypassing setup and generating default config..."); + setup(); // default settings + setConfig("doneSetup", true); + setFirstRun(false); + bypassSetup = true; + return; + } + let argNum = 2; if (process.argv[0] === "electron") argNum++; const args = process.argv[argNum]; @@ -44,14 +57,15 @@ function args(): void { } } export async function init(): Promise { - if (firstRun === true || undefined) { - setLang(new Intl.DateTimeFormat().resolvedOptions().locale); - await createSetupWindow(); - } else { + // Skip setup if bypass flag was used + if (bypassSetup || !(firstRun === true || undefined)) { if (getConfig("skipSplash") === false) { void createSplashWindow(); // NOTE - Awaiting will hang at start } createWindow(); + } else { + setLang(new Intl.DateTimeFormat().resolvedOptions().locale); + await createSetupWindow(); } } args(); From 822f14e41ce04f7590ee982e07735084c28a5915 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 May 2025 21:18:06 +0200 Subject: [PATCH 711/896] feat: move to shelter rpc plugin --- assets/app/js/rpc.js | 64 ---------------------------- src/discord/preload/mods/shelter.mts | 2 +- src/discord/preload/patches.mts | 1 - src/shelter/rpc/index.js | 28 +++++------- 4 files changed, 12 insertions(+), 83 deletions(-) delete mode 100644 assets/app/js/rpc.js diff --git a/assets/app/js/rpc.js b/assets/app/js/rpc.js deleted file mode 100644 index b132ad9..0000000 --- a/assets/app/js/rpc.js +++ /dev/null @@ -1,64 +0,0 @@ -(() => { - let lookupAsset, - lookupApp, - apps = {}; - console.log("Starting RPC Bridge"); - LegcordRPC.listen(async (msg) => { - console.log("RPC Bridge", msg); - try { - let wpRequire; - window.webpackChunkdiscord_app.push([[Symbol()], {}, x => wpRequire = x]); - window.webpackChunkdiscord_app.pop(); - - const modules = wpRequire.c; - - const factories = wpRequire.m; - for (const id in factories) { - if (factories[id].toString().includes('getAssetImage: size must === [number, number] for Twitch')) { - const mod = wpRequire(id); - - // fetchAssetIds - const _lookupAsset = Object.values(mod).find(e => typeof e === 'function' && e.toString().includes('APPLICATION_ASSETS_FETCH_SUCCESS')); - if (_lookupAsset) lookupAsset = async (appId, name) => (await _lookupAsset(appId, [name, undefined]))[0]; - } - - if (lookupAsset) break; - } - - for (const id in factories) { - if (factories[id].toString().includes('APPLICATION_RPC(')) { - const mod = wpRequire(id); - - // fetchApplicationsRPC - const _lookupApp = Object.values(mod).find(e => { - if (typeof e !== 'function') return; - const str = e.toString(); - return str.includes(',coverImage:') && str.includes('INVALID_ORIGIN'); - }); - if (_lookupApp) lookupApp = async appId => { - let socket = {}; - await _lookupApp(socket, appId); - return socket.application; - }; - } - - if (lookupApp) break; - } - - if (msg.activity?.assets?.large_image) msg.activity.assets.large_image = await lookupAsset(msg.activity.application_id, msg.activity.assets.large_image); - if (msg.activity?.assets?.small_image) msg.activity.assets.small_image = await lookupAsset(msg.activity.application_id, msg.activity.assets.small_image); - - if (msg.activity) { - const appId = msg.activity.application_id; - if (!apps[appId]) apps[appId] = await lookupApp(appId); - - const app = apps[appId]; - if (!msg.activity.name) msg.activity.name = app.name; - } - } catch (e) { - console.error(e); - } - - shelter.flux.dispatcher.dispatch({ type: 'LOCAL_ACTIVITY_UPDATE', ...msg }); // set RPC status - }); -})(); \ No newline at end of file diff --git a/src/discord/preload/mods/shelter.mts b/src/discord/preload/mods/shelter.mts index 213f3ec..6b00dc1 100644 --- a/src/discord/preload/mods/shelter.mts +++ b/src/discord/preload/mods/shelter.mts @@ -2,7 +2,7 @@ const { ipcRenderer, webFrame } = require("electron"); import type { ModBundle } from "../../../@types/ModBundle.js"; const requiredPlugins: Record }]> = { - // "legcord-arrpc": "legcord://plugins/rpc/", + "legcord-arrpc": ["legcord://plugins/rpc/", { isVisible: false, allowedActions: {} }], "legcord-settings": ["legcord://plugins/settings/", { isVisible: false, allowedActions: {} }], "legcord-power": ["legcord://plugins/power/", { isVisible: false, allowedActions: {} }], "legcord-screenshare": ["legcord://plugins/screenshare/", { isVisible: false, allowedActions: {} }], diff --git a/src/discord/preload/patches.mts b/src/discord/preload/patches.mts index a58e771..a604611 100644 --- a/src/discord/preload/patches.mts +++ b/src/discord/preload/patches.mts @@ -59,7 +59,6 @@ async function load() { if (ipcRenderer.sendSync("getConfig", "disableAutogain")) { injectJS("legcord://assets/js/disableAutogain.js"); } - injectJS("legcord://assets/js/rpc.js"); addStyle("legcord://assets/css/discord.css"); }); // Settings info version injection diff --git a/src/shelter/rpc/index.js b/src/shelter/rpc/index.js index 7f473c8..56f31c9 100644 --- a/src/shelter/rpc/index.js +++ b/src/shelter/rpc/index.js @@ -30,32 +30,26 @@ const fetchAssetId = async (applicationId, assetName) => { const resource = assetCache[applicationId].find((item) => item.name === assetName); return resource ? resource.id : null; }; -// https://images-ext-1.discordapp.net/external/1u9jSonO6pasZ41RA1LGqSbTysKHHF0MzoL0YDeTJg0/https/lh3.googleusercontent.com/fhDgRO0LrPPo9CDqsLQlxR3CVZc8xPmSi9Ja8DKAS5zhoWsZKdj2scyWqBUU2t4DHxK1xcbWKY2Q7cpj%3Dw544-h544-l90-rj?format=webp&width=300&height=300 + export function onLoad() { LegcordRPC.listen(async (msg) => { - if (msg.activity?.assets?.large_image.startsWith("https://")) { - msg.activity.assets.large_image = `https://images-ext-1.discordapp.net/external/${msg.activity.assets.large_image.replace("https://", "https/")}?format=webp&width=300&height=300`; - } else { - if (msg.activity?.assets?.large_image) - msg.activity.assets.large_image = await fetchAssetId( - msg.activity.application_id, - msg.activity.assets.large_image, - ); - if (msg.activity?.assets?.small_image) - msg.activity.assets.small_image = await fetchAssetId( - msg.activity.application_id, - msg.activity.assets.small_image, - ); - } + if (msg.activity?.assets?.large_image) + msg.activity.assets.large_image = await fetchAssetId( + msg.activity.application_id, + msg.activity.assets.large_image, + ); + if (msg.activity?.assets?.small_image) + msg.activity.assets.small_image = await fetchAssetId( + msg.activity.application_id, + msg.activity.assets.small_image, + ); if (msg.activity) { - // TODO - Support games from DB too lool const appId = msg.activity.application_id; if (!apps[appId]) apps[appId] = (await ApplicationStore.getApplication(appId)) || "Unknown"; const app = apps[appId]; if (!msg.activity.name) msg.activity.name = app.name; } - console.warn(msg); FluxDispatcher.dispatch({ type: "LOCAL_ACTIVITY_UPDATE", ...msg }); // set RPC status }); } From 8e22b911afd4480333d903deb77d64824e0b36a3 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 May 2025 21:22:30 +0200 Subject: [PATCH 712/896] fix: enable websocket on main discord window --- package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- src/discord/window.ts | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index c78369c..4f52ea5 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "36.1.0", + "electron": "36.2.1", "electron-builder": "^26.0.12", "lucide-solid": "^0.475.0", "rolldown": "1.0.0-beta.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 991182a..ec187aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: arrpc: specifier: https://github.com/Legcord/arrpc.git - version: https://codeload.github.com/Legcord/arrpc/tar.gz/acfb7e8b61c442e089c522653f8fdcb1c3989eb0 + version: https://codeload.github.com/Legcord/arrpc/tar.gz/3275152dfe7d3d4f7ae41cbca01257deba15a446 electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -71,8 +71,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 36.1.0 - version: 36.1.0 + specifier: 36.2.1 + version: 36.2.1 electron-builder: specifier: ^26.0.12 version: 26.0.12(electron-builder-squirrel-windows@25.1.8) @@ -1443,8 +1443,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/acfb7e8b61c442e089c522653f8fdcb1c3989eb0: - resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/acfb7e8b61c442e089c522653f8fdcb1c3989eb0} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/3275152dfe7d3d4f7ae41cbca01257deba15a446: + resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/3275152dfe7d3d4f7ae41cbca01257deba15a446} version: 3.5.0 hasBin: true @@ -1816,8 +1816,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@36.1.0: - resolution: {integrity: sha512-gnp3BnbKdGsVc7cm1qlEaZc8pJsR08mIs8H/yTo8gHEtFkGGJbDTVZOYNAfbQlL0aXh+ozv+CnyiNeDNkT1Upg==} + electron@36.2.1: + resolution: {integrity: sha512-mm1Y+Ms46xcOTA69h8hpqfX392HfV4lga9aEkYkd/Syx1JBStvcACOIouCgGrnZpxNZPVS1jM8NTcMkNjuK6BQ==} engines: {node: '>= 12.20.55'} hasBin: true @@ -4455,7 +4455,7 @@ snapshots: array-union@2.1.0: {} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/acfb7e8b61c442e089c522653f8fdcb1c3989eb0: + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/3275152dfe7d3d4f7ae41cbca01257deba15a446: dependencies: ws: 8.18.0 transitivePeerDependencies: @@ -4962,7 +4962,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@36.1.0: + electron@36.2.1: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 diff --git a/src/discord/window.ts b/src/discord/window.ts index 9e165e0..39fcb27 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -175,7 +175,7 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { /https:\/\/.*\.nel\.cloudflare\.com\/.*/, ]; passedWindow.webContents.session.webRequest.onBeforeRequest((details, callback) => { - if (details.url.startsWith("ws://") || blockedPatterns.some((pattern) => pattern.test(details.url))) { + if (blockedPatterns.some((pattern) => pattern.test(details.url))) { return callback({ cancel: true }); } return callback({}); From 024d38bcb342458258b41445fa741ac447fef89a Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 May 2025 21:23:33 +0200 Subject: [PATCH 713/896] chore: update arRPC --- package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4f52ea5..215cc66 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "typescript": "^5.7.2" }, "dependencies": { - "arrpc": "https://github.com/Legcord/arrpc.git", + "arrpc": "https://github.com/Legcord/arrpc.git#3275152dfe7d3d4f7ae41cbca01257deba15a446", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ec187aa..dd93760 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,7 +9,7 @@ importers: .: dependencies: arrpc: - specifier: https://github.com/Legcord/arrpc.git + specifier: https://github.com/Legcord/arrpc.git#3275152dfe7d3d4f7ae41cbca01257deba15a446 version: https://codeload.github.com/Legcord/arrpc/tar.gz/3275152dfe7d3d4f7ae41cbca01257deba15a446 electron-context-menu: specifier: ^4.0.4 From 9b5506a23e0b51271136c56b6a4e4579a455d143 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 May 2025 21:24:47 +0200 Subject: [PATCH 714/896] fix: add GTK flag on linux --- src/main.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.ts b/src/main.ts index 45e4573..e78b401 100644 --- a/src/main.ts +++ b/src/main.ts @@ -97,6 +97,7 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { crashReporter.start({ uploadToServer: false }); // enable pulseaudio audio sharing on linux if (process.platform === "linux") { + app.commandLine.appendSwitch("gtk-version", "3"); enableFeatures.add("PulseaudioLoopbackForScreenShare"); disableFeatures.add("WebRtcAllowInputVolumeAdjustment"); app.commandLine.appendSwitch("enable-speech-dispatcher"); From 5f3208bab231b67ee7019f875e7dc1be116c0731 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 May 2025 21:35:44 +0200 Subject: [PATCH 715/896] fix: download buttons appearing --- assets/app/css/discord.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/app/css/discord.css b/assets/app/css/discord.css index 4e3bf63..1712677 100644 --- a/assets/app/css/discord.css +++ b/assets/app/css/discord.css @@ -10,7 +10,7 @@ color: var(--text-muted); } -div:has(:has(:has([data-list-item-id="guildsnav___app-download-button"]))) { +div[class^="listItem__"]:has([data-list-item-id="guildsnav___app-download-button"]) { display: none !important; } From a0f771e899f36d4af3305307e9ede0988d34e731 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 May 2025 21:38:18 +0200 Subject: [PATCH 716/896] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 215cc66..1c3b71b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "legcord", - "version": "1.1.3", + "version": "1.1.4", "description": "Legcord is a custom client designed to enhance your Discord experience while keeping everything lightweight.", "main": "ts-out/main.js", "engines": { From 088920e8f06241e8ffd8005a3f6c1e753ea00879 Mon Sep 17 00:00:00 2001 From: imide Date: Sun, 18 May 2025 13:42:11 -0600 Subject: [PATCH 717/896] Appstream metadata for later flatpak builds (#912) --- .github/workflows/meta.yml | 47 ++++++++ electron-builder.ts | 6 +- meta/app.legcord.Legcord.metainfo.xml | 165 ++++++++++++++++++++++++++ package.json | 8 +- pnpm-lock.yaml | 25 +++- pnpm-workspace.yaml | 5 + scripts/build/sandboxFix.js | 74 ++++++++++++ scripts/utils/updateMeta.mts | 93 +++++++++++++++ 8 files changed, 411 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/meta.yml create mode 100644 meta/app.legcord.Legcord.metainfo.xml create mode 100644 pnpm-workspace.yaml create mode 100644 scripts/build/sandboxFix.js create mode 100644 scripts/utils/updateMeta.mts diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml new file mode 100644 index 0000000..5ad73c6 --- /dev/null +++ b/.github/workflows/meta.yml @@ -0,0 +1,47 @@ +name: Update metainfo on release + +on: + release: + types: + - published + workflow_dispatch: + +permissions: + contents: write + +jobs: + update: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.ETOKEN }} + + - name: Prepare PNPM + uses: pnpm/action-setup@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version-file: package.json + cache: pnpm + + - name: Install dependencies + run: pnpm i + + - name: Update metainfo + run: pnpm updateMeta + + - name: Commit and merge in changes + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + gh release upload "${{ github.event.release.tag_name }}" meta/app.legcord.Legcord.metainfo.xml + + git add meta/app.legcord.Legcord.metainfo.xml + git commit -m "metainfo: add entry for ${{ github.event.release.tag_name }}" + git push origin main + env: + GITHUB_TOKEN: ${{ secrets.ETOKEN }} diff --git a/electron-builder.ts b/electron-builder.ts index 0180234..1f43b3b 100644 --- a/electron-builder.ts +++ b/electron-builder.ts @@ -4,6 +4,7 @@ export const config: Configuration = { appId: "app.legcord.Legcord", productName: "Legcord", artifactName: "Legcord-${version}-${os}-${arch}.${ext}", + beforePack: "./scripts/build/sandboxFix.js", mac: { category: "public.app-category.social-networking", @@ -62,11 +63,6 @@ export const config: Configuration = { electronDownload: { cache: ".cache", }, - - flatpak: { - baseVersion: "24.08", - runtimeVersion: "24.08", - }, }; export default config; diff --git a/meta/app.legcord.Legcord.metainfo.xml b/meta/app.legcord.Legcord.metainfo.xml new file mode 100644 index 0000000..cef4ee5 --- /dev/null +++ b/meta/app.legcord.Legcord.metainfo.xml @@ -0,0 +1,165 @@ + + + + app.legcord.Legcord + Legcord + Legcord is a custom client designed to enhance your Discord experience while keeping everything lightweight. + + Legcord Contributors + + CC0-1.0 + OSL-3.0 + Legcord + +

    Legcord is a custom client designed to enhance your Discord experience while keeping everything lightweight.

    +

    Legcord comes bundled with Shelter, Vencord, Equicord and Venmic.

    +
    + + + Legcord settings page on MacOS + https://github.com/Legcord/Legcord/blob/77e2ccafb221936a99654c237cb385d486780bc7/assets/screenshots/settings.png + + + Legcord settings open with Shelter configs + https://github.com/Legcord/Legcord/blob/77e2ccafb221936a99654c237cb385d486780bc7/assets/screenshots/shelter.png + + + Legcord settings open with custom keybind settings shown + https://github.com/Legcord/Legcord/blob/77e2ccafb221936a99654c237cb385d486780bc7/assets/screenshots/keybinds.png + + + + + https://github.com/Legcord/Legcord/releases/tag/v1.1.3 + +

    Improvements & Fixes

    +
      +
    • 🔧 **Fixed the app showing a blank screen on some platforms**.
    • +
    +

    Special Thanks ❤️

    +
    +
    + + https://github.com/Legcord/Legcord/releases/tag/v1.1.2 + +

    Improvements & Fixes

    +
      +
    • 🌈 **Full Discord rebrand support - proper styling of custom/overlay titlebars**
    • +
    • 🚀 **Improved how Blink feature flags are set — now done only once for better reliability.**.
    • +
    +

    New Contributors 👋

    +

    Special Thanks ❤️

    +
    +
    + + https://github.com/Legcord/Legcord/releases/tag/v1.1.1 + +

    Improvements & Fixes

    +
      +
    • 🛠️ **arRPC now runs in a separate process**, resolving #808
    • +
    • 🌈 **Added modern macOS transparency support**.
    • +
    • 🚀 **Upgraded Electron**, fixing #839
    • +
    • 📦 Moved tsx to devDependencies #835
    • +
    • 🎛️ Fixed traffic lights not being centered in "overlay" mode #860
    • +
    • 📖 Added MacPorts installation instructions to the README #834
    • +
    +

    New Contributors 👋

    +
      +
    • @akierig - #834
    • +
    • @fabricionaweb - #835
    • +
    • @nihaals - #860
    • +
    +

    Special Thanks ❤️

    +
    +
    + + https://github.com/Legcord/Legcord/releases/tag/v1.1.0 + +
      +
    • **Theme Manager v2:**
    • +
    • **Screenshare v3 (rewrite of the rewrite):**
    • +
    • **macOS Touch Bar integration:**
    • +
    • **New built-in Quick CSS Editor**
    • +
    • **New first-time setup by @FlintSH**
    • +
    • **New power management features**
    • +
    • **New settings:**
    • +
    • **Rewritten preload to be sandboxed**
    • +
    +
    +
    + + https://github.com/Legcord/Legcord/releases/tag/v1.0.8 + + + + https://github.com/Legcord/Legcord/releases/tag/v1.0.7 + + + + https://github.com/Legcord/Legcord/releases/tag/v1.0.6 + + + + https://github.com/Legcord/Legcord/releases/tag/v1.0.5 + + + + https://github.com/Legcord/Legcord/releases/tag/v1.0.4 + + + + https://github.com/Legcord/Legcord/releases/tag/v1.0.3 + + + + https://github.com/Legcord/Legcord/releases/tag/v1.0.2 + + + + https://github.com/Legcord/Legcord/releases/tag/devbuild + + + + https://github.com/Legcord/Legcord/releases/tag/v1.0.0 + + +
    + https://legcord.app + https://github.com/Legcord/Legcord/issues + https://legcord.app/faq + https://github.com/sponsors/smartfrigde + https://discord.com/invite/TnhxcqynZ2 + https://github.com/Legcord/Legcord + + InstantMessaging + Network + + + pointing + keyboard + 420 + always + + + voice + 760 + 1200 + + + moderate + mild + intense + intense + intense + intense + + app.legcord.Legcord.desktop + + Discord + Vencord + Privacy + Mod + Legcord + Equicord + +
    diff --git a/package.json b/package.json index 1c3b71b..8d47297 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "lint": "biome check", "lint:fix": "biome check --write", "postinstall": "electron-builder install-app-deps", - "CIbuild": "pnpm run build && electron-builder --linux zip && electron-builder --windows zip && electron-builder --macos zip" + "CIbuild": "pnpm run build && electron-builder --linux zip && electron-builder --windows zip && electron-builder --macos zip", + "updateMeta": "tsx scripts/utils/updateMeta.mts" }, "repository": { "type": "git", @@ -56,7 +57,8 @@ "solid-js": "^1.9.3", "solid-motionone": "^1.0.3", "tsx": "^4.19.2", - "typescript": "^5.7.2" + "typescript": "^5.7.2", + "xml-formatter": "^3.6.6" }, "dependencies": { "arrpc": "https://github.com/Legcord/arrpc.git#3275152dfe7d3d4f7ae41cbca01257deba15a446", @@ -68,6 +70,6 @@ "optionalDependencies": { "@vencord/venmic": "^6.1.0" }, - "packageManager": "pnpm@10.0.0-beta.1+sha512.629de0531b9ae9a3f8e372d014ef8f5a57906d9a48095ced54bbfbd246b4136381478032c8d13819fd1eedde8330517a799ea6756eedd9a136e36524fa3083cf", + "packageManager": "pnpm@10.11.0", "package-manager-strict": false } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dd93760..dba042b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,10 +23,6 @@ importers: ws: specifier: ^8.18.0 version: 8.18.0 - optionalDependencies: - '@vencord/venmic': - specifier: ^6.1.0 - version: 6.1.0 devDependencies: '@babel/preset-flow': specifier: ^7.25.9 @@ -103,6 +99,13 @@ importers: typescript: specifier: ^5.7.2 version: 5.7.2 + xml-formatter: + specifier: ^3.6.6 + version: 3.6.6 + optionalDependencies: + '@vencord/venmic': + specifier: ^6.1.0 + version: 6.1.0 packages: @@ -3142,6 +3145,14 @@ packages: utf-8-validate: optional: true + xml-formatter@3.6.6: + resolution: {integrity: sha512-yfofQht42x2sN1YThT6Er6GFXiQinfDAsMTNvMPi2uZw5/Vtc2PYHfvALR8U+b2oN2ekBxLd2tGWV06rAM8nQA==} + engines: {node: '>= 16'} + + xml-parser-xo@4.1.4: + resolution: {integrity: sha512-wo+yWDNeMwd1ctzH4CsiGXaAappDsxuR+VnmPewOzHk/zvefksT2ZlcWpAePl11THOWgnIZM4GjvumevurNWZw==} + engines: {node: '>= 16'} + xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} @@ -6383,6 +6394,12 @@ snapshots: ws@8.18.0: {} + xml-formatter@3.6.6: + dependencies: + xml-parser-xo: 4.1.4 + + xml-parser-xo@4.1.4: {} + xmlbuilder@15.1.1: {} y18n@5.0.8: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..1a6e4ef --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +onlyBuiltDependencies: + - '@biomejs/biome' + - '@parcel/watcher' + - electron + - esbuild diff --git a/scripts/build/sandboxFix.js b/scripts/build/sandboxFix.js new file mode 100644 index 0000000..b0a4c40 --- /dev/null +++ b/scripts/build/sandboxFix.js @@ -0,0 +1,74 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2023 Vendicated and Vencord contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +// Based on https://github.com/gergof/electron-builder-sandbox-fix/blob/master/lib/index.js + +import { join } from "node:path"; +import { chmod, cp, rename, rm, writeFile } from "node:fs/promises"; +let isApplied = false; + +const hook = async () => { + if (isApplied) return; + isApplied = true; + if (process.platform !== "linux") { + // this fix is only required on linux + return; + } + const AppImageTarget = require("app-builder-lib/out/targets/AppImageTarget"); + const oldBuildMethod = AppImageTarget.default.prototype.build; + AppImageTarget.default.prototype.build = async function (...args) { + console.log("Running AppImage builder hook", args); + const oldPath = args[0]; + const newPath = `${oldPath}-appimage-sandbox-fix`; + // just in case + try { + await rm(newPath, { + recursive: true, + }); + } catch { } + + console.log("Copying to apply appimage fix", oldPath, newPath); + await cp(oldPath, newPath, { + recursive: true, + }); + args[0] = newPath; + + const executable = join(newPath, this.packager.executableName); + + const loaderScript = ` +#!/usr/bin/env bash + +SCRIPT_DIR="$( cd "$( dirname "\${BASH_SOURCE[0]}" )" && pwd )" +IS_STEAMOS=0 + +if [[ "$SteamOS" == "1" && "$SteamGamepadUI" == "1" ]]; then + echo "Running Legcord on SteamOS, disabling sandbox" + IS_STEAMOS=1 +fi + +exec "$SCRIPT_DIR/${this.packager.executableName}.bin" "$([ "$IS_STEAMOS" == 1 ] && echo '--no-sandbox')" "$@" + `.trim(); + + try { + await rename(executable, `${executable}.bin`); + await writeFile(executable, loaderScript); + await chmod(executable, 0o755); + } catch (e) { + console.error(`failed to create loder for sandbox fix: ${e.message}`); + throw new Error("Failed to create loader for sandbox fix"); + } + + const ret = await oldBuildMethod.apply(this, args); + + await rm(newPath, { + recursive: true, + }); + + return ret; + }; +}; + +export default hook; diff --git a/scripts/utils/updateMeta.mts b/scripts/utils/updateMeta.mts new file mode 100644 index 0000000..788dfd8 --- /dev/null +++ b/scripts/utils/updateMeta.mts @@ -0,0 +1,93 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2023 Vendicated and Vencord contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { promises as fs } from "node:fs"; + +import { DOMParser, XMLSerializer } from "@xmldom/xmldom"; +import xmlFormat from "xml-formatter"; + +function generateDescription(description: string, descriptionNode: Element) { + const lines = description.replace(/\r/g, "").split("\n"); + let currentList: Element | null = null; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + + if (line.includes("New Contributors")) { + // we're done, don't parse any more since the new contributors section is the last one + break; + } + + if (line.startsWith("## ")) { + const pNode = descriptionNode.ownerDocument.createElement("p"); + pNode.textContent = line.slice(3); + descriptionNode.appendChild(pNode); + } else if (line.startsWith("* ")) { + const liNode = descriptionNode.ownerDocument.createElement("li"); + liNode.textContent = line.slice(2).split("in https://github.com")[0].trim(); // don't include links to github + + if (!currentList) { + currentList = descriptionNode.ownerDocument.createElement("ul"); + } + + currentList.appendChild(liNode); + } + + if (currentList && !lines[i + 1].startsWith("* ")) { + descriptionNode.appendChild(currentList); + currentList = null; + } + } +} + +const latestReleaseInformation = await fetch("https://api.github.com/repos/Legcord/Legcord/releases/latest", { + headers: { + Accept: "application/vnd.github+json", + "X-Github-Api-Version": "2022-11-28", + }, +}).then((res) => res.json()); + +const metaInfo = await fs.readFile("./meta/app.legcord.Legcord.metainfo.xml", "utf-8"); + +const parser = new DOMParser().parseFromString(metaInfo, "text/xml"); + +const releaseList = parser.getElementsByTagName("releases")[0]; + +for (let i = 0; i < releaseList.childNodes.length; i++) { + const release = releaseList.childNodes[i] as Element; + + if (release.nodeType === 1 && release.getAttribute("version") === latestReleaseInformation.name) { + console.log("Latest release already added, nothing to be done"); + process.exit(0); + } +} + +const release = parser.createElement("release"); +release.setAttribute("version", latestReleaseInformation.name); +release.setAttribute("date", latestReleaseInformation.published_at.split("T")[0]); +release.setAttribute("type", "stable"); + +const releaseUrl = parser.createElement("url"); +releaseUrl.textContent = latestReleaseInformation.html_url; + +release.appendChild(releaseUrl); + +const description = parser.createElement("description"); + +// we're not using a full markdown parser here since we don't have a lot of formatting options to begin with +generateDescription(latestReleaseInformation.body, description); + +release.appendChild(description); + +releaseList.insertBefore(release, releaseList.childNodes[0]); + +const output = xmlFormat(new XMLSerializer().serializeToString(parser), { + lineSeparator: "\n", + collapseContent: true, + indentation: " ", +}); + +await fs.writeFile("./meta/app.legcord.Legcord.metainfo.xml", output, "utf-8"); From 9894218dedcce694b5f6757d987bfba03f0298a8 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 May 2025 21:43:34 +0200 Subject: [PATCH 718/896] chore: lint --- scripts/build/sandboxFix.js | 80 ++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/scripts/build/sandboxFix.js b/scripts/build/sandboxFix.js index b0a4c40..53d1773 100644 --- a/scripts/build/sandboxFix.js +++ b/scripts/build/sandboxFix.js @@ -6,39 +6,39 @@ // Based on https://github.com/gergof/electron-builder-sandbox-fix/blob/master/lib/index.js -import { join } from "node:path"; import { chmod, cp, rename, rm, writeFile } from "node:fs/promises"; +import { join } from "node:path"; let isApplied = false; const hook = async () => { - if (isApplied) return; - isApplied = true; - if (process.platform !== "linux") { - // this fix is only required on linux - return; - } - const AppImageTarget = require("app-builder-lib/out/targets/AppImageTarget"); - const oldBuildMethod = AppImageTarget.default.prototype.build; - AppImageTarget.default.prototype.build = async function (...args) { - console.log("Running AppImage builder hook", args); - const oldPath = args[0]; - const newPath = `${oldPath}-appimage-sandbox-fix`; - // just in case - try { - await rm(newPath, { - recursive: true, - }); - } catch { } + if (isApplied) return; + isApplied = true; + if (process.platform !== "linux") { + // this fix is only required on linux + return; + } + const AppImageTarget = require("app-builder-lib/out/targets/AppImageTarget"); + const oldBuildMethod = AppImageTarget.default.prototype.build; + AppImageTarget.default.prototype.build = async function (...args) { + console.log("Running AppImage builder hook", args); + const oldPath = args[0]; + const newPath = `${oldPath}-appimage-sandbox-fix`; + // just in case + try { + await rm(newPath, { + recursive: true, + }); + } catch {} - console.log("Copying to apply appimage fix", oldPath, newPath); - await cp(oldPath, newPath, { - recursive: true, - }); - args[0] = newPath; + console.log("Copying to apply appimage fix", oldPath, newPath); + await cp(oldPath, newPath, { + recursive: true, + }); + args[0] = newPath; - const executable = join(newPath, this.packager.executableName); + const executable = join(newPath, this.packager.executableName); - const loaderScript = ` + const loaderScript = ` #!/usr/bin/env bash SCRIPT_DIR="$( cd "$( dirname "\${BASH_SOURCE[0]}" )" && pwd )" @@ -52,23 +52,23 @@ fi exec "$SCRIPT_DIR/${this.packager.executableName}.bin" "$([ "$IS_STEAMOS" == 1 ] && echo '--no-sandbox')" "$@" `.trim(); - try { - await rename(executable, `${executable}.bin`); - await writeFile(executable, loaderScript); - await chmod(executable, 0o755); - } catch (e) { - console.error(`failed to create loder for sandbox fix: ${e.message}`); - throw new Error("Failed to create loader for sandbox fix"); - } + try { + await rename(executable, `${executable}.bin`); + await writeFile(executable, loaderScript); + await chmod(executable, 0o755); + } catch (e) { + console.error(`failed to create loder for sandbox fix: ${e.message}`); + throw new Error("Failed to create loader for sandbox fix"); + } - const ret = await oldBuildMethod.apply(this, args); + const ret = await oldBuildMethod.apply(this, args); - await rm(newPath, { - recursive: true, - }); + await rm(newPath, { + recursive: true, + }); - return ret; - }; + return ret; + }; }; export default hook; From b4d0abce4f35ab7ecfad62d5e1b1025eddf944b2 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 May 2025 22:09:15 +0200 Subject: [PATCH 719/896] fix: use import() --- scripts/build/sandboxFix.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build/sandboxFix.js b/scripts/build/sandboxFix.js index 53d1773..ae46bc0 100644 --- a/scripts/build/sandboxFix.js +++ b/scripts/build/sandboxFix.js @@ -17,7 +17,7 @@ const hook = async () => { // this fix is only required on linux return; } - const AppImageTarget = require("app-builder-lib/out/targets/AppImageTarget"); + const AppImageTarget = import("app-builder-lib/out/targets/AppImageTarget"); const oldBuildMethod = AppImageTarget.default.prototype.build; AppImageTarget.default.prototype.build = async function (...args) { console.log("Running AppImage builder hook", args); From f5894a734d0f23826e987f45fdf35490e3da955a Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 18 May 2025 22:13:34 +0200 Subject: [PATCH 720/896] fix: correct import path --- scripts/build/sandboxFix.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build/sandboxFix.js b/scripts/build/sandboxFix.js index ae46bc0..902ff08 100644 --- a/scripts/build/sandboxFix.js +++ b/scripts/build/sandboxFix.js @@ -17,7 +17,7 @@ const hook = async () => { // this fix is only required on linux return; } - const AppImageTarget = import("app-builder-lib/out/targets/AppImageTarget"); + const AppImageTarget = import("app-builder-lib/out/targets/AppImageTarget.js"); const oldBuildMethod = AppImageTarget.default.prototype.build; AppImageTarget.default.prototype.build = async function (...args) { console.log("Running AppImage builder hook", args); From 6c9e7c2385c840670a87dd13200169a61ca7cf2b Mon Sep 17 00:00:00 2001 From: imide Date: Mon, 19 May 2025 11:12:43 -0600 Subject: [PATCH 721/896] fix: sandboxFix error (maybe) (#918) --- pnpm-workspace.yaml | 1 + scripts/build/sandboxFix.js | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1a6e4ef..227d42b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,6 @@ onlyBuiltDependencies: - '@biomejs/biome' - '@parcel/watcher' + - '@vencord/venmic' - electron - esbuild diff --git a/scripts/build/sandboxFix.js b/scripts/build/sandboxFix.js index 902ff08..802a4b9 100644 --- a/scripts/build/sandboxFix.js +++ b/scripts/build/sandboxFix.js @@ -18,8 +18,9 @@ const hook = async () => { return; } const AppImageTarget = import("app-builder-lib/out/targets/AppImageTarget.js"); - const oldBuildMethod = AppImageTarget.default.prototype.build; - AppImageTarget.default.prototype.build = async function (...args) { + const AppImageTargetClass = (await AppImageTarget).default; + const oldBuildMethod = AppImageTargetClass.prototype.build; + AppImageTargetClass.prototype.build = async function (...args) { console.log("Running AppImage builder hook", args); const oldPath = args[0]; const newPath = `${oldPath}-appimage-sandbox-fix`; From a54e083632574214e968431214f5e7ad784f313e Mon Sep 17 00:00:00 2001 From: imide Date: Mon, 19 May 2025 14:39:09 -0600 Subject: [PATCH 722/896] fix: convert sandboxFix back to cjs (#920) --- electron-builder.ts | 2 +- .../build/{sandboxFix.js => sandboxFix.cjs} | 27 +++++++++---------- 2 files changed, 14 insertions(+), 15 deletions(-) rename scripts/build/{sandboxFix.js => sandboxFix.cjs} (69%) diff --git a/electron-builder.ts b/electron-builder.ts index 1f43b3b..6e51afa 100644 --- a/electron-builder.ts +++ b/electron-builder.ts @@ -4,7 +4,7 @@ export const config: Configuration = { appId: "app.legcord.Legcord", productName: "Legcord", artifactName: "Legcord-${version}-${os}-${arch}.${ext}", - beforePack: "./scripts/build/sandboxFix.js", + beforePack: "./scripts/build/sandboxFix.cjs", mac: { category: "public.app-category.social-networking", diff --git a/scripts/build/sandboxFix.js b/scripts/build/sandboxFix.cjs similarity index 69% rename from scripts/build/sandboxFix.js rename to scripts/build/sandboxFix.cjs index 802a4b9..bf118fd 100644 --- a/scripts/build/sandboxFix.js +++ b/scripts/build/sandboxFix.cjs @@ -6,8 +6,8 @@ // Based on https://github.com/gergof/electron-builder-sandbox-fix/blob/master/lib/index.js -import { chmod, cp, rename, rm, writeFile } from "node:fs/promises"; -import { join } from "node:path"; +const fs = require("node:fs/promises"); +const path = require("node:path"); let isApplied = false; const hook = async () => { @@ -17,27 +17,26 @@ const hook = async () => { // this fix is only required on linux return; } - const AppImageTarget = import("app-builder-lib/out/targets/AppImageTarget.js"); - const AppImageTargetClass = (await AppImageTarget).default; - const oldBuildMethod = AppImageTargetClass.prototype.build; - AppImageTargetClass.prototype.build = async function (...args) { + const AppImageTarget = require("app-builder-lib/out/targets/AppImageTarget.js"); + const oldBuildMethod = AppImageTarget.default.prototype.build; + AppImageTarget.default.prototype.build = async function (...args) { console.log("Running AppImage builder hook", args); const oldPath = args[0]; const newPath = `${oldPath}-appimage-sandbox-fix`; // just in case try { - await rm(newPath, { + await fs.rm(newPath, { recursive: true, }); } catch {} console.log("Copying to apply appimage fix", oldPath, newPath); - await cp(oldPath, newPath, { + await fs.cp(oldPath, newPath, { recursive: true, }); args[0] = newPath; - const executable = join(newPath, this.packager.executableName); + const executable = path.join(newPath, this.packager.executableName); const loaderScript = ` #!/usr/bin/env bash @@ -54,9 +53,9 @@ exec "$SCRIPT_DIR/${this.packager.executableName}.bin" "$([ "$IS_STEAMOS" == 1 ] `.trim(); try { - await rename(executable, `${executable}.bin`); - await writeFile(executable, loaderScript); - await chmod(executable, 0o755); + await fs.rename(executable, `${executable}.bin`); + await fs.writeFile(executable, loaderScript); + await fs.chmod(executable, 0o755); } catch (e) { console.error(`failed to create loder for sandbox fix: ${e.message}`); throw new Error("Failed to create loader for sandbox fix"); @@ -64,7 +63,7 @@ exec "$SCRIPT_DIR/${this.packager.executableName}.bin" "$([ "$IS_STEAMOS" == 1 ] const ret = await oldBuildMethod.apply(this, args); - await rm(newPath, { + await fs.rm(newPath, { recursive: true, }); @@ -72,4 +71,4 @@ exec "$SCRIPT_DIR/${this.packager.executableName}.bin" "$([ "$IS_STEAMOS" == 1 ] }; }; -export default hook; +module.exports = hook; From 8fc35a3b13f4dd64ffef7cc89221db61d36c8c78 Mon Sep 17 00:00:00 2001 From: imide Date: Sat, 24 May 2025 11:03:24 -0600 Subject: [PATCH 723/896] fix: update meta.yml (#921) --- .github/workflows/meta.yml | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index 5ad73c6..fe657e5 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -12,20 +12,18 @@ permissions: jobs: update: runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} steps: - uses: actions/checkout@v4 - with: - token: ${{ secrets.ETOKEN }} + - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json - - name: Prepare PNPM - uses: pnpm/action-setup@v4 - - - name: Use Node.js + - name: Use Node.js 22 uses: actions/setup-node@v4 with: - node-version-file: package.json - cache: pnpm + node-version-file: package.json + cache: pnpm - name: Install dependencies run: pnpm i @@ -36,12 +34,12 @@ jobs: - name: Commit and merge in changes run: | git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" gh release upload "${{ github.event.release.tag_name }}" meta/app.legcord.Legcord.metainfo.xml git add meta/app.legcord.Legcord.metainfo.xml git commit -m "metainfo: add entry for ${{ github.event.release.tag_name }}" - git push origin main + git push env: - GITHUB_TOKEN: ${{ secrets.ETOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From b3c2d43081b00ff8371223cba1121be85de354c7 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 26 May 2025 18:54:07 +0200 Subject: [PATCH 724/896] feat: rewrite RPC --- src/shelter/rpc/asset.ts | 57 ++++++++++++++++++++++++++++++++++++++++ src/shelter/rpc/index.js | 55 -------------------------------------- src/shelter/rpc/index.ts | 39 +++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 55 deletions(-) create mode 100644 src/shelter/rpc/asset.ts delete mode 100644 src/shelter/rpc/index.js create mode 100644 src/shelter/rpc/index.ts diff --git a/src/shelter/rpc/asset.ts b/src/shelter/rpc/asset.ts new file mode 100644 index 0000000..05eb9b3 --- /dev/null +++ b/src/shelter/rpc/asset.ts @@ -0,0 +1,57 @@ +const { http } = shelter; + +const cache = new Map(); +type Asset = { id: string; name: string; [key: string]: unknown }; +const assetCache: { [key: number]: Asset[] } = {}; +const appCache: { [key: number]: { id: number; name: string } } = {}; +export async function fetchExternalAsset(applicationId: number, url: string) { + await http.ready; + if (cache.has(url)) { + return cache.get(url); + } + const res = await http.post!({ + url: `/applications/${applicationId}/external-assets`, + body: { urls: [url] }, + oldFormErrors: false, + }); + + if (res.ok) { + const path = `mp:${res.body[0].external_asset_path}`; + cache.set(url, path); + return path; + } + cache.set(url, undefined); +} + +export async function fetchAssetId(applicationId: number, assetName: string): Promise { + await http.ready; + if (!assetCache[applicationId]) { + try { + const response = await http.get!(`/oauth2/applications/${applicationId}/assets`); + if (response.status !== 200) { + console.error("Error fetching resources"); + return null; + } + assetCache[applicationId] = response.body; + } catch (error) { + console.error("Request failed", error); + return null; + } + } + const resource = assetCache[applicationId].find((item) => item.name === assetName); + return resource ? resource.id : null; +} + +export async function fetchApp(applicationId: number): Promise<{ id: number; name: string }> { + await http.ready; + if (!appCache[applicationId]) { + try { + const response = await http.get!(`/oauth2/applications/${applicationId}/rpc`); + appCache[applicationId] = response.body; + } catch (error) { + console.error("Request failed", error); + return { id: applicationId, name: "Unknown" }; + } + } + return appCache[applicationId] || { id: applicationId, name: "Unknown" }; +} diff --git a/src/shelter/rpc/index.js b/src/shelter/rpc/index.js deleted file mode 100644 index 56f31c9..0000000 --- a/src/shelter/rpc/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const { - flux: { - dispatcher: FluxDispatcher, - stores: { ApplicationStore }, - }, - http, -} = shelter; -const apps = {}; -const assetCache = {}; - -const fetchAssetId = async (applicationId, assetName) => { - // TO-DO Use APPLICATION_ASSETS_UPDATE and APPLICATION_ASSETS_FETCH - if (!assetCache[applicationId]) { - try { - const response = await http.get(`/oauth2/applications/${applicationId}/assets`); - - if (response.status !== 200) { - console.error("Error fetching resources"); - return null; - } - - assetCache[applicationId] = response.body; - } catch (error) { - console.error("Request failed", error); - return null; - } - } - - // Find the resource ID by its name in the cached resources - const resource = assetCache[applicationId].find((item) => item.name === assetName); - return resource ? resource.id : null; -}; - -export function onLoad() { - LegcordRPC.listen(async (msg) => { - if (msg.activity?.assets?.large_image) - msg.activity.assets.large_image = await fetchAssetId( - msg.activity.application_id, - msg.activity.assets.large_image, - ); - if (msg.activity?.assets?.small_image) - msg.activity.assets.small_image = await fetchAssetId( - msg.activity.application_id, - msg.activity.assets.small_image, - ); - if (msg.activity) { - const appId = msg.activity.application_id; - if (!apps[appId]) apps[appId] = (await ApplicationStore.getApplication(appId)) || "Unknown"; - - const app = apps[appId]; - if (!msg.activity.name) msg.activity.name = app.name; - } - FluxDispatcher.dispatch({ type: "LOCAL_ACTIVITY_UPDATE", ...msg }); // set RPC status - }); -} diff --git a/src/shelter/rpc/index.ts b/src/shelter/rpc/index.ts new file mode 100644 index 0000000..f7a9e9e --- /dev/null +++ b/src/shelter/rpc/index.ts @@ -0,0 +1,39 @@ +import { fetchApp, fetchAssetId, fetchExternalAsset } from "./asset.js"; + +const { + flux: { dispatcher: FluxDispatcher }, +} = shelter; + +export function onLoad() { + window.LegcordRPC.listen( + async (msg: { + activity: { + assets: { large_image: string | null; small_image: string | null }; + application_id: number; + name: string; + }; + }) => { + if (msg.activity?.assets?.large_image?.startsWith("https://")) { + console.log(fetchExternalAsset(msg.activity.application_id, msg.activity.assets.large_image)); + } else { + if (msg.activity?.assets?.large_image) + msg.activity.assets.large_image = await fetchAssetId( + msg.activity.application_id, + msg.activity.assets.large_image, + ); + if (msg.activity?.assets?.small_image) + msg.activity.assets.small_image = await fetchAssetId( + msg.activity.application_id, + msg.activity.assets.small_image, + ); + } + if (msg.activity) { + const appId = msg.activity.application_id; + const app = await fetchApp(appId); + if (!msg.activity.name) msg.activity.name = app.name; + console.log("RPC activity update", msg.activity); + } + FluxDispatcher.dispatch({ type: "LOCAL_ACTIVITY_UPDATE", ...msg }); // set RPC status + }, + ); +} From 5cb27b13639526b5ee8894f44e437b30c5808b9c Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 26 May 2025 18:54:58 +0200 Subject: [PATCH 725/896] fix: types for LegcordRPC --- src/discord/preload/preload.mts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/discord/preload/preload.mts b/src/discord/preload/preload.mts index b925c6e..cc4525f 100644 --- a/src/discord/preload/preload.mts +++ b/src/discord/preload/preload.mts @@ -14,5 +14,16 @@ window.localStorage.setItem("hideNag", "true"); declare global { interface Window { legcord: LegcordWindow; + LegcordRPC: { + listen: ( + callback: (msg: { + activity: { + assets: { large_image: string | null; small_image: string | null }; + application_id: number; + name: string; + }; + }) => void, + ) => void; + }; } } From a21c22f3e3e99494a4fc679309008fa2ce222411 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 26 May 2025 18:56:57 +0200 Subject: [PATCH 726/896] feat: hero view updater --- .../components/HeroUpdater.module.css | 13 +++++ .../settings/components/HeroUpdater.tsx | 53 +++++++++++++++++++ src/shelter/settings/index.ts | 3 ++ .../settings/pages/RegisteredGamesPage.tsx | 12 +++++ src/shelter/settings/pages/SettingsPage.tsx | 6 +-- 5 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 src/shelter/settings/components/HeroUpdater.module.css create mode 100644 src/shelter/settings/components/HeroUpdater.tsx create mode 100644 src/shelter/settings/pages/RegisteredGamesPage.tsx diff --git a/src/shelter/settings/components/HeroUpdater.module.css b/src/shelter/settings/components/HeroUpdater.module.css new file mode 100644 index 0000000..c20cd31 --- /dev/null +++ b/src/shelter/settings/components/HeroUpdater.module.css @@ -0,0 +1,13 @@ +.hero { + background: var(--background-surface-high); + border-radius: 0.5rem; + box-shadow: var(--shadow-elevation-2); + color: var(--text-on-surface); + display: flex; + flex-direction: column; + gap: 1rem; + padding: 2rem; + position: relative; + width: 100%; + z-index: 1; +} diff --git a/src/shelter/settings/components/HeroUpdater.tsx b/src/shelter/settings/components/HeroUpdater.tsx new file mode 100644 index 0000000..1e1d123 --- /dev/null +++ b/src/shelter/settings/components/HeroUpdater.tsx @@ -0,0 +1,53 @@ +import { createSignal } from "solid-js"; +import classes from "./HeroUpdater.module.css"; +const LOGO_URL = "https://github.com/Legcord/Branding/raw/main/assets/legcord-banner.png"; // Replace with your logo + +function checkForUpdates() { + // Simulate checking for updates + return new Promise((resolve) => setTimeout(() => resolve(Math.random() > 0.5), 1200)); +} + +const DOWNLOAD_URL = "https://example.com/download"; // Replace with your download page + +const HeroUpdater = () => { + const [checking, setChecking] = createSignal(false); + const [updateAvailable, setUpdateAvailable] = createSignal(null); + + const handleCheck = async () => { + setChecking(true); + setUpdateAvailable(null); + const available = await checkForUpdates(); + setUpdateAvailable(available); + setChecking(false); + }; + + const handleDownload = () => { + window.open(DOWNLOAD_URL, "_blank"); + }; + + return ( +
    + Logo +

    Update Checker

    +

    Check if a new version is available and download updates easily.

    + + {updateAvailable() === true && ( +
    +

    Update available!

    + +
    + )} + {updateAvailable() === false && ( +
    +

    Your app is up to date.

    +
    + )} +
    + ); +}; + +export default HeroUpdater; diff --git a/src/shelter/settings/index.ts b/src/shelter/settings/index.ts index 2e2e6c8..8759562 100644 --- a/src/shelter/settings/index.ts +++ b/src/shelter/settings/index.ts @@ -1,7 +1,9 @@ /// import { KeybindsPage } from "./pages/KeybindsPage.jsx"; +import { RegisteredGamesPage } from "./pages/RegisteredGamesPage.jsx"; import { SettingsPage } from "./pages/SettingsPage.jsx"; import { ThemesPage } from "./pages/ThemesPage.jsx"; + import { isRestartRequired, refreshSettings, refreshThemes } from "./settings.js"; const { plugin: { store }, @@ -12,6 +14,7 @@ const { } = shelter; const settingsPages = [ + registerSection("section", "legcord-games", "Registered Games", RegisteredGamesPage), registerSection("divider"), registerSection("header", "Legcord"), registerSection("section", "legcord-settings", "Settings", SettingsPage), diff --git a/src/shelter/settings/pages/RegisteredGamesPage.tsx b/src/shelter/settings/pages/RegisteredGamesPage.tsx new file mode 100644 index 0000000..bc71153 --- /dev/null +++ b/src/shelter/settings/pages/RegisteredGamesPage.tsx @@ -0,0 +1,12 @@ +const { + ui: { Header, HeaderTags, Divider }, +} = shelter; + +export function RegisteredGamesPage() { + return ( + <> +
    Registered Games
    + + + ); +} diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index bfa21aa..d53ed22 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -1,13 +1,14 @@ import { Show } from "solid-js"; import type { Settings } from "../../../@types/settings.js"; import { DropdownItem } from "../components/DropdownItem.jsx"; +import HeroUpdater from "../components/HeroUpdater.jsx"; import { TextBoxItem } from "../components/TextBoxItem.jsx"; import { setConfig, toggleMod } from "../settings.js"; import classes from "./SettingsPage.module.css"; const { plugin: { store }, - ui: { SwitchItem, Header, Divider, HeaderTags, Button, ButtonSizes }, + ui: { SwitchItem, Header, HeaderTags, Button, ButtonSizes }, } = shelter; const settings = store.settings as Settings; @@ -15,8 +16,7 @@ const settings = store.settings as Settings; export function SettingsPage() { return ( <> -
    Settings
    - +
    {store.i18n["settings-category-mods"]}
    From 77a5e7213786c0282589bb2e71cc2e2d9bad146a Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 26 May 2025 19:02:47 +0200 Subject: [PATCH 727/896] feat: add smooth screenshare performance mode --- src/@types/settings.d.ts | 2 +- src/common/flags.ts | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/@types/settings.d.ts b/src/@types/settings.d.ts index b91ee29..a585f81 100644 --- a/src/@types/settings.d.ts +++ b/src/@types/settings.d.ts @@ -42,7 +42,7 @@ export interface Settings { mods: ValidMods[]; mobileMode: boolean; skipSplash: boolean; - performanceMode: "battery" | "dynamic" | "performance" | "vaapi" | "none"; + performanceMode: "battery" | "dynamic" | "performance" | "vaapi" | "smoothScreenshare" | "none"; customJsBundle: RequestInfo | URL | string; customCssBundle: RequestInfo | URL | string; startMinimized: boolean; diff --git a/src/common/flags.ts b/src/common/flags.ts index ca6c830..d5337bb 100644 --- a/src/common/flags.ts +++ b/src/common/flags.ts @@ -26,6 +26,32 @@ const performance: Preset = { disableFeatures: ["Vulkan"], }; +const smoothExperiment: Preset = { + switches: [ + ["enable-gpu-rasterization"], + ["enable-zero-copy"], + ["ignore-gpu-blocklist"], + ["disable-background-timer-throttling"], + ["disable-renderer-backgrounding"], + ["enable-hardware-overlays", "single-fullscreen,single-on-top,underlay"], + ["force_high_performance_gpu"], + ["use-gl", "desktop"], + ], + enableFeatures: [ + "EnableDrDc", + "CanvasOopRasterization", + "BackForwardCache:TimeToLiveInBackForwardCacheInSeconds/300/should_ignore_blocklists/true/enable_same_site/true", + "ThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes", + "UseSkiaRenderer", + "WebAssemblyLazyCompilation", + "AcceleratedVideoDecodeLinuxGL", + "AcceleratedVideoEncoder", + "AcceleratedVideoDecoder", + "AcceleratedVideoDecodeLinuxZeroCopyGL", + ], + disableFeatures: ["Vulkan", "UseChromeOSDirectVideoDecoder"], +}; + const battery: Preset = { // Known to have better battery life for Chromium? switches: [ @@ -95,6 +121,9 @@ export function getPreset(): Preset | undefined { case "vaapi": console.log("VAAPI mode enabled"); return vaapi; + case "smoothScreenshare": + console.log("Smooth screenshare mode enabled"); + return smoothExperiment; default: console.log("No performance modes set"); } From 325663c51e6ac0f02bcca397d744229f45512a87 Mon Sep 17 00:00:00 2001 From: imide Date: Tue, 27 May 2025 12:28:02 -0600 Subject: [PATCH 728/896] fix(ci): push history to dev (#922) --- .github/workflows/meta.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index fe657e5..b5225d5 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -40,6 +40,6 @@ jobs: git add meta/app.legcord.Legcord.metainfo.xml git commit -m "metainfo: add entry for ${{ github.event.release.tag_name }}" - git push + git push origin HEAD:dev env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From c8449c05b1f39936424c616cdee34bab670063ce Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 26 May 2025 19:52:43 +0200 Subject: [PATCH 729/896] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8d47297..4873390 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "legcord", - "version": "1.1.4", + "version": "1.2.0", "description": "Legcord is a custom client designed to enhance your Discord experience while keeping everything lightweight.", "main": "ts-out/main.js", "engines": { From cc6b582c8b5cdcd81c856a2916f88776d37a7b46 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 29 May 2025 18:59:32 +0200 Subject: [PATCH 730/896] fix: rpc external asset fetching fixes https://github.com/Legcord/Legcord/issues/923 --- src/shelter/rpc/asset.ts | 3 ++- src/shelter/rpc/index.ts | 20 +++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/shelter/rpc/asset.ts b/src/shelter/rpc/asset.ts index 05eb9b3..f7e5f9a 100644 --- a/src/shelter/rpc/asset.ts +++ b/src/shelter/rpc/asset.ts @@ -4,7 +4,7 @@ const cache = new Map(); type Asset = { id: string; name: string; [key: string]: unknown }; const assetCache: { [key: number]: Asset[] } = {}; const appCache: { [key: number]: { id: number; name: string } } = {}; -export async function fetchExternalAsset(applicationId: number, url: string) { +export async function fetchExternalAsset(applicationId: number, url: string): Promise { await http.ready; if (cache.has(url)) { return cache.get(url); @@ -21,6 +21,7 @@ export async function fetchExternalAsset(applicationId: number, url: string) { return path; } cache.set(url, undefined); + return ""; } export async function fetchAssetId(applicationId: number, assetName: string): Promise { diff --git a/src/shelter/rpc/index.ts b/src/shelter/rpc/index.ts index f7a9e9e..b95b455 100644 --- a/src/shelter/rpc/index.ts +++ b/src/shelter/rpc/index.ts @@ -8,13 +8,27 @@ export function onLoad() { window.LegcordRPC.listen( async (msg: { activity: { - assets: { large_image: string | null; small_image: string | null }; + assets: { large_image: string | null | undefined; small_image: string | null | undefined }; application_id: number; name: string; }; }) => { - if (msg.activity?.assets?.large_image?.startsWith("https://")) { - console.log(fetchExternalAsset(msg.activity.application_id, msg.activity.assets.large_image)); + if ( + msg.activity?.assets?.large_image?.startsWith("https://") ?? + msg.activity?.assets?.small_image?.startsWith("https://") + ) { + if (typeof msg.activity.assets.large_image === "string") { + msg.activity.assets.large_image = await fetchExternalAsset( + msg.activity.application_id, + msg.activity.assets.large_image, + ); + } + if (typeof msg.activity.assets.small_image === "string") { + msg.activity.assets.small_image = await fetchExternalAsset( + msg.activity.application_id, + msg.activity.assets.small_image, + ); + } } else { if (msg.activity?.assets?.large_image) msg.activity.assets.large_image = await fetchAssetId( From b08755c480b88fe95dbc797085410ffdcfd3e6b8 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 1 Jun 2025 20:34:37 +0200 Subject: [PATCH 731/896] feat: custom detectables --- src/common/detectables.ts | 30 ++++++++++++++++++++++++++++++ src/discord/window.ts | 5 ++++- src/rpc.ts | 5 +++-- 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 src/common/detectables.ts diff --git a/src/common/detectables.ts b/src/common/detectables.ts new file mode 100644 index 0000000..2614652 --- /dev/null +++ b/src/common/detectables.ts @@ -0,0 +1,30 @@ +import fs from "node:fs"; +import path from "node:path"; +import { app } from "electron"; + +import type { Game, GameList } from "arrpc"; +export function getDetectablesPath() { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + return `${storagePath}detectables.json`; +} +export function setDetectables(object: GameList): void { + const toSave = JSON.stringify(object, null, 4); + fs.writeFileSync(getDetectablesPath(), toSave, "utf-8"); +} + +export function addDetectable(object: Game): void { + const currentDetectables = getDetectables(); + currentDetectables.push(object); + setDetectables(currentDetectables); +} + +export function getDetectables(): GameList { + if (!fs.existsSync(getDetectablesPath())) { + fs.writeFileSync(getDetectablesPath(), "[]", "utf-8"); + } + const rawData = fs.readFileSync(getDetectablesPath(), "utf-8"); + const returnData = JSON.parse(rawData) as GameList; + console.log(`[Detectables] Loaded ${returnData.length} custom detectables`); + return returnData; +} diff --git a/src/discord/window.ts b/src/discord/window.ts index 39fcb27..fe38159 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -13,6 +13,7 @@ import { } from "electron"; import contextMenu from "electron-context-menu"; import { firstRun, getConfig, setConfig } from "../common/config.js"; +import { getDetectables } from "../common/detectables.js"; import { forceQuit, setForceQuit } from "../common/forceQuit.js"; import { initQuickCss, injectThemesMain } from "../common/themes.js"; import { getWindowState, setWindowState } from "../common/windowState.js"; @@ -295,7 +296,9 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { void passedWindow.webContents.executeJavaScript(`document.body.removeAttribute("isMaximized");`); }); if (getConfig("inviteWebsocket") && mainWindows.length === 1) { - const child = utilityProcess.fork(path.join(import.meta.dirname, "rpc.js")); + const child = utilityProcess.fork(path.join(import.meta.dirname, "rpc.js"), undefined, { + env: { detectables: getDetectables().toString() }, + }); child.on("spawn", () => { console.log("arRPC process started"); diff --git a/src/rpc.ts b/src/rpc.ts index 2d3fce2..559364b 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -1,9 +1,10 @@ // this file is executed in the utility process // check window.ts for more details // see more here https://www.electronjs.org/docs/latest/api/utility-process -import RPCServer from "arrpc"; +import RPCServer, { type GameList } from "arrpc"; -const RPC = new RPCServer(); +const detectables: GameList = process.env.detectables ? JSON.parse(process.env.detectables) : []; +const RPC = new RPCServer(detectables); RPC.on("activity", (data: string) => { console.log(data); From 774311e9473dbf7741f0daced1bad98ddac17de8 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 13 Jun 2025 21:12:51 +0200 Subject: [PATCH 732/896] feat: macOS game detection detectables fixes --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- src/discord/window.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 4873390..6607f51 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "xml-formatter": "^3.6.6" }, "dependencies": { - "arrpc": "https://github.com/Legcord/arrpc.git#3275152dfe7d3d4f7ae41cbca01257deba15a446", + "arrpc": "https://github.com/Legcord/arrpc.git#4a026ad17f9507851d47248f967a3bb7f0ef0ede", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dba042b..a5b8bf0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: arrpc: - specifier: https://github.com/Legcord/arrpc.git#3275152dfe7d3d4f7ae41cbca01257deba15a446 - version: https://codeload.github.com/Legcord/arrpc/tar.gz/3275152dfe7d3d4f7ae41cbca01257deba15a446 + specifier: https://github.com/Legcord/arrpc.git#4a026ad17f9507851d47248f967a3bb7f0ef0ede + version: https://codeload.github.com/Legcord/arrpc/tar.gz/4a026ad17f9507851d47248f967a3bb7f0ef0ede electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -1446,8 +1446,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/3275152dfe7d3d4f7ae41cbca01257deba15a446: - resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/3275152dfe7d3d4f7ae41cbca01257deba15a446} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/4a026ad17f9507851d47248f967a3bb7f0ef0ede: + resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/4a026ad17f9507851d47248f967a3bb7f0ef0ede} version: 3.5.0 hasBin: true @@ -4466,7 +4466,7 @@ snapshots: array-union@2.1.0: {} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/3275152dfe7d3d4f7ae41cbca01257deba15a446: + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/4a026ad17f9507851d47248f967a3bb7f0ef0ede: dependencies: ws: 8.18.0 transitivePeerDependencies: diff --git a/src/discord/window.ts b/src/discord/window.ts index fe38159..3bc8595 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -297,7 +297,7 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { }); if (getConfig("inviteWebsocket") && mainWindows.length === 1) { const child = utilityProcess.fork(path.join(import.meta.dirname, "rpc.js"), undefined, { - env: { detectables: getDetectables().toString() }, + env: { detectables: JSON.stringify(getDetectables()) }, }); child.on("spawn", () => { From e80884b4d3ca9b914f3d91dcdd3d76622f698c80 Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 20 Jun 2025 17:47:52 +0200 Subject: [PATCH 733/896] chore: bump arRPC --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6607f51..5e5843f 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "xml-formatter": "^3.6.6" }, "dependencies": { - "arrpc": "https://github.com/Legcord/arrpc.git#4a026ad17f9507851d47248f967a3bb7f0ef0ede", + "arrpc": "https://github.com/Legcord/arrpc.git#2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.6.2", From 3c820a2c38d4a47d940f061007b5b21f4c0b96bd Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 20 Jun 2025 17:55:53 +0200 Subject: [PATCH 734/896] fix: inject titlebar related css only when titlebar is enabled --- pnpm-lock.yaml | 10 +++---- src/discord/preload/newTitlebar.mts | 46 +++++++++++++++-------------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a5b8bf0..ee89bf4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: arrpc: - specifier: https://github.com/Legcord/arrpc.git#4a026ad17f9507851d47248f967a3bb7f0ef0ede - version: https://codeload.github.com/Legcord/arrpc/tar.gz/4a026ad17f9507851d47248f967a3bb7f0ef0ede + specifier: https://github.com/Legcord/arrpc.git#2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3 + version: https://codeload.github.com/Legcord/arrpc/tar.gz/2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3 electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -1446,8 +1446,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/4a026ad17f9507851d47248f967a3bb7f0ef0ede: - resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/4a026ad17f9507851d47248f967a3bb7f0ef0ede} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3: + resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3} version: 3.5.0 hasBin: true @@ -4466,7 +4466,7 @@ snapshots: array-union@2.1.0: {} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/4a026ad17f9507851d47248f967a3bb7f0ef0ede: + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3: dependencies: ws: 8.18.0 transitivePeerDependencies: diff --git a/src/discord/preload/newTitlebar.mts b/src/discord/preload/newTitlebar.mts index 59b1433..e975ac2 100644 --- a/src/discord/preload/newTitlebar.mts +++ b/src/discord/preload/newTitlebar.mts @@ -2,25 +2,27 @@ const { ipcRenderer } = require("electron"); import { addStyle } from "../../common/dom.js"; import { sleep } from "../../common/sleep.js"; -document.addEventListener("DOMContentLoaded", () => { - document.body.setAttribute("legcord-platform", ipcRenderer.sendSync("getOS")); - addStyle("legcord://assets/css/baseTitlebar.css"); - sleep(500); - switch (ipcRenderer.sendSync("getOS")) { - case "darwin": - // breaks traffic lights with bar__ and hidden__ classes - // document.body.setAttribute("class", "platform-osx"); - addStyle("legcord://assets/css/darwinTitlebar.css"); - break; - case "win32": - document.body.setAttribute("class", "platform-win"); - addStyle("legcord://assets/css/winTitlebar.css"); - break; - case "linux": - document.body.setAttribute("class", "platform-linux"); - addStyle("legcord://assets/css/linuxTitlebar.css"); - break; - default: - break; - } -}); +if (ipcRenderer.sendSync("getConfig", "windowStyle") !== "default") { + document.addEventListener("DOMContentLoaded", () => { + document.body.setAttribute("legcord-platform", ipcRenderer.sendSync("getOS")); + addStyle("legcord://assets/css/baseTitlebar.css"); + sleep(500); + switch (ipcRenderer.sendSync("getOS")) { + case "darwin": + // breaks traffic lights with bar__ and hidden__ classes + // document.body.setAttribute("class", "platform-osx"); + addStyle("legcord://assets/css/darwinTitlebar.css"); + break; + case "win32": + document.body.setAttribute("class", "platform-win"); + addStyle("legcord://assets/css/winTitlebar.css"); + break; + case "linux": + document.body.setAttribute("class", "platform-linux"); + addStyle("legcord://assets/css/linuxTitlebar.css"); + break; + default: + break; + } + }); +} From af0378147ec8af502b8d957e5d308e03714a641c Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 20 Jun 2025 22:35:16 +0200 Subject: [PATCH 735/896] feat: windows game detection v2 --- package.json | 2 +- pnpm-lock.yaml | 19 ++++--------- pnpm-workspace.yaml | 2 ++ src/@types/legcordWindow.d.ts | 13 +++++++++ src/discord/ipc.ts | 7 +++++ src/discord/preload/bridge.ts | 14 +++++----- src/discord/preload/newTitlebar.mts | 5 +++- src/discord/preload/preload.mts | 11 -------- src/discord/rpcProcess.ts | 42 +++++++++++++++++++++++++++++ src/discord/window.ts | 28 ++----------------- src/rpc.ts | 9 +++++++ src/shelter/rpc/index.ts | 2 +- 12 files changed, 94 insertions(+), 60 deletions(-) create mode 100644 src/discord/rpcProcess.ts diff --git a/package.json b/package.json index 5e5843f..724cdac 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "xml-formatter": "^3.6.6" }, "dependencies": { - "arrpc": "https://github.com/Legcord/arrpc.git#2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3", + "arrpc": "https://github.com/Legcord/arrpc.git#9abda032465847724d29db9aeeacc0b375c55a86", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee89bf4..3b05689 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,13 +4,16 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + arrpc: link:../arrpc + importers: .: dependencies: arrpc: - specifier: https://github.com/Legcord/arrpc.git#2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3 - version: https://codeload.github.com/Legcord/arrpc/tar.gz/2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3 + specifier: link:../arrpc + version: link:../arrpc electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -1446,11 +1449,6 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3: - resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3} - version: 3.5.0 - hasBin: true - assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} @@ -4466,13 +4464,6 @@ snapshots: array-union@2.1.0: {} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/2b89dd0a7d01b26dcb1daa4d47ce21cefbf340a3: - dependencies: - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - assert-plus@1.0.0: optional: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 227d42b..d983166 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,3 +4,5 @@ onlyBuiltDependencies: - '@vencord/venmic' - electron - esbuild +overrides: + arrpc: link:../arrpc diff --git a/src/@types/legcordWindow.d.ts b/src/@types/legcordWindow.d.ts index 75ab3b7..7c78b91 100644 --- a/src/@types/legcordWindow.d.ts +++ b/src/@types/legcordWindow.d.ts @@ -62,4 +62,17 @@ export interface LegcordWindow { edit: (id: string) => void; folder: (id: string) => void; }; + rpc: { + listen: ( + callback: (msg: { + activity: { + assets: { large_image: string | null; small_image: string | null }; + application_id: number; + name: string; + }; + }) => void, + ) => void; + getProcessList: () => void; + refreshProcessList: () => void; + }; } diff --git a/src/discord/ipc.ts b/src/discord/ipc.ts index 298a778..0ca3553 100644 --- a/src/discord/ipc.ts +++ b/src/discord/ipc.ts @@ -15,6 +15,7 @@ import { isPowerSavingEnabled, setPowerSaving } from "../power.js"; import constPaths from "../shared/consts/paths.js"; import { splashWindow } from "../splash/main.js"; import { refreshGlobalKeybinds } from "./globalKeybinds.js"; +import { processList, refreshProcessList } from "./rpcProcess.js"; import { importGuilds, mainTouchBar, setVoiceState, voiceTouchBar } from "./touchbar.js"; const userDataPath = app.getPath("userData"); @@ -289,4 +290,10 @@ export function registerIpc(passedWindow: BrowserWindow): void { ipcMain.on("getConstPaths", (event) => { event.returnValue = constPaths; }); + ipcMain.on("getProcessList", (event) => { + event.returnValue = processList; + }); + ipcMain.on("refreshProcessList", () => { + refreshProcessList(); + }); } diff --git a/src/discord/preload/bridge.ts b/src/discord/preload/bridge.ts index 1314abb..3ecbcc4 100644 --- a/src/discord/preload/bridge.ts +++ b/src/discord/preload/bridge.ts @@ -4,6 +4,7 @@ import type { LegcordWindow } from "../../@types/legcordWindow.d.ts"; import type { Settings } from "../../@types/settings.js"; import type { ThemeManifest } from "../../@types/themeManifest.js"; import type { venmicListObject } from "../venmic.js"; +let windowCallback: (arg0: object) => void; interface IPCSources { id: string; @@ -88,14 +89,15 @@ contextBridge.exposeInMainWorld("legcord", { folder: (id: string) => ipcRenderer.send("openThemeFolder", id), openQuickCss: () => ipcRenderer.send("openQuickCss"), }, + rpc: { + listen: (callback: () => void) => { + windowCallback = callback; + }, + refreshProcessList: () => ipcRenderer.send("refreshProcessList"), + getProcessList: () => ipcRenderer.sendSync("getProcessList"), + }, } as unknown as LegcordWindow); -let windowCallback: (arg0: object) => void; -contextBridge.exposeInMainWorld("LegcordRPC", { - listen: (callback: () => void) => { - windowCallback = callback; - }, -}); ipcRenderer.on("rpc", (_event, data: object) => { console.log(data); windowCallback(data); diff --git a/src/discord/preload/newTitlebar.mts b/src/discord/preload/newTitlebar.mts index e975ac2..a68c1a7 100644 --- a/src/discord/preload/newTitlebar.mts +++ b/src/discord/preload/newTitlebar.mts @@ -2,7 +2,10 @@ const { ipcRenderer } = require("electron"); import { addStyle } from "../../common/dom.js"; import { sleep } from "../../common/sleep.js"; -if (ipcRenderer.sendSync("getConfig", "windowStyle") !== "default") { +if ( + ipcRenderer.sendSync("getConfig", "windowStyle") === "default" || + ipcRenderer.sendSync("getConfig", "windowStyle") === "overlay" +) { document.addEventListener("DOMContentLoaded", () => { document.body.setAttribute("legcord-platform", ipcRenderer.sendSync("getOS")); addStyle("legcord://assets/css/baseTitlebar.css"); diff --git a/src/discord/preload/preload.mts b/src/discord/preload/preload.mts index cc4525f..b925c6e 100644 --- a/src/discord/preload/preload.mts +++ b/src/discord/preload/preload.mts @@ -14,16 +14,5 @@ window.localStorage.setItem("hideNag", "true"); declare global { interface Window { legcord: LegcordWindow; - LegcordRPC: { - listen: ( - callback: (msg: { - activity: { - assets: { large_image: string | null; small_image: string | null }; - application_id: number; - name: string; - }; - }) => void, - ) => void; - }; } } diff --git a/src/discord/rpcProcess.ts b/src/discord/rpcProcess.ts new file mode 100644 index 0000000..575a509 --- /dev/null +++ b/src/discord/rpcProcess.ts @@ -0,0 +1,42 @@ +import path from "node:path"; +import { type BrowserWindow, utilityProcess } from "electron"; +import { getDetectables } from "../common/detectables.js"; +import { createInviteWindow } from "./window.js"; + +let child: Electron.UtilityProcess; +export let processList = []; + +export function startRPC(window: BrowserWindow) { + child = utilityProcess.fork(path.join(import.meta.dirname, "rpc.js"), undefined, { + env: { detectables: JSON.stringify(getDetectables()) }, + }); + + child.on("spawn", () => { + console.log("[arRPC] process started"); + console.log(child.pid); + }); + + child.on("message", (message) => { + const json = JSON.parse(message); + if (json.type === "invite") { + createInviteWindow(json.code); + } else if (json.type === "activity") { + console.log("activity pulse"); + console.log(json.data); + window.webContents.send("rpc", json.data); + } else if (json.type === "processList") { + console.log("[arRPC] updating process list"); + console.log(json.data); + processList = json.data; + } + }); + + child.on("exit", () => { + console.log("[arRPC] process exited"); + console.log(child.pid); + }); +} + +export function refreshProcessList() { + child.postMessage({ message: "refreshProcessList" }); +} diff --git a/src/discord/window.ts b/src/discord/window.ts index 3bc8595..b755a4c 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -9,11 +9,9 @@ import { dialog, nativeImage, shell, - utilityProcess, } from "electron"; import contextMenu from "electron-context-menu"; import { firstRun, getConfig, setConfig } from "../common/config.js"; -import { getDetectables } from "../common/detectables.js"; import { forceQuit, setForceQuit } from "../common/forceQuit.js"; import { initQuickCss, injectThemesMain } from "../common/themes.js"; import { getWindowState, setWindowState } from "../common/windowState.js"; @@ -21,6 +19,7 @@ import { init } from "../main.js"; import { registerGlobalKeybinds } from "./globalKeybinds.js"; import { registerIpc } from "./ipc.js"; import { setMenu } from "./menu.js"; +import { startRPC } from "./rpcProcess.js"; import { registerCustomHandler } from "./screenshare.js"; import { mainTouchBar } from "./touchbar.js"; import { createTray, tray } from "./tray.js"; @@ -296,30 +295,7 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { void passedWindow.webContents.executeJavaScript(`document.body.removeAttribute("isMaximized");`); }); if (getConfig("inviteWebsocket") && mainWindows.length === 1) { - const child = utilityProcess.fork(path.join(import.meta.dirname, "rpc.js"), undefined, { - env: { detectables: JSON.stringify(getDetectables()) }, - }); - - child.on("spawn", () => { - console.log("arRPC process started"); - console.log(child.pid); - }); - - child.on("message", (message) => { - const json = JSON.parse(message); - if (json.type === "invite") { - createInviteWindow(json.code); - } else if (json.type === "activity") { - console.log("activity pulse"); - console.log(json.data); - passedWindow.webContents.send("rpc", json.data); - } - }); - - child.on("exit", () => { - console.log("arRPC process exited"); - console.log(child.pid); - }); + startRPC(passedWindow); } if (firstRun) { passedWindow.close(); diff --git a/src/rpc.ts b/src/rpc.ts index 559364b..3ed3d60 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -16,3 +16,12 @@ RPC.on("invite", (code: string) => { const response = { type: "invite", code: code }; process.parentPort.postMessage(JSON.stringify(response)); }); + +process.parentPort.once("message", async (e) => { + if (e.data.message === "refreshProcessList") { + const processes = await RPC.getProcessesList(); + console.log(processes); + const response = { type: "processList", data: processes }; + process.parentPort.postMessage(JSON.stringify(response)); + } +}); diff --git a/src/shelter/rpc/index.ts b/src/shelter/rpc/index.ts index b95b455..800b426 100644 --- a/src/shelter/rpc/index.ts +++ b/src/shelter/rpc/index.ts @@ -5,7 +5,7 @@ const { } = shelter; export function onLoad() { - window.LegcordRPC.listen( + window.legcord.rpc.listen( async (msg: { activity: { assets: { large_image: string | null | undefined; small_image: string | null | undefined }; From 0d9959e1bbe1dc1a5d4a479add3690ff8955ed65 Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 20 Jun 2025 22:37:07 +0200 Subject: [PATCH 736/896] chore: update package lock --- pnpm-lock.yaml | 25 ++++++++++++++++++++----- pnpm-workspace.yaml | 4 +--- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b05689..001bb86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,16 +4,13 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - arrpc: link:../arrpc - importers: .: dependencies: arrpc: - specifier: link:../arrpc - version: link:../arrpc + specifier: https://github.com/Legcord/arrpc.git#9abda032465847724d29db9aeeacc0b375c55a86 + version: https://codeload.github.com/Legcord/arrpc/tar.gz/9abda032465847724d29db9aeeacc0b375c55a86 electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -1449,6 +1446,11 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/9abda032465847724d29db9aeeacc0b375c55a86: + resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/9abda032465847724d29db9aeeacc0b375c55a86} + version: 3.5.0 + hasBin: true + assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} @@ -2296,6 +2298,9 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + koffi@2.12.0: + resolution: {integrity: sha512-J886y/bvoGG4ZhMVstB2Nh6/q9tzAYn0kaH7Ss8DWavGIxP5jOLzUY9IZzw9pMuXArj0SLSpl0MYsKRURPAv7g==} + lazy-val@1.0.5: resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} @@ -4464,6 +4469,14 @@ snapshots: array-union@2.1.0: {} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/9abda032465847724d29db9aeeacc0b375c55a86: + dependencies: + koffi: 2.12.0 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + assert-plus@1.0.0: optional: true @@ -5524,6 +5537,8 @@ snapshots: dependencies: json-buffer: 3.0.1 + koffi@2.12.0: {} + lazy-val@1.0.5: {} lazystream@1.0.1: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d983166..c4e89fc 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,6 +3,4 @@ onlyBuiltDependencies: - '@parcel/watcher' - '@vencord/venmic' - electron - - esbuild -overrides: - arrpc: link:../arrpc + - esbuild \ No newline at end of file From 6787b243ffa42890397e02ddba0dbfe42fd0d62e Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 20 Jun 2025 23:04:47 +0200 Subject: [PATCH 737/896] chore: bump electron --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 724cdac..e6a6a15 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "36.2.1", + "electron": "36.5.0", "electron-builder": "^26.0.12", "lucide-solid": "^0.475.0", "rolldown": "1.0.0-beta.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 001bb86..c30051d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,8 +67,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 36.2.1 - version: 36.2.1 + specifier: 36.5.0 + version: 36.5.0 electron-builder: specifier: ^26.0.12 version: 26.0.12(electron-builder-squirrel-windows@25.1.8) @@ -1819,8 +1819,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@36.2.1: - resolution: {integrity: sha512-mm1Y+Ms46xcOTA69h8hpqfX392HfV4lga9aEkYkd/Syx1JBStvcACOIouCgGrnZpxNZPVS1jM8NTcMkNjuK6BQ==} + electron@36.5.0: + resolution: {integrity: sha512-ouVtHbHDFsRBHPGx9G6RDm4ccPaSCmrrR8tbUGZuqbJhqIClVBkVMz94Spjihag2Zo1eHtYD+KevALrc/94g1g==} engines: {node: '>= 12.20.55'} hasBin: true @@ -4977,7 +4977,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@36.2.1: + electron@36.5.0: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 From 5a7b6fe7e086a795ab9bd77b06f73ffe97d8e575 Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 21 Jun 2025 12:07:36 +0200 Subject: [PATCH 738/896] feat: safe mode enable with --safe-mode --- src/common/config.ts | 12 ++++++++++++ src/common/themes.ts | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/common/config.ts b/src/common/config.ts index c1d74d1..a2ea050 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -52,6 +52,15 @@ const defaults: Settings = { autoScroll: false, useSystemCssEditor: false, }; + +const safeMode: Settings = { + ...defaults, + mods: [], + windowStyle: "native", + hardwareAcceleration: false, + disableHttpCache: true, +}; + export function checkForDataFolder(): void { const dataPath = join(dirname(app.getPath("exe")), "legcord-data"); if (existsSync(dataPath) && statSync(dataPath).isDirectory()) { @@ -67,6 +76,9 @@ export function getConfigLocation(): string { } export function getConfig(object: K): Settings[K] { + if (process.argv.includes("--safe-mode")) { + return safeMode[object]; + } const rawData = readFileSync(getConfigLocation(), "utf-8"); const returnData = JSON.parse(rawData) as Settings; return returnData[object]; diff --git a/src/common/themes.ts b/src/common/themes.ts index 1adf125..4c31ce8 100644 --- a/src/common/themes.ts +++ b/src/common/themes.ts @@ -83,6 +83,7 @@ function parseBDManifest(content: string) { return manifest; } export function injectThemesMain(browserWindow: BrowserWindow): void { + if (process.argv.includes("--safe-mode")) return; if (!fs.existsSync(themesFolder)) { fs.mkdirSync(themesFolder); console.log("Created missing theme folder"); @@ -183,6 +184,7 @@ export async function installTheme(linkOrPath: string) { } export function initQuickCss(browserWindow: BrowserWindow) { + if (process.argv.includes("--safe-mode")) return; const quickCssPath = path.join(userDataPath, "/quickCss.css"); browserWindow.webContents.on("did-finish-load", () => { if (!fs.existsSync(quickCssPath)) { From 0b1a005936552abd5aed144bdc0ca5a82f2fa682 Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 21 Jun 2025 14:56:34 +0200 Subject: [PATCH 739/896] feat: detectable list UI --- src/@types/legcordWindow.d.ts | 5 +- src/discord/ipc.ts | 10 +++ src/discord/preload/bridge.ts | 3 + .../components/AddDetectableModal.tsx | 72 +++++++++++++++++++ .../settings/pages/RegisteredGames.module.css | 6 ++ .../settings/pages/RegisteredGamesPage.tsx | 44 +++++++++++- 6 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 src/shelter/settings/components/AddDetectableModal.tsx create mode 100644 src/shelter/settings/pages/RegisteredGames.module.css diff --git a/src/@types/legcordWindow.d.ts b/src/@types/legcordWindow.d.ts index 7c78b91..9aad550 100644 --- a/src/@types/legcordWindow.d.ts +++ b/src/@types/legcordWindow.d.ts @@ -1,4 +1,5 @@ import type { Node } from "@vencord/venmic"; +import type { Game, GameList, ProcessInfo } from "arrpc"; import type { Keybind } from "./keybind.js"; import type { Settings } from "./settings.js"; import type { ThemeManifest } from "./themeManifest.js"; @@ -72,7 +73,9 @@ export interface LegcordWindow { }; }) => void, ) => void; - getProcessList: () => void; + getProcessList: () => ProcessInfo[]; refreshProcessList: () => void; + addDetectable: (e: Game) => void; + getDetectables: () => GameList; }; } diff --git a/src/discord/ipc.ts b/src/discord/ipc.ts index 0ca3553..a997a01 100644 --- a/src/discord/ipc.ts +++ b/src/discord/ipc.ts @@ -1,12 +1,14 @@ import { existsSync, readFileSync, readdirSync } from "node:fs"; import os from "node:os"; import path from "node:path"; +import type { Game } from "arrpc"; import { type BrowserWindow, app, clipboard, dialog, ipcMain, shell } from "electron"; import isDev from "electron-is-dev"; import type { Keybind } from "../@types/keybind.js"; import type { Settings } from "../@types/settings.js"; import type { ThemeManifest } from "../@types/themeManifest.js"; import { getConfig, getConfigLocation, setConfig, setConfigBulk } from "../common/config.js"; +import { addDetectable, getDetectables } from "../common/detectables.js"; import { getLang, getLangName, getRawLang, setLang } from "../common/lang.js"; import { installTheme, setThemeEnabled, uninstallTheme } from "../common/themes.js"; import { getDisplayVersion, getVersion } from "../common/version.js"; @@ -293,7 +295,15 @@ export function registerIpc(passedWindow: BrowserWindow): void { ipcMain.on("getProcessList", (event) => { event.returnValue = processList; }); + + // custom detectables control ipcMain.on("refreshProcessList", () => { refreshProcessList(); }); + ipcMain.on("getDetectables", (event) => { + event.returnValue = getDetectables(); + }); + ipcMain.on("addDetectable", (_event, game: Game) => { + addDetectable(game); + }); } diff --git a/src/discord/preload/bridge.ts b/src/discord/preload/bridge.ts index 3ecbcc4..8d4eaf6 100644 --- a/src/discord/preload/bridge.ts +++ b/src/discord/preload/bridge.ts @@ -1,4 +1,5 @@ const { contextBridge, ipcRenderer } = require("electron"); +import type { Game } from "arrpc"; import type { Keybind } from "../../@types/keybind.js"; import type { LegcordWindow } from "../../@types/legcordWindow.d.ts"; import type { Settings } from "../../@types/settings.js"; @@ -95,6 +96,8 @@ contextBridge.exposeInMainWorld("legcord", { }, refreshProcessList: () => ipcRenderer.send("refreshProcessList"), getProcessList: () => ipcRenderer.sendSync("getProcessList"), + addDetectable: (detectable: Game) => ipcRenderer.send("addDetectable", detectable), + getDetectables: () => ipcRenderer.sendSync("getDetectables") as Game[], }, } as unknown as LegcordWindow); diff --git a/src/shelter/settings/components/AddDetectableModal.tsx b/src/shelter/settings/components/AddDetectableModal.tsx new file mode 100644 index 0000000..0ad3cbf --- /dev/null +++ b/src/shelter/settings/components/AddDetectableModal.tsx @@ -0,0 +1,72 @@ +import { Show, createSignal } from "solid-js"; +import type { KeybindActions } from "../../../@types/keybind.js"; +import { Dropdown } from "./Dropdown.jsx"; +import classes from "./KeybindMaker.module.css"; +const { + ui: { + ModalRoot, + ModalBody, + ModalConfirmFooter, + ModalSizes, + ModalHeader, + TextBox, + Header, + HeaderTags, + Divider, + showToast, + }, + plugin: { store }, +} = shelter; +export const AddDetectableModal = (props: { close: () => void }) => { + const [appName, setAppName] = createSignal(""); + const [appId, setAppId] = createSignal(""); + const [executable, setExecutable] = createSignal(""); + const [enabled, setEnabled] = createSignal(true); + + function save() { + if (!appName().trim() || !appId().trim() || !executable().trim()) { + return showToast({ + title: "Missing fields", + content: "Please fill in all fields before adding.", + duration: 3000, + }); + } + const current = store.settings.detectables || []; + const detectable = { + name: appName().trim(), + id: appId().trim(), + executable: executable().trim(), + enabled: enabled(), + }; + current.push(detectable); + store.settings.detectables = current; + window.legcord.rpc.addDetectable(detectable); + props.close(); + } + + return ( + + Add Detectable Application + +
    App Name
    + + +
    App ID
    + + +
    Executable
    + + + +
    + +
    + ); +}; diff --git a/src/shelter/settings/pages/RegisteredGames.module.css b/src/shelter/settings/pages/RegisteredGames.module.css new file mode 100644 index 0000000..224bed9 --- /dev/null +++ b/src/shelter/settings/pages/RegisteredGames.module.css @@ -0,0 +1,6 @@ +.addBox { + display: flex; + justify-content: space-between; + padding: 3px; + margin-top: 1rem; +} diff --git a/src/shelter/settings/pages/RegisteredGamesPage.tsx b/src/shelter/settings/pages/RegisteredGamesPage.tsx index bc71153..a624d93 100644 --- a/src/shelter/settings/pages/RegisteredGamesPage.tsx +++ b/src/shelter/settings/pages/RegisteredGamesPage.tsx @@ -1,12 +1,54 @@ +import type { ProcessInfo } from "arrpc"; +import { For, createSignal } from "solid-js"; +import { sleep } from "../../../common/sleep.js"; +import { Dropdown } from "../components/Dropdown.jsx"; +import classes from "./RegisteredGames.module.css"; const { - ui: { Header, HeaderTags, Divider }, + ui: { Header, HeaderTags, Divider, Button, ButtonSizes }, } = shelter; export function RegisteredGamesPage() { + const [detectables, setDetectables] = createSignal(); + const [selectedDetectable, setSelectedDetectable] = createSignal(""); + function getDetectables() { + window.legcord.rpc.refreshProcessList(); + sleep(500).then(() => { + setDetectables(window.legcord.rpc.getProcessList()); + }); + } + getDetectables(); + function addGame() { + // Logic to add a game + console.log("Game added"); + } return ( <>
    Registered Games
    +
    + { + const detectable = e.currentTarget.value; + if (detectable === "refresh") { + getDetectables(); + setSelectedDetectable(""); + console.log("Detectables refreshed"); + } else { + console.log("Selected detectable:", detectable); + setSelectedDetectable(e.currentTarget.value); + } + }} + > + + {(process: ProcessInfo) => } + + + + +
    ); } From 7faf0bab041a26ffc215eb27760a7c7f75125d63 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:17:14 +0200 Subject: [PATCH 740/896] feat: remove rollup and move to rolldown fully --- package.json | 20 +- pnpm-lock.yaml | 1154 +++++++++++++++++++------------------------ pnpm-workspace.yaml | 6 - rolldown.config.js | 4 +- rollup.config.js | 133 ----- 5 files changed, 518 insertions(+), 799 deletions(-) delete mode 100644 pnpm-workspace.yaml delete mode 100644 rollup.config.js diff --git a/package.json b/package.json index e6a6a15..1ab21bb 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,8 @@ "scripts": { "build:dev": "rollup -c --environment BUILD:dev && tsx scripts/copyVenmic.mts", "build:plugins": "lune ci --repoSubDir src/shelter --to ts-out/plugins", - "build": "pnpm build:plugins && rollup -c --environment BUILD:prod && tsx scripts/copyVenmic.mts", - "buildNew": "rolldown -c rolldown.config.js && tsx scripts/copyVenmic.mts", - "start": "pnpm build:plugins && pnpm run buildNew && electron --trace-warnings --ozone-platform-hint=auto ./ts-out/main.js", + "build": "pnpm build:plugins && rolldown -c rolldown.config.js && tsx scripts/copyVenmic.mts", + "start": "pnpm build:plugins && pnpm run build && electron --trace-warnings --ozone-platform-hint=auto ./ts-out/main.js", "startThemeManager": "pnpm run build:dev && electron ./ts-out/main.js themes", "package": "pnpm run build && electron-builder", "packageQuick": "pnpm run build && electron-builder --dir", @@ -34,26 +33,21 @@ "homepage": "https://github.com/Legcord/Legcord#readme", "devDependencies": { "@babel/preset-flow": "^7.25.9", + "@babel/preset-typescript": "^7.27.1", "@biomejs/biome": "1.9.4", "@rollup/plugin-babel": "^6.0.4", - "@rollup/plugin-commonjs": "^28.0.1", - "@rollup/plugin-esm-shim": "^0.1.7", "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^16.0.0", - "@rollup/plugin-replace": "^6.0.2", - "@rollup/plugin-typescript": "^12.1.1", + "@rollup/plugin-esm-shim": "^0.1.7", "@types/node": "^22.10.1", "@types/ws": "^8.5.13", "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "36.5.0", - "electron-builder": "^26.0.12", + "electron": "37.2.6", + "electron-builder": "^26.0.18", "lucide-solid": "^0.475.0", - "rolldown": "1.0.0-beta.7", - "rollup": "^4.27.4", + "rolldown": "1.0.0-beta.31", "rollup-plugin-copy": "^3.5.0", - "rollup-plugin-esbuild": "^6.1.1", "solid-js": "^1.9.3", "solid-motionone": "^1.0.3", "tsx": "^4.19.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c30051d..1ed0331 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,34 +23,29 @@ importers: ws: specifier: ^8.18.0 version: 8.18.0 + optionalDependencies: + '@vencord/venmic': + specifier: ^6.1.0 + version: 6.1.0 devDependencies: '@babel/preset-flow': specifier: ^7.25.9 version: 7.25.9(@babel/core@7.26.7) + '@babel/preset-typescript': + specifier: ^7.27.1 + version: 7.27.1(@babel/core@7.26.7) '@biomejs/biome': specifier: 1.9.4 version: 1.9.4 '@rollup/plugin-babel': specifier: ^6.0.4 version: 6.0.4(@babel/core@7.26.7)(rollup@4.27.4) - '@rollup/plugin-commonjs': - specifier: ^28.0.1 - version: 28.0.1(rollup@4.27.4) '@rollup/plugin-esm-shim': specifier: ^0.1.7 version: 0.1.7(rollup@4.27.4) '@rollup/plugin-json': specifier: ^6.1.0 version: 6.1.0(rollup@4.27.4) - '@rollup/plugin-node-resolve': - specifier: ^16.0.0 - version: 16.0.0(rollup@4.27.4) - '@rollup/plugin-replace': - specifier: ^6.0.2 - version: 6.0.2(rollup@4.27.4) - '@rollup/plugin-typescript': - specifier: ^12.1.1 - version: 12.1.1(rollup@4.27.4)(tslib@2.8.1)(typescript@5.7.2) '@types/node': specifier: ^22.10.1 version: 22.10.1 @@ -67,26 +62,20 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 36.5.0 - version: 36.5.0 + specifier: 37.2.6 + version: 37.2.6 electron-builder: - specifier: ^26.0.12 - version: 26.0.12(electron-builder-squirrel-windows@25.1.8) + specifier: ^26.0.18 + version: 26.0.19(electron-builder-squirrel-windows@25.1.8) lucide-solid: specifier: ^0.475.0 version: 0.475.0(solid-js@1.9.3) rolldown: - specifier: 1.0.0-beta.7 - version: 1.0.0-beta.7(typescript@5.7.2) - rollup: - specifier: ^4.27.4 - version: 4.27.4 + specifier: 1.0.0-beta.31 + version: 1.0.0-beta.31 rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 - rollup-plugin-esbuild: - specifier: ^6.1.1 - version: 6.1.1(esbuild@0.24.0)(rollup@4.27.4) solid-js: specifier: ^1.9.3 version: 1.9.3 @@ -102,10 +91,6 @@ importers: xml-formatter: specifier: ^3.6.6 version: 3.6.6 - optionalDependencies: - '@vencord/venmic': - specifier: ^6.1.0 - version: 6.1.0 packages: @@ -120,6 +105,10 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.5': resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} engines: {node: '>=6.9.0'} @@ -132,22 +121,30 @@ packages: resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.25.9': - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + '@babel/generator@7.28.0': + resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.26.5': resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.25.9': - resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} + '@babel/helper-create-class-features-plugin@7.27.1': + resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-member-expression-to-functions@7.25.9': - resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.18.6': @@ -158,42 +155,68 @@ packages: resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.26.0': resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.25.9': - resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.26.5': resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} - '@babel/helper-replace-supers@7.26.5': - resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.26.7': resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==} engines: {node: '>=6.9.0'} @@ -203,6 +226,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-flow@7.26.0': resolution: {integrity: sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==} engines: {node: '>=6.9.0'} @@ -215,8 +243,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -227,14 +261,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.26.3': - resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.26.7': - resolution: {integrity: sha512-5cJurntg+AT+cgelGP9Bt788DKiAw9gIMSMU2NJrLAilnj0m8WZWUNZPSLOmadYsujHutpgElO+50foX+ib/Wg==} + '@babel/plugin-transform-typescript@7.28.0': + resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -245,8 +279,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.26.0': - resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} + '@babel/preset-typescript@7.27.1': + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -255,14 +289,26 @@ packages: resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.26.7': resolution: {integrity: sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.0': + resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + engines: {node: '>=6.9.0'} + '@babel/types@7.26.7': resolution: {integrity: sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + '@biomejs/biome@1.9.4': resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} engines: {node: '>=14.21.3'} @@ -320,8 +366,8 @@ packages: resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} engines: {node: '>= 8.9.0'} - '@electron/asar@3.2.18': - resolution: {integrity: sha512-2XyvMe3N3Nrs8cV39IKELRHTYUWFKrmqqSY1U+GMlc0jvqjIVnoxhNd2H4JolWQncbJi1DCvb5TNxZuI2fEjWg==} + '@electron/asar@3.4.1': + resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} engines: {node: '>=10.12.0'} hasBin: true @@ -348,13 +394,18 @@ packages: engines: {node: '>=12.0.0'} hasBin: true + '@electron/osx-sign@1.3.3': + resolution: {integrity: sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==} + engines: {node: '>=12.0.0'} + hasBin: true + '@electron/rebuild@3.6.1': resolution: {integrity: sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==} engines: {node: '>=12.13.0'} hasBin: true - '@electron/rebuild@3.7.0': - resolution: {integrity: sha512-VW++CNSlZwMYP7MyXEbrKjpzEwhB5kDNbzGtiPEjwYysqyTCF+YbNJ210Dj3AjWsGSV4iEEwNkmJN9yGZmVvmw==} + '@electron/rebuild@3.7.2': + resolution: {integrity: sha512-19/KbIR/DAxbsCkiaGMXIdPnMCJLkcf8AvGnduJtWBs/CBwiAjY1apCqOLVxrXg+rtXFCngbXhBanWjxLUt1Mg==} engines: {node: '>=12.13.0'} hasBin: true @@ -362,27 +413,34 @@ packages: resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} engines: {node: '>=16.4'} + '@electron/universal@2.0.3': + resolution: {integrity: sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==} + engines: {node: '>=16.4'} + '@emnapi/core@1.3.1': resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} + '@emnapi/core@1.4.5': + resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/runtime@1.3.1': resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + '@emnapi/wasi-threads@1.0.1': resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + '@emnapi/wasi-threads@1.0.4': + resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@esbuild/aix-ppc64@0.23.1': resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.24.0': - resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/android-arm64@0.17.19': resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -395,12 +453,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.24.0': - resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm@0.17.19': resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} @@ -413,12 +465,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.24.0': - resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.17.19': resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} @@ -431,12 +477,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.24.0': - resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/darwin-arm64@0.17.19': resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} @@ -449,12 +489,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.24.0': - resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.17.19': resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} @@ -467,12 +501,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.24.0': - resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.17.19': resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} @@ -485,12 +513,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.24.0': - resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-x64@0.17.19': resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} @@ -503,12 +525,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.24.0': - resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/linux-arm64@0.17.19': resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} @@ -521,12 +537,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.24.0': - resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm@0.17.19': resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} @@ -539,12 +549,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.24.0': - resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-ia32@0.17.19': resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} @@ -557,12 +561,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.24.0': - resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-loong64@0.17.19': resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} @@ -575,12 +573,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.24.0': - resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-mips64el@0.17.19': resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} @@ -593,12 +585,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.24.0': - resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-ppc64@0.17.19': resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} @@ -611,12 +597,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.24.0': - resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.17.19': resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} @@ -629,12 +609,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.24.0': - resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-s390x@0.17.19': resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} @@ -647,12 +621,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.24.0': - resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.17.19': resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} @@ -665,12 +633,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.24.0': - resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/netbsd-x64@0.17.19': resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} @@ -683,24 +645,12 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.24.0': - resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.24.0': - resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-x64@0.17.19': resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} @@ -713,12 +663,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.24.0': - resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/sunos-x64@0.17.19': resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} @@ -731,12 +675,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.24.0': - resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.17.19': resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} @@ -749,12 +687,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.24.0': - resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-ia32@0.17.19': resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} @@ -767,12 +699,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.24.0': - resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.17.19': resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} @@ -785,19 +711,24 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.24.0': - resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@jridgewell/gen-mapping@0.3.12': + resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -816,6 +747,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.29': + resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@malept/cross-spawn-promise@2.0.0': resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} engines: {node: '>= 12.13.0'} @@ -845,6 +779,9 @@ packages: '@napi-rs/wasm-runtime@0.2.6': resolution: {integrity: sha512-z8YVS3XszxFTO73iwvFDNpQIzdMmSDTP/mB3E/ucR37V3Sx57hSExcXyMoNwaucWxnsWf4xfbZv0iZ30jr0M4Q==} + '@napi-rs/wasm-runtime@1.0.1': + resolution: {integrity: sha512-KVlQ/jgywZpixGCKMNwxStmmbYEMyokZpCf2YuIChhfJA2uqfAKNEM8INz7zzTo55iEXfBhIIs3VqYyqzDLj8g==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -866,8 +803,12 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This functionality has been moved to @npmcli/fs - '@oxc-project/types@0.61.2': - resolution: {integrity: sha512-rfuwJwvwn9MRthHNXlSo9Eka/u7gC0MhnWAoX3BhE1+rwPOl22nq0K0Y997Hof0tHCOuD7H3/Z8HTfCVhB4c5Q==} + '@oxc-project/runtime@0.80.0': + resolution: {integrity: sha512-3rzy1bJAZ4s7zV9TKT60x119RwJDCDqEtCwK/Zc2qlm7wGhiIUxLLYUhE/mN91yB0u1kxm5sh4NjU12sPqQTpg==} + engines: {node: '>=6.9.0'} + + '@oxc-project/types@0.80.0': + resolution: {integrity: sha512-xxHQm8wfCv2e8EmtaDwpMeAHOWqgQDAYg+BJouLXSQt5oTKu9TIXrgNMGSrM2fLvKmECsRd9uUFAAD+hPyootA==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -955,13 +896,18 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@rolldown/binding-android-arm64@1.0.0-beta.31': + resolution: {integrity: sha512-0mFtKwOG7smn0HkvQ6h8j0m/ohkR7Fp5eMTJ2Pns/HSbePHuDpxMaQ4TjZ6arlVXxpeWZlAHeT5BeNsOA3iWTg==} + cpu: [arm64] + os: [android] + '@rolldown/binding-darwin-arm64@1.0.0-beta.1': resolution: {integrity: sha512-e4QpTp7eu61JilK958i21RK/HniwVLjZgfShqoQY1VM+KDYz90cNuopKQ3Z3oCkvyAN3xI8IaRhy02nlxdR/DA==} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-beta.7': - resolution: {integrity: sha512-spVRMdG9NotVYfrc94W8zMKEqLFbxm/dzkBjTfKzXMqhyBryo1lwZ14o8xFb3lM/ON/ZUT7laR9y+r6SIUtFrg==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.31': + resolution: {integrity: sha512-BHfHJ8Nb5G7ZKJl6pimJacupONT4F7w6gmQHw41rouAnJF51ORDwGefWeb6OMLzGmJwzxlIVPERfnJf1EsMM7A==} cpu: [arm64] os: [darwin] @@ -970,8 +916,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.7': - resolution: {integrity: sha512-6d6PicpBNLWJUyGO1b87QOBtQuqL1X9qVugi+kyGcChxW2bL87/CIBAJDu1g3mM62xSzxUitGa2YWRMhMJu2OA==} + '@rolldown/binding-darwin-x64@1.0.0-beta.31': + resolution: {integrity: sha512-4MiuRtExC08jHbSU/diIL+IuQP+3Ck1FbWAplK+ysQJ7fxT3DMxy5FmnIGfmhaqow8oTjb2GEwZJKgTRjZL1Vw==} cpu: [x64] os: [darwin] @@ -980,8 +926,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-beta.7': - resolution: {integrity: sha512-RCKUAMUr1+F1wDSUmWUoGimCNAoQ9km5SRIEhrTlCOXe4wv+rY4o07cTaBjehBm+GtT+u0r36SW2gOmikivj9Q==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.31': + resolution: {integrity: sha512-nffC1u7ccm12qlAea8ExY3AvqlaHy/o/3L4p5Es8JFJ3zJSs6e3DyuxGZZVdl9EVwsLxPPTvioIl4tEm2afwyw==} cpu: [x64] os: [freebsd] @@ -990,8 +936,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.7': - resolution: {integrity: sha512-SRGp4RaUC2oFZTDtLSRePWWE5F4C5vrlsr/a3+/mBlBVUdSrB7341hqAEcezW3YYHQOT/j9CPXu2NULENSywwQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.31': + resolution: {integrity: sha512-LHmAaB3rB1GOJuHscKcL2Ts/LKLcb3YWTh2uQ/876rg/J9WE9kQ0kZ+3lRSYbth/YL8ln54j4JZmHpqQY3xptQ==} cpu: [arm] os: [linux] @@ -1000,8 +946,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.7': - resolution: {integrity: sha512-q6Szr5o54lJWir2uYxwxDoOUdSCrA2Nb8sKqQRnJHP9985o0uxeq85LKvMubFRgTKq9Q71ZZPrZBs7pwr4ji1Q==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.31': + resolution: {integrity: sha512-oTDZVfqIAjLB2I1yTiLyyhfPPO6dky33sTblxTCpe+ZT55WizN3KDoBKJ4yXG8shI6I4bRShVu29Xg0yAjyQYw==} cpu: [arm64] os: [linux] @@ -1010,18 +956,23 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.7': - resolution: {integrity: sha512-MiEE4ReEw7jdxKE8eKTdt3z7N1sucgSb1J0BUY3Dd8YKLjh2jNYHhJu13/tCo2DBMZxT+FDJE3WJ5kCxZA7+YA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.31': + resolution: {integrity: sha512-duJ3IkEBj9Xe9NYW1n8Y3483VXHGi8zQ0ZsLbK8464EJUXLF7CXM8Ry+jkkUw+ZvA+Zu1E/+C6p2Y6T9el0C9g==} cpu: [arm64] os: [linux] + '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.31': + resolution: {integrity: sha512-qdbmU5QSZ0uoLZBYMxiHsMQmizqtzFGTVPU5oyU1n0jU0Mo+mkSzqZuL8VBnjHOHzhVxZsoAGH9JjiRzCnoGVA==} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.1': resolution: {integrity: sha512-a8QP35x/3mggWqCpFtaF3/PbWl5P9QKpP/muk3iMPgzrXto8zPsEl3imsP3EBh4KwanBVHIf8pEkBQ+/7iMTgQ==} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.7': - resolution: {integrity: sha512-2yDNUKQidgcZr/VSJCUy9IGvtcF/GfBEBrCsqvSkVKMNLNySICvybAwKtCNPeZSOwf875CWnnyKNeg5vwV6rMg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.31': + resolution: {integrity: sha512-H7+r34TSV8udB2gAsebFM/YuEeNCkPGEAGJ1JE7SgI9XML6FflqcdKfrRSneQFsPaom/gCEc1g0WW5MZ0O3blw==} cpu: [x64] os: [linux] @@ -1030,8 +981,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.7': - resolution: {integrity: sha512-72LjHkY9Sqav35qopNh4fabhSsqKWmOwMtjmrNgONTtC5LhALjNZlaXkAaFvQRJ8N7ftT8BOITzaZeqrF6BYdg==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.31': + resolution: {integrity: sha512-zRm2YmzFVqbsmUsyyZnHfJrOlQUcWS/FJ5ZWL8Q1kZh5PnLBrTVZNpakIWwAxpN5gNEi9MmFd5YHocVJp8ps1Q==} cpu: [x64] os: [linux] @@ -1040,9 +991,9 @@ packages: engines: {node: '>=14.21.3'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.7': - resolution: {integrity: sha512-sR8q2p3j5ZCkFWPbm6LUIYE7SHfmrVqXu0n4CFpzmAM95pDhFRx8SzT/oL5tkFN+mCdnPpzcvpn9OioVXQ8CxA==} - engines: {node: '>=14.21.3'} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.31': + resolution: {integrity: sha512-fM1eUIuHLsNJXRlWOuIIex1oBJ89I0skFWo5r/D3KSJ5gD9MBd3g4Hp+v1JGohvyFE+7ylnwRxSUyMEeYpA69A==} + engines: {node: '>=14.0.0'} cpu: [wasm32] '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.1': @@ -1050,8 +1001,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.7': - resolution: {integrity: sha512-eeSNGdZt01NelYGl5LZc3cSwN4iYG5XE8zMqkILErfW6ndpc74DKeDWI0aG8jmtjz5VerLA4B9DzOkhuFj4lNg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.31': + resolution: {integrity: sha512-4nftR9V2KHH3zjBwf6leuZZJQZ7v0d70ogjHIqB3SDsbDLvVEZiGSsSn2X6blSZRZeJSFzK0pp4kZ67zdZXwSw==} cpu: [arm64] os: [win32] @@ -1060,8 +1011,8 @@ packages: cpu: [ia32] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.7': - resolution: {integrity: sha512-d7Uhs3LWirrE4+TRa2N25AqrZaZjYZdOrKSYbZFMF42tFkWIgGWPCQouTqjMgjVGX0feJpF7+9dwVhjZFzZbYA==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.31': + resolution: {integrity: sha512-0TQcKu9xZVHYALit+WJsSuADGlTFfOXhnZoIHWWQhTk3OgbwwbYcSoZUXjRdFmR6Wswn4csHtJGN1oYKeQ6/2g==} cpu: [ia32] os: [win32] @@ -1070,11 +1021,14 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.7': - resolution: {integrity: sha512-Z3P1JHx+U7Sr73v5wJtEygxboF2VR9ds4eSAgFfslhIxFI48FFm+WEMeuLLeqnx0tiq1UL6cIIg5+h3mlaG6UA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.31': + resolution: {integrity: sha512-3zMICWwpZh1jrkkKDYIUCx/2wY3PXLICAS0AnbeLlhzfWPhCcpNK9eKhiTlLAZyTp+3kyipoi/ZSVIh+WDnBpQ==} cpu: [x64] os: [win32] + '@rolldown/pluginutils@1.0.0-beta.31': + resolution: {integrity: sha512-IaDZ9NhjOIOkYtm+hH0GX33h3iVZ2OeSUnFF0+7Z4+1GuKs4Kj5wK3+I2zNV9IPLfqV4XlwWif8SXrZNutxciQ==} + '@rollup/plugin-babel@6.0.4': resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} engines: {node: '>=14.0.0'} @@ -1088,15 +1042,6 @@ packages: rollup: optional: true - '@rollup/plugin-commonjs@28.0.1': - resolution: {integrity: sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-esm-shim@0.1.7': resolution: {integrity: sha512-Du+ZohybNzcg9H6iuMZwrjQo7dYetvm6E5rxFf13cUHa7XVZ8Lqz+HTKgwNekLla2wXZsNbv9dhDMW6FotwbSg==} engines: {node: '>=14.0.0'} @@ -1115,37 +1060,6 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@16.0.0': - resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@6.0.2': - resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-typescript@12.1.1': - resolution: {integrity: sha512-t7O653DpfB5MbFrqPe/VcKFFkvRuFNp9qId3xq4Eth5xlyymzxNpye2z8Hrl0RIMuXTSr5GGcFpkdlMeacUiFQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0||^4.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - '@rollup/pluginutils@5.1.3': resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} @@ -1277,6 +1191,9 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + '@tybys/wasm-util@0.10.0': + resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} @@ -1316,9 +1233,6 @@ packages: '@types/plist@3.0.5': resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -1338,11 +1252,6 @@ packages: '@uwu/shelter-defs@1.4.1': resolution: {integrity: sha512-KDQQf7S8yT1/ZxBZ8Ch5zHZ1ps9QcVtRWfnzK0pqrQb++5Tb2hqD0RiL5IrdS765/ZXglq0cgKWB6xesHVCZKg==} - '@valibot/to-json-schema@1.0.0': - resolution: {integrity: sha512-/9crJgPptVsGCL6X+JPDQyaJwkalSZ/52WuF8DiRUxJgcmpNdzYRfZ+gqMEP8W3CTVfuMWPqqvIgfwJ97f9Etw==} - peerDependencies: - valibot: ^1.0.0 - '@vencord/venmic@6.1.0': resolution: {integrity: sha512-YiCtzml/W8tYbGhu3jm5jfbbEnl2slKKARNK0jO+8qV979k9eFnfIRTxvhMN/SWq1h8ZNJdXVwvXpffQwq0RuA==} engines: {node: '>=14.15'} @@ -1395,6 +1304,10 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@4.1.0: + resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} + engines: {node: '>=14'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1412,12 +1325,12 @@ packages: dmg-builder: 25.1.8 electron-builder-squirrel-windows: 25.1.8 - app-builder-lib@26.0.12: - resolution: {integrity: sha512-+/CEPH1fVKf6HowBUs6LcAIoRcjeqgvAeoSE+cl7Y7LndyQ9ViGPYibNk7wmhMHzNgHIuIbw4nWADPO+4mjgWw==} + app-builder-lib@26.0.19: + resolution: {integrity: sha512-z7SaBAqwCG0sYYhimleOChJlu1gRMT7LVhzKt1rxQ4mkUOntQJEdkgclLYuJqIBGIwh9dat3LQbvOr504J0e6w==} engines: {node: '>=14.0.0'} peerDependencies: - dmg-builder: 26.0.12 - electron-builder-squirrel-windows: 26.0.12 + dmg-builder: 26.0.19 + electron-builder-squirrel-windows: 26.0.19 aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1541,11 +1454,15 @@ packages: resolution: {integrity: sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==} engines: {node: '>=12.0.0'} + builder-util-runtime@9.3.3: + resolution: {integrity: sha512-8AE+77tdJ9XTsK96e55EXJR+ZEK54r8rb0BS8PbEXw57tOX0EWV4BluGW3xkIn+Xvbp+bmQ8gECa15wlcEQxlg==} + engines: {node: '>=12.0.0'} + builder-util@25.1.7: resolution: {integrity: sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==} - builder-util@26.0.11: - resolution: {integrity: sha512-xNjXfsldUEe153h1DraD0XvDOpqGR0L5eKFkdReB7eFW5HqysDZFfly4rckda6y9dF39N3pkPlOblcfHKGw+uA==} + builder-util@26.0.19: + resolution: {integrity: sha512-fKHgkdq6Ra3bv7ly69o32L3ZrOhaq2qzSnQn9rUzWMEpsZ8FfZy9XOYQZ7qIdwB6iqJ4uZhjlPD8ZsGb7LYMZA==} cacache@16.1.3: resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} @@ -1585,6 +1502,10 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.3.0: + resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} + engines: {node: '>=8'} + clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -1643,9 +1564,6 @@ packages: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compare-version@0.1.2: resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} engines: {node: '>=0.10.0'} @@ -1717,10 +1635,6 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -1762,8 +1676,8 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dmg-builder@26.0.12: - resolution: {integrity: sha512-59CAAjAhTaIMCN8y9kD573vDkxbs1uhDcrFLHSgutYdPcGOU35Rf95725snvzEOy4BFB7+eLJ8djCNPmGwG67w==} + dmg-builder@26.0.19: + resolution: {integrity: sha512-lZyqfdM0SPqNydGtq06B7LRSxUcKU4v/p2xU0kmKqTM9WXZaQELOZ0OH/gbLCmeZz6zWEDSA31MmTJ8b/X8nYg==} dmg-license@1.0.11: resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} @@ -1790,8 +1704,8 @@ packages: electron-builder-squirrel-windows@25.1.8: resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==} - electron-builder@26.0.12: - resolution: {integrity: sha512-cD1kz5g2sgPTMFHjLxfMjUK5JABq3//J4jPswi93tOPFz6btzXYtK5NrDt717NRbukCUDOrrvmYVOWERlqoiXA==} + electron-builder@26.0.19: + resolution: {integrity: sha512-0xkN9UcIBgrbNAqeurB+CyBARZPkfiILPK0nvbioX+S86B3fgRfJnjIh+T+zowyPTTY85NN5kLfItM8twVRy5w==} engines: {node: '>=14.0.0'} hasBin: true @@ -1810,8 +1724,8 @@ packages: electron-publish@25.1.7: resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==} - electron-publish@26.0.11: - resolution: {integrity: sha512-a8QRH0rAPIWH9WyyS5LbNvW9Ark6qe63/LqDB7vu2JXYpi0Gma5Q60Dh4tmTqhOBQt0xsrzD8qE7C+D7j+B24A==} + electron-publish@26.0.19: + resolution: {integrity: sha512-tcQUIRuHOwaQxi+CrbpaB/5Q+vonj9fEeWkaVa3oM0DcdYHZK/nCLgWKu0kHgPheAU1ovfjVcXBpuyuFBLp2lA==} electron-to-chromium@1.5.90: resolution: {integrity: sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==} @@ -1819,8 +1733,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@36.5.0: - resolution: {integrity: sha512-ouVtHbHDFsRBHPGx9G6RDm4ccPaSCmrrR8tbUGZuqbJhqIClVBkVMz94Spjihag2Zo1eHtYD+KevALrc/94g1g==} + electron@37.2.6: + resolution: {integrity: sha512-Ns6xyxE+hIK5UlujtRlw7w4e2Ju/ImCWXf1Q/PoOhc0N3/6SN6YW7+ujCarsHbxWnolbW+1RlkHtdklUJpjbPA==} engines: {node: '>= 12.20.55'} hasBin: true @@ -1858,9 +1772,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} @@ -1874,11 +1785,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.24.0: - resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1934,14 +1840,6 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.2: - resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -2185,10 +2083,6 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -2216,9 +2110,6 @@ packages: is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2231,9 +2122,6 @@ packages: resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} engines: {node: '>=0.10.0'} - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -2252,6 +2140,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -2260,6 +2152,10 @@ packages: engines: {node: '>=10'} hasBin: true + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + hasBin: true + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2475,8 +2371,8 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + minimatch@10.0.3: + resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} engines: {node: 20 || >=22} minimatch@3.1.2: @@ -2759,10 +2655,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} @@ -2796,26 +2688,14 @@ packages: '@babel/runtime': optional: true - rolldown@1.0.0-beta.7: - resolution: {integrity: sha512-IUa/9lZVqgFilYggiY7jxUbmvU4Q8wVvVqsru+AeMldBccBEhTYZ6/XP6cWsznb8Fv49zfYGaeEpJ5WeVdo6Mg==} + rolldown@1.0.0-beta.31: + resolution: {integrity: sha512-M2Q+RfG0FMJeSW3RSFTbvtjGVTcQpTQvN247D0EMSsPkpZFoinopR9oAnQiwgogQyzDuvKNnbyCbQQlmNAzSoQ==} hasBin: true - peerDependencies: - '@oxc-project/runtime': 0.61.2 - peerDependenciesMeta: - '@oxc-project/runtime': - optional: true rollup-plugin-copy@3.5.0: resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} engines: {node: '>=8.3'} - rollup-plugin-esbuild@6.1.1: - resolution: {integrity: sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw==} - engines: {node: '>=14.18.0'} - peerDependencies: - esbuild: '>=0.18.0' - rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - rollup@4.27.4: resolution: {integrity: sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3099,14 +2979,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - valibot@1.0.0: - resolution: {integrity: sha512-1Hc0ihzWxBar6NGeZv7fPLY0QuxFMyxwYR2sF1Blu7Wq7EnremwY2W02tit2ij2VJT8HcSkHAQqmFfl77f73Yw==} - peerDependencies: - typescript: '>=5' - peerDependenciesMeta: - typescript: - optional: true - validate-html-nesting@1.2.2: resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} @@ -3122,6 +2994,11 @@ packages: engines: {node: '>= 8'} hasBin: true + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -3207,6 +3084,12 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.26.5': {} '@babel/core@7.26.7': @@ -3237,9 +3120,17 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.25.9': + '@babel/generator@7.28.0': dependencies: - '@babel/types': 7.26.7 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.28.2 '@babel/helper-compilation-targets@7.26.5': dependencies: @@ -3249,23 +3140,25 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.7)': + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.7) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.26.7 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-member-expression-to-functions@7.25.9': + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.26.7 - '@babel/types': 7.26.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -3280,6 +3173,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -3289,34 +3189,51 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.25.9': - dependencies: - '@babel/types': 7.26.7 - - '@babel/helper-plugin-utils@7.26.5': {} - - '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.7)': + '@babel/helper-module-transforms@7.27.3(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.26.7 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/traverse': 7.26.7 - '@babel/types': 7.26.7 + '@babel/types': 7.28.2 + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-validator-option@7.27.1': {} + '@babel/helpers@7.26.7': dependencies: '@babel/template': 7.25.9 @@ -3326,6 +3243,10 @@ snapshots: dependencies: '@babel/types': 7.26.7 + '@babel/parser@7.28.0': + dependencies: + '@babel/types': 7.28.2 + '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -3336,10 +3257,15 @@ snapshots: '@babel/core': 7.26.7 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.7)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-flow-strip-types@7.26.5(@babel/core@7.26.7)': dependencies: @@ -3347,22 +3273,22 @@ snapshots: '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.7) - '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.7)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.7) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.26.7) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.26.7(@babel/core@7.26.7)': + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.7) - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.7) + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.26.7) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.26.7) transitivePeerDependencies: - supports-color @@ -3373,14 +3299,14 @@ snapshots: '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.7) - '@babel/preset-typescript@7.26.0(@babel/core@7.26.7)': + '@babel/preset-typescript@7.27.1(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.7) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.7) - '@babel/plugin-transform-typescript': 7.26.7(@babel/core@7.26.7) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.26.7) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.26.7) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.26.7) transitivePeerDependencies: - supports-color @@ -3390,6 +3316,12 @@ snapshots: '@babel/parser': 7.26.7 '@babel/types': 7.26.7 + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + '@babel/traverse@7.26.7': dependencies: '@babel/code-frame': 7.26.2 @@ -3402,11 +3334,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.28.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.26.7': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@biomejs/biome@1.9.4': optionalDependencies: '@biomejs/cli-darwin-arm64': 1.9.4 @@ -3447,7 +3396,7 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - '@electron/asar@3.2.18': + '@electron/asar@3.4.1': dependencies: commander: 5.1.0 glob: 7.2.3 @@ -3508,6 +3457,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@electron/osx-sign@1.3.3': + dependencies: + compare-version: 0.1.2 + debug: 4.4.0 + fs-extra: 10.1.0 + isbinaryfile: 4.0.10 + minimist: 1.2.8 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + '@electron/rebuild@3.6.1': dependencies: '@malept/cross-spawn-promise': 2.0.0 @@ -3528,7 +3488,7 @@ snapshots: - bluebird - supports-color - '@electron/rebuild@3.7.0': + '@electron/rebuild@3.7.2': dependencies: '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2 '@malept/cross-spawn-promise': 2.0.0 @@ -3550,7 +3510,19 @@ snapshots: '@electron/universal@2.0.1': dependencies: - '@electron/asar': 3.2.18 + '@electron/asar': 3.4.1 + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.0 + dir-compare: 4.2.0 + fs-extra: 11.2.0 + minimatch: 9.0.5 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + + '@electron/universal@2.0.3': + dependencies: + '@electron/asar': 3.4.1 '@malept/cross-spawn-promise': 2.0.0 debug: 4.4.0 dir-compare: 4.2.0 @@ -3566,20 +3538,33 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/core@1.4.5': + dependencies: + '@emnapi/wasi-threads': 1.0.4 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.3.1': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.4.5': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.0.1': dependencies: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.23.1': + '@emnapi/wasi-threads@1.0.4': + dependencies: + tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.24.0': + '@esbuild/aix-ppc64@0.23.1': optional: true '@esbuild/android-arm64@0.17.19': @@ -3588,206 +3573,143 @@ snapshots: '@esbuild/android-arm64@0.23.1': optional: true - '@esbuild/android-arm64@0.24.0': - optional: true - '@esbuild/android-arm@0.17.19': optional: true '@esbuild/android-arm@0.23.1': optional: true - '@esbuild/android-arm@0.24.0': - optional: true - '@esbuild/android-x64@0.17.19': optional: true '@esbuild/android-x64@0.23.1': optional: true - '@esbuild/android-x64@0.24.0': - optional: true - '@esbuild/darwin-arm64@0.17.19': optional: true '@esbuild/darwin-arm64@0.23.1': optional: true - '@esbuild/darwin-arm64@0.24.0': - optional: true - '@esbuild/darwin-x64@0.17.19': optional: true '@esbuild/darwin-x64@0.23.1': optional: true - '@esbuild/darwin-x64@0.24.0': - optional: true - '@esbuild/freebsd-arm64@0.17.19': optional: true '@esbuild/freebsd-arm64@0.23.1': optional: true - '@esbuild/freebsd-arm64@0.24.0': - optional: true - '@esbuild/freebsd-x64@0.17.19': optional: true '@esbuild/freebsd-x64@0.23.1': optional: true - '@esbuild/freebsd-x64@0.24.0': - optional: true - '@esbuild/linux-arm64@0.17.19': optional: true '@esbuild/linux-arm64@0.23.1': optional: true - '@esbuild/linux-arm64@0.24.0': - optional: true - '@esbuild/linux-arm@0.17.19': optional: true '@esbuild/linux-arm@0.23.1': optional: true - '@esbuild/linux-arm@0.24.0': - optional: true - '@esbuild/linux-ia32@0.17.19': optional: true '@esbuild/linux-ia32@0.23.1': optional: true - '@esbuild/linux-ia32@0.24.0': - optional: true - '@esbuild/linux-loong64@0.17.19': optional: true '@esbuild/linux-loong64@0.23.1': optional: true - '@esbuild/linux-loong64@0.24.0': - optional: true - '@esbuild/linux-mips64el@0.17.19': optional: true '@esbuild/linux-mips64el@0.23.1': optional: true - '@esbuild/linux-mips64el@0.24.0': - optional: true - '@esbuild/linux-ppc64@0.17.19': optional: true '@esbuild/linux-ppc64@0.23.1': optional: true - '@esbuild/linux-ppc64@0.24.0': - optional: true - '@esbuild/linux-riscv64@0.17.19': optional: true '@esbuild/linux-riscv64@0.23.1': optional: true - '@esbuild/linux-riscv64@0.24.0': - optional: true - '@esbuild/linux-s390x@0.17.19': optional: true '@esbuild/linux-s390x@0.23.1': optional: true - '@esbuild/linux-s390x@0.24.0': - optional: true - '@esbuild/linux-x64@0.17.19': optional: true '@esbuild/linux-x64@0.23.1': optional: true - '@esbuild/linux-x64@0.24.0': - optional: true - '@esbuild/netbsd-x64@0.17.19': optional: true '@esbuild/netbsd-x64@0.23.1': optional: true - '@esbuild/netbsd-x64@0.24.0': - optional: true - '@esbuild/openbsd-arm64@0.23.1': optional: true - '@esbuild/openbsd-arm64@0.24.0': - optional: true - '@esbuild/openbsd-x64@0.17.19': optional: true '@esbuild/openbsd-x64@0.23.1': optional: true - '@esbuild/openbsd-x64@0.24.0': - optional: true - '@esbuild/sunos-x64@0.17.19': optional: true '@esbuild/sunos-x64@0.23.1': optional: true - '@esbuild/sunos-x64@0.24.0': - optional: true - '@esbuild/win32-arm64@0.17.19': optional: true '@esbuild/win32-arm64@0.23.1': optional: true - '@esbuild/win32-arm64@0.24.0': - optional: true - '@esbuild/win32-ia32@0.17.19': optional: true '@esbuild/win32-ia32@0.23.1': optional: true - '@esbuild/win32-ia32@0.24.0': - optional: true - '@esbuild/win32-x64@0.17.19': optional: true '@esbuild/win32-x64@0.23.1': optional: true - '@esbuild/win32-x64@0.24.0': - optional: true - '@gar/promisify@1.1.3': {} + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -3797,6 +3719,11 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jridgewell/gen-mapping@0.3.12': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -3814,6 +3741,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.29': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + '@malept/cross-spawn-promise@2.0.0': dependencies: cross-spawn: 7.0.6 @@ -3869,6 +3801,13 @@ snapshots: '@tybys/wasm-util': 0.9.0 optional: true + '@napi-rs/wasm-runtime@1.0.1': + dependencies: + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.10.0 + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3891,7 +3830,9 @@ snapshots: mkdirp: 1.0.4 rimraf: 3.0.2 - '@oxc-project/types@0.61.2': {} + '@oxc-project/runtime@0.80.0': {} + + '@oxc-project/types@0.80.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -3957,52 +3898,58 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@rolldown/binding-android-arm64@1.0.0-beta.31': + optional: true + '@rolldown/binding-darwin-arm64@1.0.0-beta.1': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.7': + '@rolldown/binding-darwin-arm64@1.0.0-beta.31': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.1': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.7': + '@rolldown/binding-darwin-x64@1.0.0-beta.31': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.1': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.7': + '@rolldown/binding-freebsd-x64@1.0.0-beta.31': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.7': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.31': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.7': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.31': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.7': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.31': + optional: true + + '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.31': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.7': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.31': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.7': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.31': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-beta.1': @@ -4010,29 +3957,31 @@ snapshots: '@napi-rs/wasm-runtime': 0.2.6 optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.7': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.31': dependencies: - '@napi-rs/wasm-runtime': 0.2.6 + '@napi-rs/wasm-runtime': 1.0.1 optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.1': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.7': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.31': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.1': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.7': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.31': optional: true '@rolldown/binding-win32-x64-msvc@1.0.0-beta.1': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.7': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.31': optional: true + '@rolldown/pluginutils@1.0.0-beta.31': {} + '@rollup/plugin-babel@6.0.4(@babel/core@7.26.7)(rollup@4.27.4)': dependencies: '@babel/core': 7.26.7 @@ -4043,18 +3992,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/plugin-commonjs@28.0.1(rollup@4.27.4)': - dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.27.4) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.4.2(picomatch@4.0.2) - is-reference: 1.2.1 - magic-string: 0.30.14 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.27.4 - '@rollup/plugin-esm-shim@0.1.7(rollup@4.27.4)': dependencies: magic-string: 0.30.14 @@ -4067,32 +4004,6 @@ snapshots: optionalDependencies: rollup: 4.27.4 - '@rollup/plugin-node-resolve@16.0.0(rollup@4.27.4)': - dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.27.4) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.27.4 - - '@rollup/plugin-replace@6.0.2(rollup@4.27.4)': - dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.27.4) - magic-string: 0.30.14 - optionalDependencies: - rollup: 4.27.4 - - '@rollup/plugin-typescript@12.1.1(rollup@4.27.4)(tslib@2.8.1)(typescript@5.7.2)': - dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.27.4) - resolve: 1.22.8 - typescript: 5.7.2 - optionalDependencies: - rollup: 4.27.4 - tslib: 2.8.1 - '@rollup/pluginutils@5.1.3(rollup@4.27.4)': dependencies: '@types/estree': 1.0.6 @@ -4181,6 +4092,11 @@ snapshots: '@tootallnate/once@2.0.0': {} + '@tybys/wasm-util@0.10.0': + dependencies: + tslib: 2.8.1 + optional: true + '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.8.1 @@ -4232,8 +4148,6 @@ snapshots: xmlbuilder: 15.1.1 optional: true - '@types/resolve@1.20.2': {} - '@types/responselike@1.0.3': dependencies: '@types/node': 22.10.1 @@ -4253,7 +4167,7 @@ snapshots: '@uwu/lune@1.5.1': dependencies: '@babel/core': 7.26.7 - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.7) + '@babel/preset-typescript': 7.27.1(@babel/core@7.26.7) chokidar: 3.6.0 esbuild: 0.17.19 lightningcss: 1.29.1 @@ -4273,10 +4187,6 @@ snapshots: solid-js: 1.6.16 spitroast: 1.4.4 - '@valibot/to-json-schema@1.0.0(valibot@1.0.0(typescript@5.7.2))': - dependencies: - valibot: 1.0.0(typescript@5.7.2) - '@vencord/venmic@6.1.0': dependencies: cmake-js: 7.3.0 @@ -4332,6 +4242,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@4.1.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -4341,7 +4253,7 @@ snapshots: app-builder-bin@5.0.0-alpha.12: {} - app-builder-lib@25.1.8(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@25.1.8(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.5.0 @@ -4357,11 +4269,11 @@ snapshots: chromium-pickle-js: 0.2.0 config-file-ts: 0.2.8-rc1 debug: 4.4.0 - dmg-builder: 26.0.12(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.0.19(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.12) + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.19) electron-publish: 25.1.7 form-data: 4.0.1 fs-extra: 10.1.0 @@ -4371,7 +4283,7 @@ snapshots: js-yaml: 4.1.0 json5: 2.2.3 lazy-val: 1.0.5 - minimatch: 10.0.1 + minimatch: 10.0.3 resedit: 1.7.2 sanitize-filename: 1.6.3 semver: 7.7.0 @@ -4381,43 +4293,44 @@ snapshots: - bluebird - supports-color - app-builder-lib@26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@26.0.19(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 - '@electron/asar': 3.2.18 + '@electron/asar': 3.4.1 '@electron/fuses': 1.8.0 '@electron/notarize': 2.5.0 - '@electron/osx-sign': 1.3.1 - '@electron/rebuild': 3.7.0 - '@electron/universal': 2.0.1 + '@electron/osx-sign': 1.3.3 + '@electron/rebuild': 3.7.2 + '@electron/universal': 2.0.3 '@malept/flatpak-bundler': 0.4.0 '@types/fs-extra': 9.0.13 async-exit-hook: 2.0.1 - builder-util: 26.0.11 - builder-util-runtime: 9.3.1 + builder-util: 26.0.19 + builder-util-runtime: 9.3.3 chromium-pickle-js: 0.2.0 - config-file-ts: 0.2.8-rc1 + ci-info: 4.3.0 debug: 4.4.0 - dmg-builder: 26.0.12(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.0.19(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.12) - electron-publish: 26.0.11 + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.19) + electron-publish: 26.0.19 fs-extra: 10.1.0 hosted-git-info: 4.1.0 - is-ci: 3.0.1 isbinaryfile: 5.0.4 + jiti: 2.5.1 js-yaml: 4.1.0 json5: 2.2.3 lazy-val: 1.0.5 - minimatch: 10.0.1 + minimatch: 10.0.3 plist: 3.1.0 resedit: 1.7.2 semver: 7.7.0 tar: 6.2.1 temp-file: 3.4.0 tiny-async-pool: 1.3.0 + which: 5.0.0 transitivePeerDependencies: - bluebird - supports-color @@ -4579,6 +4492,13 @@ snapshots: transitivePeerDependencies: - supports-color + builder-util-runtime@9.3.3: + dependencies: + debug: 4.4.0 + sax: 1.4.1 + transitivePeerDependencies: + - supports-color + builder-util@25.1.7: dependencies: 7zip-bin: 5.2.0 @@ -4600,19 +4520,19 @@ snapshots: transitivePeerDependencies: - supports-color - builder-util@26.0.11: + builder-util@26.0.19: dependencies: 7zip-bin: 5.2.0 '@types/debug': 4.1.12 app-builder-bin: 5.0.0-alpha.12 - builder-util-runtime: 9.3.1 + builder-util-runtime: 9.3.3 chalk: 4.1.2 + ci-info: 4.3.0 cross-spawn: 7.0.6 debug: 4.4.0 fs-extra: 10.1.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 - is-ci: 3.0.1 js-yaml: 4.1.0 sanitize-filename: 1.6.3 source-map-support: 0.5.21 @@ -4686,6 +4606,8 @@ snapshots: ci-info@3.9.0: {} + ci-info@4.3.0: {} + clean-stack@2.2.0: {} cli-cursor@3.1.0: @@ -4752,8 +4674,6 @@ snapshots: commander@5.1.0: {} - commondir@1.0.1: {} - compare-version@0.1.2: {} compress-commons@4.1.2: @@ -4802,6 +4722,7 @@ snapshots: debug@4.3.7: dependencies: ms: 2.1.3 + optional: true debug@4.4.0: dependencies: @@ -4814,8 +4735,6 @@ snapshots: deep-extend@0.6.0: optional: true - deepmerge@4.3.1: {} - defaults@1.0.4: dependencies: clone: 1.0.4 @@ -4856,11 +4775,10 @@ snapshots: dependencies: path-type: 4.0.0 - dmg-builder@26.0.12(electron-builder-squirrel-windows@25.1.8): + dmg-builder@26.0.19(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8) - builder-util: 26.0.11 - builder-util-runtime: 9.3.1 + app-builder-lib: 26.0.19(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8) + builder-util: 26.0.19 fs-extra: 10.1.0 iconv-lite: 0.6.3 js-yaml: 4.1.0 @@ -4895,9 +4813,9 @@ snapshots: dependencies: jake: 10.9.2 - electron-builder-squirrel-windows@25.1.8(dmg-builder@26.0.12): + electron-builder-squirrel-windows@25.1.8(dmg-builder@26.0.19): dependencies: - app-builder-lib: 25.1.8(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 25.1.8(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8) archiver: 5.3.2 builder-util: 25.1.7 fs-extra: 10.1.0 @@ -4906,15 +4824,15 @@ snapshots: - dmg-builder - supports-color - electron-builder@26.0.12(electron-builder-squirrel-windows@25.1.8): + electron-builder@26.0.19(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.0.12(dmg-builder@26.0.12)(electron-builder-squirrel-windows@25.1.8) - builder-util: 26.0.11 - builder-util-runtime: 9.3.1 + app-builder-lib: 26.0.19(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8) + builder-util: 26.0.19 + builder-util-runtime: 9.3.3 chalk: 4.1.2 - dmg-builder: 26.0.12(electron-builder-squirrel-windows@25.1.8) + ci-info: 4.3.0 + dmg-builder: 26.0.19(electron-builder-squirrel-windows@25.1.8) fs-extra: 10.1.0 - is-ci: 3.0.1 lazy-val: 1.0.5 simple-update-notifier: 2.0.0 yargs: 17.7.2 @@ -4949,11 +4867,11 @@ snapshots: transitivePeerDependencies: - supports-color - electron-publish@26.0.11: + electron-publish@26.0.19: dependencies: '@types/fs-extra': 9.0.13 - builder-util: 26.0.11 - builder-util-runtime: 9.3.1 + builder-util: 26.0.19 + builder-util-runtime: 9.3.3 chalk: 4.1.2 form-data: 4.0.1 fs-extra: 10.1.0 @@ -4977,7 +4895,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@36.5.0: + electron@37.2.6: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 @@ -5014,8 +4932,6 @@ snapshots: es-errors@1.3.0: optional: true - es-module-lexer@1.5.4: {} - es6-error@4.1.1: optional: true @@ -5071,33 +4987,6 @@ snapshots: '@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-x64': 0.23.1 - esbuild@0.24.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.0 - '@esbuild/android-arm': 0.24.0 - '@esbuild/android-arm64': 0.24.0 - '@esbuild/android-x64': 0.24.0 - '@esbuild/darwin-arm64': 0.24.0 - '@esbuild/darwin-x64': 0.24.0 - '@esbuild/freebsd-arm64': 0.24.0 - '@esbuild/freebsd-x64': 0.24.0 - '@esbuild/linux-arm': 0.24.0 - '@esbuild/linux-arm64': 0.24.0 - '@esbuild/linux-ia32': 0.24.0 - '@esbuild/linux-loong64': 0.24.0 - '@esbuild/linux-mips64el': 0.24.0 - '@esbuild/linux-ppc64': 0.24.0 - '@esbuild/linux-riscv64': 0.24.0 - '@esbuild/linux-s390x': 0.24.0 - '@esbuild/linux-x64': 0.24.0 - '@esbuild/netbsd-x64': 0.24.0 - '@esbuild/openbsd-arm64': 0.24.0 - '@esbuild/openbsd-x64': 0.24.0 - '@esbuild/sunos-x64': 0.24.0 - '@esbuild/win32-arm64': 0.24.0 - '@esbuild/win32-ia32': 0.24.0 - '@esbuild/win32-x64': 0.24.0 - escalade@3.2.0: {} escape-goat@4.0.0: {} @@ -5153,10 +5042,6 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.2(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -5447,10 +5332,6 @@ snapshots: dependencies: ci-info: 3.9.0 - is-core-module@2.15.1: - dependencies: - hasown: 2.0.2 - is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -5469,18 +5350,12 @@ snapshots: is-lambda@1.0.1: {} - is-module@1.0.0: {} - is-number@7.0.0: {} is-plain-obj@1.1.0: {} is-plain-object@3.0.1: {} - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.6 - is-unicode-supported@0.1.0: {} isarray@1.0.0: {} @@ -5491,6 +5366,8 @@ snapshots: isexe@2.0.0: {} + isexe@3.1.1: {} + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -5504,6 +5381,8 @@ snapshots: filelist: 1.0.4 minimatch: 3.1.2 + jiti@2.5.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.0: @@ -5688,9 +5567,9 @@ snapshots: mimic-response@3.1.0: {} - minimatch@10.0.1: + minimatch@10.0.3: dependencies: - brace-expansion: 2.0.1 + '@isaacs/brace-expansion': 5.0.0 minimatch@3.1.2: dependencies: @@ -5965,12 +5844,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@1.22.8: - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - responselike@2.0.1: dependencies: lowercase-keys: 2.0.0 @@ -6015,26 +5888,27 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.1 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.1 - rolldown@1.0.0-beta.7(typescript@5.7.2): + rolldown@1.0.0-beta.31: dependencies: - '@oxc-project/types': 0.61.2 - '@valibot/to-json-schema': 1.0.0(valibot@1.0.0(typescript@5.7.2)) - valibot: 1.0.0(typescript@5.7.2) + '@oxc-project/runtime': 0.80.0 + '@oxc-project/types': 0.80.0 + '@rolldown/pluginutils': 1.0.0-beta.31 + ansis: 4.1.0 optionalDependencies: - '@rolldown/binding-darwin-arm64': 1.0.0-beta.7 - '@rolldown/binding-darwin-x64': 1.0.0-beta.7 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.7 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.7 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.7 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.7 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.7 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.7 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.7 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.7 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.7 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.7 - transitivePeerDependencies: - - typescript + '@rolldown/binding-android-arm64': 1.0.0-beta.31 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.31 + '@rolldown/binding-darwin-x64': 1.0.0-beta.31 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.31 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.31 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.31 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.31 + '@rolldown/binding-linux-arm64-ohos': 1.0.0-beta.31 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.31 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.31 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.31 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.31 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.31 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.31 rollup-plugin-copy@3.5.0: dependencies: @@ -6044,17 +5918,6 @@ snapshots: globby: 10.0.1 is-plain-object: 3.0.1 - rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.27.4): - dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.27.4) - debug: 4.3.7 - es-module-lexer: 1.5.4 - esbuild: 0.24.0 - get-tsconfig: 4.8.1 - rollup: 4.27.4 - transitivePeerDependencies: - - supports-color - rollup@4.27.4: dependencies: '@types/estree': 1.0.6 @@ -6078,6 +5941,7 @@ snapshots: '@rollup/rollup-win32-ia32-msvc': 4.27.4 '@rollup/rollup-win32-x64-msvc': 4.27.4 fsevents: 2.3.3 + optional: true run-parallel@1.2.0: dependencies: @@ -6359,10 +6223,6 @@ snapshots: util-deprecate@1.0.2: {} - valibot@1.0.0(typescript@5.7.2): - optionalDependencies: - typescript: 5.7.2 - validate-html-nesting@1.2.2: {} verror@1.10.1: @@ -6380,6 +6240,10 @@ snapshots: dependencies: isexe: 2.0.0 + which@5.0.0: + dependencies: + isexe: 3.1.1 + wide-align@1.1.5: dependencies: string-width: 4.2.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml deleted file mode 100644 index c4e89fc..0000000 --- a/pnpm-workspace.yaml +++ /dev/null @@ -1,6 +0,0 @@ -onlyBuiltDependencies: - - '@biomejs/biome' - - '@parcel/watcher' - - '@vencord/venmic' - - electron - - esbuild \ No newline at end of file diff --git a/rolldown.config.js b/rolldown.config.js index 5bbb8d7..93a8238 100644 --- a/rolldown.config.js +++ b/rolldown.config.js @@ -102,8 +102,8 @@ export default defineConfig([ external: electronExternals, plugins: [ babel({ - presets: ["solid", "@babel/preset-flow"], - babelHelpers: "bundled", + presets: ["solid", "@babel/preset-flow", "@babel/preset-typescript"], + babelHelpers: "inline", exclude: "node_modules/**", extensions: [".ts", ".tsx"], }), diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 8ee4650..0000000 --- a/rollup.config.js +++ /dev/null @@ -1,133 +0,0 @@ -// @ts-check - -import babel from "@rollup/plugin-babel"; -import commonjs from "@rollup/plugin-commonjs"; -import esmShim from "@rollup/plugin-esm-shim"; -import json from "@rollup/plugin-json"; -import nodeResolve from "@rollup/plugin-node-resolve"; -import replace from "@rollup/plugin-replace"; -import typescript from "@rollup/plugin-typescript"; -import { defineConfig } from "rollup"; -import copy from "rollup-plugin-copy"; -import { minify } from "rollup-plugin-esbuild"; - -const prodEnv = process.env.BUILD === "prod"; - -const electronExternals = ["electron", "node:fs", "node:path", "node:os", "node:url", "@vencord/venmic"]; - -export default defineConfig([ - { - input: "src/main.ts", - output: { - dir: "ts-out", - format: "esm", - sourcemap: true, - }, - external: [ - ...electronExternals, - "electron", - "electron-is-dev", - "electron-updater", - "electron-context-menu", - "arrpc", - "path", - "stream", - "stream/promises", - ], - plugins: [ - commonjs(), - esmShim(), - json(), - minify({ minify: prodEnv }), - typescript(), - copy({ - targets: [ - { src: "src/**/**/*.html", dest: "ts-out/html/" }, - { src: "src/**/**/*.css", dest: "ts-out/css/" }, - { src: "src/**/**/*.js", dest: "ts-out/js/" }, - { src: "package.json", dest: "ts-out/" }, - { src: "assets/**/**", dest: "ts-out/assets/" }, - ], - }), - ], - }, - { - input: "src/rpc.ts", - output: { - dir: "ts-out", - format: "esm", - sourcemap: true, - }, - external: [...electronExternals, "arrpc"], - plugins: [commonjs(), esmShim(), json(), minify({ minify: prodEnv }), typescript()], - }, - { - input: "src/discord/preload/preload.mts", - output: { - dir: "ts-out/discord", - entryFileNames: "[name].mjs", - format: "esm", - sourcemap: true, - }, - external: electronExternals, - plugins: [typescript(), minify({ minify: prodEnv })], - }, - { - input: "src/splash/preload.mts", - output: { - dir: "ts-out/splash", - format: "esm", - entryFileNames: "[name].mjs", - sourcemap: true, - }, - external: electronExternals, - plugins: [typescript(), minify({ minify: prodEnv })], - }, - { - input: "src/setup/preload.mts", - output: { - dir: "ts-out/setup", - format: "esm", - entryFileNames: "[name].mjs", - sourcemap: true, - }, - external: electronExternals, - plugins: [typescript(), minify({ minify: prodEnv })], - }, - { - input: "src/cssEditor/preload.mts", - output: { - dir: "ts-out/cssEditor", - format: "esm", - entryFileNames: "[name].mjs", - sourcemap: true, - }, - external: electronExternals, - plugins: [typescript(), minify({ minify: prodEnv })], - }, - { - input: "src/setup/setup.tsx", - output: { - dir: "ts-out/html", - format: "esm", - entryFileNames: "[name].js", - sourcemap: true, - }, - external: electronExternals, - plugins: [ - commonjs(), - replace({ - "process.env.NODE_ENV": JSON.stringify("production"), - }), - nodeResolve({ browser: true }), - typescript(), - minify({ minify: prodEnv }), - babel({ - presets: ["solid"], - babelHelpers: "bundled", - exclude: "node_modules/**", - extensions: [".ts", ".tsx"], - }), - ], - }, -]); From f2d9dc0fa9a422e9d7380d6bf7e67c492707f602 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:29:55 +0200 Subject: [PATCH 741/896] fix: fallback to english in settings if key is missing fixes: https://github.com/Legcord/Legcord/issues/944 --- src/common/lang.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/common/lang.ts b/src/common/lang.ts index 1c9e4f9..cf6f367 100644 --- a/src/common/lang.ts +++ b/src/common/lang.ts @@ -67,8 +67,16 @@ export function getRawLang(): i18nStrings { if (!fs.existsSync(langPath)) { langPath = path.join(import.meta.dirname, "../", "/assets/lang/en-US.json"); } + const fallbackPath = path.join(import.meta.dirname, "../", "/assets/lang/en-US.json"); const rawData = fs.readFileSync(langPath, "utf-8"); const parsed = JSON.parse(rawData) as i18nStrings; + const fallbackData = fs.readFileSync(fallbackPath, "utf-8"); + const fallbackParsed = JSON.parse(fallbackData) as i18nStrings; + for (const key in fallbackParsed) { + if (parsed[key] === undefined) { + parsed[key] = fallbackParsed[key]; + } + } return parsed; } export function getLangName(): string { From 837265953fe001b1d54d2f25672306b1dc007487 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 9 Aug 2025 16:31:34 +0200 Subject: [PATCH 742/896] chore: refresh i18n --- assets/lang/ar-AA.json | 91 ---------------------------------------- assets/lang/cs-CZ.json | 91 ---------------------------------------- assets/lang/da-DK.json | 91 ---------------------------------------- assets/lang/de-DE.json | 91 ---------------------------------------- assets/lang/es-419.json | 91 ---------------------------------------- assets/lang/fa-IR.json | 91 ---------------------------------------- assets/lang/fi-FI.json | 91 ---------------------------------------- assets/lang/fil.json | 91 ---------------------------------------- assets/lang/fr-FR.json | 91 ---------------------------------------- assets/lang/hu-HU.json | 91 ---------------------------------------- assets/lang/id-ID.json | 91 ---------------------------------------- assets/lang/it-IT.json | 91 ---------------------------------------- assets/lang/ja-JP.json | 91 ---------------------------------------- assets/lang/ko-KR.json | 91 ---------------------------------------- assets/lang/lt-LT.json | 91 ---------------------------------------- assets/lang/nb-NO.json | 91 ---------------------------------------- assets/lang/nl-NL.json | 91 ---------------------------------------- assets/lang/pl-PL.json | 91 ---------------------------------------- assets/lang/pt-BR.json | 91 ---------------------------------------- assets/lang/pt-PT.json | 91 ---------------------------------------- assets/lang/ro-RO.json | 91 ---------------------------------------- assets/lang/ru-RU.json | 91 ---------------------------------------- assets/lang/sk-SK.json | 91 ---------------------------------------- assets/lang/sv-SE.json | 91 ---------------------------------------- assets/lang/th-TH.json | 91 ---------------------------------------- assets/lang/tr-TR.json | 91 ---------------------------------------- assets/lang/uk-UA.json | 91 ---------------------------------------- assets/lang/zh-Hans.json | 91 ---------------------------------------- assets/lang/zh-Hant.json | 91 ---------------------------------------- 29 files changed, 2639 deletions(-) delete mode 100644 assets/lang/ar-AA.json delete mode 100644 assets/lang/cs-CZ.json delete mode 100644 assets/lang/da-DK.json delete mode 100644 assets/lang/de-DE.json delete mode 100644 assets/lang/es-419.json delete mode 100644 assets/lang/fa-IR.json delete mode 100644 assets/lang/fi-FI.json delete mode 100644 assets/lang/fil.json delete mode 100644 assets/lang/fr-FR.json delete mode 100644 assets/lang/hu-HU.json delete mode 100644 assets/lang/id-ID.json delete mode 100644 assets/lang/it-IT.json delete mode 100644 assets/lang/ja-JP.json delete mode 100644 assets/lang/ko-KR.json delete mode 100644 assets/lang/lt-LT.json delete mode 100644 assets/lang/nb-NO.json delete mode 100644 assets/lang/nl-NL.json delete mode 100644 assets/lang/pl-PL.json delete mode 100644 assets/lang/pt-BR.json delete mode 100644 assets/lang/pt-PT.json delete mode 100644 assets/lang/ro-RO.json delete mode 100644 assets/lang/ru-RU.json delete mode 100644 assets/lang/sk-SK.json delete mode 100644 assets/lang/sv-SE.json delete mode 100644 assets/lang/th-TH.json delete mode 100644 assets/lang/tr-TR.json delete mode 100644 assets/lang/uk-UA.json delete mode 100644 assets/lang/zh-Hans.json delete mode 100644 assets/lang/zh-Hant.json diff --git a/assets/lang/ar-AA.json b/assets/lang/ar-AA.json deleted file mode 100644 index 7cd8eae..0000000 --- a/assets/lang/ar-AA.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_offline": "يبدو أنك غير متصل. يجب عليك الاتصال بالانترنت والمحاولة مرة أخرى.", - "settings-disableAutogain-desc": "تعطيل الكسب التلقائي.", - "settings-startMinimized": "ابدأ مصغر", - "settings-trayIcon-white-plug-alt": "المكونات البيضاء بديل", - "settings-trayIcon-dynamic": "متحرك", - "settings-spellcheck-desc": "يساعدك على تصحيح الكلمات التي بها أخطاء إملائية من خلال تمييزها.", - "settings-theme-default": "الافتراضى", - "settings-skipSplash": "تخطي شاشة البداية (تجريبية)", - "settings-forceNativeCrash": "فرض تحطم الأصلي", - "settings-trayIcon-white-plug": "المكونات البيضاء", - "settings-mod-vencord": "خفيف الوزن وسهل الاستخدام. يتميز بمتجر مدمج للمكونات الإضافية.", - "settings-trayIcon": "ايقونة واجهة المستخدم", - "settings-prfmMode-battery": "البطارية", - "settings-prfmMode": "وضع الاداء", - "settings-trayIcon-black-plug-alt": "المكونات السوداء بديل", - "setup_question2": "اختر قناة/مثال Discord الخاص بك:", - "next": "التالى", - "settings-spellcheck": "فحص اللغة", - "no": "لا", - "settings-updater": "افحص التحديثات", - "settings-theme": "مظهر Legcord", - "settings-mintoTray-desc": "عند تعطيله، سيتم إغلاق Legcord مثل أي نافذة أخرى عند إغلاقه، وإلا فإنه سيجلس ويسترخي\n في علبة النظام الخاص بك في وقت لاحق.", - "settings-MultiInstance": "تعدد اللحظات", - "settings-storageFolder": "افتح مجلد التخزين", - "settings-mobileMode-desc": "إذا كنت تستخدم جهازًا مزودًا بشاشة تعمل باللمس، فهذه الميزة تناسبك! يقوم بتنشيط هاتف Discord المخفي\n الوضع مخصص للهواتف والأجهزة اللوحية. الميزة الرئيسية الوحيدة المفقودة هي دعم الدردشة الصوتية. هذا مثالي ل\n المستخدمين على PinePhone وما شابه ذلك.", - "settings-restart": "اعد التشغيل", - "settings-prfmMode-performance": "الاداء", - "yes": "نعم", - "settings-mobileMode": "وضع المحمول", - "setup_question4": "اختار client mod الذى تريد تسطيبه:", - "settings-theme-native": "التطبيق", - "settings-themesFolder": "افتح ملف الثيمات", - "setup_offline": "يبدو أنك غير متصل. يجب عليك الاتصال بالانترنت واعادة تشغيل Legcord.", - "setup_question1": "مرحبا بك فى اعداد Legcord", - "settings-copyDebugInfo": "انسخ معلومات التصحيح", - "settings-mod-desc1": "تعديلات العميل هي برامج تسمح لك بتخصيص تجربة Discord الخاصة بك. يمكنهم تغيير مظهر\n العميل، تعديل سلوكياته أو إضافة ميزات جديدة!", - "settings-skipSplash-desc": "يتخطى شاشة بداية Legcord عند بدء تشغيل التطبيق.", - "setup_question3": "هل يجب ان يقوم Legcord بتولى تسطيب client mods؟", - "settings-MultiInstance-desc": "عند التمكين، ستتمكن من بدء تشغيل العديد من مثيلات Legcord.", - "settings-useLegacyCapturer-desc": "استخدم وحدة مشاركة الشاشة القديمة، بدلاً من الوحدة الجديدة. إذا كنت تواجه مشكلات في مشاركة الشاشة، فحاول تمكين هذا.", - "settings-invitewebsocket-desc": "يستخدم
    arRPC لدعم Discord RPC (التواجد الغني) مع البرامج المحلية على جهازك. أعمال جارية.", - "settings-theme-transparent": "شفاف", - "settings-crashesFolder": "افتح مجلد الأعطال الأصلي", - "settings-trayIcon-black-plug": "المكونات السوداء", - "settings-prfmMode-desc": "وضع الأداء هو وظيفة تجريبية قد تؤدي إما إلى زيادة الاستجابة والأداء\n Legcord أو ... قم بتقليله. يرجى تجربة كل خيار ومعرفة ما يناسبك بشكل أفضل.", - "settings-channel": "Discord قناة", - "settings-mod": "اضافة العميل", - "settings-trayIcon-desc": "قم بتعيين الرمز الذي سيظهر في قائمة الدرج.", - "settings-advanced": "منطقة المستخدم المتقدمة", - "loading_screen_start": "يبدأ Legcord …", - "setup_question5": "هل تريد استخدام أيقونة واجهة المستخدم؟", - "settings-invitewebsocket": "حضور غني (تجريبي)", - "settings-save": "احفظ الاعدادات", - "settings-tray-desc": "عند تعطيله، سيتم إغلاق Legcord مثل أي نافذة أخرى عند إغلاقه، وإلا فإنه سيجلس ويسترخي في علبة النظام لديك لوقت لاحق.", - "settings-useLegacyCapturer": "استخدم الماسك القديم", - "settings-startMinimized-desc": "يبدأ Legcord في الخلفية ويظل بعيدًا عن طريقك.", - "settings-pluginsFolder": "افتح ملف الاضافات", - "settings-tray": "واجهة", - "settings-trayIcon-normal": "Discord ايقونة", - "settings-mintoTray": "التصغير الى واجهة المستخدم", - "settings-trayIcon-colored-plug": "المكونات الملونة", - "settings-trayIcon-classic": "أيقونة Discord الكلاسيكية", - "settings-disableAutogain": "وقف الدخول التلقائى", - "loading_screen_update": "نسخة جديدة متوفرة من Legcord.من فضلك قم بالتحديث الى آخر نسخة.", - "settings-experimental": "تجريبى", - "settings-none": "لا شئ", - "settings-csp-desc": "Legcord CSP هو نظامنا الذي يدير تحميل المحتوى المخصص في تطبيق Discord. أشياء من هذا القبيل\n تعتمد تعديلات العميل وموضوعاته على ذلك. قم بتعطيله إذا كنت تريد التخلص من التعديلات والأنماط المخصصة.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/cs-CZ.json b/assets/lang/cs-CZ.json deleted file mode 100644 index 8a4808b..0000000 --- a/assets/lang/cs-CZ.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "settings-invitewebsocket": "Rich Presence (Experimentalní)", - "loading_screen_start": "Spouštění Legcordu…", - "loading_screen_offline": "Zdá se, že jste offline. Připojte se k internetu a zkuste to znovu.", - "loading_screen_update": "Je nová verze Legcordu k dispozici. Prosím aktualizujte na nejnovější verzi.", - "setup_question1": "Vyberte, jaký druh instalace chcete provést:", - "setup_offline": "Zdá se, že jste offline. Připojte se k internetu a restartujte Legcord.", - "setup_question2": "Vyberte svůj Discord kanál/instanci:", - "setup_question3": "Měl by Legcord nainstalovat klientské mody?", - "yes": "Ano", - "no": "Ne", - "next": "Další", - "setup_question4": "Vyberte klientský mod, který chcete nainstalovat:", - "settings-theme": "Legcord motiv", - "settings-theme-default": "Výchozí", - "settings-theme-native": "Nativní", - "settings-theme-transparent": "Transparentní (Experimentální)", - "settings-csp-desc": "Legcord CSP je náš systém, který spravuje načítání vlastního obsahu načítání do aplikace Discord. Věci jako\n klientské mody a témata závisí na tom. Pokud se chcete zbavit modů a vlastních stylů, vypněte tuto možnost.", - "settings-tray": "Minimalizovat do lišty", - "settings-tray-desc": "Pokud vypnuto, Legcord se zavře jako každé jiné okno, bude\n v systémové liště na později.", - "settings-startMinimized": "Spuštění minimalizováno", - "settings-startMinimized-desc": "Legcord se spustí na pozadí a zůstane vám z cesty.", - "settings-useLegacyCapturer": "Použijte starší zachytávač", - "settings-useLegacyCapturer-desc": "Místo nového použijte starší modul pro sdílení obrazovky. Pokud máte problémy se sdílením obrazovky, zkuste tohle povolit.", - "settings-mobileMode": "Mobilní mód", - "settings-mobileMode-desc": "Pokud používáte zařízení s dotykovou obrazovkou, tato funkce je pro vás! Aktivuje skrytý mobil Discordu\n režim určený pro telefony a tablety. Jedinou hlavní funkcí, která chybí, je podpora hlasového chatu. Toto je ideální pro\n uživatelé PinePhone a podobně.", - "settings-channel": "Discord kanál", - "settings-invitewebsocket-desc": "Používá arRPC k podpoře Discord RPC (Rich Presence) s místními programy na vašem počítači. Není dokončeno.", - "settings-mod": "Mód klienta", - "settings-mod-desc1": "Klientské mody jsou programy, které vám umožňují přizpůsobit si zážitek z aplikace Discord. Mohou změnit vzhled\n klienta, upravit chování nebo přidat nové funkce!", - "settings-mod-vencord": "lehký a snadno použitelný klientský mod. Obsahuje vestavěný obchod pro pluginy.", - "settings-prfmMode": "Výkonový režim", - "settings-prfmMode-desc": "Režim výkonu je experimentální funkce, která může snížit odezvu a zvýšit výkon\n Legcordu nebo... snížit. Vyzkoušejte prosím každou možnost a uvidíte, která vám vyhovuje nejlépe.", - "settings-prfmMode-performance": "Výkon", - "settings-prfmMode-battery": "Baterie", - "settings-disableAutogain": "Vypne funkci autogain", - "settings-disableAutogain-desc": "Vypnout autogain.", - "settings-trayIcon": "Ikona zásobníku", - "settings-trayIcon-desc": "Nastavte ikonu, která se zobrazí v nabídce zásobníku.", - "settings-trayIcon-dynamic": "Dynamická", - "settings-trayIcon-normal": "Discord Ikona", - "settings-trayIcon-classic": "Classická Discord Icona", - "settings-trayIcon-colored-plug": "Barevná zástrčka", - "settings-trayIcon-white-plug": "Bílá zástrčka", - "settings-trayIcon-white-plug-alt": "Alternativa bílá zástrčka", - "settings-trayIcon-black-plug": "Černá zástrčka", - "settings-trayIcon-black-plug-alt": "Alternativa černá zástrčka", - "settings-advanced": "Pokročilá uživatelská zóna", - "settings-pluginsFolder": "Otevřít složku pluginů", - "settings-crashesFolder": "Otevřít složku nativních selhání", - "settings-themesFolder": "Otevřít složku motivů", - "settings-storageFolder": "Otevřít složku úložiště", - "settings-none": "Nic", - "settings-save": "Uložit nastavení", - "settings-experimental": "Experimentalní", - "settings-restart": "Restartovat aplikaci", - "settings-updater": "Kontrola aktualizací", - "settings-skipSplash": "Přeskočit úvodní obrazovku (Experimentální)", - "settings-skipSplash-desc": "Při spuštění aplikace přeskočí úvodní obrazovku Legcord.", - "settings-copyDebugInfo": "Kopírovat informace o ladění", - "settings-forceNativeCrash": "Vynutit nativní havárii", - "settings-spellcheck": "Spellcheck", - "settings-spellcheck-desc": "Helps you correct misspelled words by highlighting them.", - "setup_question5": "Do you want to use a tray icon?", - "settings-mintoTray": "Minimize to tray", - "settings-mintoTray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-MultiInstance": "Multi Instance", - "settings-MultiInstance-desc": "When enabled you'll be able to start up many instances of Legcord.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio": "Audio", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/da-DK.json b/assets/lang/da-DK.json deleted file mode 100644 index 6ca8774..0000000 --- a/assets/lang/da-DK.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-skipSplash-desc": "Skips Legcord splash screen when you start up the app.", - "setup_question3": "Skal Legcord håndtere klient mods installation?", - "settings-MultiInstance-desc": "Når slået til vil du kunne starte flere instanser af Legcord.", - "settings-useLegacyCapturer-desc": "Brug gammel/legacy skærmdelings modul, istedet for den nye. Hvis du oplever problemer med skærmdeling, så slå dette til.", - "settings-invitewebsocket-desc": "Bruger arRPC til at understøtte Discord RPC (Rich Presence) med lokale programmer på din maskine. Igangværende Arbejde.", - "settings-theme-transparent": "Gennemsigtig", - "settings-crashesFolder": "Open native crashes folder", - "settings-trayIcon-black-plug": "Black Plug", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of\n Legcord or… decrease it. Please try every option and see which fits you the best.", - "settings-channel": "Discord kanal", - "settings-mod": "Klient mod", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-advanced": "Advanced user zone", - "loading_screen_start": "Starter Legcord…", - "setup_question5": "Vil du bruge et tray ikon?", - "settings-invitewebsocket": "\"Rich Presence\" (Eksperimentalt)", - "settings-save": "Save Settings", - "settings-prfmMode-vaapi": "VAAPI", - "settings-tray-desc": "Når slået fra, vil Legcord lukke ligesom alle andre vinduer når lukket, ellers vil det læne sig tilbage og slappe af i din system tray til senere.", - "settings-useLegacyCapturer": "Brug gammel/legacy optager", - "settings-startMinimized-desc": "Legcord starter i baggrunden og forbliver ude af din vej", - "settings-pluginsFolder": "Open plugins folder", - "settings-tray": "Tray", - "settings-trayIcon-normal": "Discord Icon", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-mintoTray": "Arbejd i baggrunden", - "settings-trayIcon-colored-plug": "Colored Plug", - "settings-trayIcon-classic": "Classic Discord Icon", - "settings-disableAutogain": "Disable autogain", - "loading_screen_update": "En ny version af Legcord er tilgængelig. Venligst opdater til den nyeste version.", - "settings-experimental": "Experimental", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-none": "None", - "settings-csp-desc": "Legcord CSP er vores system der håndterer indlæsning af brugerdefineret indhold der bliver indlæst til Discord. Ting som klient mods og temaer er afhængige af det. Slå det fra hvis du vil afskaffe mods og brugerdefinerede stile.", - "loading_screen_offline": "Det virker til du er offline. Prøver igen om ", - "settings-disableAutogain-desc": "Disables autogain.", - "settings-startMinimized": "Start minimeret", - "settings-trayIcon-white-plug-alt": "White Plug Alt", - "settings-trayIcon-dynamic": "Dynamic", - "settings-spellcheck-desc": "Hjælper dig med at rette fejlstavede ord ved at highlight dem.", - "settings-theme-default": "Standard", - "settings-skipSplash": "Skip Splash Screen (Experimental)", - "settings-forceNativeCrash": "Force native crash", - "settings-trayIcon-white-plug": "White Plug", - "settings-mod-vencord": "lightweight, and easy to use client mod. Features a built-in store for plugins.", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-trayIcon": "Tray icon", - "settings-prfmMode-battery": "Battery", - "settings-prfmMode": "Performance mode", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "setup_question2": "Vælg din Discord kanal/forekomst:", - "next": "Næste", - "settings-spellcheck": "Stavekontrol", - "no": "Nej", - "settings-autoScroll": "Allow auto-scroll", - "settings-smoothScroll": "Use smooth scrolling", - "settings-updater": "Check for updates", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme": "Legcord tema", - "settings-mintoTray-desc": "Når slået fra, vil Legcord lukke alle andre vinduer når lukket, ellers vil det læne sig tilbage og slappe af i din tray til senere.", - "settings-MultiInstance": "Multi Instance", - "settings-storageFolder": "Open storage folder", - "settings-mobileMode-desc": "Hvis du er på en enhed med touchskærm, så er denne funktion for dig! Den aktiverer Discords gemte mobiltilstand, beregnet til telefoner og tablets. Den eneste store funktion der mangler er stemme opkald. Dette er idealt for brugere på PinePhone og ligende.", - "settings-restart": "Restart App", - "settings-prfmMode-performance": "Performance", - "yes": "Ja", - "settings-mobileMode": "Mobiltilstand", - "setup_question4": "Vælg en klient mod du vil installere:", - "settings-theme-native": "Indbygget", - "settings-themesFolder": "Open themes folder", - "setup_offline": "Du virker til at være offline. Venligst forbind til internettet og genstart Legcord.", - "setup_question1": "Velkommen til Legcord Installationen", - "settings-copyDebugInfo": "Copy Debug Info", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/de-DE.json b/assets/lang/de-DE.json deleted file mode 100644 index 406dc3d..0000000 --- a/assets/lang/de-DE.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "yes": "Ja", - "settings-theme-default": "Standard", - "settings-startMinimized": "Minimiert starten", - "settings-startMinimized-desc": "Legcord startet im Hintergrund und bleibt dir aus dem Weg.", - "settings-channel": "Discord-Kanal", - "settings-prfmMode": "Leistungsmodus", - "settings-pluginsFolder": "Plugins-Ordner öffnen", - "settings-none": "Keine", - "settings-save": "Einstellungen speichern", - "settings-experimental": "Experimentell", - "settings-restart": "App neustarten", - "loading_screen_start": "Starte Legcord…", - "settings-copyDebugInfo": "Debug-Informationen kopieren", - "loading_screen_update": "Eine neue Version von Legcord ist verfügbar. Bitte aktualisiere auf die neuste Version.", - "setup_question1": "Willkommen bei der Einrichtung von Legcord", - "loading_screen_offline": "Du scheinst offline zu sein. Neustart in ", - "setup_offline": "Du scheinst offline zu sein. Bitte verbinde dich mit dem Internet und starte Legcord neu.", - "setup_question2": "Wähle deinen Discord Kanal/Instanz:", - "setup_question3": "Soll Legcord die Installation von Client-Mods übernehmen?", - "setup_question4": "Wähle einen Client-Mod, den du installieren möchtest:", - "no": "Nein", - "next": "Weiter", - "setup_question5": "Möchten du ein Taskleistensymbol verwenden?", - "settings-theme": "Windows-Stil", - "settings-theme-native": "Nativ", - "settings-theme-transparent": "Transparent", - "settings-mintoTray": "Im Hintergrund arbeiten", - "settings-mintoTray-desc": "Wenn diese Funktion deaktiviert ist, wird Legcord wie jedes andere Fenster geschlossen, andernfalls bleibt es in deiner Systemablage.", - "settings-csp-desc": "Legcord CSP ist unser System, das das Laden von benutzerdefinierten Inhalten in die Discord-App verwaltet.\nDinge wie Client-Mods und Themes hängen davon ab. Deaktiviere es, wenn du Mods und benutzerdefinierte Stile deaktivieren möchtest.", - "settings-useLegacyCapturer": "Legacy-Capturer verwenden", - "settings-useLegacyCapturer-desc": "Verwende das alte Modul für die Bildschirmfreigabe anstelle des neuen Moduls. Wenn du Probleme mit der Bildschirmfreigabe hast, versuche, dies zu aktivieren.", - "settings-mobileMode": "Mobiler Modus", - "settings-mobileMode-desc": "Wenn du ein Gerät mit Touchscreen verwendest, ist diese Funktion genau das Richtige für dich!\nSie aktiviert den versteckten mobilen Modus von Discord, der für Handys und Tablets gedacht ist.\nDie einzige wichtige Funktion, die fehlt, ist die Unterstützung von Voice-Chat. Dies ist ideal für Benutzer von PinePhone und ähnlichen Geräten.", - "settings-spellcheck": "Rechtschreibprüfung", - "settings-tray-desc": "Toggle whether Legcord will have a tray icon", - "settings-spellcheck-desc": "Hilft dir, falsch geschriebene Wörter zu korrigieren, indem es sie hervorhebt.", - "settings-tray": "Tray", - "settings-invitewebsocket": "Rich Presence", - "settings-invitewebsocket-desc": "Nutzt arRPC, um Discord RPC (Rich Presence) mit lokalen Programmen auf deinem Rechner zu unterstützen.", - "settings-mod": "Client-Mod", - "settings-mod-desc1": "Client-Mods sind Programme, mit denen du dein Discord-Erlebnis individuell gestalten kannst. Du kannst das Aussehen des Clients ändern,\nVerhaltensweisen modifizieren oder neue Funktionen hinzufügen!", - "settings-mod-vencord": "Leichtgewichtiger und einfach zu bedienender Client-Mod. Verfügt über einen eingebauten Speicher für Plugins.", - "settings-prfmMode-desc": "Der Leistungsmodus ist eine experimentelle Funktion, die entweder die Reaktionsfähigkeit und Leistung von Legcord erhöhen oder verringern kann. \nBitte probiere alle Optionen aus und schaue, welches dir am besten passt.", - "settings-prfmMode-performance": "Leistung", - "settings-prfmMode-battery": "Batterie", - "settings-disableAutogain": "Autogain deaktivieren", - "settings-disableAutogain-desc": "Deaktiviert Autogain.", - "settings-trayIcon": "Tray-Symbol", - "settings-trayIcon-desc": "Lege das Symbol fest, das im Tray-Menü erscheinen soll.", - "settings-trayIcon-dynamic": "Dynamisch", - "settings-trayIcon-normal": "Discord-Symbol", - "settings-trayIcon-classic": "Klassisches Discord-Symbol", - "settings-trayIcon-colored-plug": "Farbiger Stecker", - "settings-trayIcon-white-plug": "Weißer Stecker", - "settings-trayIcon-white-plug-alt": "Weißer Stecker Alt", - "settings-trayIcon-black-plug": "Schwarzer Stecker", - "settings-trayIcon-black-plug-alt": "Schwarzer Stecker Alt", - "settings-advanced": "Erweiterter Benutzerbereich", - "settings-crashesFolder": "Ordner \"Native Crashes\" öffnen", - "settings-themesFolder": "Themen-Ordner öffnen", - "settings-storageFolder": "Speicherverzeichnis öffnen", - "settings-updater": "Auf Updates überprüfen", - "settings-skipSplash": "Begrüßungsbildschirm überspringen", - "settings-skipSplash-desc": "Überspringt den Legcord-Startbildschirm beim Starten der Anwendung.", - "settings-forceNativeCrash": "Nativen Absturz erzwingen", - "settings-MultiInstance": "Mehrere Instanzen", - "settings-MultiInstance-desc": "Wenn diese Funktion aktiviert ist, können Sie mehrere Instanzen von Legcord starten.", - "settings-copyGPUInfo": "GPU-Info kopieren", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Sanften Bildlauf verwenden", - "settings-smoothScroll-desc": "Sanften Bildlauf umschalten", - "settings-autoScroll": "Automatischen Bildlauf erlauben", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-lookAndFeel": "Look and feel", - "settings-clearClientModCache": "Clear client mod cache", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options" -} diff --git a/assets/lang/es-419.json b/assets/lang/es-419.json deleted file mode 100644 index 1d3610a..0000000 --- a/assets/lang/es-419.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Cargando Legcord…", - "loading_screen_offline": "Parece que no estás conectado a la Internet. Por favor conectate e intentalo de nuevo.", - "loading_screen_update": "Una nueva version de Legcord está disponible. Por favor actualiza a la última version.", - "setup_question1": "Bienvenido a la instalación de Legcord", - "yes": "Sí", - "setup_question2": "Escoge tu version de Discord:", - "setup_question3": "Dejar que Legcord se encargue de la instalacion de modificaciones?", - "setup_offline": "Parece que no estás conectado a Internet. Por favor conéctate a Internet y reinicia Legcord.", - "no": "No", - "next": "Siguiente", - "setup_question4": "Selecciona una modificación que te gustaría instalar:", - "settings-theme": "Tema de Legcord", - "settings-theme-default": "Por Defecto", - "settings-theme-native": "Nativa", - "settings-tray": "Bandeja", - "settings-channel": "Version de Discord", - "settings-invitewebsocket": "Rich Presence (Experimental)", - "settings-mod": "Modificación", - "settings-prfmMode": "Modo de Rendimiento", - "settings-prfmMode-performance": "Rendimiento", - "settings-prfmMode-battery": "Batería", - "settings-none": "Ninguna", - "settings-save": "Guardar ajustes", - "settings-updater": "Buscar una actualización", - "settings-mobileMode": "Modo de dispositivo movil", - "settings-csp-desc": "Legcord CSP es nuestro sistema que se encarga de cargar contenido dentro de la aplicación de Discord. Cosas como\n las modificaciones y temas dependen de esto. Deshabilitalo si quieres deshacerte de modificaciones o estilos personalizados.", - "settings-tray-desc": "Cuando no está activado, Legcord se cerrá como cualquier otra ventana, de lo contrario, Legcord se minimizará a la bandeja de la sistema.", - "settings-mobileMode-desc": "¡Si estás en un dispositivo con pantalla táctil, este modo es para tí! Habilita un modo escondido dentro de Discord hecho para los dispositivos moviles y tabletas.\n La única característica faltante es Chat por Voz- Esto es ideal para \n usuários en PinePhone o parecido..", - "settings-themesFolder": "Abrir carpeta de temas", - "settings-storageFolder": "Abrir carpeta de almacenamiento", - "settings-invitewebsocket-desc": "Utiliza arRPC para habilitar soporte de Discord RPC (Rich Presence) junto con programas locales en tu computadora. Inestable.", - "settings-mod-desc1": "Los mods son programas que le permiten personalizar su experiencia de Discord. ¡Pueden cambiar la apariencia, modificar comportamientos o añadir nuevas características!", - "settings-trayIcon": "Ícono en la bandeja", - "settings-trayIcon-desc": "Escoge el ícono que aparecerá en la bandeja", - "settings-advanced": "Zona de usuario avanzada", - "settings-pluginsFolder": "Abrir carpeta de plugins", - "settings-restart": "Reiniciar App", - "settings-mod-vencord": "programa modificado ligero y fácil de usar. Cuenta con una tienda de plugins integrada.", - "settings-mod-equicord": "tomado y nacido de los colaboradores de vencord, viene un cliente bastante rico en plugins.", - "settings-prfmMode-desc": "El modo de rendimiento es una función experimental que puede aumentar la capacidad de respuesta y el rendimiento de\nLegcord o... puede disminuirla. Por favor, prueba cada opción y vea lo que te queda mejor.", - "settings-trayIcon-dynamic": "Dinámico", - "settings-trayIcon-normal": "Ícono de Discord", - "settings-trayIcon-classic": "Ícono Clásico de Discord", - "settings-trayIcon-colored-plug": "Cable Colorido", - "settings-trayIcon-white-plug": "Cable Blanco", - "settings-trayIcon-white-plug-alt": "Cable Blanco Alternativo", - "settings-trayIcon-black-plug": "Black Plug", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "settings-experimental": "Experimental", - "settings-skipSplash": "Omitir Pantalla de Inicio (Experimental)", - "settings-skipSplash-desc": "Saltar la pantalla de inicio de Legcord al cargar la aplicación.", - "settings-copyDebugInfo": "Copiar Información de Depuración", - "settings-startMinimized": "Cargar minimizado", - "settings-startMinimized-desc": "Legcord se inicia en segundo plano y se mantiene fuera de tu camino.", - "settings-crashesFolder": "Abrir carpeta de native crashes", - "settings-forceNativeCrash": "Forzar error nativo", - "settings-disableAutogain": "Desactiva el control automático de ganancia", - "settings-disableAutogain-desc": "Desactiva el control automático de ganancia.", - "settings-theme-transparent": "Transparente", - "settings-useLegacyCapturer": "Usar captura antigua", - "settings-useLegacyCapturer-desc": "Utilice el módulo de compartir pantallas antiguo en lugar del nuevo. Si estás experimentando problemas al compartir pantallas, intenta habilitar esto.", - "settings-spellcheck": "Revisión ortográfica", - "settings-spellcheck-desc": "Destaca las palabras mal escritas para ayudarte a corregirlas.", - "setup_question5": "¿Quieres utilizar un ícono en la barra de tareas?", - "settings-mintoTray": "Minimizar a la bandeja", - "settings-mintoTray-desc": "Cuando no está activado, se cerrá Legcord como cualquier otra ventana, de lo contrario, se cerrá Legcord a la bandeja de la sistema para más tarde.", - "settings-MultiInstance": "Varias instancias", - "settings-MultiInstance-desc": "Cuando se activa permite iniciar varias instancias de Legcord.", - "settings-copyGPUInfo": "Copiar información de la GPU", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Utilizar desplazamiento suave", - "settings-smoothScroll-desc": "Activar desplazamiento suave", - "settings-autoScroll": "Permitir auto-desplazamiento", - "settings-autoScroll-desc": "Permitir auto-desplazamiento con click medio (Nota: Tu sistema aun puede sobreescribir esta opción con otra acción)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-audio": "Audio", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/fa-IR.json b/assets/lang/fa-IR.json deleted file mode 100644 index 03f65ac..0000000 --- a/assets/lang/fa-IR.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "درحال پیاده سازی Legcord…", - "loading_screen_offline": "به نظر می‌رسد شما آفلاین هستید. لطفا به اینترنت متصل شده و سپس دوباره تلاش کنید.", - "loading_screen_update": "نسخه جدید Legcord در دسترس است. لطفا به آخرین نسخه بروزرسانی کنید.", - "setup_question1": "به برپایی Legcord خوش آمدید", - "setup_offline": "به نظر می‌رسد شما آفلاین هستید. لطفا به اینترنت وصل شده و سپس Legcord را مجددا راه‌اندازی کنید.", - "setup_question2": "کانال/نمونه دیسکورد خود را انتخاب کنید:", - "setup_question3": "آیا میخواهید Legcord تغییرات کلاینت را خودکار اعمال کند؟", - "yes": "بله", - "no": "خیر", - "next": "بعدی", - "setup_question4": "نوع اصلاح‌ساز برنامه که میخواهید نصب کنید انتخاب کنید:", - "settings-theme": "تم Legcord", - "settings-theme-default": "پیش‌فرض", - "settings-theme-native": "محلی", - "settings-tray": "سینی", - "settings-channel": "کانال دیسکورد", - "settings-invitewebsocket": "حضور غنی (تجربی)", - "settings-mod": "نوع اصلاح‌ساز کلاینت", - "settings-prfmMode": "حالت عملکرد", - "settings-prfmMode-performance": "قدرت بیشتر", - "settings-prfmMode-battery": "ذخیره برای باتری", - "settings-none": "هیچکدام", - "settings-save": "ذخیره تنظیمات", - "settings-updater": "بررسی برای بروزرسانی", - "settings-mobileMode": "حالت موبایل", - "settings-tray-desc": "زمانی که غیرفعال است، Legcord مانند هر پنجره دیگری بسته می شود، در غیر این صورت در سینی سیستم شما می نشیند و برای بعداً نگه می‌دارد.", - "settings-invitewebsocket-desc": "از arRPC برای پشتیبانی از دیسکورد آرپی‌سی (Rich Presence) با برنامه‌های محلی روی دستگاه شما استفاده می‌کند. کار در حال انجام است.", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-csp-desc": "Legcord CSP سیستم ما است که بارگیری محتوای سفارشی را در برنامه دیسکورد مدیریت می کند. چیزهایی مانند\n ‌حالت‌ها و تم‌های کلاینت به آن بستگی دارد. اگر می‌خواهید از حالت‌ها و استایل‌های سفارشی خلاص شوید، غیرفعال کنید.", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-trayIcon": "آیکون سینی", - "settings-trayIcon-desc": "نمادی را که در منوی سینی ظاهر می شود را تنظیم کنید.", - "settings-advanced": "️️منطقه کاربری پیشرفته", - "settings-pluginsFolder": "بازکردن پوشه افزونه‌ها", - "settings-themesFolder": "بازکردن پوشه تم‌ها", - "settings-storageFolder": "بازکردن پوشه ذخیره‌سازی", - "settings-restart": "راه‌اندازی مجدد برنامه", - "settings-mod-vencord": "lightweight, and easy to use client mod. Features a built-in store for plugins.", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of\n Legcord or... decrease it. Please try every option and see which fits you the best.", - "settings-trayIcon-dynamic": "پویا", - "settings-trayIcon-normal": "آیکون دیسکورد", - "settings-trayIcon-classic": "آیکون دیسکورد کلاسیک", - "settings-trayIcon-colored-plug": "دوشاخه رنگی", - "settings-trayIcon-white-plug": "دوشاخه سفید", - "settings-trayIcon-white-plug-alt": "دوشاخه سفید Alt", - "settings-trayIcon-black-plug": "دوشاخه سیاه", - "settings-trayIcon-black-plug-alt": "دوشاخه سیاه Alt", - "settings-experimental": "تجربی", - "settings-skipSplash": "Skip Splash Screen (Experimental)", - "settings-skipSplash-desc": "Skips Legcord splash screen when you start up the app.", - "settings-copyDebugInfo": "کپی اطلاعات اشکال‌زدایی", - "settings-startMinimized": "مینیمایز شده شروع شود", - "settings-startMinimized-desc": "Legcord در پس‌زمینه شروع می شود و در سرراه شما باقی می ماند.", - "settings-forceNativeCrash": "Force native crash", - "settings-crashesFolder": "بازکردن پوشه کرش‌های بومی", - "settings-disableAutogain": "غیرفعال کردن autogain", - "settings-disableAutogain-desc": "autogain را غیرفعال میکند.", - "settings-theme-transparent": "شفاف", - "settings-useLegacyCapturer": "استفاده از ضبط‌کننده قدیمی", - "settings-useLegacyCapturer-desc": "Use legacy screenshare module, instead of the new one. If you're experiencing issues with screen sharing, try enabling this.", - "settings-spellcheck": "بررسی املا", - "settings-spellcheck-desc": "با برجسته کردن کلمات غلط املایی به شما کمک می کند آنها را تصحیح کنید.", - "setup_question5": "آیا می خواهید از آیکون سینی استفاده کنید؟", - "settings-mintoTray": "به سینی مینیمایز کنید", - "settings-mintoTray-desc": "هنگامی که غیرفعال است، Legcord مانند هر پنجره دیگری بسته می شود، در غیر این صورت می نشیند و\n در سینی سیستم خود را برای بعدا استراحت می‌کند.", - "settings-MultiInstance": "چند نمونه", - "settings-MultiInstance-desc": "وقتی فعال باشد، می‌توانید بسیاری از نمونه‌های Legcord را راه‌اندازی کنید.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-theme-overlay": "Overlay", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/fi-FI.json b/assets/lang/fi-FI.json deleted file mode 100644 index 75c6dfa..0000000 --- a/assets/lang/fi-FI.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "yes": "Kyllä", - "no": "Ei", - "settings-theme": "Legcord-teema", - "settings-spellcheck-desc": "Helps you correct misspelled words by highlighting them.", - "settings-channel": "Discord-kanava", - "settings-invitewebsocket": "Rikas läsnäolo (kokeellinen)", - "settings-prfmMode-performance": "Suorituskyky", - "setup_question1": "Valitse minkälaisen määrityksen haluat suorittaa:", - "loading_screen_start": "Käynnistetään Legcord…", - "loading_screen_offline": "Vaikuttaa siltä, ettet ole yhteydessä verkkoon. Yhdistä Internetiin ja yritä uudelleen.", - "loading_screen_update": "Uusi versio Legcordista on saatavilla. Päivitä uusimpaan versioon.", - "setup_offline": "Vaikuttaa siltä, ettet ole yhteydessä verkkoon. Yhdistä Internetiin ja käynnistä Legcord uudelleen.", - "setup_question2": "Valitse Discord-kanava/-instanssi:", - "setup_question3": "Pitäisikö Legcordin käsitellä asiakasmodien asennukset?", - "next": "Seuraava", - "setup_question4": "Valitse asiakasmodi asennettavaksi:", - "settings-theme-default": "Oletus", - "settings-theme-native": "Natiivi", - "settings-theme-transparent": "Läpinäkyvä (kokeellinen)", - "settings-csp-desc": "Legcord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", - "settings-tray": "Pienennä ilmoitusalueelle", - "settings-tray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-startMinimized": "Käynnistä pienennettynä", - "settings-startMinimized-desc": "Legcord käynnistyy taustalla ja pysyy poissa näkyvistä.", - "settings-useLegacyCapturer": "Use legacy capturer", - "settings-useLegacyCapturer-desc": "Use legacy screenshare module, instead of the new one. If you're experiencing issues with screen sharing, try enabling this.", - "settings-mobileMode": "Mobiilitila", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-spellcheck": "Oikoluku", - "settings-invitewebsocket-desc": "Uses arRPC to support Discord RPC (Rich Presence) with local programs on your machine. Work in progress.", - "settings-mod": "Client mod", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-mod-vencord": "lightweight, and easy to use client mod. Features a built-in store for plugins.", - "settings-prfmMode": "Suorituskykytila", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of\n Legcord or… decrease it. Please try every option and see which fits you the best.", - "settings-prfmMode-battery": "Battery", - "settings-disableAutogain": "Disable autogain", - "settings-disableAutogain-desc": "Disables autogain.", - "settings-trayIcon": "Ilmoitusalueen kuvake", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-trayIcon-dynamic": "Dynaaminen", - "settings-trayIcon-normal": "Discord-kuvake", - "settings-trayIcon-classic": "Klassinen Discord-kuvake", - "settings-none": "Ei mitään", - "settings-trayIcon-colored-plug": "Colored Plug", - "settings-save": "Tallenna asetukset", - "settings-trayIcon-white-plug": "White Plug", - "settings-trayIcon-white-plug-alt": "White Plug Alt", - "settings-trayIcon-black-plug": "Black Plug", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "settings-advanced": "Advanced user zone", - "settings-pluginsFolder": "Open plugins folder", - "settings-crashesFolder": "Open native crashes folder", - "settings-themesFolder": "Open themes folder", - "settings-storageFolder": "Open storage folder", - "settings-experimental": "Kokeellinen", - "settings-restart": "Käynnistä sovellus uudelleen", - "settings-updater": "Tarkista päivitykset", - "settings-skipSplash": "Skip Splash Screen (Experimental)", - "settings-skipSplash-desc": "Skips Legcord splash screen when you start up the app.", - "settings-copyDebugInfo": "Copy Debug Info", - "settings-forceNativeCrash": "Force native crash", - "setup_question5": "Do you want to use a tray icon?", - "settings-mintoTray": "Minimize to tray", - "settings-mintoTray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-MultiInstance": "Multi Instance", - "settings-MultiInstance-desc": "When enabled you'll be able to start up many instances of Legcord.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-clearClientModCache": "Clear client mod cache", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options" -} diff --git a/assets/lang/fil.json b/assets/lang/fil.json deleted file mode 100644 index 5ee176a..0000000 --- a/assets/lang/fil.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "settings-startMinimized": "Start minimized", - "settings-theme-default": "Default", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-MultiInstance": "Multi Instance", - "settings-mobileMode": "Mobile mode", - "settings-spellcheck-desc": "Helps you correct misspelled words by highlighting them.", - "settings-spellcheck": "Spellcheck", - "settings-channel": "Discord channel", - "settings-tray-desc": "Toggle whether Legcord will have a tray icon", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of the client, modify behaviours or add new features!", - "settings-invitewebsocket-desc": "Uses arRPC to support Discord RPC (Rich Presence) with local programs on your machine.", - "loading_screen_offline": "You appear to be offline. Restart in ", - "settings-disableAutogain-desc": "Disables autogain.", - "settings-trayIcon-white-plug-alt": "White Plug Alt", - "settings-trayIcon-dynamic": "Dynamic", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-skipSplash": "Skip Splash Screen", - "settings-forceNativeCrash": "Force native crash", - "settings-trayIcon-white-plug": "White Plug", - "settings-mod-vencord": "lightweight, and easy to use client mod. Features a built-in store for plugins.", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-trayIcon": "Tray icon", - "settings-prfmMode-battery": "Battery", - "settings-prfmMode": "Performance mode", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "setup_question2": "Choose your Discord channel/instance:", - "next": "Next", - "no": "No", - "settings-autoScroll": "Allow auto-scroll", - "settings-smoothScroll": "Use smooth scrolling", - "settings-updater": "Check for updates", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme": "Window style", - "settings-mintoTray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax in your system tray for later.", - "settings-storageFolder": "Open storage folder", - "settings-restart": "Restart App", - "settings-copyDebugInfo": "Copy Debug Info", - "settings-save": "Save Settings", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-prfmMode-performance": "Performance", - "yes": "Yes", - "setup_question4": "Select a client mod you want to install:", - "settings-theme-native": "Native", - "settings-themesFolder": "Open themes folder", - "setup_offline": "You appear to be offline. Please connect to the internet and restart Legcord.", - "setup_question1": "Welcome to the Legcord Setup", - "settings-skipSplash-desc": "Skips Legcord splash screen when you start up the app.", - "setup_question3": "Should Legcord handle client mods installation?", - "settings-MultiInstance-desc": "When enabled you'll be able to start up many instances of Legcord.", - "settings-theme-transparent": "Transparent", - "settings-crashesFolder": "Open native crashes folder", - "settings-useLegacyCapturer-desc": "Use legacy screenshare module, instead of the new one. If you're experiencing issues with screen sharing, try enabling this.", - "settings-trayIcon-black-plug": "Black Plug", - "settings-mod": "Client mod", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of Legcord or… decrease it. Please try every option and see which fits you the best.", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-advanced": "Advanced user zone", - "loading_screen_start": "Starting Legcord…", - "setup_question5": "Do you want to use a tray icon?", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-invitewebsocket": "Rich Presence", - "settings-prfmMode-vaapi": "VAAPI", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-useLegacyCapturer": "Use legacy capturer", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-startMinimized-desc": "Legcord starts in background and remains out of your way.", - "settings-pluginsFolder": "Open plugins folder", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-tray": "Tray", - "settings-trayIcon-normal": "Discord Icon", - "settings-mintoTray": "Work in background", - "settings-trayIcon-colored-plug": "Colored Plug", - "settings-trayIcon-classic": "Classic Discord Icon", - "settings-disableAutogain": "Disable autogain", - "loading_screen_update": "A new version of Legcord is available. Please update to the latest version.", - "settings-experimental": "Experimental", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-none": "None", - "settings-csp-desc": "Legcord CSP is our system that manages loading custom content loading into the Discord app. Stuff like client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", - "settings-audio": "Audio", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/fr-FR.json b/assets/lang/fr-FR.json deleted file mode 100644 index 5e780b2..0000000 --- a/assets/lang/fr-FR.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Démarrage d'Legcord…", - "loading_screen_update": "Une nouvelle version d'Legcord est disponible. Merci de le mettre à jour vers la dernière version.", - "setup_question1": "Bienvenue dans la configuration d'Legcord", - "setup_question2": "Choisissez votre canal/instance Discord :", - "setup_question3": "Legcord doit-il s'occuper de l'installation des mods clients ?", - "yes": "Oui", - "no": "Non", - "next": "Suivant", - "setup_question4": "Sélectionnez le mod client que vous souhaitez installer :", - "loading_screen_offline": "Vous semblez être hors ligne. Veuillez réessayer dans ", - "setup_offline": "Vous semblez être hors ligne. Veuillez vous connecter à internet et redémarrer Legcord.", - "settings-tray": "Zone de notification", - "settings-channel": "Canal Discord", - "settings-mod": "Modification client :", - "settings-save": "Sauvegarder les Paramètres", - "settings-updater": "Vérifier les mises à jour", - "settings-theme": "Style de fenêtre", - "settings-theme-default": "Default", - "settings-theme-native": "Native", - "settings-invitewebsocket": "Rich Presence", - "settings-prfmMode": "mode Performance", - "settings-prfmMode-performance": "Performance", - "settings-prfmMode-battery": "Batterie", - "settings-none": "Aucun", - "settings-mobileMode": "mode mobile", - "settings-storageFolder": "Ouvrir le dossier de stockage", - "settings-csp-desc": "Legcord CSP est notre système qui gère le chargement du contenu customisé dans l'appli Discord. Les choses comme\n les mods clients et les thèmes en dépendent. Désactiver si vous voulez vous débarrasser des mods et styles customisés.", - "settings-tray-desc": "Indiquer si Legcord aura une icône dans la barre des tâches.", - "settings-mobileMode-desc": "Si vous avez un dispositif avec un écran tactile, cette fonction est pour vous ! Elle active le mode mobile caché de Discord\n destiné aux portables et tablettes. La seule fonctionnalité majeure manquante est la prise en charge du chat vocal. C'est idéal pour les utilisateurs\n sur PinePhone et autres.", - "settings-invitewebsocket-desc": "Utilise arRPC pour prendre en charge le Discord RPC (Rich Presence) avec des programmes en local.", - "settings-mod-desc1": "Les mods client sont des programmes qui permettent de personnaliser votre expérience Discord. Ils peuvent changer l'apparence du\n client, modifier le comportement ou ajouter d'autres fonctionnalités !", - "settings-trayIcon": "icône Tray", - "settings-trayIcon-desc": "place l'icône qui apparaîtra dans le menu tray.", - "settings-advanced": "Zone utilisateur avancée", - "settings-pluginsFolder": "Ouvrir dossier plugin", - "settings-themesFolder": "Ouvrir le dossier des thèmes", - "settings-restart": "Redémarrer l'Application", - "settings-copyDebugInfo": "Copier les informations de débogage", - "settings-mod-vencord": "Client léger et facile à utiliser. Dispose d'un magasin intégré pour les plugins.", - "settings-prfmMode-desc": "Le mode performance est expérimental . Il peut améliorer la rapidité ou la performance d'Legcord ou… les empirer.\n Merci d'essayer toutes les options afin de voir lesquelles vous conviennent le mieux.", - "settings-trayIcon-dynamic": "Dynamique", - "settings-trayIcon-normal": "Icone Discord", - "settings-trayIcon-classic": "Icone classique Discord", - "settings-trayIcon-colored-plug": "Colored Plug", - "settings-trayIcon-white-plug": "White Plug", - "settings-trayIcon-white-plug-alt": "White Plug Alt", - "settings-trayIcon-black-plug": "Black Plug", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "settings-experimental": "Expérimental", - "settings-skipSplash": "Ignorer l'écran de chargement", - "settings-skipSplash-desc": "Ignorer l'écran de chargement d'Legcord au démarrage de l'application.", - "settings-startMinimized": "Démarrage en mode réduit", - "settings-startMinimized-desc": "Legcord démarre en fond et reste hors de ton chemin.", - "settings-crashesFolder": "Ouvrir le dossier plantage natif", - "settings-forceNativeCrash": "Forcer le crash natif", - "settings-disableAutogain": "Désactiver le gain automatique", - "settings-disableAutogain-desc": "Désactive le gain automatique.", - "settings-theme-transparent": "Transparent", - "settings-useLegacyCapturer": "Utiliser l'ancien système de capture", - "settings-useLegacyCapturer-desc": "Utilisez l'ancien module de partage d'écran plutôt que le nouveau. Si vous rencontrez des problèmes avec le partage d'écran, essayez de l'activer.", - "settings-spellcheck": "Correcteur d'orthographe", - "settings-spellcheck-desc": "Vous aide à corriger des mots mal orthographiés en les surlignant.", - "setup_question5": "Voulez-vous activer l'icône de la barre d'état ?", - "settings-mintoTray": "Laisser en arrière-plan", - "settings-mintoTray-desc": "Lorsqu'il est désactivé, Legcord se fermera comme n'importe quelle autre fenêtre lorsqu'il est fermé, sinon il s'asseoira et se détendra\n dans votre barre d'état système pour plus tard.", - "settings-MultiInstance": "Multi-instances", - "settings-MultiInstance-desc": "Une fois activé vous pourrez lancer plusieurs instances d'Legcord", - "settings-copyGPUInfo": "Copier les informations du GPU", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Utiliser le défilement fluide", - "settings-smoothScroll-desc": "Activer/désactiver défilement fluide", - "settings-autoScroll": "Autoriser le défilement automatique", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Le style de fenêtre gère la barre de titre utilisée par Legcord.", - "settings-channel-desc": "Utilisez ce paramètre pour changer l'instance Discord qu'Legcord est en train d'exécuter.", - "settings-hardwareAcceleration": "Accélération matérielle", - "settings-hardwareAcceleration-desc": "L'accélération utilise votre carte graphique rendre Legcord plus rapide. Si vous rencontrez des problèmes d'affichage, essayez de le désactiver.", - "settings-disableHttpCache": "Désactiver le cache HTTP", - "settings-disableHttpCache-desc": "Désactive le cache HTTP de Chromium. À utiliser si mods du client ne se chargent pas.", - "settings-mod-equicord": "bifurqué et né de contributeurs de vencord, qui dispose d'un client rempli de plugins.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-theme-overlay": "Overlay", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/hu-HU.json b/assets/lang/hu-HU.json deleted file mode 100644 index e6d0669..0000000 --- a/assets/lang/hu-HU.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Legcord indítása…", - "loading_screen_offline": "Úgy tűnik offline vagy. Kérlek csatlakozz az internetre és próbáld újra.", - "loading_screen_update": "Egy új verzió elérhető az Legcord-hoz. Kérlek frissítsd a legújabb verzióra.", - "setup_question1": "Üdvözöljük az Legcord telepítésénél", - "setup_offline": "Úgy tűnik, offline vagy. Kérlek csatlakozz az internetre, és indítsd újra az Legcord-ot.", - "setup_question2": "Válaszd ki a Discord frissítési csatornáját:", - "setup_question3": "Az Legcord kezelje a kliens modok telepítését?", - "yes": "Igen", - "no": "Nem", - "next": "Következő", - "setup_question4": "Válaszd ki a telepíteni kívánt kliens modot:", - "settings-theme": "Legcord téma", - "settings-theme-default": "Alapértelmezett", - "settings-theme-native": "Anyanyelvi", - "settings-theme-transparent": "Átlátszó", - "settings-csp-desc": "Az Legcord CSP a rendszerünk, amely kezeli az egyéni tartalom betöltését a Discord alkalmazásba. Olyan dolgok, mint\n a kliens modok és témák attól függnek. Kapcsold ki, ha meg akarsz szabadulni a modoktól és az egyéni stílusoktól.", - "settings-tray": "Tálca", - "settings-tray-desc": "Ha le van tiltva, az Legcord bezáródik, mint bármely más ablak, ha bezárja, egyébként pedig a rendszer tálcáján fog pihenni a későbbiekre.", - "settings-startMinimized": "Indítás minimalizálva", - "settings-startMinimized-desc": "Az Legcord a háttérben indul.", - "settings-useLegacyCapturer": "Használjon legacy rögzítőt", - "settings-useLegacyCapturer-desc": "Használd a régi képernyőmegosztási modult az új helyett. Ha problémákat tapasztalsz a képernyőmegosztással kapcsolatban, próbáld meg engedélyezni ezt.", - "settings-mobileMode": "Mobil mód", - "settings-mobileMode-desc": "Ha érintőképernyős készüléket használ, ez a funkció önnek van! Aktiválja a Discord rejtett mobil\n módját telefonokhoz és táblagépekhez. Csak eggyetlen fontos funkció hiányzik, a hang csevegés támogatása. Ez ideális a\n PinePhone és hasonló eszközök felhasználóinak.", - "settings-channel": "Discord csatorna", - "settings-invitewebsocket": "Rich Presence (Kisérleti)", - "settings-invitewebsocket-desc": "Az arRPC-t használja a Discord RPC (Rich Presence) támogatására a számítógépén lévő helyi programokkal. Fejlesztés alatt.", - "settings-mod": "Kliens mod", - "settings-mod-desc1": "A kliens modok olyan programok, amelyek lehetővé teszik a Discord-élmény testreszabását. Megváltoztatják a megjelenését\n a kliensnek, megváltoztatják a viselkedését és új funkciókat adnak hozzá!", - "settings-mod-vencord": "könnyű és könnyen használható kliens mod. Beépített boltot tartalmaz a bővítmények számára.", - "settings-prfmMode": "Teljesítmény mód", - "settings-prfmMode-desc": "A teljesítmény mód egy kísérleti funkció, amely vagy növelheti az\n Legcord reaakcióképességét és teljesítményét, vagy… csökkentheti azt. Kérjük, próbáljon ki minden lehetőséget, és nézze meg, melyik felel meg önnek a legjobban.", - "settings-prfmMode-performance": "Teljesítmény", - "settings-prfmMode-battery": "Akkumulátor", - "settings-disableAutogain": "Az automatikus erősítés letiltása", - "settings-disableAutogain-desc": "Az automatikus erősítés letiltása.", - "settings-trayIcon": "Tálca ikon", - "settings-trayIcon-desc": "Állítsa be a tálca menüben megjelenő ikont.", - "settings-trayIcon-dynamic": "Dinamikus", - "settings-trayIcon-normal": "Discord Ikon", - "settings-trayIcon-classic": "Klasszikus Discord Ikon", - "settings-trayIcon-colored-plug": "Színes Csatlakozó", - "settings-trayIcon-white-plug": "Fehér Csatlakozó", - "settings-trayIcon-white-plug-alt": "Fehér Plug Alternativa", - "settings-trayIcon-black-plug": "Fekete Plug", - "settings-trayIcon-black-plug-alt": "Fekete Plug Alternatíva", - "settings-advanced": "Haladó felhasználói zóna", - "settings-pluginsFolder": "Nyissa meg a bőitmények mappáját", - "settings-crashesFolder": "Nyissa meg a natív összeomlások mappát", - "settings-themesFolder": "Nyissa meg a témák mappát", - "settings-storageFolder": "Tárolómappa megnyitása", - "settings-none": "Egyik sem", - "settings-save": "Beállítások mentése", - "settings-experimental": "Kísérleti", - "settings-restart": "App újraindítása", - "settings-updater": "Frissítések keresése", - "settings-skipSplash": "Indítóképernyő kihagyása (kísérleti)", - "settings-skipSplash-desc": "Az alkalmazás indításakor kihagyja az Legcord indítóképernyőt.", - "settings-copyDebugInfo": "Hibakeresési infó másolása", - "settings-forceNativeCrash": "A natív összeomlás kényszerítése", - "settings-spellcheck": "Helyesírás ellenőrzés", - "settings-spellcheck-desc": "Segít abban, hogy kijelölve kiemelje a helytelenül leírt szavakat, segít megjavítani őket.", - "setup_question5": "Szeretnél egy tálca ikont használni?", - "settings-mintoTray": "Minimalizálás tálcára", - "settings-mintoTray-desc": "Ha le van tiltva, az Legcord bezáródik, mint bármely más ablak, ha bezárják, különben hátradől és pihen.\n a rendszer tálcáján a későbbiekre.", - "settings-MultiInstance": "Több példány", - "settings-MultiInstance-desc": "Ha engedélyezve van, akkor az Legcord több példányát is el tudja indítani.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/id-ID.json b/assets/lang/id-ID.json deleted file mode 100644 index e7a44c3..0000000 --- a/assets/lang/id-ID.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Memulai Legcord…", - "loading_screen_offline": "Anda tampaknya offline. Silakan terhubung ke Internet dan coba lagi.", - "loading_screen_update": "Versi baru Legcord tersedia. Silakan perbarui ke versi terbaru.", - "setup_question1": "Selamat datang di laman Penyiapan Legcord", - "setup_question2": "pilih saluran Discord anda/instansi:", - "setup_offline": "tampaknya anda sedang offline. silahkan sambungkan ke internet dan muat ulang Legcord.", - "setup_question3": "bolehkah Legcord menangani pemasangan mods klien?", - "yes": "iya", - "no": "tidak", - "next": "berikutnya", - "setup_question4": "Pilih mod klien yang ingin anda pasang:", - "settings-theme": "Tema Legcord", - "settings-theme-default": "Bawaan", - "settings-theme-native": "asli", - "settings-tray": "Baki", - "settings-channel": "Saluran Discord", - "settings-invitewebsocket": "Rich Presence (Eksperimental)", - "settings-mod": "Mod klien", - "settings-save": "Simpan setelan", - "settings-updater": "Periksa pembaharuan", - "settings-prfmMode": "Mode kinerja", - "settings-prfmMode-performance": "Kinerja tinggi", - "settings-prfmMode-battery": "Baterai", - "settings-none": "Tidak disetel", - "settings-mobileMode": "Mode seluler", - "settings-tray-desc": "Ketika dinonaktifkan, Legcord akan menutup seperti jendela lain ketika ditutup, jika tidak, ia akan duduk dan bersantai di baki sistem Anda untuk nanti.", - "settings-csp-desc": "Legcord CSP merupakan sistem kami yang mengatur pemuatan konten kustom ke aplikasi Discord. Hal seperti\n modifikasi klien dan tema bergantung ke fitur ini. Nonaktifkan jika kamu mau menghilangkan modifikasi dan tema kustom.", - "settings-invitewebsocket-desc": "Menggunakan arRPC untuk mendukung Discord RPC (Rich Presence) dengan program lokal di perangkat anda. WIP.", - "settings-mobileMode-desc": "Jika perangkat kamu mempunyai layar sentuh, fitur ini untukmu! Fitur ini mengaktifkan mode\n tersembunyi Discord yang diperuntukkan untuk telepon dan tablet. Obrolan suara tidak tersedia di mode ini. \n Mode ini ideal untuk pengguna di PinePhone dan sejenisnya.", - "settings-themesFolder": "Buka folder tema", - "settings-storageFolder": "Buka folder penyimpanan", - "settings-mod-desc1": "Mod klien merupakan program yang memungkinkan kamu untuk menyesuaikan pengalaman Discord mu. Program \n ini dapat mengubah tampilan atau perilaku klien, bahkan menambah fitur!", - "settings-trayIcon": "Ikon baki", - "settings-trayIcon-desc": "Memilih ikon yang akan ditampilkan di menu baki.", - "settings-advanced": "Zona pengguna lanjutan", - "settings-pluginsFolder": "Buka folder plugin", - "settings-restart": "Mulai Ulang Aplikasi", - "settings-skipSplash": "Lewati Layar Awalan (Eksperimental)", - "settings-mod-vencord": "mod klien yang ringan dan mudah digunakan. Mempunyai kedai bawaan untuk plugin.", - "settings-prfmMode-desc": "Mode Kinerja adalah fungsi eksperimental yang dapat meningkatkan tingkat responsif dan performa\n Legcord atau... menurunkannya. Coba setiap opsi dan lihat mana yang paling cocok untuk kamu.", - "settings-trayIcon-dynamic": "Dinamis", - "settings-trayIcon-normal": "Ikon Discord", - "settings-trayIcon-classic": "Ikon Discord Klasik", - "settings-trayIcon-colored-plug": "Steker Berwarna", - "settings-trayIcon-white-plug": "Steker Putih", - "settings-trayIcon-white-plug-alt": "Steker Putih Alt.", - "settings-trayIcon-black-plug": "Steker Hitam", - "settings-trayIcon-black-plug-alt": "Steker Hitam Alt.", - "settings-experimental": "Eksperimental", - "settings-skipSplash-desc": "Melewati layar awalan Legcord saat kamu memulai aplikasi.", - "settings-copyDebugInfo": "Salin info Debug", - "settings-startMinimized": "Mulai diminimalkan", - "settings-startMinimized-desc": "Legcord berjalan di latar belakang dan akan tetap tidak mengganggu anda.", - "settings-crashesFolder": "Buka folder kegagalan native", - "settings-forceNativeCrash": "Paksa kegagalan native", - "settings-disableAutogain": "Matikan gain otomatis", - "settings-disableAutogain-desc": "Mematikan gain otomatis.", - "settings-theme-transparent": "Transparan", - "settings-useLegacyCapturer": "Gunakan penangkap layar lama", - "settings-useLegacyCapturer-desc": "Gunakan modul penangkap layar lama dibanding yang lebih baru. Jika kamu mendapatkan isu dengan berbagi layar, coba nyalakan ini.", - "settings-spellcheck": "Pengecekan ejaan", - "settings-spellcheck-desc": "Membantu kamu memperbaiki kesalahan kata dengan menyoroti kesalahannya.", - "setup_question5": "Apakah kamu mau menggunakan ikon baki?", - "settings-mintoTray": "Perkecil ke baki", - "settings-mintoTray-desc": "Saat dinonaktifkan, Legcord akan keluar seperti jendela lain saat dikeluarkan, jika tidak maka akan bersantai\n di baki sistem untuk nanti.", - "settings-MultiInstance": "Multi Instans", - "settings-MultiInstance-desc": "Ketika diaktifkan, Anda akan dapat memulai banyak contoh Legcord.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/it-IT.json b/assets/lang/it-IT.json deleted file mode 100644 index f704a0e..0000000 --- a/assets/lang/it-IT.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_update": "Una nuova versione di Legcord è disponibile. Per favore aggiorna all'ultima versione.", - "loading_screen_start": "Avvio di Legcord…", - "loading_screen_offline": "Sembra che tu sia offline. Ricomincia ", - "setup_question1": "Benvenuto nella configurazione di Legcord", - "setup_question2": "Seleziona il tuo canale/istanza di Discord:", - "setup_question3": "Legcord dovrebbe gestire l'installazione di client mod?", - "yes": "Sì", - "no": "No", - "next": "Avanti", - "setup_question4": "Seleziona una client mod che vuoi installare:", - "setup_offline": "Sembri essere offline. Per favore connettiti ad Internet e riavvia la configurazione di Legcord.", - "settings-tray": "Icona", - "settings-channel": "Canale Discord", - "settings-save": "Salva Impostazioni", - "settings-updater": "Controlla gli aggiornamenti", - "settings-mod": "Mod Client", - "settings-theme": "Stile della finestra", - "settings-theme-default": "Default", - "settings-theme-native": "Nativo", - "settings-invitewebsocket": "Rich Presence (sperimentale)", - "settings-prfmMode": "Modalità Performance", - "settings-prfmMode-performance": "Performance", - "settings-prfmMode-battery": "Battery", - "settings-none": "None", - "settings-mobileMode": "Modalità telefono", - "settings-csp-desc": "Legcord CSP è il nostro sistema che gestisce il caricamento di contenuti personalizzati nell'app Discord. Elementi come\n le mod e i temi del client dipendono da questo. Disabilita se vuoi sbarazzarti di mod e stili personalizzati.", - "settings-mobileMode-desc": "Se sei su un dispositivo con touch-screen questa funzione è per te! Attiva sul cellulare la modalità nascosta \n di Discord pensata per telefoni e tablet. L'unica caratteristica importante che manca è il supporto della chat vocale. Questo è l'ideale per\n utenti su PinePhone e simili.", - "settings-tray-desc": "Se disabilitato, Legcord si chiuderà come qualsiasi altra finestra quando è chiuso, altrimenti si siederà e si rilasserà nella barra delle applicazioni per dopo.", - "settings-invitewebsocket-desc": "Utilizza arRPC per supportare Discord RPC (Rich Presence) con programmi locali sulla tua macchina. Lavori in corso.", - "settings-mod-desc1": "Le mod client sono programmi che ti consentono di personalizzare la tua esperienza su Discord. Possono cambiare l'aspetto del\n client, modificare i comportamenti o aggiungere nuove funzionalità!", - "settings-trayIcon": "Icona della barra", - "settings-trayIcon-desc": "Impostare l'icona che apparirà nel menu della barra delle applicazioni.", - "settings-advanced": "Zona utenti avanzati", - "settings-pluginsFolder": "Apri la cartella dei plugin", - "settings-themesFolder": "Apri la cartella dei temi", - "settings-storageFolder": "Apri la cartella di archiviazione", - "settings-restart": "Riavvia App", - "settings-mod-vencord": "mod client leggera e facile da usare. Dispone di uno store integrato per i plugin.", - "settings-prfmMode-desc": "La modalità Performance è una funzione sperimentale che può aumentare la reattività e le prestazioni di\n Legcord o... diminuirle. Si prega di provare tutte le opzioni e vedere quale si adatta meglio.", - "settings-trayIcon-dynamic": "Dinamica", - "settings-trayIcon-normal": "Icona Discord", - "settings-trayIcon-classic": "Icona Discord classica", - "settings-trayIcon-colored-plug": "Plug colorato", - "settings-trayIcon-white-plug": "Plug bianco", - "settings-trayIcon-white-plug-alt": "Plug Bianco Alt", - "settings-trayIcon-black-plug": "Plug nero", - "settings-trayIcon-black-plug-alt": "Plug Nero Alt", - "settings-experimental": "Sperimentale", - "settings-skipSplash": "Salta schermata iniziale (sperimentale)", - "settings-skipSplash-desc": "Salta la schermata iniziale di Legcord all'avvio dell'app.", - "settings-copyDebugInfo": "Copia informazioni di debug", - "settings-startMinimized": "Inizia ridotto a icona", - "settings-startMinimized-desc": "Legcord si avvia in background e rimane fuori dai piedi.", - "settings-crashesFolder": "Apri la cartella dei crash nativi", - "settings-forceNativeCrash": "Forza crash nativo", - "settings-disableAutogain": "Disabilita il guadagno automatico", - "settings-disableAutogain-desc": "Disabilita il guadagno automatico.", - "settings-theme-transparent": "Trasparente", - "settings-useLegacyCapturer": "Usa l'acquisitore legacy", - "settings-useLegacyCapturer-desc": "Usa il modulo di condivisione dello schermo precedente, invece di quello nuovo. Se riscontri problemi con la condivisione dello schermo, prova ad abilitarla.", - "settings-spellcheck": "Controllo ortografico", - "settings-spellcheck-desc": "Ti aiuta a correggere le parole errate evidenziandole.", - "setup_question5": "Vuoi usare un'icona nella barra delle applicazioni?", - "settings-mintoTray": "Lavora in background", - "settings-mintoTray-desc": "Se disabilitato, Legcord si chiuderà come qualsiasi altra finestra quando è chiusa, altrimenti si siederà e si rilasserà\n nella barra delle applicazioni per dopo.", - "settings-MultiInstance": "Multi-istanza", - "settings-MultiInstance-desc": "Se abilitato sarai in grado di avviare molte istanze di Legcord.", - "settings-copyGPUInfo": "Copia informazioni sulla GPU", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Utilizza lo scorrimento fluido", - "settings-smoothScroll-desc": "Attiva lo scorrimento fluido", - "settings-autoScroll": "Consenti lo scorrimento automatico", - "settings-autoScroll-desc": "Consenti lo scorrimento automatico con il clic centrale (nota: l'ambiente desktop può comunque sovrascriverlo con un'altra azione)", - "settings-theme-desc": "Lo stile della finestra determina quale barra del titolo verrà usata da Legcord", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Accelerazione hardware", - "settings-hardwareAcceleration-desc": "L'accelerazione hardware usa la tua GPU per far sì che Legcord sia più veloce. Se dovessi notare dei glitch visivi, prova a disabilitare questa opzione", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/ja-JP.json b/assets/lang/ja-JP.json deleted file mode 100644 index e9a7c75..0000000 --- a/assets/lang/ja-JP.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "yes": "はい", - "settings-theme-default": "デフォルト", - "settings-invitewebsocket": "リッチプレゼンス(実験的)", - "loading_screen_start": "Legcordを起動中…", - "loading_screen_offline": "現在オフラインのようです。インターネットに接続し、再度お試しください。", - "loading_screen_update": "新しいバージョンのLegcordが見つかりました。最新版へ更新してください。", - "setup_question1": "Legcordセットアップへようこそ", - "setup_offline": "現在オフラインのようです。インターネットへ接続し、Legcordを再起動してください。", - "setup_question2": "Discordチャネル/インスタンスを選択してください:", - "setup_question3": "Legcordでクライアントmodのインストールを処理する必要がありますか?", - "no": "いいえ", - "next": "次へ", - "setup_question4": "インストールしたいクライアントmodを選択してください:", - "settings-theme": "Legcordテーマ", - "settings-theme-native": "ネイティブ", - "settings-csp-desc": "Legcord CSPは、Discordアプリへのカスタムコンテンツの読み込みを管理するシステムです。\nクライアントmodやテーマはこれに依存します。modやカスタムスタイルを取り除きたい場合は無効にしてください。", - "settings-tray": "トレイ", - "settings-tray-desc": "無効にした場合、Legcordを閉じると、他のウィンドウと同じように閉じます。それ以外の場合、Legcordはシステムトレイに待機して後で使用できます。", - "settings-mobileMode": "モバイルモード", - "settings-mobileMode-desc": "もしタッチスクリーン対応のデバイスをお使いであれば、この機能はあなたのためのものです!\nこれはスマートフォンやタブレット向けの隠されたDiscordのモバイルモードを有効にします。唯一欠けている主要な機能はボイスチャットのサポートのみです。\nこれは、PinePhoneや類似のデバイスをお使いのユーザーに最適です。", - "settings-channel": "Discordチャネル", - "settings-invitewebsocket-desc": "arRPC を使用して、マシン上のローカルプログラムでDiscord RPC(リッチプレゼンス)をサポートします。WIPです。", - "settings-mod": "クライアントmod", - "settings-mod-desc1": "クライアントmodは、あなたのDiscord体験をカスタマイズできるプログラムです。\nクライアントの見た目を調整したり、動作を変更したり、新しい機能を追加することもできます!", - "settings-prfmMode": "パフォーマンスモード", - "settings-prfmMode-performance": "パフォーマンス", - "settings-prfmMode-battery": "バッテリー", - "settings-trayIcon": "トレイアイコン", - "settings-trayIcon-desc": "トレイメニューに表示されるアイコンを設定します。", - "settings-advanced": "高度なユーザー向け区域", - "settings-pluginsFolder": "プラグインフォルダを開く", - "settings-themesFolder": "テーマフォルダを開く", - "settings-storageFolder": "ストレージフォルダを開く", - "settings-none": "無効", - "settings-save": "設定を保存", - "settings-updater": "アップデートを確認する", - "settings-restart": "アプリを再起動する", - "settings-trayIcon-dynamic": "ダイナミック", - "settings-mod-vencord": "軽量で使いやすいクライアントmod。プラグイン用の組み込みストアを備えています。", - "settings-prfmMode-desc": "パフォーマンスモードは、Legcordの応答性とパフォーマンスを改善する...か、低下させる可能性がある実験的な機能です。\nすべてのオプションを試して、どれが最適か確認してください。", - "settings-trayIcon-normal": "Discordアイコン", - "settings-trayIcon-classic": "クラシックDiscordアイコン", - "settings-trayIcon-colored-plug": "色の付いたプラグ", - "settings-trayIcon-white-plug": "白いプラグ", - "settings-trayIcon-white-plug-alt": "白いプラグ2", - "settings-trayIcon-black-plug": "黒いプラグ", - "settings-trayIcon-black-plug-alt": "黒いプラグ2", - "settings-experimental": "実験的", - "settings-skipSplash": "スプラッシュ画面をスキップする(実験的)", - "settings-skipSplash-desc": "Legcordを起動した時のスプラッシュ画面をスキップします。", - "settings-copyDebugInfo": "デバッグ情報をコピーする", - "settings-startMinimized": "最小化状態で起動", - "settings-startMinimized-desc": "邪魔にならないように、Legcordをバックグラウンドで起動します。", - "settings-crashesFolder": "ネイティブのクラッシュフォルダを開く", - "settings-forceNativeCrash": "強制的にクラッシュを発生させる", - "settings-disableAutogain": "オートゲインを無効化", - "settings-disableAutogain-desc": "自動ゲイン制御を無効化します。", - "settings-theme-transparent": "透過", - "settings-useLegacyCapturer": "レガシーキャプチャを使用する", - "settings-useLegacyCapturer-desc": "新しい画面共有モジュールの代わりに、従来の画面共有モジュールを使用します。もし画面共有で問題が発生している場合は、これを有効にしてみてください。", - "settings-spellcheck": "スペルチェック", - "settings-spellcheck-desc": "スペルミスを修正できるように、ミスのある単語をハイライト表示します。", - "setup_question5": "トレイアイコンを使用しますか?", - "settings-mintoTray": "トレイに最小化", - "settings-mintoTray-desc": "無効にすると、Legcordを閉じた際は他のウィンドウと同じように閉じますが。\nそれ以外の場合はシステムトレイで待機し、後で使用できるようになります。", - "settings-MultiInstance": "マルチインスタンス", - "settings-MultiInstance-desc": "これを有効にすると、同時に複数のLegcordインスタンスを起動できるようになります。", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-category-behaviour": "Behaviour", - "settings-category-legacy": "Legacy features", - "settings-theme-overlay": "Overlay", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/ko-KR.json b/assets/lang/ko-KR.json deleted file mode 100644 index 734d0bb..0000000 --- a/assets/lang/ko-KR.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Legcord 시작 중…", - "loading_screen_offline": "오프라인 상태인 것 같습니다. 인터넷에 연결하고 다시 시도해 주세요. ", - "settings-prfmMode": "성능 모드", - "setup_question1": "Legcord 설정에 오신 것을 환영합니다.", - "setup_offline": "오프라인 상태인 것 같습니다. 인터넷에 연결하고 Legcord를 다시 시작해 주세요.", - "loading_screen_update": "Legcord의 새 버전을 사용할 수 있습니다. 최신 버전으로 업데이트해 주세요.", - "setup_question2": "Discord 채널/인스턴스를 선택:", - "setup_question3": "Legcord가 클라이언트 모드 설치를 처리할까요?", - "yes": "예", - "no": "아니오", - "next": "다음", - "setup_question4": "설치할 클라이언트 모드 선택:", - "settings-theme": "Legcord 테마", - "settings-theme-default": "기본값", - "settings-theme-native": "OS 기본", - "settings-csp-desc": "Legcord CSP는 디스코드 앱에 불러오는 맞춤형 콘텐츠 로드를 관리하는 시스템입니다. 이런\n 클라이언트 모드 및 테마는 이에 따라 다릅니다. 모드 및 사용자 정의 스타일을 제거하려면 비활성화하세요.", - "settings-tray": "트레이", - "settings-tray-desc": "비활성화하면 Legcord는 닫을 때 다른 창처럼 닫히며, 그렇지 않으면 나중에 사용할 수 있도록 시스템 트레이에 대기 상태로 남아 있습니다.", - "settings-mobileMode": "모바일 모드", - "settings-invitewebsocket": "활동 상태 (실험적)", - "settings-mobileMode-desc": "터치 스크린이 있는 장치를 사용하는 경우 이 기능이 적합합니다! 디스코드의 숨겨진 모바일을 활성화하며\n 휴대전화와 태블릿을 위한 모드입니다. 이것은\n PinePhone 및 이와 유사한 사용자에게 이상적입니다.", - "settings-channel": "디스코드 채널", - "settings-invitewebsocket-desc": "arRPC를 사용하여 컴퓨터의 로컬 프로그램과 함께 디스코드 RPC (활동 상태)를 지원합니다. 진행중인 작업입니다.", - "settings-mod": "클라이언트 모드", - "settings-mod-desc1": "클라이언트 모드는 디스코드 경험을 사용자 지정할 수 있는 프로그램입니다. 클라이언트의 모양을 변경하거나 동작을 수정하거나\n 새로운 기능을 추가할 수 있습니다!", - "settings-prfmMode-performance": "성능", - "settings-prfmMode-battery": "배터리", - "settings-trayIcon": "트레이 아이콘", - "settings-trayIcon-desc": "트레이 메뉴에 나타날 아이콘을 설정합니다.", - "settings-advanced": "고급 사용자 영역", - "settings-pluginsFolder": "플러그인 폴더 열기", - "settings-themesFolder": "테마 폴더 열기", - "settings-storageFolder": "저장소 폴더 열기", - "settings-none": "없음", - "settings-save": "설정 저장", - "settings-restart": "앱 다시 시작", - "settings-updater": "업데이트 확인", - "settings-mod-vencord": "가볍고 사용하기 쉬운 클라이언트 모드입니다. 플러그인을 위한 내장 저장소를 제공합니다.", - "settings-prfmMode-desc": "성능 모드는 Legcord의 응답성과 성능을 증가시키거나…\n 감소시킬 수 있는 실험적 기능입니다. 모든 옵션을 시도하고 가장 적합한 옵션을 확인하세요.", - "settings-trayIcon-dynamic": "동적", - "settings-trayIcon-normal": "디스코드 아이콘", - "settings-trayIcon-classic": "클래식 디스코드 아이콘", - "settings-trayIcon-colored-plug": "컬러 플러그", - "settings-trayIcon-white-plug": "흰색 플러그", - "settings-trayIcon-white-plug-alt": "흰색 플러그 대체", - "settings-trayIcon-black-plug": "검은색 플러그", - "settings-trayIcon-black-plug-alt": "검은색 플러그 대체", - "settings-experimental": "실험적", - "settings-skipSplash": "시작 화면 건너뛰기 (실험적)", - "settings-skipSplash-desc": "앱을 시작할 때 Legcord 시작 화면을 건너뜁니다.", - "settings-copyDebugInfo": "디버그 정보 복사", - "settings-startMinimized": "최소화 시작", - "settings-startMinimized-desc": "Legcord는 백그라운드에서 시작되며 방해가 되지 않습니다.", - "settings-crashesFolder": "네이티브 충돌 폴더 열기", - "settings-forceNativeCrash": "강제 네이티브 충돌", - "settings-disableAutogain": "자동 획득 비활성화", - "settings-disableAutogain-desc": "자동게인을 비활성화합니다.", - "settings-theme-transparent": "투명", - "settings-useLegacyCapturer": "레거시 캡처 프로그램 사용", - "settings-useLegacyCapturer-desc": "새로운 화면 공유 모듈 대신 레거시 화면 공유 모듈을 사용하세요. 화면 공유에 문제가 있는 경우 이를 활성화해 보세요.", - "settings-spellcheck": "맞춤법검사", - "settings-spellcheck-desc": "철자가 틀린 단어를 강조 표시하여 수정할 수 있도록 도와줍니다.", - "setup_question5": "트레이 아이콘을 사용하겠습니까?", - "settings-mintoTray": "트레이로 최소화", - "settings-mintoTray-desc": "비활성화하면 Legcord는 닫을 때 다른 창처럼 닫히지만, 그렇지 않으면 시스템 트레이에 편안하게\n 나중에 사용할 수 있도록 시스템 트레이에 보관됩니다.", - "settings-MultiInstance": "다중 인스턴스", - "settings-MultiInstance-desc": "활성화되면 Legcord의 많은 인스턴스를 시작할 수 있습니다.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache", - "settings-theme-overlay": "Overlay" -} diff --git a/assets/lang/lt-LT.json b/assets/lang/lt-LT.json deleted file mode 100644 index 4d914aa..0000000 --- a/assets/lang/lt-LT.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "next": "Kitas", - "settings-theme": "Legcord tema", - "settings-theme-default": "Numatytas", - "settings-theme-native": "Vietinis", - "setup_question1": "Pasirinkite, koki diegimą jūs norėtumėt atlikti:", - "loading_screen_start": "Legcord paleidžiamas…", - "loading_screen_offline": "Atrodo, kad jūs dar esate neprisijungę. Prašome prisijungti prie interneto ir bandyti vėl.", - "loading_screen_update": "Nauja Legcord versija jau išleista. Prašome atsiusti atnaujinimą.", - "setup_offline": "Atrodo, kad jūs nesate prisijungę prie interneto. Prašome prisijungti prie interneto ir paleisti Legcord iš naujo.", - "setup_question2": "Pasirinkite pageidaujamą Discord versiją/kanalą:", - "setup_question3": "Ar Legcord turėtų tvarkyti kliento modifikacijų diegimą?", - "yes": "Taip", - "no": "Ne", - "setup_question4": "Pasirinkite kliento modifikaciją, kurią norite įdiegti:", - "settings-theme-transparent": "Permatomas (Eksperimentinis)", - "settings-csp-desc": "Legcord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", - "settings-tray": "Minimize to tray", - "settings-tray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-startMinimized": "Start minimized", - "settings-startMinimized-desc": "Legcord starts in background and remains out of your way.", - "settings-useLegacyCapturer": "Use legacy capturer", - "settings-useLegacyCapturer-desc": "Use legacy screenshare module, instead of the new one. If you're experiencing issues with screen sharing, try enabling this.", - "settings-mobileMode": "Mobile mode", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-channel": "Discord channel", - "settings-trayIcon-dynamic": "Dynamic", - "settings-invitewebsocket": "Rich Presence (Experimental)", - "settings-invitewebsocket-desc": "Uses arRPC to support Discord RPC (Rich Presence) with local programs on your machine. Work in progress.", - "settings-mod": "Client mod", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-mod-vencord": "lightweight, and easy to use client mod. Features a built-in store for plugins.", - "settings-prfmMode": "Performance mode", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of\n Legcord or… decrease it. Please try every option and see which fits you the best.", - "settings-prfmMode-performance": "Performance", - "settings-prfmMode-battery": "Battery", - "settings-disableAutogain": "Disable autogain", - "settings-disableAutogain-desc": "Disables autogain.", - "settings-trayIcon": "Tray icon", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-trayIcon-normal": "Discord Icon", - "settings-trayIcon-classic": "Classic Discord Icon", - "settings-trayIcon-colored-plug": "Colored Plug", - "settings-trayIcon-white-plug": "White Plug", - "settings-trayIcon-white-plug-alt": "White Plug Alt", - "settings-trayIcon-black-plug": "Black Plug", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "settings-advanced": "Advanced user zone", - "settings-pluginsFolder": "Open plugins folder", - "settings-crashesFolder": "Open native crashes folder", - "settings-themesFolder": "Open themes folder", - "settings-storageFolder": "Open storage folder", - "settings-none": "None", - "settings-save": "Save Settings", - "settings-experimental": "Experimental", - "settings-restart": "Restart App", - "settings-updater": "Check for updates", - "settings-skipSplash": "Skip Splash Screen (Experimental)", - "settings-skipSplash-desc": "Skips Legcord splash screen when you start up the app.", - "settings-copyDebugInfo": "Copy Debug Info", - "settings-forceNativeCrash": "Force native crash", - "settings-spellcheck": "Spellcheck", - "settings-spellcheck-desc": "Helps you correct misspelled words by highlighting them.", - "setup_question5": "Do you want to use a tray icon?", - "settings-mintoTray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-mintoTray": "Minimize to tray", - "settings-MultiInstance": "Multi Instance", - "settings-MultiInstance-desc": "When enabled you'll be able to start up many instances of Legcord.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/nb-NO.json b/assets/lang/nb-NO.json deleted file mode 100644 index b3aff40..0000000 --- a/assets/lang/nb-NO.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Starter Legcord …", - "loading_screen_offline": "Du er uten internett. Starter på nytt om ", - "loading_screen_update": "En ny versjon av Legcord er tilgjengelig. Oppgrader til siste versjon.", - "setup_question1": "Velkommen til Legcord-oppsettet", - "setup_question2": "Velg din Discor-kanal/instans:", - "yes": "Ja", - "no": "Nei", - "setup_question3": "Skal Legcord håndtere installasjon av klient-modifikasjoner?", - "setup_offline": "Det ser ut til at du er frakoblet. Koblet til Internett og start Legcord på ny.", - "next": "Neste", - "setup_question4": "Velg en klient-modifikasjon du ønsker å installere:", - "settings-tray": "Skuffe", - "settings-channel": "Discord-kanal:", - "settings-mod": "Klient-modifikasjon:", - "settings-save": "Lagre innstillingene", - "settings-updater": "Check for updates", - "settings-theme": "Legcord-drakt", - "settings-theme-default": "Default", - "settings-theme-native": "Native", - "settings-invitewebsocket": "discord.gg support", - "settings-prfmMode": "Ytelsesmodus", - "settings-prfmMode-performance": "Performance", - "settings-prfmMode-battery": "Battery", - "settings-none": "None", - "settings-mobileMode": "Mobilmodus", - "settings-csp-desc": "Legcord CSP er systemet vårt brukt til innlasting av egendefinert innhold i Discord-programmet. Ting som\n klient-modifikasjoner og drakter trenger det. Skru dette av for å bli kvitt modifikasjoner og stilendriner.", - "settings-tray-desc": "Når avskrudd vil Legcord lukkes som ethvert annet vindu. Ellers vil det være i systemkurven din for senere bruk.", - "settings-mobileMode-desc": "For enheter med pekeskjerm. Aktiverer Discord sitt skjulte modbilmodus tiltenkt telefoner og nettbrett.\n Den eneste store funksjonen som mangler er stemmesludring. Ideelt for PinePhone-brukere og lign.", - "settings-invitewebsocket-desc": "Når dette er påskrudd støtter Legcord Discord.gg-lenker, noe som betyr at Legcord automatisk godtar\n invitasjoner hvis du åpner dem i nettleseren. Kan til tider slutte å svare.", - "settings-mod-desc1": "Klientmodifikasjoner er prorammer som lar de endre Discord-opplevelsen. De kan endre klientens\n utseende, endre adferden, eller legge til nye funksjoner.", - "settings-trayIcon": "Systemkurvsikon", - "settings-trayIcon-desc": "Sett ikonet som vises i systemkurven.", - "settings-advanced": "Sone for avanserte brukere", - "settings-pluginsFolder": "Åpne programtilleggsmappen", - "settings-themesFolder": "Åpne draktmappen", - "settings-storageFolder": "Åpne lagringsmappen", - "settings-restart": "Start appen på nytt", - "settings-mod-vencord": "lett og brukervennlig klient-mod. Har en innebygd butikk for plugins.", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of\n Legcord or... decrease it. Please try every option and see which fits you the best.", - "settings-trayIcon-dynamic": "Dynamisk", - "settings-trayIcon-normal": "Discord-ikon", - "settings-trayIcon-classic": "Klassisk Discord-ikon", - "settings-trayIcon-colored-plug": "Farget plugg", - "settings-trayIcon-white-plug": "Hvit plugg", - "settings-trayIcon-white-plug-alt": "Hvit Plugg Alt", - "settings-trayIcon-black-plug": "Black Plug", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "settings-experimental": "Eksperimental", - "settings-skipSplash": "Hopp over velkomstskjerm (Eksperimentell)", - "settings-skipSplash-desc": "Hopper over Legcord-velkomstskjermen når du starter opp appen.", - "settings-copyDebugInfo": "Kopier feilsøkingsinformasjon", - "settings-startMinimized-desc": "Legcord starter i bakgrunnen og er utenfor din sikt.", - "settings-startMinimized": "Start minimert", - "settings-crashesFolder": "Open native crashes folder", - "settings-forceNativeCrash": "Tving \"native\" krasj", - "settings-disableAutogain": "Deaktiver autogain", - "settings-disableAutogain-desc": "Skrur av autogain", - "settings-theme-transparent": "Gjennomsiktig", - "settings-useLegacyCapturer": "Bruk eldre fanger", - "settings-useLegacyCapturer-desc": "Bruk den eldre skjermdelingsmodulen i stedet for den nye. Hvis du opplever problemer med skjermdeling, prøv å aktivere dette.", - "settings-spellcheck": "Stavekontroll", - "settings-spellcheck-desc": "Hjelper deg å rette feilstavede ord ved å utheve dem.", - "setup_question5": "Har du lyst å bruke et skuffeikon?", - "settings-mintoTray": "Minimer til skuffe", - "settings-mintoTray-desc": "Når avskurdd vil Legcord lukkes som andre vinduer vanligvis gjør, ellers vil den sitte å slappe av\n i skuffen for senere bruk.", - "settings-MultiInstance": "Flerinstans", - "settings-MultiInstance-desc": "Når avskurdd vil du ha muligheten til å starte mange instanser med Legcord.", - "settings-copyGPUInfo": "Kopier GPU-informasjon", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio": "Audio", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-clearClientModCache": "Clear client mod cache", - "settings-category-behaviour": "Behaviour", - "settings-theme-overlay": "Overlay", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options" -} diff --git a/assets/lang/nl-NL.json b/assets/lang/nl-NL.json deleted file mode 100644 index a6d6ae7..0000000 --- a/assets/lang/nl-NL.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "setup_question1": "Welkom bij de Legcord Setup", - "setup_question3": "Moet Legcord client mods installeren?", - "yes": "Ja", - "no": "Nee", - "setup_offline": "Het lijkt erop alsof je offline bent. Verbind met het internet en herstart Legcord setup.", - "loading_screen_start": "Legcord starten…", - "next": "Volgende", - "setup_question4": "Selecteer een client mod om te installeren:", - "loading_screen_offline": "Het lijkt erop alsof je offline bent. Verbind met het Internet en probeer opnieuw.", - "loading_screen_update": "Een nieuwe versie van Legcord is beschikbaar. Update alstublieft naar de nieuwste versie.", - "setup_question2": "Kies je Discord kanaal/instantie:", - "settings-tray": "Minimaliseer naar pictogram in het systeemvak", - "settings-channel": "Discord kanaal:", - "settings-mod": "Client mod:", - "settings-save": "Instellingen opslaan", - "settings-updater": "Check voor updates", - "settings-theme": "Legcord Thema", - "settings-theme-default": "Standaard", - "settings-theme-native": "oorspronkelijk", - "settings-invitewebsocket": "discord.gg support", - "settings-none": "Geen", - "settings-prfmMode": "Performance mode:", - "settings-prfmMode-performance": "Performance", - "settings-prfmMode-battery": "batterij", - "settings-mobileMode": "Mobiele modus", - "settings-invitewebsocket-desc": "When enabled Legcord will support Discord.gg links which means that if you open an invite link in your\n browser, Legcord will automatically accept the invite. Can be unresponsive at times.", - "settings-csp-desc": "Legcord CSP is ons systeem dat aangepaste content dat in de Discord app laad beheert. Dingen zoals cliënt mods en thema's steunen hierop. Deactiveer dit als je alle mods en aangepaste stijlen weg wilt halen.", - "settings-tray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-trayIcon": "Tray icon", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-advanced": "Geavanceerde gebruikers zone", - "settings-pluginsFolder": "Open plugins folder", - "settings-themesFolder": "Open thema's map", - "settings-storageFolder": "Open storage folder", - "settings-restart": "Start App opnieuw op", - "settings-experimental": "Experimenteel", - "settings-skipSplash-desc": "Skips Legcord splash screen when you start up the app.", - "settings-mod-vencord": "lightweight, and easy to use client mod. Features a built-in store for plugins.", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of\n Legcord or... decrease it. Please try every option and see which fits you the best.", - "settings-trayIcon-dynamic": "Dynamisch", - "settings-trayIcon-normal": "Discord Icoon", - "settings-trayIcon-classic": "Klassiek Discord Icoon", - "settings-trayIcon-colored-plug": "Gekleurde stekker", - "settings-trayIcon-white-plug": "Witte Stekker", - "settings-trayIcon-white-plug-alt": "White Plug Alt", - "settings-trayIcon-black-plug": "Zwarte Stekker", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "settings-skipSplash": "Skip Splash Screen (Experimental)", - "settings-copyDebugInfo": "Kopier Debug Informatie", - "settings-startMinimized": "Start geminimaliseert", - "settings-startMinimized-desc": "Legcord starts in background and remains out of your way.", - "settings-forceNativeCrash": "Force native crash", - "settings-crashesFolder": "Open native crashes folder", - "settings-disableAutogain": "Disable autogain", - "settings-disableAutogain-desc": "Disables autogain.", - "settings-theme-transparent": "Transparant", - "settings-useLegacyCapturer": "Use legacy capturer", - "settings-useLegacyCapturer-desc": "Use legacy screenshare module, instead of the new one. If you're experiencing issues with screen sharing, try enabling this.", - "settings-spellcheck": "Spellcheck", - "settings-spellcheck-desc": "Helps you correct misspelled words by highlighting them.", - "setup_question5": "Wilt u een een pictogram in het systeemvak gebruiken?", - "settings-mintoTray": "Minimaliseren naar systeemvak", - "settings-mintoTray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-MultiInstance": "Multi Instance", - "settings-MultiInstance-desc": "When enabled you'll be able to start up many instances of Legcord.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/pl-PL.json b/assets/lang/pl-PL.json deleted file mode 100644 index 2e41b51..0000000 --- a/assets/lang/pl-PL.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_update": "Nowa wersja Legcord jest dostępna. Proszę zaktualizować do najnowszej wersji.", - "setup_question2": "Wybierz swój kanał/odmianę Discorda:", - "setup_question3": "Czy Legcord powinienem zajmować sie instalacją modyfikacji klienta?", - "yes": "Tak", - "no": "Nie", - "next": "Dalej", - "setup_question4": "Wybierz modyfikację klienta którą chcesz zainstalować:", - "loading_screen_start": "Uruchamianie Legcord…", - "loading_screen_offline": "Wygląda na to, że jesteś offline. Uruchom ponownie za ", - "setup_question1": "Witaj w konfiguracji Legcord'a", - "setup_offline": "Wygląda na to, że jesteś offline. Połącz się z Internetem i uruchom ponownie Legcord.", - "settings-channel": "Kanał Discorda", - "settings-updater": "Sprawdź aktualizacje", - "settings-tray": "Zminimalizuj do ikony zasobnika", - "settings-save": "Zapisz Ustawienia", - "settings-mod": "Modyfikacja klienta", - "settings-theme": "Motyw Legcord", - "settings-theme-default": "Domyślny", - "settings-theme-native": "Natywny", - "settings-invitewebsocket": "Rich Presence (Eksperymentalna opcja)", - "settings-prfmMode": "Tryb wydajności", - "settings-prfmMode-performance": "Wydajny", - "settings-prfmMode-battery": "Bateria", - "settings-none": "Nic/Brak", - "settings-mobileMode": "Tryb mobilny", - "settings-csp-desc": "Legcord CSP to nasz autorski system który zarządza ładowaniem niestandardowych rzeczy do klienta. Na przykład\n modyfikacje klienta lub motywy wymagają jego obecności. Wyłącz jeśli chcesz się pozbyć modyfikacji i motywów Discorda.", - "settings-tray-desc": "Kiedy wyłączone, Legcord zamknie swoje okno jak każda inna aplikacja, jednak gdy jest włączone usiądzie i odpocznie w zasobniku systemowym.", - "settings-mobileMode-desc": "Jeśli jesteś na urządzeniu z dotykowym ekranem, ta opcja jest dla ciebie! Aktywuje ona ukryty tryb Discord\n przeznaczony tylko na telefony i tablety. Jedną z brakujących funkcji to kanał głosowy. Jest to idealne rozwiązanie dla\n użytkowników PinePhone i podobnych.", - "settings-invitewebsocket-desc": "Używa arRPC aby wspierać Discord RPC (Rich Presence) z lokalnymi programami na twoim komputerze. Praca w toku.", - "settings-mod-desc1": "Modyfikacje klienta to programy, które pozwalają Ci dostosować Twoje doświadczenie z Discordem. Mogą zmienić wygląd\n klienta, modyfikować zachowanie lub dodać nowe funkcje!", - "settings-trayIcon": "Ikona w trayu", - "settings-trayIcon-desc": "Ustaw ikonę, która pojawi się w trayu systemowym.", - "settings-advanced": "Strefa zaawansowanego użytkownika", - "settings-pluginsFolder": "Otwórz folder z wtyczkami", - "settings-themesFolder": "Otwórz folder motywów", - "settings-storageFolder": "Otwórz folder magazynu", - "settings-restart": "Zrestartuj Aplikację", - "settings-mod-vencord": "lekka i łatwa do użycia modyfikacja klienta. Posiada wbudowany sklep z wtyczkami.", - "settings-prfmMode-desc": "Tryb wydajności to eksperymentalna funkcja, która może albo zwiększyć responsywność i wydajność\n Legcorda lub... je zmniejszyć. Proszę, wypróbuj każdą opcję i zobacz, która najlepiej Ci odpowiada.", - "settings-trayIcon-dynamic": "Dynamiczny", - "settings-trayIcon-normal": "Ikona Discorda", - "settings-trayIcon-classic": "Klasyczna Ikona Discorda", - "settings-trayIcon-colored-plug": "Kolorowa Wtyczka", - "settings-trayIcon-white-plug": "Biała wtyczka", - "settings-trayIcon-white-plug-alt": "Alternatywna Biała Wtyczka", - "settings-trayIcon-black-plug": "Czarna wtyczka", - "settings-trayIcon-black-plug-alt": "Alternatywna Czarna Wtyczka", - "settings-experimental": "Eksperymentalny", - "settings-skipSplash": "Pomiń Ekran Powitalny (Eksperymentalny)", - "settings-skipSplash-desc": "Pomija ekran powitalny Legcorda kiedy uruchamiasz aplikację.", - "settings-copyDebugInfo": "Skopiuj Informacje Debugowania", - "settings-startMinimized": "Uruchamiaj zminimalizowany", - "settings-startMinimized-desc": "Legcord uruchamia się w tle i nie przeszkadza po uruchomieniu.", - "settings-crashesFolder": "Otwórz folder natywnych crashów", - "settings-forceNativeCrash": "Wymuś natywny crash", - "settings-disableAutogain": "Wyłącz automatyczną regulację wzmocnienia", - "settings-disableAutogain-desc": "Wyłącza automatyczną regulację wzmocnienia.", - "settings-theme-transparent": "Przeźroczysty", - "settings-useLegacyCapturer": "Używaj starszej metody przechwytywania", - "settings-useLegacyCapturer-desc": "Używaj starszego modułu udostępniania ekranu, zamiast nowego. Jeżeli doświadczasz problemy z udostępnianiem ekranu, możesz spróbować włączyć tą opcję.", - "settings-spellcheck": "Sprawdzanie pisowni", - "settings-spellcheck-desc": "Pomaga poprawiać błędnie napisane słowa, podświetlając je.", - "setup_question5": "Chcesz używać ikony zasobnika?", - "settings-mintoTray": "Zminimalizuj do zasobnika systemowego", - "settings-mintoTray-desc": "Po wyłączeniu, Legcord zamknie się jak każde inne okno po zamknięciu. Następnie poczeka w zasobniku\n systemowym na później.", - "settings-MultiInstance": "Wiele instancji", - "settings-MultiInstance-desc": "Kiedy ta opcja jest włączona możliwe jest uruchomienie wielu instancji Legcord.", - "settings-copyGPUInfo": "Skopiuj informacje o GPU", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/pt-BR.json b/assets/lang/pt-BR.json deleted file mode 100644 index 26711e5..0000000 --- a/assets/lang/pt-BR.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "no": "Não", - "loading_screen_start": "Iniciando Legcord…", - "loading_screen_offline": "Você parece estar offline. Por favor, conecte-se à internet e tente novamente.", - "loading_screen_update": "Uma nova versão do Legcord está disponível. Por favor, atualize para a versão mais recente.", - "setup_question1": "Bem-vindo à configuração do Legcord", - "setup_offline": "Você parece estar offline. Por favor, conecte-se à internet e reinicie o Legcord.", - "setup_question2": "Escolha o canal/instância do seu Discord:", - "setup_question3": "O Legcord deve lidar com a instalação de mods do cliente?", - "yes": "Sim", - "next": "Próximo", - "setup_question4": "Selecione um mod de cliente que você deseja instalar:", - "settings-theme": "Tema do Legcord", - "settings-theme-default": "Padrão", - "settings-theme-native": "Nativo", - "settings-tray": "Minimizar para a Bandeja", - "settings-channel": "Canal do Discord", - "settings-invitewebsocket": "Rich Presence (Experimental)", - "settings-mod": "Modificação de cliente", - "settings-prfmMode": "Modo de performance", - "settings-prfmMode-performance": "Desempenho", - "settings-prfmMode-battery": "Bateria", - "settings-none": "Nenhum", - "settings-save": "Salvar configurações", - "settings-updater": "Verificar atualizações", - "settings-mobileMode": "Modo móvel", - "settings-csp-desc": "Legcord CSP é o nosso sistema que gerencia o carregamento de conteúdo personalizado no aplicativo do Discord. Coisas como\n mods de cliente e temas dependem disso. Desative se você quiser se livrar de mods e estilos personalizados.", - "settings-mobileMode-desc": "Se estiver em um dispositivo com tela sensível ao toque, este recurso é para você! Ele ativa o modo móvel oculto do Discord\n destinado a celulares e tablets. A única característica importante ausente é o suporte ao bate-papo por voz. Isso é ideal para\n usuários do PinePhone e similares.", - "settings-tray-desc": "Quando desativado, o Legcord irá encerrar como qualquer outra janela quando for fechado, caso contrário, permanecerá em repouso na bandeja do seu sistema para mais tarde.", - "settings-invitewebsocket-desc": "Usa arRPC para dar suporte ao Discord RPC (Rich Presence) com programas locais na sua máquina. Trabalho em andamento.", - "settings-mod-desc1": "Mods de cliente são programas que permitem personalizar sua experiência no Discord. Eles podem alterar a aparência\n do cliente, modificar comportamentos ou adicionar novos recursos!", - "settings-trayIcon": "Ícone da bandeja", - "settings-trayIcon-desc": "Defina o ícone que aparecerá no menu da bandeja.", - "settings-advanced": "Área para usuários avançados", - "settings-pluginsFolder": "Abrir pasta de plugins", - "settings-themesFolder": "Abrir pasta de temas", - "settings-storageFolder": "Abrir pasta de armazenamento", - "settings-restart": "Reiniciar Aplicativo", - "settings-mod-vencord": "mod leve e fácil de usar. Possui uma loja integrada para plugins.", - "settings-prfmMode-desc": "O modo de performance é uma função experimental que pode ou melhorar a capacidade de resposta e performance do \n Legcord, ou... reduzi-la. Por favor, tente todas opções e veja qual te serve melhor.", - "settings-trayIcon-dynamic": "Dinâmico", - "settings-trayIcon-normal": "Ícone do Discord", - "settings-trayIcon-classic": "Ícone Clássico do Discord", - "settings-trayIcon-colored-plug": "Plugue Colorido", - "settings-trayIcon-white-plug": "Plugue Branco", - "settings-trayIcon-white-plug-alt": "Plugue Branco Alternativo", - "settings-trayIcon-black-plug": "Plugue Preto", - "settings-trayIcon-black-plug-alt": "Plugue Preto Alternativo", - "settings-experimental": "Experimental", - "settings-skipSplash": "Pular Tela Inicial (Experimental)", - "settings-skipSplash-desc": "Pula a tela inicial do Legcord quando você abre o aplicativo.", - "settings-copyDebugInfo": "Copiar Informação de Depuração", - "settings-startMinimized": "Iniciar minimizado", - "settings-startMinimized-desc": "Legcord abre em segundo plano sem te incomodar.", - "settings-crashesFolder": "Abrir pasta nativa de crashes", - "settings-forceNativeCrash": "Forçar crash nativo", - "settings-disableAutogain": "Desabilitar ganho automático", - "settings-disableAutogain-desc": "Desabilita ganho automático.", - "settings-theme-transparent": "Transparente", - "settings-useLegacyCapturer": "Usar capturador antigo", - "settings-useLegacyCapturer-desc": "Usar módulo de compartilhamento de tela antigo, ao invés do novo. Se você estiver tendo problemas com o compartilhamento de tela, tente ativar isto.", - "settings-spellcheck": "Correção ortográfica", - "settings-spellcheck-desc": "Ajuda a corrigir palavras com erros ortográficos destacando-as.", - "setup_question5": "Você pretende usar o ícone de programa?", - "settings-mintoTray": "Minimize o programa", - "settings-mintoTray-desc": "Quando desativado, Legcord irá fechar igual qualquer outra janela quando fechada, por outro lado irá só sentar e relaxar\n na bandeja do seu sistema para mais tarde.", - "settings-MultiInstance": "Multi Instância", - "settings-MultiInstance-desc": "Quando ativado você será capaz de iniciar múltiplas instâncias do Legcord.", - "settings-copyGPUInfo": "Copiar informação da GPU", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Usar scroll suave", - "settings-smoothScroll-desc": "Ativar/desativar scroll suave", - "settings-autoScroll": "Permitir scroll automático", - "settings-autoScroll-desc": "Permitir scroll do mouse com clique do scroll (Obs: Seu ambiente de trabalho pode substituir esta ação.)", - "settings-theme-desc": "Muda o estilo de janela que o Legcord utiliza.", - "settings-channel-desc": "Use essa configuração para alterar a instância do Discord que Legcord roda.", - "settings-hardwareAcceleration": "Aceleração de hardware", - "settings-hardwareAcceleration-desc": "Aceleração de hardware usa sua GPU para melhor desempenho do Legcord. Caso você experiencie problemas visuais, opte por desabilitar esta opção.", - "settings-disableHttpCache-desc": "Desativa cache HTTP do Chromium. Desabilite esta opção caso modificações do client não carreguem para você.", - "settings-disableHttpCache": "Desativa cache HTTP", - "settings-mod-equicord": "inspirado e nascido pelos contribuidores do Vencord, contribuindo com um cliente bonito e repleto de plugins.", - "settings-audio": "Áudio", - "settings-audio-desc": "Selecione qual método Legcord utiliza para capturar áudio do seu sistema durante transmissões de tela.", - "settings-category-legacy": "Funções herdadas/preexistentes.", - "settings-category-debug": "Opções de debug", - "settings-theme-overlay": "Sobreposição", - "settings-category-behaviour": "Comportamento", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Aspecto visual", - "settings-clearClientModCache": "Limpar cache do client e seus mods" -} diff --git a/assets/lang/pt-PT.json b/assets/lang/pt-PT.json deleted file mode 100644 index 33e3529..0000000 --- a/assets/lang/pt-PT.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_offline": "Parece estar offline. Por favor, conecte à internet e tente novamente.", - "settings-disableAutogain-desc": "Desativa ganho automático.", - "settings-startMinimized": "Iniciar minimizado", - "settings-trayIcon-white-plug-alt": "Plugue Branco Alternativo", - "settings-trayIcon-dynamic": "Dinâmico", - "settings-spellcheck-desc": "Ajuda a corrigir palavras com erros ortográficos destacando-as.", - "settings-theme-default": "Padrão", - "settings-skipSplash": "Pular Ecrã Inicial (Experimental)", - "settings-forceNativeCrash": "Forçar crash nativo", - "settings-trayIcon-white-plug": "Plugue Branco", - "settings-mod-vencord": "mod leve e fácil de usar. Possui uma loja integrada para plugins.", - "settings-trayIcon": "Ícone da bandeja", - "settings-prfmMode-battery": "Pilha", - "settings-prfmMode": "Modo de performance", - "settings-trayIcon-black-plug-alt": "Plugue Preto Alternativo", - "setup_question2": "Escolha o canal/instância do seu Discord:", - "next": "Próximo", - "settings-spellcheck": "Verificação ortográfica", - "no": "Não", - "settings-updater": "Verificar atualizações", - "settings-theme": "Tema do Legcord", - "settings-mintoTray-desc": "Quando desativado, Legcord irá fechar igual qualquer outra janela quando fechada, por outro lado irá só sentar e relaxar\n na bandeja do seu sistema para mais tarde.", - "settings-MultiInstance": "Multi Instância", - "settings-storageFolder": "Abrir pasta de armazenamento", - "settings-mobileMode-desc": "Se estiver num dispositivo com um ecrã sensível ao toque, este recurso é para si! Ele ativa o modo móvel oculto do Discord\n destinado a telemóveis e tablets. A única característica importante ausente é o suporte ao bate-papo por voz. Isso é ideal para\n utilizadores do PinePhone e similares.", - "settings-restart": "Reiniciar App", - "settings-prfmMode-performance": "Desempenho", - "yes": "Sim", - "settings-mobileMode": "Modo móvel", - "setup_question4": "Selecione um mod de cliente que deseja instalar:", - "settings-theme-native": "Nativo", - "settings-themesFolder": "Abrir pasta de temas", - "setup_offline": "Parece estar offline. Por favor, conecte à internet e reinicie o Legcord.", - "setup_question1": "Bem-vindo à configuração do Legcord", - "settings-copyDebugInfo": "Copiar Informação de Depuração", - "settings-mod-desc1": "Mods de cliente são programas que permitem personalizar a sua experiência no Discord. Eles podem alterar a aparência\n do cliente, modificar comportamentos ou adicionar novos recursos!", - "settings-skipSplash-desc": "Pula o ecrã inicial do Legcord quando abre a app.", - "setup_question3": "O Legcord deve lidar com a instalação de mods do cliente?", - "settings-MultiInstance-desc": "Quando ativado será capaz de iniciar múltiplas instâncias do Legcord.", - "settings-useLegacyCapturer-desc": "Usar módulo de compartilhamento de ecrã antigo, ao invés do novo. Se tem problemas com a partilha do ecrã, tente ativar isto.", - "settings-invitewebsocket-desc": "Usa arRPC para dar suporte ao Discord RPC (Rich Presence) com programas locais na sua máquina. Trabalho em andamento.", - "settings-theme-transparent": "Transparente", - "settings-crashesFolder": "Abrir pasta nativa de crashes", - "settings-trayIcon-black-plug": "Plugue Preto", - "settings-prfmMode-desc": "O modo de performance é uma função experimental que pode ou melhorar a capacidade de resposta e performance do \n Legcord, ou... reduzi-la. Por favor, tente todas opções e veja qual te serve melhor.", - "settings-channel": "Canal do Discord", - "settings-mod": "Modificação de cliente", - "settings-trayIcon-desc": "Defina o ícone que aparecerá no menu da bandeja.", - "settings-advanced": "Área para utilizadores avançados", - "loading_screen_start": "A iniciar o Legcord…", - "setup_question5": "Pretende usar o ícone de programa?", - "settings-invitewebsocket": "Rich Presence (Experimental)", - "settings-save": "Gravar configurações", - "settings-tray-desc": "Quando desativado, o Legcord irá encerrar como qualquer outra janela quando for fechado, caso contrário, permanecerá em repouso na bandeja do seu sistema para mais tarde.", - "settings-useLegacyCapturer": "Usar capturador antigo", - "settings-startMinimized-desc": "Legcord abre em segundo plano sem te incomodar.", - "settings-pluginsFolder": "Abrir pasta de plugins", - "settings-tray": "Minimizar para a Bandeja", - "settings-trayIcon-normal": "Ícone do Discord", - "settings-mintoTray": "Minimize o programa", - "settings-trayIcon-colored-plug": "Plugue Colorido", - "settings-trayIcon-classic": "Ícone Clássico do Discord", - "settings-disableAutogain": "Desativar ganho automático", - "loading_screen_update": "Uma nova versão do Legcord está disponível. Por favor, atualize à versão mais recente.", - "settings-experimental": "Experimental", - "settings-none": "Nenhum", - "settings-csp-desc": "Legcord CSP é o nosso sistema que gerencia o carregamento de conteúdo personalizado na app do Discord. Coisas como\n mods de cliente e temas dependem disso. Desative se quiser livrar-se de mods e estilos personalizados.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio": "Audio", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/ro-RO.json b/assets/lang/ro-RO.json deleted file mode 100644 index 885f3c3..0000000 --- a/assets/lang/ro-RO.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Începând Legcord…", - "settings-theme-default": "Implicit", - "settings-spellcheck": "Spellcheck", - "settings-invitewebsocket": "Rich Presence (Experimental)", - "settings-invitewebsocket-desc": "Uses arRPC to support Discord RPC (Rich Presence) with local programs on your machine. Work in progress.", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of\n Legcord or… decrease it. Please try every option and see which fits you the best.", - "settings-prfmMode-performance": "Performance", - "settings-advanced": "Advanced user zone", - "loading_screen_offline": "Se pare ca voi sunteți offline. Conectați-va la internet și incercați din nou. ", - "loading_screen_update": "O versiune noua de Legcord este disponibilă. Va rugăm sa instalați noua versiune", - "setup_question1": "Bine ați venit la configurarea pentru Legcord", - "setup_offline": "You appear to be offline. Please connect to the internet and restart Legcord.", - "setup_question2": "Alegeți versiunea/instanța de Discord:", - "setup_question3": "Ar trebui ca Legcord sa instaleze modificări?", - "yes": "Da", - "no": "Nu", - "next": "Următorul", - "setup_question4": "Alegeți o modificare pe care dorești să o instalezi:", - "settings-theme": "Temă Legcord", - "settings-theme-native": "Nativ", - "settings-theme-transparent": "Transparent (Experimental)", - "settings-csp-desc": "Legcord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", - "settings-tray": "Minimize to tray", - "settings-tray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-startMinimized": "Incepe minimalizat", - "settings-startMinimized-desc": "Legcord incepe in background și rămâne inafara faței tale.", - "settings-useLegacyCapturer": "Folosește capturator-ul legacy", - "settings-useLegacyCapturer-desc": "Use legacy screenshare module, instead of the new one. If you're experiencing issues with screen sharing, try enabling this.", - "settings-mobileMode": "Mobile mode", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-spellcheck-desc": "Helps you correct misspelled words by highlighting them.", - "settings-channel": "Discord channel", - "settings-mod": "Client mod", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-mod-vencord": "lightweight, and easy to use client mod. Features a built-in store for plugins.", - "settings-prfmMode": "Performance mode", - "settings-prfmMode-battery": "Battery", - "settings-disableAutogain": "Disable autogain", - "settings-disableAutogain-desc": "Disables autogain.", - "settings-trayIcon": "Tray icon", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-trayIcon-dynamic": "Dynamic", - "settings-trayIcon-normal": "Discord Icon", - "settings-trayIcon-classic": "Classic Discord Icon", - "settings-trayIcon-colored-plug": "Colored Plug", - "settings-trayIcon-white-plug": "White Plug", - "settings-trayIcon-white-plug-alt": "White Plug Alt", - "settings-trayIcon-black-plug": "Black Plug", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "settings-pluginsFolder": "Open plugins folder", - "settings-crashesFolder": "Open native crashes folder", - "settings-themesFolder": "Open themes folder", - "settings-storageFolder": "Open storage folder", - "settings-none": "None", - "settings-save": "Save Settings", - "settings-experimental": "Experimental", - "settings-restart": "Reporniți aplicația", - "settings-updater": "Verificați actualizările", - "settings-skipSplash": "Omiteți ecranul de prezentare (Experimental)", - "settings-skipSplash-desc": "Skips Legcord splash screen when you start up the app.", - "settings-copyDebugInfo": "Copy Debug Info", - "settings-forceNativeCrash": "Force native crash", - "setup_question5": "Vrei să folosești o iconiță de tray?", - "settings-mintoTray": "Mergi in background", - "settings-mintoTray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-MultiInstance": "Mai multe instanțe", - "settings-MultiInstance-desc": "When enabled you'll be able to start up many instances of Legcord.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio": "Audio", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/ru-RU.json b/assets/lang/ru-RU.json deleted file mode 100644 index 1cd7223..0000000 --- a/assets/lang/ru-RU.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Запуск Legcord…", - "loading_screen_offline": "Видимо, вы не в сети. Перезапуск через ", - "loading_screen_update": "Доступна новая версия Legcord. Пожалуйста, обновитесь до последней версии.", - "setup_question1": "Добро пожаловать на установку Legcord", - "setup_offline": "Видимо, вы не в сети. Подключитесь к Интернету и перезапустите Legcord.", - "setup_question2": "Выберите свой канал/экземпляр Discord:", - "setup_question3": "Должен ли Legcord заниматься установкой клиентских модов?", - "yes": "Да", - "no": "Нет", - "next": "Далее", - "setup_question4": "Выберите клиентский мод, который хотите установить:", - "settings-theme": "Стиль окна", - "settings-theme-default": "По умолчанию", - "settings-theme-native": "Системная", - "settings-tray": "Трей", - "settings-channel": "Канал Discord", - "settings-invitewebsocket": "Статус активности", - "settings-mod": "Клиентский мод", - "settings-prfmMode": "Режим производительности", - "settings-prfmMode-performance": "Производительность", - "settings-prfmMode-battery": "Экономия батареи", - "settings-none": "Не используется", - "settings-save": "Сохранить настройки", - "settings-updater": "Проверить наличие обновлений", - "settings-mobileMode": "Мобильный режим", - "settings-csp-desc": "Legcord CSP это наша система, которая управляет загрузкой пользовательского контента в приложение Discord. Такие вещи как клиентские моды и темы зависят от неё. Отключите, если хотите избавиться от модов и пользовательских стилей.", - "settings-tray-desc": "Переключатель для значка Legcord в трее", - "settings-pluginsFolder": "Открыть папку плагинов", - "settings-themesFolder": "Открыть папку тем", - "settings-storageFolder": "Открыть папку хранилища", - "settings-mobileMode-desc": "Если вы пользуетесь устройством с сенсорным экраном, эта функция для вас! Она активирует скрытый мобильный режим, предназначенный для телефонов и планшетов. Единственная недостающая функция - поддержка голосового чата. Это идеально подходит\n для пользователей PinePhone и подобных устройств.", - "settings-invitewebsocket-desc": "Использует arRPC чтобы поддерживать Discord RPC (Статус активности) с локальными программами на вашем компьютере.", - "settings-mod-desc1": "Клиентские моды - это программы, которые позволяют вам настроить работу с Discord. Они могут изменять внешний вид клиента, изменять поведение или добавлять новые возможности!", - "settings-trayIcon": "Иконка области уведомлений", - "settings-trayIcon-desc": "Установите значок, который будет отображаться в области уведомлений.", - "settings-advanced": "️ Расширенная пользовательская зона", - "settings-restart": "Перезапустить приложение", - "settings-mod-vencord": "легкий и простой в использовании клиентский мод. Имеет встроенный магазин для плагинов.", - "settings-copyDebugInfo": "Скопировать отладочную информацию", - "settings-prfmMode-desc": "Режим производительности - это экспериментальная функция, которая может либо увеличить отзывчивость и производительность Legcord, либо. . . снизить их. Пожалуйста, попробуйте все варианты и посмотрите, какой подходит вам больше всего.", - "settings-trayIcon-dynamic": "Динамический", - "settings-trayIcon-normal": "Значок Discord", - "settings-trayIcon-classic": "Классический значок Discord", - "settings-trayIcon-colored-plug": "Цветная вилка", - "settings-trayIcon-white-plug": "Белый штекер", - "settings-trayIcon-white-plug-alt": "Белый штекер Alt", - "settings-trayIcon-black-plug": "Черная вилка", - "settings-trayIcon-black-plug-alt": "Черный штекер Alt", - "settings-experimental": "Экспериментальный", - "settings-skipSplash": "Пропустить заставку", - "settings-skipSplash-desc": "Пропускает экран-заставку Legcord при запуске приложения.", - "settings-startMinimized": "Запуск свернутым", - "settings-startMinimized-desc": "Legcord запускается в фоновом режиме и не мешает вам.", - "settings-crashesFolder": "Открыть родную папку сбоев", - "settings-forceNativeCrash": "Принудительный сбой", - "settings-disableAutogain": "Отключение автогейна", - "settings-disableAutogain-desc": "Отключает автогейн.", - "settings-theme-transparent": "Прозрачный", - "settings-useLegacyCapturer": "Использование устаревшего устройства захвата", - "settings-useLegacyCapturer-desc": "Использовать устаревший модуль screenshare вместо нового. Если у вас возникли проблемы с общим доступом к экрану, попробуйте включить эту функцию.", - "settings-spellcheck": "Проверка орфографии", - "settings-spellcheck-desc": "Помогает исправить неправильно написанные слова, выделяя их.", - "setup_question5": "Вы хотите использовать значок в трее?", - "settings-mintoTray": "Работа в фоновом режиме", - "settings-mintoTray-desc": "При отключении Legcord будет закрываться как любое другое окно при закрытии, в противном случае он будет сидеть и отдыхать в системном трее.", - "settings-MultiInstance": "Множество Экземпляров", - "settings-MultiInstance-desc": "Когда включено, вы можете запустить множество экземпляров Legcord.", - "settings-copyGPUInfo": "Копировать информацию о GPU", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Использовать плавную прокрутку", - "settings-smoothScroll-desc": "Включить плавную прокрутку", - "settings-autoScroll": "Разрешить автоматическую прокрутку", - "settings-autoScroll-desc": "Разрешить автоматическую прокрутку при нажатии средней кнопки мыши (Примечание: ваша среда рабочего стола все еще может переопределить это с помощью другого действия)", - "settings-theme-desc": "Стиль окна определяет какой заголовок окна будет использовать Legcord.", - "settings-channel-desc": "Используйте эту настройку, чтобы изменить текущий экземпляр Discord, запущенный Legcord.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio": "Audio", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/sk-SK.json b/assets/lang/sk-SK.json deleted file mode 100644 index 5c8663a..0000000 --- a/assets/lang/sk-SK.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_offline": "Zdá sa, že ste offline. Pripojte sa k internetu a skúste to znova.", - "settings-disableAutogain-desc": "Disables autogain.", - "settings-startMinimized": "Start minimized", - "settings-trayIcon-white-plug-alt": "White Plug Alt", - "settings-trayIcon-dynamic": "Dynamic", - "settings-spellcheck-desc": "Helps you correct misspelled words by highlighting them.", - "settings-theme-default": "Default", - "settings-skipSplash": "Skip Splash Screen (Experimental)", - "settings-forceNativeCrash": "Force native crash", - "settings-trayIcon-white-plug": "White Plug", - "settings-mod-vencord": "lightweight, and easy to use client mod. Features a built-in store for plugins.", - "settings-trayIcon": "Tray icon", - "settings-prfmMode-battery": "Battery", - "settings-prfmMode": "Performance mode", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "setup_question2": "Choose your Discord channel/instance:", - "next": "Next", - "settings-spellcheck": "Spellcheck", - "no": "No", - "settings-updater": "Check for updates", - "settings-theme": "Legcord theme", - "settings-mintoTray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-MultiInstance": "Multi Instance", - "settings-storageFolder": "Open storage folder", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-restart": "Restart App", - "settings-prfmMode-performance": "Performance", - "yes": "Yes", - "settings-mobileMode": "Mobile mode", - "setup_question4": "Select a client mod you want to install:", - "settings-theme-native": "Native", - "settings-themesFolder": "Open themes folder", - "setup_offline": "You appear to be offline. Please connect to the internet and restart Legcord.", - "setup_question1": "Welcome to the Legcord Setup", - "settings-copyDebugInfo": "Copy Debug Info", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-skipSplash-desc": "Skips Legcord splash screen when you start up the app.", - "setup_question3": "Should Legcord handle client mods installation?", - "settings-MultiInstance-desc": "When enabled you'll be able to start up many instances of Legcord.", - "settings-useLegacyCapturer-desc": "Use legacy screenshare module, instead of the new one. If you're experiencing issues with screen sharing, try enabling this.", - "settings-invitewebsocket-desc": "Uses arRPC to support Discord RPC (Rich Presence) with local programs on your machine. Work in progress.", - "settings-theme-transparent": "Transparent", - "settings-crashesFolder": "Open native crashes folder", - "settings-trayIcon-black-plug": "Black Plug", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of\n Legcord or… decrease it. Please try every option and see which fits you the best.", - "settings-channel": "Discord channel", - "settings-mod": "Client mod", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-advanced": "Advanced user zone", - "loading_screen_start": "Začiatok Legcord..", - "setup_question5": "Do you want to use a tray icon?", - "settings-invitewebsocket": "Rich Presence (Experimental)", - "settings-save": "Save Settings", - "settings-tray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax in your system tray for later.", - "settings-useLegacyCapturer": "Use legacy capturer", - "settings-startMinimized-desc": "Legcord starts in background and remains out of your way.", - "settings-pluginsFolder": "Open plugins folder", - "settings-tray": "Tray", - "settings-trayIcon-normal": "Discord Icon", - "settings-mintoTray": "Minimize to tray", - "settings-trayIcon-colored-plug": "Colored Plug", - "settings-trayIcon-classic": "Classic Discord Icon", - "settings-disableAutogain": "Disable autogain", - "loading_screen_update": "A new version of Legcord is available. Please update to the latest version.", - "settings-experimental": "Experimental", - "settings-none": "None", - "settings-csp-desc": "Legcord CSP is our system that manages loading custom content loading into the Discord app. Stuff like\n client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-clearClientModCache": "Clear client mod cache", - "settings-category-behaviour": "Behaviour", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options" -} diff --git a/assets/lang/sv-SE.json b/assets/lang/sv-SE.json deleted file mode 100644 index f86c129..0000000 --- a/assets/lang/sv-SE.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Startar Legcord…", - "loading_screen_offline": "Du verkar vara offline. Starta om i ", - "loading_screen_update": "En ny version av Legcord är tillgänglig. Var snäll och uppdatera till den senaste versionen.", - "setup_question1": "Välkommen till Legcord Setup", - "setup_offline": "Du verkar vara offline. Var snäll och anslut till internet och omstarta Legcord.", - "setup_question2": "Välj din Discord kanal/instans:", - "setup_question3": "Ska Legcord ta hantera installationen av klientmodifikationer?", - "yes": "Ja", - "no": "Nej", - "next": "Nästa", - "setup_question4": "Välj en klientmodifikation som du vill installera:", - "settings-theme": "Legcord tema", - "settings-theme-default": "Standard", - "settings-theme-native": "Inbyggd", - "settings-mod": "Klientmodifikation", - "settings-prfmMode-performance": "Prestanda", - "settings-csp-desc": "Legcord CSP är vårt system som hanterar laddning av custom innehåll i the Discord appen. Saker som\n klientmodifikationer och teman beror på det. Inaktivera ifall du vill ta bort modikationer och custom stiler.", - "settings-tray": "Tray", - "settings-tray-desc": "Ifall inaktiverad, Så kommer Legcord stängas likadant som andra fönster, annar så kommer den hänga i din system tray tills vidare.", - "settings-mobileMode": "Mobilt läge", - "settings-mobileMode-desc": "Ifall du är på en enhet med touch skärm denna funktionen är till dig! Den aktiverar Discords hemliga mobil läge\n menat för mobiler och plattor. Den enda stora funktionen som saknas är voice chat support. Detta är passande för\n användare av PinePhone eller liknande.", - "settings-channel": "Discordkanal", - "settings-invitewebsocket": "Rich Presence (Experimentell)", - "settings-invitewebsocket-desc": "Använder sig av arRPC för Discord RPC (Rich Presence) funktionalitet, med lokala program på din enhet. Work in progress.", - "settings-mod-desc1": "Klientmodifikationer är program som tillåter dig att anpassa din Discord upplevelse. De kan ändra utseende på\n klienten, modifiera beteende eller lägga till nya funktioner!", - "settings-prfmMode": "Prestandaläge", - "settings-prfmMode-battery": "Batteri", - "settings-trayIcon": "Tray ikonen", - "settings-trayIcon-desc": "Sätter ikonen som visas i traymenyn.", - "settings-advanced": "️Avancerade användarzonen", - "settings-pluginsFolder": "Öppna plugins mappen", - "settings-themesFolder": "Öppna themes mappen", - "settings-storageFolder": "Öppna storage mappen", - "settings-none": "None", - "settings-save": "Spara Inställningarna", - "settings-updater": "Sök efter uppdateringar", - "settings-restart": "Starta om appen", - "settings-mod-vencord": "En klientmodifikation som är lätt och enkel att använda. Har en inbyggd plugin-butik.", - "settings-prfmMode-desc": "Prestandaläget är en experimentell funktion som kan antigen öka responsiviteten eller prestandan i\n Legcord eller... sänka det. Försök varje inställning för att se vad som passar bäst.", - "settings-trayIcon-dynamic": "Dynamisk", - "settings-trayIcon-normal": "Discord Ikonen", - "settings-trayIcon-classic": "Klassiska Discord Ikonen", - "settings-trayIcon-colored-plug": "Färgad kontakt", - "settings-trayIcon-white-plug": "Vit Kontakt", - "settings-trayIcon-white-plug-alt": "Vit Kontakt Alt", - "settings-trayIcon-black-plug": "Svart Kontakt", - "settings-trayIcon-black-plug-alt": "Svart Kontakt Alt", - "settings-experimental": "Experimentell", - "settings-skipSplash": "Skippa Splashskärmen (Experimentell)", - "settings-skipSplash-desc": "Skippar Legcord splashskärmen när du startar appen.", - "settings-copyDebugInfo": "Kopiera Debug Info", - "settings-startMinimized": "Kör minimerad", - "settings-startMinimized-desc": "Legcord kör i bakgunden och håller sig ur vägen för dig.", - "settings-crashesFolder": "Öppna native crashes mappen", - "settings-forceNativeCrash": "Tvinga native crash", - "settings-disableAutogain": "Inaktivera autogain", - "settings-disableAutogain-desc": "Inaktiverar autogain.", - "settings-theme-transparent": "Transparent", - "settings-useLegacyCapturer": "Använd legacy capturer", - "settings-useLegacyCapturer-desc": "Använd legacy skärmdelnings modulen, istället för den nya. Ifall du har problem med skärmdelning, försöka att aktivera detta.", - "settings-spellcheck": "Stavningskontroll", - "settings-spellcheck-desc": "Hjälper dig att rätta till misstavda ord genom att markera dem.", - "setup_question5": "Vill du använda en ikon i systembrickan?", - "settings-mintoTray": "Kör i bakgrunden", - "settings-mintoTray-desc": "Ifall inaktiverad, Så kommer Legcord stängas likadant som andra fönster, annar så kommer den hänga \n i din system tray tills vidare.", - "settings-MultiInstance": "Multi instans", - "settings-MultiInstance-desc": "När detta är aktiverat kommer du att kunna starta många instanser av Legcord.", - "settings-copyGPUInfo": "Kopiera GPU information", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Använd mjuk rullning", - "settings-smoothScroll-desc": "Växla mjuk rullning", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio": "Audio", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/th-TH.json b/assets/lang/th-TH.json deleted file mode 100644 index 7b50c14..0000000 --- a/assets/lang/th-TH.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "กำลังเริ่มต้น Legcord…", - "loading_screen_offline": "ดูเหมือนว่าคุณออฟไลน์อยู่ โปรดเชื่อมต่ออินเทอร์เน็ตและลองใหม่อีกครั้ง", - "loading_screen_update": "Legcord เวอร์ชันใหม่พร้อมใช้งานแล้ว โปรดอัปเดตเป็นเวอร์ชันล่าสุด", - "setup_question1": "เลือกประเภทการติดตั้งที่คุณต้องการ:", - "setup_offline": "ดูเหมือนว่าคุณออฟไลน์อยู่ โปรดเชื่อมต่ออินเทอร์เน็ตและลองเริ่ม Legcord ใหม่อีกครั้ง", - "setup_question2": "เลือกช่อง/อินสแตนส์ Discord:", - "setup_question3": "ต้องการให้ Legcord จัดการการติดตั้งมอดของไคลเอนต์หรือไม่?", - "yes": "ใช่", - "no": "ไม่ใช่", - "next": "ถัดไป", - "setup_question4": "เลือกไคลเอนต์มอดที่ต้องการติดตั้ง:", - "settings-prfmMode-battery": "ประหยัดแบตเตอรี่", - "settings-theme": "ธีม Legcord", - "settings-theme-default": "ค่าเริ่มต้น", - "settings-theme-native": "ดั้งเดิม", - "settings-tray": "ย่อขนาดหน้าต่าง", - "settings-channel": "ช่อง Discord:", - "settings-invitewebsocket": "ใช้ Websocket สำหรับการเชิญ", - "settings-prfmMode": "โหมดประสิทธิภาพ:", - "settings-prfmMode-performance": "ประสิทธิภาพสูงสุด", - "settings-mod": "ไคลแอนต์มอด:", - "settings-none": "ไม่มี", - "settings-save": "บันทึกการตั้งค่า", - "settings-updater": "ตรวจหาการอัปเดต", - "settings-mobileMode": "โหมดมือถือ", - "settings-mobileMode-desc": "If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile\n mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for\n users on PinePhone and similar.", - "settings-trayIcon": "Tray icon", - "settings-csp-desc": "Legcord CSP คือระบบที่จัดการการโหลดเนื้อหากำหนดเองลงไปในแอป Discord สิ่งอย่างเช่น สิ่งอย่างเช่น\n ไคลแอนต์มอด ธีม ต้องใช้มัน สามารถปิดใช้งานได้หากต้องการปิดมอดและหน้าตากำหนดเอง", - "settings-tray-desc": "เมื่อปิด Legcord จะปิดเหมือนหน้าตาอื่น ๆ เมื่อปิด ไม่อย่างนั้นมันจะนั่งนิ่ง\n ในถาดระบบภายหลัง", - "settings-invitewebsocket-desc": "When enabled Legcord will support Discord.gg links which means that if you open an invite link in your\n browser, Legcord will automatically accept the invite. Can be unresponsive at times.", - "settings-mod-desc1": "Client mods are programs that allow you customize your Discord experience. They can change appearance of\n the client, modify behaviours or add new features!", - "settings-trayIcon-desc": "Set the icon which will appear in tray menu.", - "settings-advanced": "️Advanced user zone", - "settings-pluginsFolder": "Open plugins folder", - "settings-themesFolder": "Open themes folder", - "settings-storageFolder": "Open storage folder", - "settings-restart": "Restart App", - "settings-mod-vencord": "lightweight, and easy to use client mod. Features a built-in store for plugins.", - "settings-prfmMode-desc": "Performance mode is an experimental function that may either increase responsiveness and performance of\n Legcord or... decrease it. Please try every option and see which fits you the best.", - "settings-trayIcon-dynamic": "Dynamic", - "settings-trayIcon-normal": "Discord Icon", - "settings-trayIcon-classic": "Classic Discord Icon", - "settings-trayIcon-colored-plug": "Colored Plug", - "settings-trayIcon-white-plug": "White Plug", - "settings-trayIcon-white-plug-alt": "White Plug Alt", - "settings-trayIcon-black-plug": "Black Plug", - "settings-trayIcon-black-plug-alt": "Black Plug Alt", - "settings-experimental": "Experimental", - "settings-skipSplash": "Skip Splash Screen (Experimental)", - "settings-skipSplash-desc": "Skips Legcord splash screen when you start up the app.", - "settings-copyDebugInfo": "Copy Debug Info", - "settings-startMinimized": "Start minimized", - "settings-startMinimized-desc": "Legcord starts in background and remains out of your way.", - "settings-crashesFolder": "Open native crashes folder", - "settings-forceNativeCrash": "Force native crash", - "settings-disableAutogain": "Disable autogain", - "settings-disableAutogain-desc": "Disables autogain.", - "settings-theme-transparent": "Transparent (Experimental)", - "settings-useLegacyCapturer": "Use legacy capturer", - "settings-useLegacyCapturer-desc": "Use legacy screenshare module, instead of the new one. If you're experiencing issues with screen sharing, try enabling this.", - "settings-spellcheck": "Spellcheck", - "settings-spellcheck-desc": "Helps you correct misspelled words by highlighting them.", - "setup_question5": "Do you want to use a tray icon?", - "settings-mintoTray": "Minimize to tray", - "settings-mintoTray-desc": "When disabled, Legcord will close like any other window when closed, otherwise it'll sit back and relax\n in your system tray for later.", - "settings-MultiInstance": "Multi Instance", - "settings-MultiInstance-desc": "When enabled you'll be able to start up many instances of Legcord.", - "settings-copyGPUInfo": "Copy GPU Info", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/tr-TR.json b/assets/lang/tr-TR.json deleted file mode 100644 index 4351368..0000000 --- a/assets/lang/tr-TR.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "setup_question4": "Yüklemek istediğiniz bir istemci modunu seçin:", - "settings-channel": "Discord kanalı", - "settings-prfmMode-performance": "Performans", - "loading_screen_start": "Legcord Başlatılıyor…", - "loading_screen_offline": "Çevrimdışı görünüyorsunuz. Lütfen internete bağlanın ve tekrar deneyin. ", - "loading_screen_update": "Legcord'un yeni bir sürümü mevcut. Lütfen son sürüme güncelleyin.", - "settings-storageFolder": "Depolama klasörünü aç", - "setup_question1": "Legcord Kurulumuna Hoş Geldiniz", - "setup_offline": "Çevrimdışı görünüyorsunuz. Lütfen internete bağlanın ve Legcord'u yeniden başlatın.", - "setup_question2": "Discord türünüzü seçiniz:", - "setup_question3": "Legcord istemci modlarının kurulumunu yapmalı mı?", - "yes": "Evet", - "no": "Hayır", - "next": "İleri", - "settings-theme": "Pencere stili", - "settings-theme-default": "Varsayılan", - "settings-theme-native": "Sistem", - "settings-csp-desc": "Legcord CSP, Discord uygulamasına özel içerik yükleme işlemini yöneten sistemimizdir. İstemci modları ve temalar buna bağlıdır. Modlardan ve özel stillerden kurtulmak istiyorsanız devre dışı bırakın.", - "settings-tray": "Görev çubuğuna küçült", - "settings-tray-desc": "Legcord'un bir tepsi simgesine sahip olup olmayacağını ayarla", - "settings-mobileMode": "Mobil mod", - "settings-mobileMode-desc": "Eğer dokunmatik ekranı olan bir cihazdaysanız bu özellik tam size göre! Discord'un telefonlar ve tabler için yapılmış gizli mobil modunu aktif eder. Olmayan tek büyük özellik sesli sohbet desteği. PinePhone'da ve benzeri cihazlarda olan kullanıcıları için ideal.", - "settings-invitewebsocket": "Zengin Varlık", - "settings-invitewebsocket-desc": "Makinenizdeki yerel programlarla Discord RPC'yi (Zengin Varlık) desteklemek için arRPC kullanır.", - "settings-mod": "Uygulama modu", - "settings-mod-desc1": "Uygulama modları Discord deneyiminizi düzenlemenizi sağlayan programlardır. Uygulamanın\ngörünüşünü ve davranışını değiştirir veya yeni özellikler ekler!", - "settings-prfmMode": "Performans modu", - "settings-prfmMode-battery": "Pil", - "settings-trayIcon": "Tepsi simgesi", - "settings-trayIcon-desc": "Görev çubuğunda kullanılacak simgeyi belirleyin.", - "settings-advanced": "Gelişmiş kullanıcı bölgesi", - "settings-pluginsFolder": "Eklenti klasörünü aç", - "settings-themesFolder": "Tema klasörünü aç", - "settings-none": "Hiçbiri", - "settings-save": "Ayarları Kaydet", - "settings-updater": "Güncellemeleri kontrol et", - "settings-restart": "Uygulamayı Yeniden Başlat", - "settings-mod-vencord": "Hafif yükte, kullanımı kolay bir uygulama modu. Pluginler için uygulama içine yerleşmiş bir mağazaya sahip.", - "settings-prfmMode-desc": "Performans modu, yanıt süresini ve Legcord'un performansını geliştiren ya da azaltan deneysel bir özelliktir.\nLütfen bütün seçenekleri deneyin ve hangisi size daha uygun görün.", - "settings-trayIcon-dynamic": "Dinamik", - "settings-trayIcon-normal": "Discord Simgesi", - "settings-trayIcon-classic": "Klasik Discord Simgesi", - "settings-trayIcon-colored-plug": "Renkli Fiş", - "settings-trayIcon-white-plug": "Beyaz Fiş", - "settings-trayIcon-white-plug-alt": "Beyaz Fiş Alt", - "settings-trayIcon-black-plug": "Siyah Fiş", - "settings-trayIcon-black-plug-alt": "Siyah Fiş Alt", - "settings-experimental": "Deneysel", - "settings-skipSplash": "Uygulama Öncesi Ekranı Atla (Deneysel)", - "settings-skipSplash-desc": "Uygulamayı başlatınca, Legcord uygulama öncesi ekranını atlar.", - "settings-copyDebugInfo": "Hata Ayıklama Bilgisini Kopyala", - "settings-startMinimized": "Simge durumuna küçültülmüş olarak başlat", - "settings-startMinimized-desc": "Legcord arka planda başlar ve ayak altında dolaşmaz.", - "settings-crashesFolder": "Yerel crash dosyalarını aç", - "settings-forceNativeCrash": "Yerel crash zorla", - "settings-disableAutogain": "Autogain'i devre dışı bırak", - "settings-disableAutogain-desc": "Autogain'i kapatır.", - "settings-theme-transparent": "Şeffaf", - "settings-useLegacyCapturer": "Eski yakalayıcıyı kullanın", - "settings-useLegacyCapturer-desc": "Yeni modül yerine eski ekran paylaşımı modülünü kullanın. Ekran paylaşımı ile ilgili sorunlar yaşıyorsanız, bunu etkinleştirmeyi deneyin.", - "settings-spellcheck": "Yazım Denetimi", - "settings-spellcheck-desc": "Yanlış yazılmış kelimeleri işaretleyerek onları düzeltmenize yardım eder.", - "setup_question5": "Tepsi simgesi kullanmak istiyor musunuz?", - "settings-mintoTray": "Arkaplanda çalış", - "settings-mintoTray-desc": "Devre dışı bırakıldığında, Legcord kapatıldığında diğer pencereler gibi kapanacaktır. Aksi takdirde, sistem tepsinizde sonrası için beklerken arkasına yaslanıp keyfine bakacaktır.", - "settings-MultiInstance": "Çoklu oturum", - "settings-MultiInstance-desc": "Etkinleştirildiğinde Legcord'un birçok oturum ile başlatabileceksiniz.", - "settings-copyGPUInfo": "GPU Bilgilerini Kopyala", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Yumuşak kaydırmayı kullan", - "settings-smoothScroll-desc": "Yumuşak kaydırmayı aç/kapat", - "settings-autoScroll": "Otomatik kaydırmaya izin ver", - "settings-autoScroll-desc": "Orta tuş ile otomatik kaydırmaya izin ver (Not: Masaüstü ortamınız bunu başka bir eylemle geçersiz kılabilir)", - "settings-theme-desc": "Pencere stili Legcord'un kullandığı başlık çubuğunu kontrol eder.", - "settings-channel-desc": "Legcord'un çalıştırdığı mevcut Discord örneğini değiştirmek için bu ayarı kullanın.", - "settings-hardwareAcceleration": "Donanım ivmelendirmesi", - "settings-hardwareAcceleration-desc": "Donanım hızlandırma, Legcord'u daha hızlı çalıştırmak için GPU'nuzu kullanır. Eğer görüntü sorunları yaşıyorsanız, bunu kapatmayı deneyin.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/uk-UA.json b/assets/lang/uk-UA.json deleted file mode 100644 index 9cf6db2..0000000 --- a/assets/lang/uk-UA.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "loading_screen_start": "Запуск Legcord…", - "loading_screen_offline": "Здається, ви не в мережі. Перезапуск через ", - "settings-channel": "\"Екземпляр\" Discord", - "settings-invitewebsocket": "Rich Presence (Експерементально)", - "loading_screen_update": "Доступна нова версія Legcord. Будь ласка, оновіться до останньої версії.", - "setup_question1": "Вітаємо до Legcord", - "setup_offline": "Здається, ви не в мережі. Перевірте підключення до Інтернету та перезавантажте Legcord.", - "setup_question2": "Оберіть \"екземпляр\" Discord:", - "setup_question3": "Чи має Legcord займатися встановленням клієнтських модифікацій?", - "yes": "Так", - "no": "Ні", - "next": "Наступне", - "setup_question4": "Оберіть клієнтський мод який ви хочете встановити:", - "settings-theme": "Стіль вікна", - "settings-theme-default": "Стандартна", - "settings-theme-native": "Нативна", - "settings-theme-transparent": "Прозора", - "settings-csp-desc": "Legcord CSP це наша система, яка керує завантаженням контенту користувача в додаток Discord. Такі речі як клієнтські модіфікації та теми залежать від неї. Відключіть, якщо хочете позбутися модів і стилів користувача.", - "settings-tray": "Трей", - "settings-tray-desc": "Якщо вимкнено, Legcord закриватиметься, як і будь-яке інше вікно, коли буде закрито, інакше він візме і розслабиться у системному треї.", - "settings-startMinimized": "Запускати Legcord згорнутим у трей", - "settings-startMinimized-desc": "Legcord запускається у фоновому режимі та не заважає вам.", - "settings-useLegacyCapturer": "Використовувати застарілий спосіб захоплення екрану", - "settings-mobileMode-desc": "Якщо ви використовуєте пристрій з сенсорним єкраном ця функція для вас! Ця функція активує скриту мобільну версію Discord. Нажаль, у цьому режимі не працює голосовий чат. Це ідеально підходить для користувачів з PinePhone і аналогічних.", - "settings-invitewebsocket-desc": "Використовує arRPC для підтримки Discord RPC (Rich Presence) з програмами на вашому комп'ютері. В роботі.", - "settings-useLegacyCapturer-desc": "Використовуйте застарілий спосіб захоплення екрану замість нового. Якщо у вас виникли проблеми із захопленням екрану, спробуйте увімкнути цю функцію.", - "settings-mobileMode": "Мобільна версія Discord", - "settings-mod": "Клієнтський мод", - "settings-mod-desc1": "Клієнтські модифікації — це програми, які дозволяють налаштовувати ваш досвід з Discord. Вони можуть змінювати зовнішній вигляд та поведінку або додати нові функції до Discord!", - "settings-mod-vencord": "легкий і простий у використанні клієнтський мод. Має вбудований магазин для плагінів.", - "settings-prfmMode": "Режим продуктивності", - "settings-prfmMode-desc": "Режим продуктивності – це експериментальна функція, яка може підвищити швидкість реакції та продуктивність\n Legcord або… змаеншити. Будь ласка, спробуйте кожен варіант і виберіть, який вам підходить найкраще.", - "settings-prfmMode-performance": "Продуктивність", - "settings-prfmMode-battery": "Батарея", - "settings-disableAutogain": "Вимкнути автоматичне посилення", - "settings-disableAutogain-desc": "Вимикає автоматичне посилення.", - "settings-trayIcon": "Значок у треї", - "settings-trayIcon-desc": "Встановлює значок, який з’являтиметься в треї.", - "settings-trayIcon-dynamic": "Динамічний", - "settings-trayIcon-normal": "Значок Discord", - "settings-trayIcon-classic": "Класичний значок Discord", - "settings-trayIcon-colored-plug": "Кольоровий штекер", - "settings-trayIcon-white-plug": "Білий штекер", - "settings-trayIcon-white-plug-alt": "Альт. білий штекер", - "settings-trayIcon-black-plug": "Чорний штекер", - "settings-trayIcon-black-plug-alt": "Альт. чорний штекер", - "settings-advanced": "Зона для досвідчених", - "settings-pluginsFolder": "Відкрити теку з плагінами", - "settings-crashesFolder": "Відкрити рідну папку збоїв", - "settings-themesFolder": "Відкрити теку з темами", - "settings-storageFolder": "Відкрити теку зберігання", - "settings-none": "Жоден", - "settings-save": "Зберегти налаштування", - "settings-experimental": "Експереминтальні", - "settings-restart": "Перезапустити", - "settings-updater": "Перевірити наявність оновлень", - "settings-skipSplash": "Пропустити заставку (Експериментально)", - "settings-skipSplash-desc": "Пропускає заставку Legcord під час запуску програми.", - "settings-copyDebugInfo": "Копіювати інформацію про налагодження", - "settings-forceNativeCrash": "Примусовий нативний збій", - "settings-spellcheck": "Перевірка орфографії", - "settings-spellcheck-desc": "Допомагає виправити неправильно написані слова, виділяючи їх.", - "setup_question5": "Ви бажаєте використовувати піктограму в треї?", - "settings-mintoTray": "Згорнути в трей", - "settings-mintoTray-desc": "Коли вимкнено, Legcord закриється, як і будь-яке інше вікно, інакше він буде відпочивати в системному треї до кращих часів.", - "settings-MultiInstance": "Кілька екземплярів", - "settings-MultiInstance-desc": "Якщо увімкнено, ви зможете запустити багато екземплярів Legcord.", - "settings-copyGPUInfo": "Скопіювати інформацію про GPU", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll-desc": "Перемкнути м'яку прокрутку", - "settings-smoothScroll": "Використовувати м'яку прокрутку", - "settings-autoScroll": "Дозволити авто-прокрутку", - "settings-autoScroll-desc": "Дозволити авто-прокрутку середньої кнопкою миші (Помітка: ваша оболочка рабочого стола все ще може замініти це іншою дією)", - "settings-channel-desc": "Використовуйте це налаштування, щоб змінити поточний канал Discord наразі запущенний Discord.", - "settings-theme-desc": "Стиль вікна керує тим, яку заголовочну строку використовує Legcord.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} diff --git a/assets/lang/zh-Hans.json b/assets/lang/zh-Hans.json deleted file mode 100644 index 7710a9c..0000000 --- a/assets/lang/zh-Hans.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "settings-theme-default": "默认", - "settings-tray": "托盘", - "loading_screen_update": "发现Legcord新版本。请更新至最新版。", - "loading_screen_start": "正在启动Legcord…", - "setup_question1": "欢迎进入Legcord安装向导", - "loading_screen_offline": "您看起来离线了,即将自动重启: ", - "setup_offline": "您看起来离线了。请连接至网络并重启Legcord。", - "setup_question2": "选择您的Discord频道或实例:", - "settings-updater": "检查更新", - "setup_question3": "需要Legcord来处理客户端模组的安装吗?", - "yes": "是", - "no": "否", - "next": "下一步", - "setup_question4": "选择您想安装的客户端模组:", - "settings-theme": "Legcord主题", - "settings-theme-native": "原生", - "settings-csp-desc": "Legcord CSP是我们用以管理读取加载至 Discord app的定制内容的系统. 诸如\n 客户端模组与主题依赖该系统的支持. 若您想关闭模组与定制内容,请禁用它.", - "settings-tray-desc": "当被禁用时,Legcord将和其他窗口一样在关闭时退出,否则它将在您的系统托盘里稍稍休憩。", - "settings-mobileMode": "移动端模式", - "settings-mobileMode-desc": "如果您正使用触摸屏设备,该功能正适合您!它能启用Discord为手机与平板设计的\n 移动端模式。唯一缺失的主要功能为语音聊天。\n 此功能最适合使用PinePhone或类似设备的用户。", - "settings-channel": "Discord频道", - "settings-invitewebsocket": "Rich Presence(实验性功能)", - "settings-invitewebsocket-desc": "使用 arRPC 以支持Discord RPC(Rich Presence)连接本地程序。正在实现中。", - "settings-mod": "客户端模组", - "settings-mod-desc1": "客户端模组是用来帮助您定制Discord使用体验的程序。\n 它们可以更改客户端的外观,修改一些行为或添加新的功能!", - "settings-prfmMode": "性能模式", - "settings-prfmMode-performance": "性能模式", - "settings-prfmMode-battery": "省电模式", - "settings-trayIcon": "托盘图标", - "settings-trayIcon-desc": "设置在托盘菜单显示的图标.", - "settings-advanced": "高级用户区域", - "settings-pluginsFolder": "打开插件文件夹", - "settings-themesFolder": "打开主题文件夹", - "settings-storageFolder": "打开存储文件夹", - "settings-none": "无", - "settings-save": "保存设置", - "settings-restart": "重启App", - "settings-mod-vencord": "轻量且易用的客户端模组,具有内置的插件商店。", - "settings-prfmMode-desc": "性能模式是一种可能增强Legcord响应速度与表现的实验性功能\n 但也有可能…出现相反的效果。请试试各种设定并找到最适合您与您设备的设置。", - "settings-trayIcon-dynamic": "动态", - "settings-trayIcon-normal": "Discord图标", - "settings-trayIcon-classic": "经典Discord图标", - "settings-trayIcon-colored-plug": "彩色插头", - "settings-trayIcon-white-plug": "白色插头", - "settings-trayIcon-white-plug-alt": "白色插头Alt", - "settings-trayIcon-black-plug": "黑色插头", - "settings-trayIcon-black-plug-alt": "黑色插头Alt", - "settings-experimental": "实验性的", - "settings-skipSplash": "跳过启动画面(实验性功能)", - "settings-skipSplash-desc": "启动时跳过Legcord的启动画面。", - "settings-copyDebugInfo": "复制调试信息", - "settings-startMinimized": "启动时最小化", - "settings-startMinimized-desc": "Legcord在后台启动,不对您造成影响。", - "settings-crashesFolder": "打开原生崩溃文件夹", - "settings-forceNativeCrash": "强制原生崩溃", - "settings-disableAutogain": "禁用自动增益", - "settings-disableAutogain-desc": "禁用自动增益。", - "settings-theme-transparent": "透明", - "settings-useLegacyCapturer": "使用旧版屏幕捕获", - "settings-useLegacyCapturer-desc": "使用旧版屏幕分享模块替换新版。如果您在分享屏幕时遇到问题,可以尝试启用此选项。", - "settings-spellcheck": "拼写检查", - "settings-spellcheck-desc": "高亮显示拼写错误的词语以便于改正。", - "setup_question5": "您希望使用托盘图标吗?", - "settings-mintoTray": "最小化至托盘", - "settings-mintoTray-desc": "禁用后,Legcord 将和其他窗口一样在关闭时退出,\n 否则它将在您的系统托盘里稍稍休憩。", - "settings-MultiInstance": "允许多实例", - "settings-MultiInstance-desc": "启用后,您将可以启动多个Legcord实例。", - "settings-copyGPUInfo": "复制显卡信息", - "settings-prfmMode-vaapi": "VAAPI", - "settings-smoothScroll": "Use smooth scrolling", - "settings-smoothScroll-desc": "Toggle smooth scrolling", - "settings-autoScroll": "Allow auto-scroll", - "settings-autoScroll-desc": "Allow auto-scrolling with middle-click (Note: Your desktop environment can still override this with another action)", - "settings-theme-desc": "Window style manages what titlebar Legcord uses.", - "settings-channel-desc": "Use this setting to change current instance of Discord that Legcord is running.", - "settings-hardwareAcceleration": "Hardware acceleration", - "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio": "Audio", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-clearClientModCache": "Clear client mod cache", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options" -} diff --git a/assets/lang/zh-Hant.json b/assets/lang/zh-Hant.json deleted file mode 100644 index 2dce860..0000000 --- a/assets/lang/zh-Hant.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "setup_question1": "歡迎來到 Legcord 設定精靈", - "settings-startMinimized": "啟動時隱藏視窗", - "settings-theme-native": "系統主題", - "settings-MultiInstance": "多重視窗", - "settings-mobileMode": "手機模式", - "settings-spellcheck": "拼字檢查", - "loading_screen_offline": "目前沒有網路連接。將重新啟動的剩餘秒數: ", - "settings-disableAutogain-desc": "停用自動增加音量", - "settings-trayIcon-white-plug-alt": "白色 Legcord 圖示(替代)", - "settings-trayIcon-dynamic": "動態", - "settings-spellcheck-desc": "幫助修正拼字錯誤的單字。", - "settings-theme-desc": "視窗風格管理 Legcord 的視窗外觀", - "settings-theme-default": "預設", - "settings-skipSplash": "跳過啟動視窗", - "settings-forceNativeCrash": "強制崩潰", - "settings-trayIcon-white-plug": "白色 Legcord 圖示", - "settings-mod-vencord": "輕量好用的模組管理器。擁有豐富的模組商店。", - "settings-trayIcon": "狀態欄圖示", - "settings-prfmMode-battery": "省電", - "settings-prfmMode": "性能模式", - "settings-trayIcon-black-plug-alt": "黑色 Legcord 圖示(替代)", - "setup_question2": "請選擇 Discord 發行版種類", - "next": "繼續", - "no": "否", - "settings-autoScroll": "允許自動捲動", - "settings-smoothScroll": "使用滑順捲動", - "settings-updater": "檢查更新", - "settings-autoScroll-desc": "允許中鍵點擊自動捲動(可能不會產生效果)", - "settings-mintoTray-desc": "此將在不開啟視窗下顯示於狀態欄。停用後,Legcord 將如同其他應用程式般關閉視窗", - "settings-theme": "視窗風格", - "settings-storageFolder": "開啟 Legcord 資料夾", - "settings-mobileMode-desc": "將介面改為為手機使用者所設計的介面。", - "settings-restart": "重新啟動應用程式", - "settings-prfmMode-performance": "性能", - "yes": "是", - "setup_question4": "選擇模組管理器:", - "settings-themesFolder": "開啟主題資料夾", - "setup_offline": "目前沒有網路連接。請重新連接網路並重新啟動 Legcord。", - "settings-copyDebugInfo": "複製除錯資訊", - "settings-mod-desc1": "模組管理器能給 Discord 帶來更多的客製化。它們能改變 Discord 外觀、行為、以及新增更多功能!", - "settings-skipSplash-desc": "開啟 Legcord 時跳過啟動畫面。", - "settings-invitewebsocket-desc": "利用 arRPC 以支援 Discord RPC", - "setup_question3": "Legcord 應該管理模組安裝過程嗎?", - "settings-MultiInstance-desc": "允許 Legcord 一次啟動多個視窗", - "settings-useLegacyCapturer-desc": "若在螢幕分享時發生問題可以啟用此設定", - "settings-theme-transparent": "透明", - "settings-crashesFolder": "開啟崩潰日誌", - "settings-trayIcon-black-plug": "黑色 Legcord 圖示", - "settings-channel": "Discord 發行版", - "settings-prfmMode-desc": "性能模式為實驗性功能。它雖然有可能能如字面上的提升性能,但也可能反過來降低性能。您可以自行測試看看哪種模式對您而言是最好的。", - "settings-mod": "模組管理器", - "settings-trayIcon-desc": "選擇將於狀態欄中顯示的圖示。", - "settings-advanced": "進階設定", - "loading_screen_start": "正在啟動…", - "setup_question5": "您想要使用狀態欄圖示嗎?", - "settings-invitewebsocket": "個人「正在玩遊戲」狀態(Rich Presence)", - "settings-save": "儲存設定", - "settings-prfmMode-vaapi": "VAAPI", - "settings-tray-desc": "在狀態欄中顯示 Legcord 圖示", - "settings-useLegacyCapturer": "使用舊版螢幕分享", - "settings-startMinimized-desc": "Legcord 在背景中啟動並且不佔到您的工作空間。", - "settings-pluginsFolder": "開啟模組資料夾", - "settings-tray": "狀態欄", - "settings-trayIcon-normal": "Discord 圖示", - "settings-mintoTray": "在背景中執行", - "settings-copyGPUInfo": "複製顯卡資訊", - "settings-trayIcon-colored-plug": "彩色 Legcord 圖示", - "settings-trayIcon-classic": "經典 Discord 圖示", - "settings-disableAutogain": "停用自動增加音量", - "loading_screen_update": "有新的 Legcord 版本。請更新到最新版本。", - "settings-none": "無", - "settings-experimental": "實驗性", - "settings-smoothScroll-desc": "開啟滑順捲動", - "settings-channel-desc": "在此更改 Discord 發行版本。", - "settings-csp-desc": "Legcord CSP 是載入自訂內容到 Discord 應用程式的系統,如模組與主題。關閉以刪除所有自訂主題與模組。", - "settings-hardwareAcceleration": "硬體加速", - "settings-hardwareAcceleration-desc": "開啟硬體加速功能,透過GPU 使 Legcord 更順暢。若您遇到畫面播放速率下降的問題,請關閉此功能。", - "settings-disableHttpCache": "Disable HTTP cache", - "settings-disableHttpCache-desc": "Disables HTTP cache of Chromium. Turn this on if client mods don't load for you.", - "settings-mod-equicord": "forked and born from vencord contributors, featuring a pretty plugin-rich client.", - "settings-audio-desc": "Select which method Legcord uses to grab audio from your system during screenshare.", - "settings-audio": "Audio", - "settings-theme-overlay": "Overlay", - "settings-category-behaviour": "Behaviour", - "settings-category-mods": "Mods", - "settings-category-lookAndFeel": "Look and feel", - "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options", - "settings-clearClientModCache": "Clear client mod cache" -} From fd686e73998ab37ee0d924e16dd79a82967d3fee Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sat, 9 Aug 2025 16:40:00 +0200 Subject: [PATCH 743/896] chore: translations update [skip ci] Co-authored-by: smartfridge --- assets/lang/pl.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 assets/lang/pl.json diff --git a/assets/lang/pl.json b/assets/lang/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/pl.json @@ -0,0 +1 @@ +{} From a7f548af15ada8ed302ad4dd2d3dd553edb6cac9 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 9 Aug 2025 16:55:18 +0200 Subject: [PATCH 744/896] feat: patch vencord quick css with legcord's --- assets/app/js/patchVencordQuickCSS.js | 8 ++++++++ src/discord/preload/patches.mts | 1 + 2 files changed, 9 insertions(+) create mode 100644 assets/app/js/patchVencordQuickCSS.js diff --git a/assets/app/js/patchVencordQuickCSS.js b/assets/app/js/patchVencordQuickCSS.js new file mode 100644 index 0000000..50fb58b --- /dev/null +++ b/assets/app/js/patchVencordQuickCSS.js @@ -0,0 +1,8 @@ +// dirty hack to replace Vencord's quick css editor with Legcord's +// fixes the white window bug + +if (window.VencordNative) { + VencordNative.quickCss.openEditor = function openEditor() { + window.legcord.themes.openQuickCss() + } +} \ No newline at end of file diff --git a/src/discord/preload/patches.mts b/src/discord/preload/patches.mts index a604611..449fe6d 100644 --- a/src/discord/preload/patches.mts +++ b/src/discord/preload/patches.mts @@ -61,6 +61,7 @@ async function load() { } addStyle("legcord://assets/css/discord.css"); }); + injectJS("legcord://assets/js/patchVencordQuickCSS.js"); // Settings info version injection setInterval(() => { const host = document.querySelector('[class*="sidebar"] [class*="info"]'); From 33256006ed7d1a7d2511b868306accb6db063a20 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 9 Aug 2025 17:06:00 +0200 Subject: [PATCH 745/896] fix: lint CI --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 06225b2..6c9f7ec 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,6 +11,6 @@ jobs: - name: Setup Biome uses: biomejs/setup-biome@v2 with: - version: latest + version: 1.9.4 - name: Run Biome run: biome ci . --reporter=github From 0231884f3111ea8b48b179a0a983e85a29e1a5d3 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 10 Aug 2025 07:47:57 +0200 Subject: [PATCH 746/896] chore: translations update [skip ci] Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Co-authored-by: smartfridge Translate-URL: https://hosted.weblate.org/projects/armcord/client/pl/ Translation: Legcord/Client --- assets/lang/ar.json | 1 + assets/lang/cs.json | 1 + assets/lang/da.json | 1 + assets/lang/de.json | 1 + assets/lang/es_419.json | 1 + assets/lang/fa.json | 1 + assets/lang/fi.json | 1 + assets/lang/fil.json | 1 + assets/lang/fr.json | 1 + assets/lang/hu.json | 1 + assets/lang/id.json | 1 + assets/lang/it.json | 1 + assets/lang/ja.json | 1 + assets/lang/ko.json | 1 + assets/lang/lt.json | 1 + assets/lang/nb_NO.json | 1 + assets/lang/nl.json | 1 + assets/lang/pl.json | 6 +++++- assets/lang/pt_BR.json | 1 + assets/lang/pt_PT.json | 1 + assets/lang/ro.json | 1 + assets/lang/ru.json | 1 + assets/lang/sk.json | 1 + assets/lang/sv.json | 1 + assets/lang/ta.json | 1 + assets/lang/th.json | 1 + assets/lang/tr.json | 1 + assets/lang/uk.json | 1 + assets/lang/zh_Hans.json | 1 + assets/lang/zh_Hant.json | 1 + 30 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 assets/lang/ar.json create mode 100644 assets/lang/cs.json create mode 100644 assets/lang/da.json create mode 100644 assets/lang/de.json create mode 100644 assets/lang/es_419.json create mode 100644 assets/lang/fa.json create mode 100644 assets/lang/fi.json create mode 100644 assets/lang/fil.json create mode 100644 assets/lang/fr.json create mode 100644 assets/lang/hu.json create mode 100644 assets/lang/id.json create mode 100644 assets/lang/it.json create mode 100644 assets/lang/ja.json create mode 100644 assets/lang/ko.json create mode 100644 assets/lang/lt.json create mode 100644 assets/lang/nb_NO.json create mode 100644 assets/lang/nl.json create mode 100644 assets/lang/pt_BR.json create mode 100644 assets/lang/pt_PT.json create mode 100644 assets/lang/ro.json create mode 100644 assets/lang/ru.json create mode 100644 assets/lang/sk.json create mode 100644 assets/lang/sv.json create mode 100644 assets/lang/ta.json create mode 100644 assets/lang/th.json create mode 100644 assets/lang/tr.json create mode 100644 assets/lang/uk.json create mode 100644 assets/lang/zh_Hans.json create mode 100644 assets/lang/zh_Hant.json diff --git a/assets/lang/ar.json b/assets/lang/ar.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/ar.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/cs.json b/assets/lang/cs.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/cs.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/da.json b/assets/lang/da.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/da.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/de.json b/assets/lang/de.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/de.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/es_419.json b/assets/lang/es_419.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/es_419.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/fa.json b/assets/lang/fa.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/fa.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/fi.json b/assets/lang/fi.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/fi.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/fil.json b/assets/lang/fil.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/fil.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/fr.json b/assets/lang/fr.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/fr.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/hu.json b/assets/lang/hu.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/hu.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/id.json b/assets/lang/id.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/id.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/it.json b/assets/lang/it.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/it.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/ja.json b/assets/lang/ja.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/ja.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/ko.json b/assets/lang/ko.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/ko.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/lt.json b/assets/lang/lt.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/lt.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/nb_NO.json b/assets/lang/nb_NO.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/nb_NO.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/nl.json b/assets/lang/nl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/nl.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/pl.json b/assets/lang/pl.json index 0967ef4..a59af8d 100644 --- a/assets/lang/pl.json +++ b/assets/lang/pl.json @@ -1 +1,5 @@ -{} +{ + "loading_screen_start": "Uruchamianie Legcord…", + "loading_screen_offline": "Wygląda na to, że jesteś offline. Ponowne uruchomienie za ", + "loading_screen_update": "Nowa wersja Legcord jest dostępna. Proszę zaktualizować do najnowszej wersji." +} diff --git a/assets/lang/pt_BR.json b/assets/lang/pt_BR.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/pt_BR.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/pt_PT.json b/assets/lang/pt_PT.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/pt_PT.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/ro.json b/assets/lang/ro.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/ro.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/ru.json b/assets/lang/ru.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/ru.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/sk.json b/assets/lang/sk.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/sk.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/sv.json b/assets/lang/sv.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/sv.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/ta.json b/assets/lang/ta.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/ta.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/th.json b/assets/lang/th.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/th.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/tr.json b/assets/lang/tr.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/tr.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/uk.json b/assets/lang/uk.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/uk.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/zh_Hans.json b/assets/lang/zh_Hans.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/zh_Hans.json @@ -0,0 +1 @@ +{} diff --git a/assets/lang/zh_Hant.json b/assets/lang/zh_Hant.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/assets/lang/zh_Hant.json @@ -0,0 +1 @@ +{} From 79edb1422137983961c18e3adc267363a254e7df Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sat, 16 Aug 2025 02:01:57 +0200 Subject: [PATCH 747/896] chore: translations update [skip ci] Co-authored-by: Mirko P Translate-URL: https://hosted.weblate.org/projects/armcord/client/de/ Translation: Legcord/Client --- assets/lang/de.json | 135 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 1 deletion(-) diff --git a/assets/lang/de.json b/assets/lang/de.json index 0967ef4..4ae4dc2 100644 --- a/assets/lang/de.json +++ b/assets/lang/de.json @@ -1 +1,134 @@ -{} +{ + "loading_screen_start": "Legcord starten…", + "loading_screen_offline": "Sie scheinen offline zu sein. Starten Sie neu in ", + "loading_screen_update": "Eine neue Version von Legcord ist verfügbar. Bitte aktualisieren Sie auf die neueste Version.", + "setup_question1": "Willkommen bei der Legcord-Einrichtung", + "setup_offline": "Sie scheinen offline zu sein. Bitte stellen Sie eine Verbindung zum Internet her und starten Sie Legcord neu.", + "setup_question2": "Wählen Sie Ihren Discord-Kanal/Ihre Discord-Instanz aus:", + "setup_question3": "Sollte Legcord die Installation von Client-Mods übernehmen?", + "yes": "Ja", + "no": "Nein", + "next": "Weiter", + "setup_question4": "Wählen Sie einen Client-Mod aus, den Sie installieren möchten:", + "setup_question5": "Möchten Sie ein Taskleistensymbol verwenden?", + "settings-bounceOnPing": "Bounce im Dock bei Ping", + "settings-bounceOnPing-desc": "Wenn Sie einen Ping erhalten, lassen Sie die App im Dock aufspringen.", + "settings-theme": "Fenster-Design", + "settings-theme-desc": "Der Fensterstil legt fest, welche Titelleiste Legcord verwendet.", + "settings-theme-default": "Standard (Benutzerdefiniert)", + "settings-theme-native": "Native", + "settings-theme-overlay": "Überlagerung", + "settings-autoHideMenuBar": "Menüleiste automatisch ausblenden", + "settings-autoHideMenuBar-desc": "Menüleiste automatisch ausblenden, wenn sie nicht verwendet wird.", + "settings-sleepInBackground": "Im Hintergrund schlafen", + "settings-sleepInBackground-desc": "Aktiviert die Hintergrunddrosselung von Chromium. Dies kann dazu beitragen, die Akkulaufzeit zu verlängern, führt jedoch auch dazu, dass Benachrichtigungen nicht mehr funktionieren.", + "settings-transparency": "Transparenz", + "settings-transparency-desc": "Legen Sie den von Legcord verwendeten Transparenzmodus fest.", + "settings-transparency-universal": "Universell", + "settings-transparency-modern": "Modern", + "settings-theme-transparent": "Transparent", + "settings-popoutPiP": "Popup-Fenster immer im Vordergrund anzeigen", + "settings-popoutPiP-desc": "Wenn diese Option aktiviert ist, wird das Anruf-Popup im Modus „Immer im Vordergrund“ angezeigt.", + "settings-venmic-workaround": "Umgehungslösung", + "settings-venmic-workaround-desc": "Aktivieren oder deaktivieren Sie die Problemumgehung für ein Problem, das dazu führt, dass das Mikrofon anstelle des korrekten Audiosignals geteilt wird.", + "settings-venmic-deviceSelect": "Geräteauswahl", + "settings-venmic-deviceSelect-desc": "Wählen Sie ein Audiogerät aus.", + "settings-venmic-granularSelect": "Granulare Auswahl", + "settings-venmic-granularSelect-desc": "Ermöglicht die Auswahl einer Audioeingangsquelle.", + "settings-venmic-ignoreVirtual": "Virtuelle Geräte ignorieren", + "settings-venmic-ignoreVirtual-desc": "Virtuelle Audiogeräte ignorieren.", + "settings-venmic-ignoreDevices": "Geräte ignorieren", + "settings-venmic-ignoreDevices-desc": "Bestimmte Audiogeräte ignorieren.", + "settings-venmic-ignoreInputMedia": "Eingabemedien ignorieren", + "settings-venmic-ignoreInputMedia-desc": "Audioeingänge von Medienquellen ignorieren.", + "settings-venmic-onlySpeakers": "Nur Lautsprecher", + "settings-venmic-onlySpeakers-desc": "Verwenden Sie Lautsprecher nur für die Audioauswahl.", + "settings-venmic-onlyDefaultSpeakers": "Nur Standardlautsprecher", + "settings-venmic-onlyDefaultSpeakers-desc": "Verwenden Sie für die Audioauswahl nur die Standardlautsprecher.", + "settings-audio": "Audio", + "settings-audio-desc": "Wählen Sie aus, welche Methode Legcord verwendet, um während der Bildschirmfreigabe Audio von Ihrem System aufzunehmen.", + "settings-openCustomIconDialog": "Desktop-Symbol festlegen", + "settings-csp-desc": "Legcord CSP ist unser System, der das Laden von benutzerdefinierten Inhalten in die Discord-App verwaltet. Dinge wie Client-Mods und Designs hängen davon ab. Deaktivieren Sie es, wenn Sie Mods und benutzerdefinierte Stile entfernen möchten.", + "settings-mintoTray": "Im Hintergrund arbeiten", + "settings-mintoTray-desc": "Wenn diese Option deaktiviert ist, wird Legcord wie jedes andere Fenster geschlossen, wenn es geschlossen wird. Andernfalls bleibt es in Ihrer Taskleiste für später gespeichert.", + "settings-startMinimized": "Minimiert starten", + "settings-startMinimized-desc": "Legcord startet im Hintergrund und bleibt Ihnen nicht im Weg.", + "settings-useSystemCssEditor": "System-CSS-Editor verwenden", + "settings-useSystemCssEditor-desc": "Verwenden Sie den System-CSS-Editor, um CSS zu bearbeiten.", + "settings-MultiInstance": "Mehrfachinstanz", + "settings-MultiInstance-desc": "Wenn diese Option aktiviert ist, können Sie mehrere Instanzen von Legcord starten.", + "settings-noBundleUpdates": "Keine Paket-Updates", + "settings-noBundleUpdates-desc": "Deaktiviert automatische Updates für Client-Mods.", + "settings-hardwareAcceleration": "Hardwarebeschleunigung", + "settings-hardwareAcceleration-desc": "Die Hardwarebeschleunigung nutzt Ihre GPU, um Legcord schneller laufen zu lassen. Wenn Sie Bildstörungen feststellen, deaktivieren Sie diese Funktion.", + "settings-blockPowerSavingInVoiceChat": "Energiesparmodus im Voice-Chat deaktivieren", + "settings-blockPowerSavingInVoiceChat-desc": "Verhindert, dass Legcord angehalten wird. Hält das System aktiv, ermöglicht jedoch das Ausschalten des Bildschirms.", + "settings-mobileMode": "Mobilmodus", + "settings-mobileMode-desc": "Wenn Sie ein Gerät mit Touchscreen verwenden, ist diese Funktion genau das Richtige für Sie! Sie aktiviert den versteckten Mobilmodus von Discord, der für Smartphones und Tablets gedacht ist. Die einzige wichtige Funktion, die fehlt, ist die Unterstützung für Voice-Chat. Dies ist ideal für\n Benutzer von PinePhone und ähnlichen Geräten.", + "settings-spellcheck": "Rechtschreibprüfung", + "settings-spellcheck-desc": "Hilft Ihnen, falsch geschriebene Wörter zu korrigieren, indem es sie hervorhebt.", + "settings-channel": "Discord-Kanal", + "settings-channel-desc": "Verwenden Sie diese Einstellung, um die aktuelle Instanz von Discord zu ändern, die Legcord ausführt.", + "settings-bitrateMin": "Mindestbitrate", + "settings-bitrateMin-desc": "Mindestbitrate für Bildschirmfreigabe.", + "settings-bitrateMax": "Maximale Bitrate", + "settings-bitrateMax-desc": "Maximale Bitrate für Bildschirmfreigabe.", + "settings-bitrateTarget": "Zielbitrate", + "settings-bitrateTarget-desc": "Zielbitrate für Bildschirmfreigabe.", + "settings-invitewebsocket": "Umfassende Präsenz", + "settings-invitewebsocket-desc": "Verwendet arRPC, um Discord RPC (Rich Presence) mit lokalen Programmen auf Ihrem Computer zu unterstützen.", + "settings-useMacSystemPicker": "Verwenden Sie die macOS-Systemauswahl", + "settings-useMacSystemPicker-desc": "Verwenden Sie nach Möglichkeit die native Bildschirmfreigabe von macOS. Nur macOS 15+", + "settings-additionalArguments": "Weitere Argumente", + "settings-additionalArguments-desc": "Zusätzliche Argumente sind zusätzliche Befehle, die Sie an Legcord übergeben können. Sie können verwendet werden, um Funktionen zu aktivieren oder zu deaktivieren oder um Probleme zu beheben.", + "settings-mod": "Client-Modifikation", + "settings-mod-desc1": "Client-Mods sind Programme, mit denen Sie Ihr Discord-Erlebnis individuell anpassen können. Sie können das Erscheinungsbild des Clients ändern, Verhaltensweisen modifizieren oder neue Funktionen hinzufügen!", + "settings-mod-vencord": "Leichter und benutzerfreundlicher Client-Mod. Mit integriertem Store für Plugins.", + "settings-mod-equicord": "Aus vencord-Mitwirkenden hervorgegangen, mit einem Client, der über zahlreiche Plugins verfügt.", + "settings-prfmMode": "Leistungsmodus", + "settings-prfmMode-desc": "Der Leistungsmodus ist eine experimentelle Funktion in Legcord, die darauf ausgelegt ist, die Reaktionsfähigkeit und Leistung entsprechend Ihren Anforderungen zu optimieren. Die Auswirkungen können je nach Ihrer Hardware und Nutzung variieren. Wir empfehlen Ihnen daher, jeden Modus auszuprobieren, um herauszufinden, welcher für Sie am besten geeignet ist.", + "settings-prfmMode-performance": "Leistung", + "settings-prfmMode-battery": "Batterie", + "settings-prfmMode-dynamic": "Dynamisch", + "settings-prfmMode-vaapi": "VAAPI", + "settings-disableAutogain": "Automatische Verstärkung deaktivieren", + "settings-disableAutogain-desc": "Deaktiviert die automatische Verstärkung.", + "settings-disableHttpCache": "HTTP-Cache deaktivieren", + "settings-disableHttpCache-desc": "Deaktiviert den HTTP-Cache von Chromium. Aktivieren Sie diese Option, wenn Client-Mods bei Ihnen nicht geladen werden.", + "settings-trayIcon": "Systemleistensymbol", + "settings-trayIcon-desc": "Legen Sie das Symbol fest, das im Tray-Menü angezeigt werden soll.", + "settings-trayIcon-disabled": "Deaktivieren Sie die Ablage", + "settings-trayIcon-dynamic": "Dynamisch", + "settings-trayIcon-normal": "Discord-Symbol", + "settings-trayIcon-classic": "Klassisches Discord-Symbol", + "settings-trayIcon-colored-plug": "Colored Plug", + "settings-trayIcon-white-plug": "White Plug", + "settings-trayIcon-white-plug-alt": "White Plug Alt", + "settings-trayIcon-black-plug": "Black Plug", + "settings-trayIcon-black-plug-alt": "Black Plug Alt", + "settings-advanced": "Fortgeschrittener Benutzerbereich", + "settings-pluginsFolder": "Plugins-Ordner öffnen", + "settings-crashesFolder": "Öffnen des Ordner Native Abstürze", + "settings-themesFolder": "Themenordner öffnen", + "settings-storageFolder": "Speicherordner öffnen", + "settings-none": "Keine", + "settings-save": "Einstellungen speichern", + "settings-experimental": "Experimentell", + "settings-restart": "App neu starten", + "settings-updater": "Auf Updates prüfen", + "settings-skipSplash": "Startbildschirm überspringen", + "settings-skipSplash-desc": "Überspringt den Legcord-Begrüßungsbildschirm beim Starten der App.", + "settings-copyDebugInfo": "Debug-Informationen kopieren", + "settings-copyGPUInfo": "GPU-Informationen kopieren", + "settings-clearClientModCache": "Client-Mod-Cache löschen", + "settings-forceNativeCrash": "Erzwinge systemeigenen Absturz", + "settings-smoothScroll": "Gleichmäßiges Scrollen verwenden", + "settings-smoothScroll-desc": "Reibungsloses Scrollen umschalten", + "settings-autoScroll": "Automatisches Scrollen zulassen", + "settings-autoScroll-desc": "Automatisches Scrollen mit der mittleren Maustaste zulassen (Hinweis: Ihre Desktop-Umgebung kann dies weiterhin mit einer anderen Aktion überschreiben)", + "settings-category-lookAndFeel": "Aussehen und Haptik", + "settings-category-mods": "Mods", + "settings-category-behaviour": "Verhalten", + "settings-category-legacy": "Legacy-Funktionen", + "settings-category-debug": "Fehlerbehebungsoptionen" +} From 319c6f08130d7d54508b7abffe9cdef6f55def17 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 16 Aug 2025 15:09:25 +0200 Subject: [PATCH 748/896] fix: macOS game detection --- .gitignore | 3 ++- package.json | 4 ++-- pnpm-lock.yaml | 28 ++++++++++++++-------------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 938d34c..6114dc2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ ts-out/ package-lock.json .pnpm-store .cache -.DS_Store \ No newline at end of file +.DS_Store +pnpm-workspace.yaml \ No newline at end of file diff --git a/package.json b/package.json index 1ab21bb..a141a9c 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "37.2.6", + "electron": "37.3.0", "electron-builder": "^26.0.18", "lucide-solid": "^0.475.0", "rolldown": "1.0.0-beta.31", @@ -55,7 +55,7 @@ "xml-formatter": "^3.6.6" }, "dependencies": { - "arrpc": "https://github.com/Legcord/arrpc.git#9abda032465847724d29db9aeeacc0b375c55a86", + "arrpc": "https://github.com/Legcord/arrpc.git#015c803a80288e3345ec55f8963015a626509007", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ed0331..dce5667 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: arrpc: - specifier: https://github.com/Legcord/arrpc.git#9abda032465847724d29db9aeeacc0b375c55a86 - version: https://codeload.github.com/Legcord/arrpc/tar.gz/9abda032465847724d29db9aeeacc0b375c55a86 + specifier: https://github.com/Legcord/arrpc.git#015c803a80288e3345ec55f8963015a626509007 + version: https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007 electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -23,10 +23,6 @@ importers: ws: specifier: ^8.18.0 version: 8.18.0 - optionalDependencies: - '@vencord/venmic': - specifier: ^6.1.0 - version: 6.1.0 devDependencies: '@babel/preset-flow': specifier: ^7.25.9 @@ -62,8 +58,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 37.2.6 - version: 37.2.6 + specifier: 37.3.0 + version: 37.3.0 electron-builder: specifier: ^26.0.18 version: 26.0.19(electron-builder-squirrel-windows@25.1.8) @@ -91,6 +87,10 @@ importers: xml-formatter: specifier: ^3.6.6 version: 3.6.6 + optionalDependencies: + '@vencord/venmic': + specifier: ^6.1.0 + version: 6.1.0 packages: @@ -1359,8 +1359,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/9abda032465847724d29db9aeeacc0b375c55a86: - resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/9abda032465847724d29db9aeeacc0b375c55a86} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007: + resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007} version: 3.5.0 hasBin: true @@ -1733,8 +1733,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@37.2.6: - resolution: {integrity: sha512-Ns6xyxE+hIK5UlujtRlw7w4e2Ju/ImCWXf1Q/PoOhc0N3/6SN6YW7+ujCarsHbxWnolbW+1RlkHtdklUJpjbPA==} + electron@37.3.0: + resolution: {integrity: sha512-cPOPUD26DwCh+PZ9q+gMyVBvdBN75SnekI6u5zcOeoLVIXQpzrCm1ewz9BcrkWkVW7oOtfQAEo1G1SffvXrSSw==} engines: {node: '>= 12.20.55'} hasBin: true @@ -4382,7 +4382,7 @@ snapshots: array-union@2.1.0: {} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/9abda032465847724d29db9aeeacc0b375c55a86: + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007: dependencies: koffi: 2.12.0 ws: 8.18.0 @@ -4895,7 +4895,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@37.2.6: + electron@37.3.0: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 From 53299982c074d3b8f2b2ddacc9babf9971f3aef7 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 25 Aug 2025 08:03:01 +0200 Subject: [PATCH 749/896] chore: translations update [skip ci] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Максим Горпиніч Translate-URL: https://hosted.weblate.org/projects/armcord/client/uk/ Translation: Legcord/Client --- assets/lang/uk.json | 135 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 1 deletion(-) diff --git a/assets/lang/uk.json b/assets/lang/uk.json index 0967ef4..841af47 100644 --- a/assets/lang/uk.json +++ b/assets/lang/uk.json @@ -1 +1,134 @@ -{} +{ + "loading_screen_start": "Початковий легкорд…", + "loading_screen_offline": "Схоже, ви не в мережі. Перезавантажте через ", + "loading_screen_update": "Доступна нова версія Legcord. Будь ласка, оновіть її до останньої версії.", + "setup_question1": "Ласкаво просимо до налаштування Legcord", + "setup_offline": "Схоже, ви не в мережі. Підключіться до Інтернету та перезапустіть Legcord.", + "setup_question2": "Оберіть свій канал/екземпляр Discord:", + "setup_question3": "Чи повинен Legcord займатися встановленням клієнтських модів?", + "yes": "Так", + "no": "Ні", + "next": "Далі", + "setup_question4": "Виберіть клієнтський мод, який ви хочете встановити:", + "setup_question5": "Ви хочете використовувати значок у треї?", + "settings-bounceOnPing": "Відскок у доці при пінг-інгу", + "settings-bounceOnPing-desc": "Перезавантажте додаток у доці, коли отримаєте пінг.", + "settings-theme": "Стиль вікна", + "settings-theme-desc": "Стиль вікна керує тим, що використовує Legcord у рядку заголовка.", + "settings-theme-default": "За замовчуванням (налаштування)", + "settings-theme-native": "Рідний", + "settings-theme-overlay": "Накладання", + "settings-autoHideMenuBar": "Автоматично приховувати рядок меню", + "settings-autoHideMenuBar-desc": "Автоматично приховувати рядок меню, коли він не використовується.", + "settings-sleepInBackground": "Сон у фоновому режимі", + "settings-sleepInBackground-desc": "Вмикає фонове регулювання Chromium. Це може допомогти заощадити заряд батареї, але також перериває сповіщення.", + "settings-transparency": "Прозорість", + "settings-transparency-desc": "Встановіть режим прозорості, який використовуватиме Legcord.", + "settings-transparency-universal": "Універсальний", + "settings-transparency-modern": "Сучасний", + "settings-theme-transparent": "Прозорий", + "settings-popoutPiP": "Виклик спливаючого вікна завжди зверху", + "settings-popoutPiP-desc": "Коли цю функцію ввімкнено, спливаюче вікно виклику буде в режимі «Завжди зверху».", + "settings-venmic-workaround": "Тимчасове вирішення", + "settings-venmic-workaround-desc": "Увімкнути або вимкнути тимчасове рішення для проблеми, яка призводить до спільного використання мікрофона замість правильного аудіо.", + "settings-venmic-deviceSelect": "Вибір пристрою", + "settings-venmic-deviceSelect-desc": "Дозволити вибір аудіопристрою.", + "settings-venmic-granularSelect": "Детальний вибір", + "settings-venmic-granularSelect-desc": "Дозволити вибір джерела аудіовхідного сигналу.", + "settings-venmic-ignoreVirtual": "Ігнорувати віртуальні пристрої", + "settings-venmic-ignoreVirtual-desc": "Ігноруйте віртуальні аудіопристрої.", + "settings-venmic-ignoreDevices": "Ігнорувати пристрої", + "settings-venmic-ignoreDevices-desc": "Ігноруйте певні аудіопристрої.", + "settings-venmic-ignoreInputMedia": "Ігнорувати вхідні медіафайли", + "settings-venmic-ignoreInputMedia-desc": "Ігноруйте аудіовхід з медіа-джерел.", + "settings-venmic-onlySpeakers": "Тільки динаміки", + "settings-venmic-onlySpeakers-desc": "Використовуйте динаміки лише для вибору аудіо.", + "settings-venmic-onlyDefaultSpeakers": "Тільки динаміки за замовчуванням", + "settings-venmic-onlyDefaultSpeakers-desc": "Використовуйте лише динаміки за замовчуванням для вибору аудіо.", + "settings-audio": "Аудіо", + "settings-audio-desc": "Виберіть метод, який Legcord використовуватиме для захоплення аудіо з вашої системи під час демонстрації екрана.", + "settings-openCustomIconDialog": "Встановити значок на робочому столі", + "settings-csp-desc": "Legcord CSP – це наша система, яка керує завантаженням користувацького контенту в додаток Discord. Від неї залежать такі речі, як клієнтські моди та теми. Вимкніть, якщо хочете позбутися модів та користувацьких стилів.", + "settings-mintoTray": "Робота у фоновому режимі", + "settings-mintoTray-desc": "Якщо вимкнено, Legcord закриється, як і будь-яке інше вікно, якщо його закрити, інакше він залишиться в системному треї на потім.", + "settings-startMinimized": "Почати згорнутий", + "settings-startMinimized-desc": "Легкорд починається на задньому плані та залишається поза вашими перешкодами.", + "settings-useSystemCssEditor": "Використовуйте системний редактор CSS", + "settings-useSystemCssEditor-desc": "Використовуйте системний редактор CSS для редагування CSS.", + "settings-MultiInstance": "Багато екземплярів", + "settings-MultiInstance-desc": "Після ввімкнення ви зможете запустити багато екземплярів Legcord.", + "settings-noBundleUpdates": "Немає оновлень пакетів", + "settings-noBundleUpdates-desc": "Вимикає автоматичні оновлення для клієнтських модів.", + "settings-hardwareAcceleration": "Апаратне прискорення", + "settings-hardwareAcceleration-desc": "Апаратне прискорення використовує ваш графічний процесор для пришвидшення роботи Legcord. Якщо у вас виникають візуальні збої, спробуйте вимкнути цю функцію.", + "settings-blockPowerSavingInVoiceChat": "Блокування енергозбереження в голосовому чаті", + "settings-blockPowerSavingInVoiceChat-desc": "Запобігає призупиненню Legcord. Залишає систему активною, але дозволяє вимкнути екран.", + "settings-mobileMode": "Мобільний режим", + "settings-mobileMode-desc": "Якщо ви користуєтеся пристроєм із сенсорним екраном, ця функція саме для вас! Вона активує прихований мобільний режим Discord, призначений для телефонів і планшетів. Єдина головна функція, якої бракує, — це підтримка голосового чату.\n Це ідеально підходить для користувачів PinePhone та подібних пристроїв.", + "settings-spellcheck": "Spellcheck'", + "settings-spellcheck-desc": "Допомагає виправити слова з орфографічними помилками, виділяючи їх.", + "settings-channel": "Канал Discord", + "settings-channel-desc": "Використовуйте цей параметр, щоб змінити поточний екземпляр Discord, на якому запущено Legcord.", + "settings-bitrateMin": "Мінімальний бітрейт", + "settings-bitrateMin-desc": "Мінімальний бітрейт для спільного використання екрана.", + "settings-bitrateMax": "Максимальний бітрейт", + "settings-bitrateMax-desc": "Максимальний бітрейт для спільного використання екрана.", + "settings-bitrateTarget": "Цільовий бітрейт", + "settings-bitrateTarget-desc": "Цільовий бітрейт для спільного використання екрана.", + "settings-invitewebsocket": "Багата присутність", + "settings-invitewebsocket-desc": "Використовує arRPC для підтримки Discord RPC (Rich Presence) з локальними програмами на вашому комп'ютері.", + "settings-useMacSystemPicker": "Використовуйте засіб вибору системи macOS", + "settings-useMacSystemPicker-desc": "Використовуйте вбудований спільний доступ до екрана macOS, коли це можливо. Тільки для macOS 15+", + "settings-additionalArguments": "Додаткові аргументи", + "settings-additionalArguments-desc": "Додаткові аргументи – це додаткові команди, які ви можете передавати Legcord. Їх можна використовувати для ввімкнення або вимкнення функцій або для виправлення проблем.", + "settings-mod": "Модифікація клієнта", + "settings-mod-desc1": "Модифікації клієнта – це програми, які дозволяють вам налаштувати ваш досвід користування Discord. Вони можуть змінювати зовнішній вигляд клієнта, модифікувати поведінку або додавати нові функції!", + "settings-mod-vencord": "Легкий та простий у використанні клієнтський мод. Має вбудований магазин плагінів.", + "settings-mod-equicord": "Розгалужений та створений завдяки розробникам Vencord, з досить багатим на плагіни клієнтом.", + "settings-prfmMode": "Режим продуктивності", + "settings-prfmMode-desc": "Режим продуктивності – це експериментальна функція в Legcord, розроблена для оптимізації швидкості реагування та продуктивності відповідно до ваших потреб. Вплив може відрізнятися залежно від вашого обладнання та використання, тому ми рекомендуємо вам спробувати кожен режим, щоб визначити, який найкраще підходить саме вам.", + "settings-prfmMode-performance": "Продуктивність", + "settings-prfmMode-battery": "Батарея", + "settings-prfmMode-dynamic": "Динамічний", + "settings-prfmMode-vaapi": "VAAPI", + "settings-disableAutogain": "Вимкнути автоматичне посилення", + "settings-disableAutogain-desc": "Вимикає автоматичне посилення.", + "settings-disableHttpCache": "Вимкнути кеш HTTP", + "settings-disableHttpCache-desc": "Вимикає HTTP-кеш Chromium. Увімкніть цю опцію, якщо клієнтські моди не завантажуються.", + "settings-trayIcon": "Піктограма трея", + "settings-trayIcon-desc": "Встановіть значок, який відображатиметься в меню трея.", + "settings-trayIcon-disabled": "Вимкнути лоток", + "settings-trayIcon-dynamic": "Динамічний", + "settings-trayIcon-normal": "Ікона Discord", + "settings-trayIcon-classic": "Класична ікона Discord", + "settings-trayIcon-colored-plug": "Кольорова вилка", + "settings-trayIcon-white-plug": "Біла вилка", + "settings-trayIcon-white-plug-alt": "Білий штекер Alt", + "settings-trayIcon-black-plug": "Чорна вилка", + "settings-trayIcon-black-plug-alt": "Чорний штекер Alt", + "settings-advanced": "Зона розширеного користувача", + "settings-pluginsFolder": "Відкрити папку плагінів", + "settings-crashesFolder": "Відкрити папку збоїв нативної системи", + "settings-themesFolder": "Відкрити папку тем", + "settings-storageFolder": "Відкрити папку сховища", + "settings-none": "Жоден", + "settings-save": "Зберегти налаштування", + "settings-experimental": "Експериментальний", + "settings-restart": "Перезапустіть програму", + "settings-updater": "Перевірити наявність оновлень", + "settings-skipSplash": "Пропустити заставку", + "settings-skipSplash-desc": "Пропускає заставку Legcord під час запуску програми.", + "settings-copyDebugInfo": "Копіювати інформацію про налагодження", + "settings-copyGPUInfo": "Копіювати інформацію про графічний процесор", + "settings-clearClientModCache": "Очистити кеш клієнтських модів", + "settings-forceNativeCrash": "Примусове збійне оновлення нативної системи", + "settings-smoothScroll": "Використовуйте плавне прокручування", + "settings-smoothScroll-desc": "Увімкнути/вимкнути плавне прокручування", + "settings-autoScroll": "Дозволити автоматичне прокручування", + "settings-autoScroll-desc": "Дозволити автоматичне прокручування клацанням середньою кнопкою миші (Примітка: ваше середовище робочого столу все ще може замінити це іншою дією)", + "settings-category-lookAndFeel": "Зовнішній вигляд і відчуття", + "settings-category-mods": "Моди", + "settings-category-behaviour": "Поведінка", + "settings-category-legacy": "Застарілі функції", + "settings-category-debug": "Параметри налагодження" +} From 75d8d235c3d7b502356e985b3ad1557b18399efd Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Wed, 10 Sep 2025 11:02:09 +0200 Subject: [PATCH 750/896] chore: translations update [skip ci] Co-authored-by: Nathan Translate-URL: https://hosted.weblate.org/projects/armcord/client/fr/ Translation: Legcord/Client --- assets/lang/fr.json | 134 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 133 insertions(+), 1 deletion(-) diff --git a/assets/lang/fr.json b/assets/lang/fr.json index 0967ef4..495eea4 100644 --- a/assets/lang/fr.json +++ b/assets/lang/fr.json @@ -1 +1,133 @@ -{} +{ + "loading_screen_start": "Démarrage de Legcord…", + "loading_screen_offline": "Vous semblez être hors-ligne. Redémarrage dans ", + "loading_screen_update": "Une nouvelle version de Legcord est disponible. Veuillez effectuer la mise à jour vers la dernière version.", + "setup_question1": "Bienvenue dans l'installation de Legcord", + "setup_offline": "Vous semblez être hors-ligne. Veuillez vous connecter à Internet et relancer Legcord.", + "setup_question2": "Sélectionnez votre canal/instance Discord :", + "yes": "Oui", + "no": "Non", + "next": "Suivant", + "settings-theme": "Style de fenêtre", + "settings-theme-desc": "Le style de fenêtre gère la barre de titre que doit utiliser Legcord.", + "settings-theme-default": "Par défaut (Personnalisé)", + "settings-theme-native": "Natif", + "settings-autoHideMenuBar": "Masquer automatiquement la barre de menu", + "settings-autoHideMenuBar-desc": "Masquer automatiquement la barre de menu lorsqu'elle n'est pas utilisée.", + "settings-transparency": "Transparence", + "settings-transparency-desc": "Définit le mode de transparence utilisé par Legcord.", + "settings-transparency-universal": "Universel", + "settings-transparency-modern": "Moderne", + "settings-theme-transparent": "Transparent", + "settings-venmic-deviceSelect": "Sélection du périphérique", + "settings-venmic-deviceSelect-desc": "Autoriser la sélection d'un périphérique audio.", + "settings-venmic-granularSelect-desc": "Autoriser la sélection d'une source d'entrée audio.", + "settings-venmic-ignoreVirtual": "Ignorer les périphériques virtuels", + "settings-venmic-ignoreVirtual-desc": "Ignorer les périphériques audio virtuels.", + "settings-venmic-ignoreDevices": "Ignorer les périphériques", + "settings-venmic-ignoreDevices-desc": "Ignorer des périphériques audio spécifiques.", + "settings-venmic-onlySpeakers": "Haut-parleurs uniquement", + "settings-venmic-onlySpeakers-desc": "Utiliser uniquement les hauts-parleurs pour la sélection audio.", + "settings-venmic-onlyDefaultSpeakers": "Hauts-parleurs par défaut uniquement", + "settings-venmic-onlyDefaultSpeakers-desc": "Utiliser uniquement les hauts-parleurs par défaut pour la sélection audio.", + "settings-audio": "Audio", + "settings-audio-desc": "Sélectionner la méthode utilisée par Legcord pour capter le son de votre système lors du partage d'écran.", + "settings-openCustomIconDialog": "Définir une icône de bureau", + "settings-startMinimized-desc": "Legcord démarre en arrière-plan sans vous déranger.", + "settings-useSystemCssEditor": "Utiliser l'éditeur CSS du système", + "settings-useSystemCssEditor-desc": "Utiliser l'éditeur CSS du système pour modifier le CSS.", + "settings-MultiInstance": "Multi-instances", + "settings-MultiInstance-desc": "Si activez vous pourrez lancer plusieurs instances de Legcord.", + "settings-hardwareAcceleration": "Accélération matérielle", + "settings-hardwareAcceleration-desc": "L'accélération matérielle utilise votre carte graphique pour rendre Legcord plus rapide. Si vous rencontrez des problèmes visuels, essayez de désactiver ceci.", + "settings-blockPowerSavingInVoiceChat": "Bloquer le mode économie d'énergie en tchat vocal", + "settings-blockPowerSavingInVoiceChat-desc": "Empêche Legcord d'être mis en veille. Laisse le système actif mais permet à l'écran de s'éteindre.", + "settings-mobileMode": "Mode mobile", + "settings-spellcheck": "Correction orthographique", + "settings-spellcheck-desc": "Aide à corriger les fautes d'orthographe en les mettant en avant.", + "settings-channel": "Canal Discord", + "settings-channel-desc": "Utiliser ce paramètre pour modifier l'instance Discord exécutée par Legcord.", + "settings-useMacSystemPicker": "Utiliser le sélecteur de macOS", + "settings-useMacSystemPicker-desc": "Utiliser le partage d'écran natif de macOS si possible. macOS 15+ uniquement", + "settings-additionalArguments": "Arguments supplémentaires", + "settings-additionalArguments-desc": "Les arguments supplémentaires sont des commandes additionnelles que vous pouvez passer à Legcord. Ils peuvent être utilisés pour activer ou désactiver des fonctionnalités, ou corriger des problèmes.", + "settings-prfmMode": "Mode performance", + "settings-prfmMode-desc": "Le mode performance est une fonctionnalité expérimentale de Legcord conçue pour optimiser la réactivité et les performances selon vos besoins. Son impact peut varier selon votre matériel et votre utilisation, c'est pourquoi nous vous encourageons à essayer chaque mode pour déterminer lequel vous correspond le mieux.", + "settings-prfmMode-performance": "Performance", + "settings-prfmMode-battery": "Batterie", + "settings-prfmMode-dynamic": "Dynamique", + "settings-prfmMode-vaapi": "VAAPI", + "settings-disableHttpCache": "Désactiver le cache HTTP", + "settings-trayIcon-dynamic": "Dynamique", + "settings-trayIcon-normal": "Icône Discord", + "settings-trayIcon-classic": "Icône Discord classique", + "settings-advanced": "Zone pour les utilisateurs avancés", + "settings-pluginsFolder": "Ouvrir le dossier des extensions", + "settings-themesFolder": "Ouvrir le dossier des thèmes", + "settings-none": "Aucun", + "settings-save": "Enregistrer les paramètres", + "settings-experimental": "Expérimental", + "settings-restart": "Relancer l'application", + "settings-updater": "Vérifier les mises à jour", + "settings-skipSplash": "Ignorer l'écran de chargement", + "settings-skipSplash-desc": "Ignore l'écran de chargement de Legcord lorsque vous lancez l'application.", + "settings-copyDebugInfo": "Copier les informations de débogage", + "settings-copyGPUInfo": "Copier les informations de la carte graphique", + "settings-smoothScroll": "Utiliser le défilement naturel", + "settings-smoothScroll-desc": "Activer ou désactiver le défilement naturel", + "settings-autoScroll": "Autoriser le défilement automatique", + "settings-autoScroll-desc": "Autoriser le défilement automatique avec un clic central (Note : Votre environnement de bureau peut toujours écraser ceci avec une autre action)", + "settings-category-lookAndFeel": "Apparence", + "settings-category-mods": "Mods", + "settings-category-behaviour": "Comportement", + "settings-category-legacy": "Fonctionnalités obsolètes", + "settings-category-debug": "Options de débogage", + "setup_question3": "Legcord doit-il gérer l'installation de mods ?", + "setup_question4": "Sélectionnez un mod que vous souhaitez installer :", + "setup_question5": "Voulez-vous afficher une icône dans la barre d'état ?", + "settings-bounceOnPing": "Rebondir dans le dock en cas de mention", + "settings-bounceOnPing-desc": "Fait rebondir l'application dans le dock lorsque vous recevez une mention.", + "settings-theme-overlay": "Overlay", + "settings-sleepInBackground": "Veille en arrière-plan", + "settings-sleepInBackground-desc": "Active la limitation en arrière-plan de Chromium. Ceci peut aider à économiser de la batterie mais désactive les notifications.", + "settings-popoutPiP": "Fenêtre d'appel toujours au premier plan", + "settings-popoutPiP-desc": "Si activé, la fenêtre d'appel sera toujours au premier plan.", + "settings-venmic-workaround": "Correctif", + "settings-venmic-workaround-desc": "Activer ou désactiver un correctif pour un problème partageant le micro au lieu de l'audio souhaité.", + "settings-venmic-ignoreInputMedia": "Ignorer les entrées de média", + "settings-venmic-ignoreInputMedia-desc": "Ignorer les entrées audio des sources de média.", + "settings-csp-desc": "Legcord CSP est notre système qui gère le chargement du contenu personnalisé dans l'application Discord. Des éléments tels que les mods et les thèmes en dépendent. Désactivez-le si vous souhaitez vous débarrasser des mods et des styles personnalisés.", + "settings-mintoTray": "Actif en arrière-plan", + "settings-mintoTray-desc": "Si désactivé, Legcord se fermera comme n'importe quelle autre fenêtre, sinon il restera actif dans la barre d'état pour plus tard.", + "settings-startMinimized": "Démarrer en mode minimisé", + "settings-noBundleUpdates": "Pas de mises à jour", + "settings-noBundleUpdates-desc": "Désactive les mises à jour automatique des mods.", + "settings-mobileMode-desc": "Si vous êtes sur un appareil doté d'un écran tactile cette fonctionnalité est faite pour vous ! Elle active le mode mobile caché de Discord conçu pour les téléphones et tablettes. La seule fonction majeure manquante est le tchat vocal. Idéal pour les utilisateurs de PinePhone ou équivalents.", + "settings-bitrateMin": "Débit minimal", + "settings-bitrateMin-desc": "Débit minimal pour le partage d'écran.", + "settings-bitrateMax": "Débit maximal", + "settings-bitrateMax-desc": "Débit maximal pour le partage d'écran.", + "settings-bitrateTarget": "Débit cible", + "settings-bitrateTarget-desc": "Débit cible pour le partage d'écran.", + "settings-invitewebsocket": "Rich Presence", + "settings-invitewebsocket-desc": "Utiliser arRPC pour prendre en charge Discord RPC (Rich Presebce) avec des programmes locaux sur votre machine.", + "settings-mod": "Mod", + "settings-mod-desc1": "Les mods sont des programmes qui vous permettent de personnaliser votre expérience dans Discord. Ils peuvent modifier l'apparence du client, modifier des comportements ou ajouter de nouvelles fonctionnalités !", + "settings-mod-vencord": "Mod client léger et facile à utiliser. Comporte une boutique intégrée pour les extensions.", + "settings-mod-equicord": "Issu des contributeurs de vencord, il dispose d'un client riche en extensions.", + "settings-disableAutogain": "Désactiver le gain automatique", + "settings-disableAutogain-desc": "Désactive le gain automatique.", + "settings-disableHttpCache-desc": "Désactive le cache HTTP de Chromium. Activez ceci si les mods ne chargent pas pour vous.", + "settings-trayIcon": "Icône dans la barre d'état", + "settings-trayIcon-desc": "Définir l'icône qui apparaîtra dans la barre d'état.", + "settings-trayIcon-disabled": "Désactiver l'icône dans la barre d'état", + "settings-trayIcon-colored-plug": "Prise colorée", + "settings-trayIcon-white-plug": "Prise blanche", + "settings-trayIcon-white-plug-alt": "Prise blanche alt", + "settings-trayIcon-black-plug": "Prise noire", + "settings-trayIcon-black-plug-alt": "Prise noire alt", + "settings-crashesFolder": "Ouvrir le dossier des plantages natifs", + "settings-storageFolder": "Ouvrir le dossier de stockage", + "settings-clearClientModCache": "Effacer le cache des mods", + "settings-forceNativeCrash": "Forcer un plantage natif" +} From b55a0f58bae0c633498948ddab054f96da6da2d0 Mon Sep 17 00:00:00 2001 From: googhigg <55514534+googhigg@users.noreply.github.com> Date: Wed, 10 Sep 2025 12:16:36 +0300 Subject: [PATCH 751/896] fix: change Dropdown module's colors to adapt to the chosen theme (#950) --- src/shelter/settings/components/Dropdown.module.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shelter/settings/components/Dropdown.module.css b/src/shelter/settings/components/Dropdown.module.css index bea5ec1..03b0d70 100644 --- a/src/shelter/settings/components/Dropdown.module.css +++ b/src/shelter/settings/components/Dropdown.module.css @@ -1,5 +1,5 @@ .acDropdown option { - color: #fff; + color: var(--text-secondary); font-weight: 400; font-style: normal; } @@ -18,7 +18,7 @@ background-repeat: no-repeat; border: 1px solid var(--background-floating); border-radius: 2px; - color: #fff; + color: var(--text-default); font-size: 1.2em; overflow: hidden; text-overflow: ellipsis; From 0fe7e2f2ac8d813fb858917096692c312245a64d Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 5 Oct 2025 15:17:15 +0200 Subject: [PATCH 752/896] feat: hero updater css --- .../components/HeroUpdater.module.css | 22 ++++--- .../settings/components/HeroUpdater.tsx | 61 ++++++++++++------- .../settings/components/ThemesCard.module.css | 7 ++- .../settings/components/ThemesCard.tsx | 2 +- 4 files changed, 56 insertions(+), 36 deletions(-) diff --git a/src/shelter/settings/components/HeroUpdater.module.css b/src/shelter/settings/components/HeroUpdater.module.css index c20cd31..ae8fb7d 100644 --- a/src/shelter/settings/components/HeroUpdater.module.css +++ b/src/shelter/settings/components/HeroUpdater.module.css @@ -1,13 +1,17 @@ .hero { - background: var(--background-surface-high); - border-radius: 0.5rem; - box-shadow: var(--shadow-elevation-2); - color: var(--text-on-surface); + background: var(--card-primary-bg); + border-radius: 8px; + box-shadow: 0 1.5px 6px rgba(0,0,0,0.08); + padding: 16px 20px; display: flex; flex-direction: column; - gap: 1rem; - padding: 2rem; - position: relative; - width: 100%; - z-index: 1; + align-items: center; + max-width: 400px; + margin: 32px auto; + border-radius: 8px; } + +.checkButton { + width: 120px !important; + max-width: 120px !important; +} \ No newline at end of file diff --git a/src/shelter/settings/components/HeroUpdater.tsx b/src/shelter/settings/components/HeroUpdater.tsx index 1e1d123..9d01a8b 100644 --- a/src/shelter/settings/components/HeroUpdater.tsx +++ b/src/shelter/settings/components/HeroUpdater.tsx @@ -1,15 +1,31 @@ import { createSignal } from "solid-js"; import classes from "./HeroUpdater.module.css"; -const LOGO_URL = "https://github.com/Legcord/Branding/raw/main/assets/legcord-banner.png"; // Replace with your logo +const { + ui: { + Button, + ButtonSizes, + Header, + HeaderTags, + Text, + ButtonColors, + }, +} = shelter; +const LOGO_URL = "https://github.com/Legcord/Branding/raw/main/assets/legcord-banner.png"; -function checkForUpdates() { - // Simulate checking for updates - return new Promise((resolve) => setTimeout(() => resolve(Math.random() > 0.5), 1200)); +async function checkForUpdates() { + const response = await fetch("https://legcord.app/latest.json"); + const data = await response.json(); + const remoteVersion = data.version.replace(/\./g, ""); // easy to compare + if (remoteVersion > window.legcord.version.replace(/\./g, "")) { + return true; + } else { + return false; + } } -const DOWNLOAD_URL = "https://example.com/download"; // Replace with your download page +const DOWNLOAD_URL = "https://legcord.app/download"; -const HeroUpdater = () => { +export const HeroUpdater = () => { const [checking, setChecking] = createSignal(false); const [updateAvailable, setUpdateAvailable] = createSignal(null); @@ -26,28 +42,27 @@ const HeroUpdater = () => { }; return ( -
    - Logo -

    Update Checker

    -

    Check if a new version is available and download updates easily.

    - +
    + Logo +
    Update Checker
    + Check if a new version is available and download updates easily. + {updateAvailable() === null && ( + + )} + {updateAvailable() === true && ( -
    -

    Update available!

    - -
    + + )} {updateAvailable() === false && ( -
    -

    Your app is up to date.

    -
    + Your app is up to date. )}
    ); }; - -export default HeroUpdater; diff --git a/src/shelter/settings/components/ThemesCard.module.css b/src/shelter/settings/components/ThemesCard.module.css index 392e622..9c7f529 100644 --- a/src/shelter/settings/components/ThemesCard.module.css +++ b/src/shelter/settings/components/ThemesCard.module.css @@ -35,9 +35,10 @@ filter: brightness(0) invert(1); } .mainInfo { - display: flex; flex-wrap: wrap; + align-items: baseline; + justify-content: center; gap: 5px; - align-items: center; - margin-bottom: 0.5rem; + margin-bottom: -0.5em; + display: flex; } diff --git a/src/shelter/settings/components/ThemesCard.tsx b/src/shelter/settings/components/ThemesCard.tsx index 49d62de..2cb5ee0 100644 --- a/src/shelter/settings/components/ThemesCard.tsx +++ b/src/shelter/settings/components/ThemesCard.tsx @@ -50,7 +50,7 @@ export const ThemesCard = (props: { theme: ThemeManifest }) => {
    -
    {props.theme.name}
    +
    {props.theme.name}
    by
    {props.theme.author} From 552004bdadacd0f8aac62e67cd53ae40b11d1ed3 Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 5 Oct 2025 15:43:48 +0200 Subject: [PATCH 753/896] fix: match titlebar height, with the topbar --- assets/app/css/baseTitlebar.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/app/css/baseTitlebar.css b/assets/app/css/baseTitlebar.css index 5667282..2cf840c 100644 --- a/assets/app/css/baseTitlebar.css +++ b/assets/app/css/baseTitlebar.css @@ -9,7 +9,7 @@ box-sizing: border-box; width: 100%; clear: both; - height: 36px; + height: var(--custom-app-top-bar-height); line-height: 30px; -webkit-app-region: drag !important; user-select: none; @@ -36,7 +36,7 @@ right: 0; top: 0; z-index: 99999999; - line-height: 36px; + line-height: var(--custom-app-top-bar-height); -webkit-app-region: no-drag; } From 90b23fa672517ead3fd0fc0b5eb7fee3dbe5f3c1 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sun, 5 Oct 2025 15:44:48 +0200 Subject: [PATCH 754/896] chore: bump electron --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index a141a9c..a3a11e8 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "37.3.0", + "electron": "38.2.1", "electron-builder": "^26.0.18", "lucide-solid": "^0.475.0", "rolldown": "1.0.0-beta.31", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dce5667..cbbe71b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,8 +58,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 37.3.0 - version: 37.3.0 + specifier: 38.2.1 + version: 38.2.1 electron-builder: specifier: ^26.0.18 version: 26.0.19(electron-builder-squirrel-windows@25.1.8) @@ -1733,8 +1733,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@37.3.0: - resolution: {integrity: sha512-cPOPUD26DwCh+PZ9q+gMyVBvdBN75SnekI6u5zcOeoLVIXQpzrCm1ewz9BcrkWkVW7oOtfQAEo1G1SffvXrSSw==} + electron@38.2.1: + resolution: {integrity: sha512-P4pE2RpRg3kM8IeOK+heg6iAxR5wcXnNHrbVchn7M3GBnYAhjfJRkROusdOro5PlKzdtfKjesbbqaG4MqQXccg==} engines: {node: '>= 12.20.55'} hasBin: true @@ -4895,7 +4895,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@37.3.0: + electron@38.2.1: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 From e68610a3ecee4235666fd170eb8021d8447bfa1c Mon Sep 17 00:00:00 2001 From: avarayr <7735415+avarayr@users.noreply.github.com> Date: Sun, 5 Oct 2025 14:34:41 -0400 Subject: [PATCH 755/896] fix: macos build error (#959) --- electron-builder.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/electron-builder.ts b/electron-builder.ts index 6e51afa..9674804 100644 --- a/electron-builder.ts +++ b/electron-builder.ts @@ -16,6 +16,7 @@ export const config: Configuration = { "com.apple.security.device.audio-input": true, "com.apple.security.device.camera": true, }, + x64ArchFiles: '{**/koffi.node}', }, linux: { From 53f383b487bd2e043b4e34a3c40057e85fe4aab8 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Thu, 9 Oct 2025 20:07:24 +0200 Subject: [PATCH 756/896] chore: translations update [skip ci] Co-authored-by: anukadszep Translate-URL: https://hosted.weblate.org/projects/armcord/client/hu/ Translation: Legcord/Client --- assets/lang/hu.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/lang/hu.json b/assets/lang/hu.json index 0967ef4..48e9701 100644 --- a/assets/lang/hu.json +++ b/assets/lang/hu.json @@ -1 +1,26 @@ -{} +{ + "loading_screen_start": "Legcord indítása…", + "loading_screen_update": "Egy új Legcord verzió érhető el. Kérlek frissítsd a legújabb verzióra.", + "setup_question1": "Üdvözöllek a Legcord Setup-ban", + "setup_offline": "Úgy tűnik hogy offline vagy. Kérlek csatlakozz internethez és inditsd újra a Legcordot.", + "setup_question2": "Válassz egy Discord csatornát/esetet:", + "setup_question3": "Vegye át a Legcord a kliens modok telepítését?", + "yes": "Igen", + "no": "Nem", + "next": "Következő", + "setup_question4": "Válassz egy kliens modot amit telepíteni szeretnél:", + "setup_question5": "Szeretnéd használni a tálcán lévő ikont?", + "settings-bounceOnPing": "Ugráljon a dock-ban pingeléskor", + "settings-bounceOnPing-desc": "Ugráljon az app a dock-ban hogyha megpingelnek.", + "settings-theme": "Ablakstílus", + "settings-theme-default": "Alapértelmezett (Egyedi)", + "settings-theme-native": "Natív", + "settings-theme-overlay": "Átfedés", + "settings-autoHideMenuBar": "Auto-elrejtse a menüsort", + "settings-autoHideMenuBar-desc": "Automatikusan elrejti a menüsort amikor nincsen használatban.", + "settings-sleepInBackground": "Aludjon a háttérben", + "settings-transparency": "Átláthatóság", + "settings-transparency-universal": "Univerzális", + "settings-transparency-modern": "Modern", + "settings-theme-transparent": "Átlátható" +} From d9e2b8fbdb7d96bfda558270098fd8589e6ab910 Mon Sep 17 00:00:00 2001 From: avarayr <7735415+avarayr@users.noreply.github.com> Date: Tue, 14 Oct 2025 05:25:59 -0400 Subject: [PATCH 757/896] feat: add transparency warning for MacOS 26 Tahoe in multiple languages and update LegcordWindow interface to include osRelease (#961) --- assets/lang/de.json | 1 + assets/lang/en-US.json | 1 + assets/lang/fr.json | 1 + assets/lang/uk.json | 1 + src/@types/legcordWindow.d.ts | 1 + src/discord/ipc.ts | 3 +++ src/discord/preload/bridge.ts | 1 + .../settings/components/DropdownItem.tsx | 4 ++++ src/shelter/settings/pages/SettingsPage.tsx | 20 +++++++++++++++++++ 9 files changed, 33 insertions(+) diff --git a/assets/lang/de.json b/assets/lang/de.json index 4ae4dc2..5a8951c 100644 --- a/assets/lang/de.json +++ b/assets/lang/de.json @@ -27,6 +27,7 @@ "settings-transparency-universal": "Universell", "settings-transparency-modern": "Modern", "settings-theme-transparent": "Transparent", + "settings-transparency-tahoe-warning": "Transparenz kann zu großem Lags auf MacOS 26 Tahoe führen.", "settings-popoutPiP": "Popup-Fenster immer im Vordergrund anzeigen", "settings-popoutPiP-desc": "Wenn diese Option aktiviert ist, wird das Anruf-Popup im Modus „Immer im Vordergrund“ angezeigt.", "settings-venmic-workaround": "Umgehungslösung", diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index 232c199..7180b58 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.json @@ -27,6 +27,7 @@ "settings-transparency-universal": "Universal", "settings-transparency-modern": "Modern", "settings-theme-transparent": "Transparent", + "settings-transparency-tahoe-warning": "Transparency may cause excessive lag on MacOS 26 Tahoe.", "settings-popoutPiP": "Call Popout Always on Top", "settings-popoutPiP-desc": "When enabled, the call popout will be in Always on Top mode.", "settings-venmic-workaround": "Workaround", diff --git a/assets/lang/fr.json b/assets/lang/fr.json index 495eea4..d4e7750 100644 --- a/assets/lang/fr.json +++ b/assets/lang/fr.json @@ -19,6 +19,7 @@ "settings-transparency-universal": "Universel", "settings-transparency-modern": "Moderne", "settings-theme-transparent": "Transparent", + "settings-transparency-tahoe-warning": "La transparence peut causer un lag excessif sur MacOS 26 Tahoe.", "settings-venmic-deviceSelect": "Sélection du périphérique", "settings-venmic-deviceSelect-desc": "Autoriser la sélection d'un périphérique audio.", "settings-venmic-granularSelect-desc": "Autoriser la sélection d'une source d'entrée audio.", diff --git a/assets/lang/uk.json b/assets/lang/uk.json index 841af47..bb5a00e 100644 --- a/assets/lang/uk.json +++ b/assets/lang/uk.json @@ -27,6 +27,7 @@ "settings-transparency-universal": "Універсальний", "settings-transparency-modern": "Сучасний", "settings-theme-transparent": "Прозорий", + "settings-transparency-tahoe-warning": "Прозорість може призвести до надмірного лагу на MacOS 26 Tahoe.", "settings-popoutPiP": "Виклик спливаючого вікна завжди зверху", "settings-popoutPiP-desc": "Коли цю функцію ввімкнено, спливаюче вікно виклику буде в режимі «Завжди зверху».", "settings-venmic-workaround": "Тимчасове вирішення", diff --git a/src/@types/legcordWindow.d.ts b/src/@types/legcordWindow.d.ts index 9aad550..a043711 100644 --- a/src/@types/legcordWindow.d.ts +++ b/src/@types/legcordWindow.d.ts @@ -19,6 +19,7 @@ export interface LegcordWindow { getLang: (toGet: string) => Promise; version: string; platform: string; + osRelease: string; restart: () => void; translations: string; settings: { diff --git a/src/discord/ipc.ts b/src/discord/ipc.ts index a997a01..b59cb88 100644 --- a/src/discord/ipc.ts +++ b/src/discord/ipc.ts @@ -266,6 +266,9 @@ export function registerIpc(passedWindow: BrowserWindow): void { ipcMain.on("getOS", (event) => { event.returnValue = process.platform; }); + ipcMain.on("getOSRelease", (event) => { + event.returnValue = os.release(); + }); ipcMain.on("copyDebugInfo", () => { const settingsFileContent = readFileSync(getConfigLocation(), "utf-8"); clipboard.writeText( diff --git a/src/discord/preload/bridge.ts b/src/discord/preload/bridge.ts index 8d4eaf6..7c1be43 100644 --- a/src/discord/preload/bridge.ts +++ b/src/discord/preload/bridge.ts @@ -79,6 +79,7 @@ contextBridge.exposeInMainWorld("legcord", { }, version: ipcRenderer.sendSync("get-app-version", "app-version") as string, platform: ipcRenderer.sendSync("getOS") as string, + osRelease: ipcRenderer.sendSync("getOSRelease") as string, restart: () => ipcRenderer.send("restart"), themes: { install: async (url: string) => ipcRenderer.invoke("installBDTheme", url) as Promise, diff --git a/src/shelter/settings/components/DropdownItem.tsx b/src/shelter/settings/components/DropdownItem.tsx index 4dcc181..f438497 100644 --- a/src/shelter/settings/components/DropdownItem.tsx +++ b/src/shelter/settings/components/DropdownItem.tsx @@ -12,6 +12,7 @@ export const DropdownItem = (props: { value: string; onChange: JSX.EventHandler; children: JSXElement[]; + extraItems?: JSXElement; }) => { return (
    @@ -24,6 +25,9 @@ export const DropdownItem = (props: { {/* biome-ignore lint/correctness/noChildrenProp: FIX-ME, couldn't figure out proper types */} + + {props.extraItems} +
    ); diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index d53ed22..39f1d40 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -73,6 +73,26 @@ export function SettingsPage() { title={store.i18n["settings-transparency"]} note={store.i18n["settings-transparency-desc"]} link="https://github.com/Legcord/Legcord/wiki/Transparency-options" + extraItems={ + = 25 + } + > +
    + {store.i18n["settings-transparency-tahoe-warning"]} +
    +
    + } > From 71a73d9ac15b3c50c80f1a4cffd657f304da79a8 Mon Sep 17 00:00:00 2001 From: avarayr <7735415+avarayr@users.noreply.github.com> Date: Tue, 14 Oct 2025 05:26:18 -0400 Subject: [PATCH 758/896] fix: macos build error (#960) --- .github/workflows/package.yml | 4 ---- src/shelter/settings/pages/SettingsPage.tsx | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index c2027f7..3e50acf 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -60,10 +60,6 @@ jobs: APPLE_APP_SPECIFIC_PASSWORD: ${{secrets.APPLE_ID_PASSWORD}} APPLE_TEAM_ID: ${{secrets.APPLE_TEAM_ID}} - - name: Build Electron for Linux (Snap) - if: matrix.os == 'macos-latest' - run: pnpm electron-builder --x64 -l snap --publish always - - name: Build Electron for Windows (NSIS, AppX, & ZIP) if: matrix.os == 'windows-latest' run: pnpm electron-builder --ia32 --arm64 --x64 -w nsis appx zip diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index 39f1d40..2ac83af 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -1,7 +1,7 @@ import { Show } from "solid-js"; import type { Settings } from "../../../@types/settings.js"; import { DropdownItem } from "../components/DropdownItem.jsx"; -import HeroUpdater from "../components/HeroUpdater.jsx"; +import { HeroUpdater } from "../components/HeroUpdater.jsx"; import { TextBoxItem } from "../components/TextBoxItem.jsx"; import { setConfig, toggleMod } from "../settings.js"; import classes from "./SettingsPage.module.css"; From bce196b3918e0fc1f4b3e7b63a63d19fa2738b6e Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:25:34 +0100 Subject: [PATCH 759/896] chore: update electron --- package.json | 4 +- pnpm-lock.yaml | 424 ++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 335 insertions(+), 93 deletions(-) diff --git a/package.json b/package.json index a3a11e8..bda5191 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "38.2.1", - "electron-builder": "^26.0.18", + "electron": "39.1.0", + "electron-builder": "^26.0.20", "lucide-solid": "^0.475.0", "rolldown": "1.0.0-beta.31", "rollup-plugin-copy": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cbbe71b..c35792a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,10 @@ importers: ws: specifier: ^8.18.0 version: 8.18.0 + optionalDependencies: + '@vencord/venmic': + specifier: ^6.1.0 + version: 6.1.0 devDependencies: '@babel/preset-flow': specifier: ^7.25.9 @@ -58,11 +62,11 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 38.2.1 - version: 38.2.1 + specifier: 39.1.0 + version: 39.1.0 electron-builder: - specifier: ^26.0.18 - version: 26.0.19(electron-builder-squirrel-windows@25.1.8) + specifier: ^26.0.20 + version: 26.1.0(electron-builder-squirrel-windows@25.1.8) lucide-solid: specifier: ^0.475.0 version: 0.475.0(solid-js@1.9.3) @@ -87,10 +91,6 @@ importers: xml-formatter: specifier: ^3.6.6 version: 3.6.6 - optionalDependencies: - '@vencord/venmic': - specifier: ^6.1.0 - version: 6.1.0 packages: @@ -379,12 +379,6 @@ packages: resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} engines: {node: '>=12'} - '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': - resolution: {tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2} - version: 10.2.0-electron.1 - engines: {node: '>=12.13.0'} - hasBin: true - '@electron/notarize@2.5.0': resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} engines: {node: '>= 10.0.0'} @@ -404,9 +398,9 @@ packages: engines: {node: '>=12.13.0'} hasBin: true - '@electron/rebuild@3.7.2': - resolution: {integrity: sha512-19/KbIR/DAxbsCkiaGMXIdPnMCJLkcf8AvGnduJtWBs/CBwiAjY1apCqOLVxrXg+rtXFCngbXhBanWjxLUt1Mg==} - engines: {node: '>=12.13.0'} + '@electron/rebuild@4.0.1': + resolution: {integrity: sha512-iMGXb6Ib7H/Q3v+BKZJoETgF9g6KMNZVbsO4b7Dmpgb5qTFqyFTzqW9F3TOSHdybv2vKYKzSS9OiZL+dcJb+1Q==} + engines: {node: '>=22.12.0'} hasBin: true '@electron/universal@2.0.1': @@ -726,6 +720,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.12': resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} @@ -794,10 +792,18 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@npmcli/agent@3.0.0': + resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} + engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/fs@2.1.2': resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + '@npmcli/fs@4.0.0': + resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} + engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/move-file@2.0.1': resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -1264,6 +1270,10 @@ packages: abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abbrev@3.0.1: + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} + engines: {node: ^18.17.0 || >=20.5.0} + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -1272,6 +1282,10 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + agentkeepalive@4.5.0: resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} @@ -1325,12 +1339,12 @@ packages: dmg-builder: 25.1.8 electron-builder-squirrel-windows: 25.1.8 - app-builder-lib@26.0.19: - resolution: {integrity: sha512-z7SaBAqwCG0sYYhimleOChJlu1gRMT7LVhzKt1rxQ4mkUOntQJEdkgclLYuJqIBGIwh9dat3LQbvOr504J0e6w==} + app-builder-lib@26.1.0: + resolution: {integrity: sha512-dxWEGIgTTPD8OiYN8X6n3PV31+DFwvP9pyXCFDsV5fyt6g+0TMZUVXrCRrSPj0+X/phBPad5sNPLLvBRDVDPaQ==} engines: {node: '>=14.0.0'} peerDependencies: - dmg-builder: 26.0.19 - electron-builder-squirrel-windows: 26.0.19 + dmg-builder: 26.1.0 + electron-builder-squirrel-windows: 26.1.0 aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1454,20 +1468,24 @@ packages: resolution: {integrity: sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==} engines: {node: '>=12.0.0'} - builder-util-runtime@9.3.3: - resolution: {integrity: sha512-8AE+77tdJ9XTsK96e55EXJR+ZEK54r8rb0BS8PbEXw57tOX0EWV4BluGW3xkIn+Xvbp+bmQ8gECa15wlcEQxlg==} + builder-util-runtime@9.5.0: + resolution: {integrity: sha512-7qmRMH8X/IzDM+1TysKNFo5cNWBbfacdLX4EqkuE5aiRTECAlYiKHSqEc6cc3c4Lrmpgk0utbxOPkj0iYaWAWQ==} engines: {node: '>=12.0.0'} builder-util@25.1.7: resolution: {integrity: sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==} - builder-util@26.0.19: - resolution: {integrity: sha512-fKHgkdq6Ra3bv7ly69o32L3ZrOhaq2qzSnQn9rUzWMEpsZ8FfZy9XOYQZ7qIdwB6iqJ4uZhjlPD8ZsGb7LYMZA==} + builder-util@26.1.0: + resolution: {integrity: sha512-BTUhmpkCuEAAUmc8EJkJOg7fMGsDSSRMPn1QTpoUpYpGp3SjyJV18LlCPTu3+UBfuQ/5ua7KqDLrsK9NAXO7fg==} cacache@16.1.3: resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + cacache@19.0.1: + resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} + engines: {node: ^18.17.0 || >=20.5.0} + cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} @@ -1495,6 +1513,10 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + chromium-pickle-js@0.2.0: resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} @@ -1676,8 +1698,8 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dmg-builder@26.0.19: - resolution: {integrity: sha512-lZyqfdM0SPqNydGtq06B7LRSxUcKU4v/p2xU0kmKqTM9WXZaQELOZ0OH/gbLCmeZz6zWEDSA31MmTJ8b/X8nYg==} + dmg-builder@26.1.0: + resolution: {integrity: sha512-0eXB7qX9YHiQ2o83EMgC8A6VQ7BfCFP8zxlhUtqtvqy1nEVIZa8XbOAcIiP8ne58RhwLYKV2LCcfN1OImXFEWg==} dmg-license@1.0.11: resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} @@ -1704,8 +1726,8 @@ packages: electron-builder-squirrel-windows@25.1.8: resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==} - electron-builder@26.0.19: - resolution: {integrity: sha512-0xkN9UcIBgrbNAqeurB+CyBARZPkfiILPK0nvbioX+S86B3fgRfJnjIh+T+zowyPTTY85NN5kLfItM8twVRy5w==} + electron-builder@26.1.0: + resolution: {integrity: sha512-dvy9sODWE7uqz7l68copgAtO2EKumdkLqCgooNWl7bSFjrubMmjf2hVS6iwSrcb7hLHL02OULBPNp45aeGAcpA==} engines: {node: '>=14.0.0'} hasBin: true @@ -1724,8 +1746,8 @@ packages: electron-publish@25.1.7: resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==} - electron-publish@26.0.19: - resolution: {integrity: sha512-tcQUIRuHOwaQxi+CrbpaB/5Q+vonj9fEeWkaVa3oM0DcdYHZK/nCLgWKu0kHgPheAU1ovfjVcXBpuyuFBLp2lA==} + electron-publish@26.1.0: + resolution: {integrity: sha512-GwghDIOk5vzNtbiMeXHEIRN+9hPR8cqTOSzMidX4vCC7U9GFh8whruhFhAyaI6MY5YlyTNmT7z6LpLlO8ncOWw==} electron-to-chromium@1.5.90: resolution: {integrity: sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==} @@ -1733,8 +1755,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@38.2.1: - resolution: {integrity: sha512-P4pE2RpRg3kM8IeOK+heg6iAxR5wcXnNHrbVchn7M3GBnYAhjfJRkROusdOro5PlKzdtfKjesbbqaG4MqQXccg==} + electron@39.1.0: + resolution: {integrity: sha512-vPRbKKQUzKWZZX68fuYdz4iS/eavGcQkHOGK4ylv0YJLbBRxxUlflPRdqRGflFjwid+sja7gbNul2lArevYwrw==} engines: {node: '>= 12.20.55'} hasBin: true @@ -1840,6 +1862,15 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -1887,6 +1918,10 @@ packages: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2327,6 +2362,10 @@ packages: resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + make-fetch-happen@14.0.3: + resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} + engines: {node: ^18.17.0 || >=20.5.0} + matcher@3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} @@ -2393,10 +2432,18 @@ packages: resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} engines: {node: '>= 8'} + minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + minipass-fetch@2.1.2: resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + minipass-fetch@4.0.1: + resolution: {integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==} + engines: {node: ^18.17.0 || >=20.5.0} + minipass-flush@1.0.5: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} engines: {node: '>= 8'} @@ -2425,6 +2472,10 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -2437,10 +2488,18 @@ packages: resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + node-abi@3.71.0: resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} engines: {node: '>=10'} + node-abi@4.17.0: + resolution: {integrity: sha512-ljZ7PiChMA2O3sGPX5/bpBhW0O9rXn+orb2xo3Z0vleSlil7G65WZjSFjmIeAtHZHa2GXiTOMdFCsiyImMEIMg==} + engines: {node: '>=22.12.0'} + node-addon-api@1.7.2: resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} @@ -2457,6 +2516,14 @@ packages: node-api-version@0.2.0: resolution: {integrity: sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==} + node-api-version@0.2.1: + resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==} + + node-gyp@11.5.0: + resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + node-gyp@9.4.1: resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} engines: {node: ^12.13 || ^14.13 || >=16} @@ -2470,6 +2537,11 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} hasBin: true + nopt@8.1.0: + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2510,6 +2582,10 @@ packages: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} + p-map@7.0.3: + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + engines: {node: '>=18'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -2557,6 +2633,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pkg-prebuilds@0.2.1: resolution: {integrity: sha512-FdOlDiRqRL7i9aYzQflhGWCoiJf/8u6Qgzq48gKsRDYejtfjvGb1U5QGSzllcqpNg2a8Swx/9fMgtuVefwU+zw==} engines: {node: '>= 14.15.0'} @@ -2566,9 +2646,9 @@ packages: resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} engines: {node: '>=10.4.0'} - proc-log@2.0.1: - resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + proc-log@5.0.0: + resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} + engines: {node: ^18.17.0 || >=20.5.0} process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -2740,6 +2820,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} @@ -2796,6 +2881,10 @@ packages: resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} engines: {node: '>= 10'} + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + socks@2.8.3: resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} @@ -2837,6 +2926,10 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + ssri@12.0.0: + resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} + engines: {node: ^18.17.0 || >=20.5.0} + ssri@9.0.1: resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -2895,6 +2988,10 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + tar@7.5.2: + resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} + engines: {node: '>=18'} + temp-file@3.4.0: resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} @@ -2904,6 +3001,10 @@ packages: tiny-typed-emitter@2.1.0: resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + tmp-promise@3.0.3: resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} @@ -2945,10 +3046,18 @@ packages: resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + unique-filename@4.0.0: + resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} + engines: {node: ^18.17.0 || >=20.5.0} + unique-slug@3.0.0: resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + unique-slug@5.0.0: + resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} + engines: {node: ^18.17.0 || >=20.5.0} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -3047,6 +3156,10 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -3422,22 +3535,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 8.1.0 - graceful-fs: 4.2.11 - make-fetch-happen: 10.2.1 - nopt: 6.0.0 - proc-log: 2.0.1 - semver: 7.7.0 - tar: 6.2.1 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - '@electron/notarize@2.5.0': dependencies: debug: 4.4.0 @@ -3488,24 +3585,23 @@ snapshots: - bluebird - supports-color - '@electron/rebuild@3.7.2': + '@electron/rebuild@4.0.1': dependencies: - '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2 '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 debug: 4.4.0 detect-libc: 2.0.3 - fs-extra: 10.1.0 got: 11.8.6 - node-abi: 3.71.0 - node-api-version: 0.2.0 + graceful-fs: 4.2.11 + node-abi: 4.17.0 + node-api-version: 0.2.1 + node-gyp: 11.5.0 ora: 5.4.1 read-binary-file-arch: 1.0.6 - semver: 7.7.0 + semver: 7.7.2 tar: 6.2.1 yargs: 17.7.2 transitivePeerDependencies: - - bluebird - supports-color '@electron/universal@2.0.1': @@ -3719,6 +3815,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@jridgewell/gen-mapping@0.3.12': dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -3820,11 +3920,25 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@npmcli/agent@3.0.0': + dependencies: + agent-base: 7.1.1 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 semver: 7.7.0 + '@npmcli/fs@4.0.0': + dependencies: + semver: 7.7.2 + '@npmcli/move-file@2.0.1': dependencies: mkdirp: 1.0.4 @@ -4200,6 +4314,8 @@ snapshots: abbrev@1.1.1: {} + abbrev@3.0.1: {} + agent-base@6.0.2: dependencies: debug: 4.4.0 @@ -4212,6 +4328,8 @@ snapshots: transitivePeerDependencies: - supports-color + agent-base@7.1.4: {} + agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 @@ -4253,7 +4371,7 @@ snapshots: app-builder-bin@5.0.0-alpha.12: {} - app-builder-lib@25.1.8(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@25.1.8(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.5.0 @@ -4269,11 +4387,11 @@ snapshots: chromium-pickle-js: 0.2.0 config-file-ts: 0.2.8-rc1 debug: 4.4.0 - dmg-builder: 26.0.19(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.1.0(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.19) + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.1.0) electron-publish: 25.1.7 form-data: 4.0.1 fs-extra: 10.1.0 @@ -4293,29 +4411,29 @@ snapshots: - bluebird - supports-color - app-builder-lib@26.0.19(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@26.1.0(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/asar': 3.4.1 '@electron/fuses': 1.8.0 '@electron/notarize': 2.5.0 '@electron/osx-sign': 1.3.3 - '@electron/rebuild': 3.7.2 + '@electron/rebuild': 4.0.1 '@electron/universal': 2.0.3 '@malept/flatpak-bundler': 0.4.0 '@types/fs-extra': 9.0.13 async-exit-hook: 2.0.1 - builder-util: 26.0.19 - builder-util-runtime: 9.3.3 + builder-util: 26.1.0 + builder-util-runtime: 9.5.0 chromium-pickle-js: 0.2.0 ci-info: 4.3.0 debug: 4.4.0 - dmg-builder: 26.0.19(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.1.0(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.19) - electron-publish: 26.0.19 + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.1.0) + electron-publish: 26.1.0 fs-extra: 10.1.0 hosted-git-info: 4.1.0 isbinaryfile: 5.0.4 @@ -4326,13 +4444,12 @@ snapshots: minimatch: 10.0.3 plist: 3.1.0 resedit: 1.7.2 - semver: 7.7.0 + semver: 7.7.2 tar: 6.2.1 temp-file: 3.4.0 tiny-async-pool: 1.3.0 which: 5.0.0 transitivePeerDependencies: - - bluebird - supports-color aproba@2.0.0: {} @@ -4492,7 +4609,7 @@ snapshots: transitivePeerDependencies: - supports-color - builder-util-runtime@9.3.3: + builder-util-runtime@9.5.0: dependencies: debug: 4.4.0 sax: 1.4.1 @@ -4520,12 +4637,12 @@ snapshots: transitivePeerDependencies: - supports-color - builder-util@26.0.19: + builder-util@26.1.0: dependencies: 7zip-bin: 5.2.0 '@types/debug': 4.1.12 app-builder-bin: 5.0.0-alpha.12 - builder-util-runtime: 9.3.3 + builder-util-runtime: 9.5.0 chalk: 4.1.2 ci-info: 4.3.0 cross-spawn: 7.0.6 @@ -4565,6 +4682,21 @@ snapshots: transitivePeerDependencies: - bluebird + cacache@19.0.1: + dependencies: + '@npmcli/fs': 4.0.0 + fs-minipass: 3.0.3 + glob: 10.4.5 + lru-cache: 10.4.3 + minipass: 7.1.2 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 7.0.3 + ssri: 12.0.0 + tar: 7.5.2 + unique-filename: 4.0.0 + cacheable-lookup@5.0.4: {} cacheable-request@7.0.4: @@ -4602,6 +4734,8 @@ snapshots: chownr@2.0.0: {} + chownr@3.0.0: {} + chromium-pickle-js@0.2.0: {} ci-info@3.9.0: {} @@ -4775,17 +4909,16 @@ snapshots: dependencies: path-type: 4.0.0 - dmg-builder@26.0.19(electron-builder-squirrel-windows@25.1.8): + dmg-builder@26.1.0(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.0.19(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8) - builder-util: 26.0.19 + app-builder-lib: 26.1.0(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8) + builder-util: 26.1.0 fs-extra: 10.1.0 iconv-lite: 0.6.3 js-yaml: 4.1.0 optionalDependencies: dmg-license: 1.0.11 transitivePeerDependencies: - - bluebird - electron-builder-squirrel-windows - supports-color @@ -4813,9 +4946,9 @@ snapshots: dependencies: jake: 10.9.2 - electron-builder-squirrel-windows@25.1.8(dmg-builder@26.0.19): + electron-builder-squirrel-windows@25.1.8(dmg-builder@26.1.0): dependencies: - app-builder-lib: 25.1.8(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 25.1.8(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8) archiver: 5.3.2 builder-util: 25.1.7 fs-extra: 10.1.0 @@ -4824,20 +4957,19 @@ snapshots: - dmg-builder - supports-color - electron-builder@26.0.19(electron-builder-squirrel-windows@25.1.8): + electron-builder@26.1.0(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.0.19(dmg-builder@26.0.19)(electron-builder-squirrel-windows@25.1.8) - builder-util: 26.0.19 - builder-util-runtime: 9.3.3 + app-builder-lib: 26.1.0(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8) + builder-util: 26.1.0 + builder-util-runtime: 9.5.0 chalk: 4.1.2 ci-info: 4.3.0 - dmg-builder: 26.0.19(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.1.0(electron-builder-squirrel-windows@25.1.8) fs-extra: 10.1.0 lazy-val: 1.0.5 simple-update-notifier: 2.0.0 yargs: 17.7.2 transitivePeerDependencies: - - bluebird - electron-builder-squirrel-windows - supports-color @@ -4867,11 +4999,11 @@ snapshots: transitivePeerDependencies: - supports-color - electron-publish@26.0.19: + electron-publish@26.1.0: dependencies: '@types/fs-extra': 9.0.13 - builder-util: 26.0.19 - builder-util-runtime: 9.3.3 + builder-util: 26.1.0 + builder-util-runtime: 9.5.0 chalk: 4.1.2 form-data: 4.0.1 fs-extra: 10.1.0 @@ -4895,7 +5027,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@38.2.1: + electron@39.1.0: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 @@ -5042,6 +5174,10 @@ snapshots: dependencies: pend: 1.2.0 + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -5097,6 +5233,10 @@ snapshots: dependencies: minipass: 3.3.6 + fs-minipass@3.0.3: + dependencies: + minipass: 7.1.2 + fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -5534,6 +5674,22 @@ snapshots: - bluebird - supports-color + make-fetch-happen@14.0.3: + dependencies: + '@npmcli/agent': 3.0.0 + cacache: 19.0.1 + http-cache-semantics: 4.1.1 + minipass: 7.1.2 + minipass-fetch: 4.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 1.0.0 + proc-log: 5.0.0 + promise-retry: 2.0.1 + ssri: 12.0.0 + transitivePeerDependencies: + - supports-color + matcher@3.0.0: dependencies: escape-string-regexp: 4.0.0 @@ -5589,6 +5745,10 @@ snapshots: dependencies: minipass: 3.3.6 + minipass-collect@2.0.1: + dependencies: + minipass: 7.1.2 + minipass-fetch@2.1.2: dependencies: minipass: 3.3.6 @@ -5597,6 +5757,14 @@ snapshots: optionalDependencies: encoding: 0.1.13 + minipass-fetch@4.0.1: + dependencies: + minipass: 7.1.2 + minipass-sized: 1.0.3 + minizlib: 3.1.0 + optionalDependencies: + encoding: 0.1.13 + minipass-flush@1.0.5: dependencies: minipass: 3.3.6 @@ -5622,16 +5790,26 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + minizlib@3.1.0: + dependencies: + minipass: 7.1.2 + mkdirp@1.0.4: {} ms@2.1.3: {} negotiator@0.6.4: {} + negotiator@1.0.0: {} + node-abi@3.71.0: dependencies: semver: 7.7.0 + node-abi@4.17.0: + dependencies: + semver: 7.7.2 + node-addon-api@1.7.2: optional: true @@ -5648,6 +5826,25 @@ snapshots: dependencies: semver: 7.7.0 + node-api-version@0.2.1: + dependencies: + semver: 7.7.2 + + node-gyp@11.5.0: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + graceful-fs: 4.2.11 + make-fetch-happen: 14.0.3 + nopt: 8.1.0 + proc-log: 5.0.0 + semver: 7.7.2 + tar: 7.5.2 + tinyglobby: 0.2.15 + which: 5.0.0 + transitivePeerDependencies: + - supports-color + node-gyp@9.4.1: dependencies: env-paths: 2.2.1 @@ -5671,6 +5868,10 @@ snapshots: dependencies: abbrev: 1.1.1 + nopt@8.1.0: + dependencies: + abbrev: 3.0.1 + normalize-path@3.0.0: {} normalize-url@6.1.0: {} @@ -5715,6 +5916,8 @@ snapshots: dependencies: aggregate-error: 3.1.0 + p-map@7.0.3: {} + package-json-from-dist@1.0.1: {} parse5@7.2.1: @@ -5746,6 +5949,8 @@ snapshots: picomatch@4.0.2: {} + picomatch@4.0.3: {} + pkg-prebuilds@0.2.1: dependencies: yargs: 17.7.2 @@ -5757,7 +5962,7 @@ snapshots: base64-js: 1.5.1 xmlbuilder: 15.1.1 - proc-log@2.0.1: {} + proc-log@5.0.0: {} process-nextick-args@2.0.1: {} @@ -5976,6 +6181,8 @@ snapshots: semver@7.7.0: {} + semver@7.7.2: {} + serialize-error@7.0.1: dependencies: type-fest: 0.13.1 @@ -6027,6 +6234,14 @@ snapshots: transitivePeerDependencies: - supports-color + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.0 + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + socks@2.8.3: dependencies: ip-address: 9.0.5 @@ -6073,6 +6288,10 @@ snapshots: sprintf-js@1.1.3: {} + ssri@12.0.0: + dependencies: + minipass: 7.1.2 + ssri@9.0.1: dependencies: minipass: 3.3.6 @@ -6145,6 +6364,14 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + tar@7.5.2: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.1.0 + yallist: 5.0.0 + temp-file@3.4.0: dependencies: async-exit-hook: 2.0.1 @@ -6156,6 +6383,11 @@ snapshots: tiny-typed-emitter@2.1.0: {} + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tmp-promise@3.0.3: dependencies: tmp: 0.2.3 @@ -6193,10 +6425,18 @@ snapshots: dependencies: unique-slug: 3.0.0 + unique-filename@4.0.0: + dependencies: + unique-slug: 5.0.0 + unique-slug@3.0.0: dependencies: imurmurhash: 0.1.4 + unique-slug@5.0.0: + dependencies: + imurmurhash: 0.1.4 + universalify@0.1.2: {} universalify@2.0.1: {} @@ -6278,6 +6518,8 @@ snapshots: yallist@4.0.0: {} + yallist@5.0.0: {} + yargs-parser@21.1.1: {} yargs@17.7.2: From b32454b5857dcd1506faeb85eaeb186c74588d43 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:26:29 +0100 Subject: [PATCH 760/896] chore: linting --- electron-builder.ts | 2 +- .../settings/components/HeroUpdater.module.css | 4 ++-- src/shelter/settings/components/HeroUpdater.tsx | 17 ++++------------- src/shelter/settings/components/ThemesCard.tsx | 4 +++- src/shelter/settings/pages/SettingsPage.tsx | 2 +- 5 files changed, 11 insertions(+), 18 deletions(-) diff --git a/electron-builder.ts b/electron-builder.ts index 9674804..561658b 100644 --- a/electron-builder.ts +++ b/electron-builder.ts @@ -16,7 +16,7 @@ export const config: Configuration = { "com.apple.security.device.audio-input": true, "com.apple.security.device.camera": true, }, - x64ArchFiles: '{**/koffi.node}', + x64ArchFiles: "{**/koffi.node}", }, linux: { diff --git a/src/shelter/settings/components/HeroUpdater.module.css b/src/shelter/settings/components/HeroUpdater.module.css index ae8fb7d..0f72df4 100644 --- a/src/shelter/settings/components/HeroUpdater.module.css +++ b/src/shelter/settings/components/HeroUpdater.module.css @@ -1,7 +1,7 @@ .hero { background: var(--card-primary-bg); border-radius: 8px; - box-shadow: 0 1.5px 6px rgba(0,0,0,0.08); + box-shadow: 0 1.5px 6px rgba(0, 0, 0, 0.08); padding: 16px 20px; display: flex; flex-direction: column; @@ -14,4 +14,4 @@ .checkButton { width: 120px !important; max-width: 120px !important; -} \ No newline at end of file +} diff --git a/src/shelter/settings/components/HeroUpdater.tsx b/src/shelter/settings/components/HeroUpdater.tsx index 9d01a8b..ab1b950 100644 --- a/src/shelter/settings/components/HeroUpdater.tsx +++ b/src/shelter/settings/components/HeroUpdater.tsx @@ -1,14 +1,7 @@ import { createSignal } from "solid-js"; import classes from "./HeroUpdater.module.css"; const { - ui: { - Button, - ButtonSizes, - Header, - HeaderTags, - Text, - ButtonColors, - }, + ui: { Button, ButtonSizes, Header, HeaderTags, Text, ButtonColors }, } = shelter; const LOGO_URL = "https://github.com/Legcord/Branding/raw/main/assets/legcord-banner.png"; @@ -51,18 +44,16 @@ export const HeroUpdater = () => { Check for Updates )} - + {updateAvailable() === true && ( - <> + <> Update available! )} - {updateAvailable() === false && ( - Your app is up to date. - )} + {updateAvailable() === false && Your app is up to date.}
    ); }; diff --git a/src/shelter/settings/components/ThemesCard.tsx b/src/shelter/settings/components/ThemesCard.tsx index 2cb5ee0..fabbe0d 100644 --- a/src/shelter/settings/components/ThemesCard.tsx +++ b/src/shelter/settings/components/ThemesCard.tsx @@ -50,7 +50,9 @@ export const ThemesCard = (props: { theme: ThemeManifest }) => {
    -
    {props.theme.name}
    +
    + {props.theme.name} +
    by
    {props.theme.author} diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index 2ac83af..e368542 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -78,7 +78,7 @@ export function SettingsPage() { when={ store.settings.transparency !== "none" && window.legcord.platform === "darwin" && - parseInt(window.legcord.osRelease) >= 25 + Number.parseInt(window.legcord.osRelease) >= 25 } >
    Date: Wed, 5 Nov 2025 12:41:14 +0100 Subject: [PATCH 761/896] fix: macOS builds --- electron-builder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron-builder.ts b/electron-builder.ts index 561658b..3f5e8fd 100644 --- a/electron-builder.ts +++ b/electron-builder.ts @@ -16,7 +16,7 @@ export const config: Configuration = { "com.apple.security.device.audio-input": true, "com.apple.security.device.camera": true, }, - x64ArchFiles: "{**/koffi.node}", + x64ArchFiles: "{**darwin_x64/koffi.node}", }, linux: { From 4cbc2f613f6c2777ad6bbeca4f8ebc48f906d9aa Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:44:45 +0100 Subject: [PATCH 762/896] fix: macOS builds attempt 2 --- electron-builder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron-builder.ts b/electron-builder.ts index 3f5e8fd..34e85a6 100644 --- a/electron-builder.ts +++ b/electron-builder.ts @@ -16,7 +16,7 @@ export const config: Configuration = { "com.apple.security.device.audio-input": true, "com.apple.security.device.camera": true, }, - x64ArchFiles: "{**darwin_x64/koffi.node}", + x64ArchFiles: "{Contents/Resources/app.asar.unpacked/node_modules/koffi/build/koffi/darwin_x64/koffi.node}", }, linux: { From 8df00f39911f5b80bc58011b0f8625b41fb4fb58 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:56:25 +0100 Subject: [PATCH 763/896] fix: koffi macOS builds --- electron-builder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron-builder.ts b/electron-builder.ts index 34e85a6..f85cdbd 100644 --- a/electron-builder.ts +++ b/electron-builder.ts @@ -16,7 +16,7 @@ export const config: Configuration = { "com.apple.security.device.audio-input": true, "com.apple.security.device.camera": true, }, - x64ArchFiles: "{Contents/Resources/app.asar.unpacked/node_modules/koffi/build/koffi/darwin_x64/koffi.node}", + x64ArchFiles: "**/node_modules/koffi/**", }, linux: { From fc154d09ae8bdcec1cccd9fad837b1cf192eac54 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sat, 8 Nov 2025 14:51:16 +0100 Subject: [PATCH 764/896] chore: translations update [skip ci] Co-authored-by: Daniel Nylander Translate-URL: https://hosted.weblate.org/projects/armcord/client/sv/ Translation: Legcord/Client --- assets/lang/sv.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/assets/lang/sv.json b/assets/lang/sv.json index 0967ef4..473d228 100644 --- a/assets/lang/sv.json +++ b/assets/lang/sv.json @@ -1 +1,6 @@ -{} +{ + "loading_screen_start": "Startar Legcord…", + "settings-theme-default": "Standard (Anpassad)", + "settings-theme-native": "Inbyggd", + "settings-theme-overlay": "Överlägg" +} From 2398c68c51c19d7301ac7ae2129f35c10adc98a7 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 13:51:38 +0100 Subject: [PATCH 765/896] chore: translations update [skip ci] Co-authored-by: Atopona Translate-URL: https://hosted.weblate.org/projects/armcord/client/zh_Hans/ Translation: Legcord/Client --- assets/lang/zh_Hans.json | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/assets/lang/zh_Hans.json b/assets/lang/zh_Hans.json index 0967ef4..f078935 100644 --- a/assets/lang/zh_Hans.json +++ b/assets/lang/zh_Hans.json @@ -1 +1,30 @@ -{} +{ + "loading_screen_start": "正在启动 Legcord…", + "loading_screen_offline": "你似乎处于离线状态。正在重新启动 ", + "loading_screen_update": "有新版本的 Legcord 可用。请更新到最新版本。", + "setup_question1": "欢迎使用 Legcord 初始化程序", + "setup_offline": "你似乎处于离线状态。请连接到互联网并重新启动 Legcord。", + "setup_question2": "请选择你的 Discord 频道/会话:", + "setup_question3": "是否让 Legcord 处理客户端模组的安装?", + "next": "下一步", + "setup_question4": "请选择你想安装的客户端模组:", + "setup_question5": "你想使用托盘图标吗?", + "settings-bounceOnPing": "收到提醒时在程序坞中弹跳图标", + "settings-bounceOnPing-desc": "收到提及时在程序坞中弹跳应用图标。", + "settings-theme": "窗口样式", + "settings-theme-desc": "窗口样式用于管理 Legcord 所使用的标题栏样式。", + "settings-theme-default": "默认(自定义)", + "settings-theme-native": "原生", + "settings-theme-overlay": "覆盖", + "settings-autoHideMenuBar": "自动隐藏菜单栏", + "settings-autoHideMenuBar-desc": "未使用时自动隐藏菜单栏。", + "settings-sleepInBackground": "后台休眠", + "settings-sleepInBackground-desc": "启用 Chromium 后台节流。启用后可节省电量,但可能导致通知失效。", + "settings-transparency": "透明度", + "settings-transparency-desc": "设置 Legcord 使用的透明模式。", + "settings-transparency-universal": "通用", + "settings-transparency-modern": "现代", + "settings-theme-transparent": "透明", + "settings-transparency-tahoe-warning": "在 MacOS 26 Tahoe 上,启用透明效果可能会导致明显卡顿。", + "settings-popoutPiP": "通话窗口弹出时保持置顶" +} From ee6574804f657908a0cda21c14560b0980ff44fc Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 11 Nov 2025 16:51:24 +0100 Subject: [PATCH 766/896] chore: translations update [skip ci] Co-authored-by: Samuel Translate-URL: https://hosted.weblate.org/projects/armcord/client/pt_BR/ Translation: Legcord/Client --- assets/lang/pt_BR.json | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/assets/lang/pt_BR.json b/assets/lang/pt_BR.json index 0967ef4..f612bfb 100644 --- a/assets/lang/pt_BR.json +++ b/assets/lang/pt_BR.json @@ -1 +1,22 @@ -{} +{ + "loading_screen_start": "Iniciando Legcord…", + "loading_screen_update": "Uma nova versão do Legcord está disponível. Por favor, atualize para a versão mais recente.", + "setup_question1": "Bem-vindo à configuração do Legcord", + "setup_offline": "Você parece estar offline. Por favor, conecte-se à internet e reinicie o Legcord.", + "setup_question2": "Escolha o canal/instância do seu Discord:", + "yes": "Sim", + "no": "Não", + "next": "Próximo", + "settings-theme": "Estilo de janela", + "settings-transparency": "Transparência", + "settings-transparency-desc": "Defina o modo de transparência que o Legcord usa.", + "settings-transparency-universal": "Universal", + "settings-theme-transparent": "Transparente", + "settings-venmic-ignoreVirtual": "Ignorar Dispositivos Virtuais", + "settings-venmic-ignoreVirtual-desc": "Ignorar dispositivos de áudio virtuais.", + "settings-venmic-ignoreDevices": "Ignorar Dispositivos", + "settings-venmic-ignoreDevices-desc": "Ignorar dispositivos de áudio específicos.", + "settings-venmic-onlySpeakers": "Apenas Alto-falantes", + "settings-audio": "Áudio", + "settings-audio-desc": "Selecione o método que o Legcord usa para capturar o áudio do seu sistema durante o compartilhamento de tela." +} From 94128d8fbcac0a14af4c529b29e0d91b0b997796 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Thu, 13 Nov 2025 04:51:29 +0100 Subject: [PATCH 767/896] chore: translations update [skip ci] Co-authored-by: Arif Budiman Translate-URL: https://hosted.weblate.org/projects/armcord/client/id/ Translation: Legcord/Client --- assets/lang/id.json | 136 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 135 insertions(+), 1 deletion(-) diff --git a/assets/lang/id.json b/assets/lang/id.json index 0967ef4..b8e1902 100644 --- a/assets/lang/id.json +++ b/assets/lang/id.json @@ -1 +1,135 @@ -{} +{ + "loading_screen_start": "Mulai Legcord…", + "loading_screen_offline": "Anda tampaknya sedang offline. Silakan restart. ", + "loading_screen_update": "Versi baru Legcord kini tersedia. Silakan perbarui ke versi terbaru.", + "setup_question1": "Selamat datang di Pengaturan Legcord", + "setup_offline": "Anda tampaknya sedang offline. Silakan sambungkan ke internet dan restart Legcord.", + "setup_question2": "Pilih saluran/instans Discord Anda:", + "setup_question3": "Apakah Legcord harus menangani instalasi modifikasi klien?", + "yes": "Ya", + "no": "Tidak", + "next": "Selanjutnya", + "setup_question4": "Pilih mod klien yang ingin Anda instal:", + "setup_question5": "Apakah Anda ingin menggunakan ikon tray?", + "settings-bounceOnPing": "Memantul di dock saat ping", + "settings-bounceOnPing-desc": "Ketuk aplikasi di dock saat Anda menerima notifikasi.", + "settings-theme": "Gaya jendela", + "settings-theme-desc": "Gaya jendela menentukan bilah judul yang digunakan oleh Legcord.", + "settings-theme-default": "Default (Kustom)", + "settings-theme-native": "Asli", + "settings-theme-overlay": "Tumpang tindih", + "settings-autoHideMenuBar": "Sembunyikan bilah menu secara otomatis", + "settings-autoHideMenuBar-desc": "Sembunyikan bilah menu secara otomatis saat tidak digunakan.", + "settings-sleepInBackground": "Tidur di latar belakang", + "settings-sleepInBackground-desc": "Mengaktifkan pembatasan kecepatan latar belakang Chromium. Hal ini dapat membantu menghemat daya baterai, tetapi juga dapat mengganggu notifikasi.", + "settings-transparency": "Transparansi", + "settings-transparency-desc": "Atur mode transparansi yang digunakan oleh Legcord.", + "settings-transparency-universal": "Universal", + "settings-transparency-modern": "Modern", + "settings-theme-transparent": "Transparan", + "settings-transparency-tahoe-warning": "Transparansi dapat menyebabkan lag berlebihan pada MacOS 26 Tahoe.", + "settings-popoutPiP": "Panggilan Popout Selalu di Atas", + "settings-popoutPiP-desc": "Saat diaktifkan, jendela popout panggilan akan berada dalam mode Selalu di Atas.", + "settings-venmic-workaround": "Solusi sementara", + "settings-venmic-workaround-desc": "Aktifkan atau nonaktifkan solusi sementara untuk masalah yang menyebabkan mikrofon dibagikan alih-alih audio yang benar.", + "settings-venmic-deviceSelect": "Pilih Perangkat", + "settings-venmic-deviceSelect-desc": "Izinkan pemilihan perangkat audio.", + "settings-venmic-granularSelect": "Pilihan Granular", + "settings-venmic-granularSelect-desc": "Izinkan pemilihan sumber masukan audio.", + "settings-venmic-ignoreVirtual": "Abaikan Perangkat Virtual", + "settings-venmic-ignoreVirtual-desc": "Abaikan perangkat audio virtual.", + "settings-venmic-ignoreDevices": "Abaikan Perangkat", + "settings-venmic-ignoreDevices-desc": "Abaikan perangkat audio tertentu.", + "settings-venmic-ignoreInputMedia": "Abaikan Media Masukan", + "settings-venmic-ignoreInputMedia-desc": "Abaikan masukan audio dari sumber media.", + "settings-venmic-onlySpeakers": "Hanya Pembicara", + "settings-venmic-onlySpeakers-desc": "Hanya gunakan speaker untuk pemilihan audio.", + "settings-venmic-onlyDefaultSpeakers": "Hanya Pengeras Suara Default", + "settings-venmic-onlyDefaultSpeakers-desc": "Hanya gunakan speaker bawaan untuk pemilihan audio.", + "settings-audio": "Audio", + "settings-audio-desc": "Pilih metode yang digunakan Legcord untuk mengambil audio dari sistem Anda selama berbagi layar.", + "settings-openCustomIconDialog": "Atur ikon desktop", + "settings-csp-desc": "Legcord CSP adalah sistem kami yang mengelola pemuatan konten kustom ke dalam aplikasi Discord. Fitur seperti mod klien dan tema bergantung padanya. Nonaktifkan jika Anda ingin menghapus mod dan gaya kustom.", + "settings-mintoTray": "Bekerja di latar belakang", + "settings-mintoTray-desc": "Ketika dinonaktifkan, Legcord akan ditutup seperti jendela lainnya saat ditutup, sedangkan jika tidak, ia akan tetap berada di area sistem tray Anda untuk digunakan nanti.", + "settings-startMinimized": "Mulai dalam mode minimized", + "settings-startMinimized-desc": "Legcord berjalan di latar belakang dan tidak mengganggu Anda.", + "settings-useSystemCssEditor": "Gunakan editor CSS sistem", + "settings-useSystemCssEditor-desc": "Gunakan editor CSS sistem untuk mengedit CSS.", + "settings-MultiInstance": "Multi Instans", + "settings-MultiInstance-desc": "Ketika diaktifkan, Anda akan dapat menjalankan banyak instance Legcord.", + "settings-noBundleUpdates": "Tidak ada pembaruan paket", + "settings-noBundleUpdates-desc": "Menonaktifkan pembaruan otomatis untuk mod klien.", + "settings-hardwareAcceleration": "Percepatan perangkat keras", + "settings-hardwareAcceleration-desc": "Peningkatan kinerja perangkat keras menggunakan GPU Anda untuk membuat Legcord berjalan lebih cepat. Jika Anda mengalami gangguan visual, coba nonaktifkan fitur ini.", + "settings-blockPowerSavingInVoiceChat": "Nonaktifkan penghematan daya dalam obrolan suara", + "settings-blockPowerSavingInVoiceChat-desc": "Mencegah Legcord agar tidak ditangguhkan. Menjaga sistem tetap aktif tetapi memungkinkan layar dimatikan.", + "settings-mobileMode": "Mode seluler", + "settings-mobileMode-desc": "Jika Anda menggunakan perangkat dengan layar sentuh, fitur ini cocok untuk Anda! Fitur ini mengaktifkan mode seluler tersembunyi Discord yang dirancang untuk ponsel dan tablet. Satu-satunya fitur utama yang tidak tersedia adalah dukungan obrolan suara. Ini ideal untuk\n pengguna PinePhone dan perangkat serupa.", + "settings-spellcheck": "Pemeriksa ejaan", + "settings-spellcheck-desc": "Membantu Anda memperbaiki kata-kata yang salah eja dengan menyorotinya.", + "settings-channel": "Saluran Discord", + "settings-channel-desc": "Gunakan pengaturan ini untuk mengubah instance Discord yang sedang dijalankan oleh Legcord.", + "settings-bitrateMin": "Bitrate minimum", + "settings-bitrateMin-desc": "Bitrate minimum untuk berbagi layar.", + "settings-bitrateMax": "Bitrate maksimum", + "settings-bitrateMax-desc": "Bitrate maksimum untuk berbagi layar.", + "settings-bitrateTarget": "Bitrate target", + "settings-bitrateTarget-desc": "Bitrate target untuk berbagi layar.", + "settings-invitewebsocket": "Rich Presence", + "settings-invitewebsocket-desc": "Menggunakan arRPC untuk mendukung Discord RPC (Rich Presence) dengan program lokal di mesin Anda.", + "settings-useMacSystemPicker": "Gunakan pemilih sistem macOS", + "settings-useMacSystemPicker-desc": "Gunakan fitur berbagi layar bawaan macOS jika memungkinkan. Hanya untuk macOS 15 ke atas", + "settings-additionalArguments": "Argumen tambahan", + "settings-additionalArguments-desc": "Argumen tambahan adalah perintah tambahan yang dapat Anda berikan ke Legcord. Argumen ini dapat digunakan untuk mengaktifkan atau menonaktifkan fitur, atau untuk memperbaiki masalah.", + "settings-mod": "Modifikasi klien", + "settings-mod-desc1": "Modifikasi klien adalah program yang memungkinkan Anda menyesuaikan pengalaman Discord Anda. Mereka dapat mengubah tampilan klien, memodifikasi perilaku, atau menambahkan fitur baru!", + "settings-mod-vencord": "Mod klien yang ringan dan mudah digunakan. Dilengkapi dengan toko bawaan untuk plugin.", + "settings-mod-equicord": "Bercabang dan dikembangkan oleh kontributor vencord, dengan klien yang kaya akan plugin.", + "settings-prfmMode": "Mode kinerja", + "settings-prfmMode-desc": "Mode Kinerja adalah fitur eksperimental di Legcord yang dirancang untuk mengoptimalkan responsivitas dan kinerja sesuai dengan kebutuhan Anda. Dampak yang dihasilkan dapat bervariasi tergantung pada spesifikasi perangkat keras dan pola penggunaan Anda, jadi kami menyarankan Anda untuk mencoba setiap mode untuk menentukan mana yang paling sesuai dengan kebutuhan Anda.", + "settings-prfmMode-performance": "Kinerja", + "settings-prfmMode-battery": "Baterai", + "settings-prfmMode-dynamic": "Dinamis", + "settings-prfmMode-vaapi": "VAAPI", + "settings-disableAutogain": "Nonaktifkan autogain", + "settings-disableAutogain-desc": "Menonaktifkan autogain.", + "settings-disableHttpCache": "Nonaktifkan cache HTTP", + "settings-disableHttpCache-desc": "Menonaktifkan cache HTTP Chromium. Aktifkan opsi ini jika mod klien tidak termuat untuk Anda.", + "settings-trayIcon": "Ikon tray", + "settings-trayIcon-desc": "Tentukan ikon yang akan muncul di menu tray.", + "settings-trayIcon-disabled": "Nonaktifkan tray", + "settings-trayIcon-dynamic": "Dinamis", + "settings-trayIcon-normal": "Ikon Discord", + "settings-trayIcon-classic": "Ikon Discord Klasik", + "settings-trayIcon-colored-plug": "Soket Berwarna", + "settings-trayIcon-white-plug": "Soket Putih", + "settings-trayIcon-white-plug-alt": "Soket Putih Alternatif", + "settings-trayIcon-black-plug": "Soket Hitam", + "settings-trayIcon-black-plug-alt": "Soket Hitam Alternatif", + "settings-advanced": "Zona Pengguna Lanjutan", + "settings-pluginsFolder": "Buka folder plugin", + "settings-crashesFolder": "Buka folder crash asli", + "settings-themesFolder": "Buka folder tema", + "settings-storageFolder": "Buka folder penyimpanan", + "settings-none": "Tidak ada", + "settings-save": "Simpan Pengaturan", + "settings-experimental": "Eksperimental", + "settings-restart": "Mulai Ulang Aplikasi", + "settings-updater": "Periksa pembaruan", + "settings-skipSplash": "Lewati Layar Pembuka", + "settings-skipSplash-desc": "Lewati layar splash Legcord saat Anda membuka aplikasi.", + "settings-copyDebugInfo": "Salin Informasi Debug", + "settings-copyGPUInfo": "Salin Informasi GPU", + "settings-clearClientModCache": "Hapus cache mod klien", + "settings-forceNativeCrash": "Paksa crash aplikasi asli", + "settings-smoothScroll": "Gunakan pengguliran halus", + "settings-smoothScroll-desc": "Aktifkan/nonaktifkan pengguliran halus", + "settings-autoScroll": "Izinkan gulir otomatis", + "settings-autoScroll-desc": "Izinkan pengguliran otomatis dengan klik tengah (Catatan: Lingkungan desktop Anda masih dapat mengganti pengaturan ini dengan tindakan lain)", + "settings-category-lookAndFeel": "Penampilan dan nuansa", + "settings-category-mods": "Modifikasi", + "settings-category-behaviour": "Perilaku", + "settings-category-legacy": "Fitur warisan", + "settings-category-debug": "Opsi debug" +} From d35183a89aa9734e5cdefc28ced24b9f79cbb458 Mon Sep 17 00:00:00 2001 From: Kamerzystanasyt <91615271+Alangopro@users.noreply.github.com> Date: Wed, 10 Dec 2025 12:21:52 +0100 Subject: [PATCH 768/896] fix: youtube adblock issue. (#979) --- src/discord/window.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/discord/window.ts b/src/discord/window.ts index b755a4c..5f4a620 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -105,7 +105,7 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { frame.url.includes("youtube.com/embed/") || (frame.url.includes("discordsays") && frame.url.includes("youtube.com")) ) { - await frame.executeJavaScript(readFileSync(path.join(__dirname, "js/adguard.js"), "utf-8")); + await frame.executeJavaScript(readFileSync(path.join(__dirname, "assets/js/adguard.js"), "utf-8")); } }); }); From 77c11f65d1e0844cd795bb7c92636177d3947279 Mon Sep 17 00:00:00 2001 From: Pierre Kancir Date: Wed, 10 Dec 2025 12:22:38 +0100 Subject: [PATCH 769/896] chore: add installation instructions for Deb (#972) [skip ci] --- README.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 77346fa..aec2315 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,37 @@ winget install --id=smartfrigde.Legcord -e Not available yet. -### Debian, Ubuntu and Raspbian repository +### Debian, Ubuntu and Raspbian + +#### Install via .deb from GitHub Releases + +You can install Legcord directly using the `.deb` packages published on the GitHub Releases page. + +1. Go to the Releases page: https://github.com/Legcord/Legcord/releases +2. Download the `.deb` that matches your architecture: + - `amd64` (most Intel/AMD 64‑bit PCs) + - `arm64` (AArch64, e.g. Raspberry Pi 4/5 64‑bit, ARM laptops) +3. Install the downloaded file (this resolves dependencies automatically): + +```sh +sudo apt install ./.deb +``` + +Alternatively, you can copy the asset link from the release and install via terminal: + +```sh +# Replace the URL below with the copied link to the .deb asset from the Releases page +wget -O legcord.deb "https://github.com/Legcord/Legcord/releases/download//.deb" +sudo apt install legcord.deb +``` + +If your system reports missing dependencies, you can also use this fallback: + +```sh +sudo dpkg -i .deb || sudo apt -f install +``` + +#### Alternative: pacstall legcord-deb is available on [pacstall](https://pacstall.dev/packages/legcord-deb) ```sh From 57102c1d368d863741c598ac67dce750c78f1c0c Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Wed, 10 Dec 2025 12:58:24 +0100 Subject: [PATCH 770/896] chore: bump dependencies electron and electron-builder --- package.json | 4 +- pnpm-lock.yaml | 159 ++++++++++++++++++++++++------------------------- 2 files changed, 79 insertions(+), 84 deletions(-) diff --git a/package.json b/package.json index bda5191..5666351 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "39.1.0", - "electron-builder": "^26.0.20", + "electron": "39.2.6", + "electron-builder": "^26.3.5", "lucide-solid": "^0.475.0", "rolldown": "1.0.0-beta.31", "rollup-plugin-copy": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c35792a..9e14e27 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,11 +62,11 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 39.1.0 - version: 39.1.0 + specifier: 39.2.6 + version: 39.2.6 electron-builder: - specifier: ^26.0.20 - version: 26.1.0(electron-builder-squirrel-windows@25.1.8) + specifier: ^26.3.5 + version: 26.3.5(electron-builder-squirrel-windows@25.1.8) lucide-solid: specifier: ^0.475.0 version: 0.475.0(solid-js@1.9.3) @@ -1278,10 +1278,6 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} - agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -1339,12 +1335,12 @@ packages: dmg-builder: 25.1.8 electron-builder-squirrel-windows: 25.1.8 - app-builder-lib@26.1.0: - resolution: {integrity: sha512-dxWEGIgTTPD8OiYN8X6n3PV31+DFwvP9pyXCFDsV5fyt6g+0TMZUVXrCRrSPj0+X/phBPad5sNPLLvBRDVDPaQ==} + app-builder-lib@26.3.5: + resolution: {integrity: sha512-AluSgBV7oWEE6wqC80S4drTTBWB8opxBgRGa8kSClRhULttN7pKiRz5K/74rCUi7XkstggtdQALsI6zCqenNzA==} engines: {node: '>=14.0.0'} peerDependencies: - dmg-builder: 26.1.0 - electron-builder-squirrel-windows: 26.1.0 + dmg-builder: 26.3.5 + electron-builder-squirrel-windows: 26.3.5 aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1468,15 +1464,15 @@ packages: resolution: {integrity: sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==} engines: {node: '>=12.0.0'} - builder-util-runtime@9.5.0: - resolution: {integrity: sha512-7qmRMH8X/IzDM+1TysKNFo5cNWBbfacdLX4EqkuE5aiRTECAlYiKHSqEc6cc3c4Lrmpgk0utbxOPkj0iYaWAWQ==} + builder-util-runtime@9.5.1: + resolution: {integrity: sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==} engines: {node: '>=12.0.0'} builder-util@25.1.7: resolution: {integrity: sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==} - builder-util@26.1.0: - resolution: {integrity: sha512-BTUhmpkCuEAAUmc8EJkJOg7fMGsDSSRMPn1QTpoUpYpGp3SjyJV18LlCPTu3+UBfuQ/5ua7KqDLrsK9NAXO7fg==} + builder-util@26.3.4: + resolution: {integrity: sha512-aRn88mYMktHxzdqDMF6Ayj0rKoX+ZogJ75Ck7RrIqbY/ad0HBvnS2xA4uHfzrGr5D2aLL3vU6OBEH4p0KMV2XQ==} cacache@16.1.3: resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} @@ -1528,6 +1524,10 @@ packages: resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} engines: {node: '>=8'} + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} + engines: {node: '>=8'} + clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -1698,8 +1698,8 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dmg-builder@26.1.0: - resolution: {integrity: sha512-0eXB7qX9YHiQ2o83EMgC8A6VQ7BfCFP8zxlhUtqtvqy1nEVIZa8XbOAcIiP8ne58RhwLYKV2LCcfN1OImXFEWg==} + dmg-builder@26.3.5: + resolution: {integrity: sha512-3qXWrP5zWswQi3EqFQyQWMkAHpwMdNDoVaJfqbfLPqX1umq7m+Fav30mQd6Sk7nXH+YvrrjjoeIfif/PH/l1mQ==} dmg-license@1.0.11: resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} @@ -1726,8 +1726,8 @@ packages: electron-builder-squirrel-windows@25.1.8: resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==} - electron-builder@26.1.0: - resolution: {integrity: sha512-dvy9sODWE7uqz7l68copgAtO2EKumdkLqCgooNWl7bSFjrubMmjf2hVS6iwSrcb7hLHL02OULBPNp45aeGAcpA==} + electron-builder@26.3.5: + resolution: {integrity: sha512-I0HNjrWEGnCKDsQ9GkFa92E1hW/FmKe88bh75jucBoHRIcZUvTwbqJFGn9kKG6cFq9eOWCXOEVs+RvXT/Ma49Q==} engines: {node: '>=14.0.0'} hasBin: true @@ -1746,8 +1746,8 @@ packages: electron-publish@25.1.7: resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==} - electron-publish@26.1.0: - resolution: {integrity: sha512-GwghDIOk5vzNtbiMeXHEIRN+9hPR8cqTOSzMidX4vCC7U9GFh8whruhFhAyaI6MY5YlyTNmT7z6LpLlO8ncOWw==} + electron-publish@26.3.4: + resolution: {integrity: sha512-5/ouDPb73SkKuay2EXisPG60LTFTMNHWo2WLrK5GDphnWK9UC+yzYrzVeydj078Yk4WUXi0+TaaZsNd6Zt5k/A==} electron-to-chromium@1.5.90: resolution: {integrity: sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==} @@ -1755,8 +1755,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@39.1.0: - resolution: {integrity: sha512-vPRbKKQUzKWZZX68fuYdz4iS/eavGcQkHOGK4ylv0YJLbBRxxUlflPRdqRGflFjwid+sja7gbNul2lArevYwrw==} + electron@39.2.6: + resolution: {integrity: sha512-dHBgTodWBZd+tL1Dt0PSh/CFLHeDkFCTKCTXu1dgPhlE9Z3k2zzlBQ9B2oW55CFsKanBDHiUomHJNw0XaSdQpA==} engines: {node: '>= 12.20.55'} hasBin: true @@ -2513,9 +2513,6 @@ packages: node-api-headers@1.5.0: resolution: {integrity: sha512-Yi/FgnN8IU/Cd6KeLxyHkylBUvDTsSScT0Tna2zTrz8klmc8qF2ppj6Q1LHsmOueJWhigQwR4cO2p0XBGW5IaQ==} - node-api-version@0.2.0: - resolution: {integrity: sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==} - node-api-version@0.2.1: resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==} @@ -2825,6 +2822,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} @@ -3574,11 +3576,11 @@ snapshots: fs-extra: 10.1.0 got: 11.8.6 node-abi: 3.71.0 - node-api-version: 0.2.0 + node-api-version: 0.2.1 node-gyp: 9.4.1 ora: 5.4.1 read-binary-file-arch: 1.0.6 - semver: 7.7.0 + semver: 7.7.2 tar: 6.2.1 yargs: 17.7.2 transitivePeerDependencies: @@ -3598,7 +3600,7 @@ snapshots: node-gyp: 11.5.0 ora: 5.4.1 read-binary-file-arch: 1.0.6 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 yargs: 17.7.2 transitivePeerDependencies: @@ -3922,7 +3924,7 @@ snapshots: '@npmcli/agent@3.0.0': dependencies: - agent-base: 7.1.1 + agent-base: 7.1.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 lru-cache: 10.4.3 @@ -3933,11 +3935,11 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.0 + semver: 7.7.2 '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.2 + semver: 7.7.3 '@npmcli/move-file@2.0.1': dependencies: @@ -4322,12 +4324,6 @@ snapshots: transitivePeerDependencies: - supports-color - agent-base@7.1.1: - dependencies: - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - agent-base@7.1.4: {} agentkeepalive@4.5.0: @@ -4371,7 +4367,7 @@ snapshots: app-builder-bin@5.0.0-alpha.12: {} - app-builder-lib@25.1.8(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@25.1.8(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.5.0 @@ -4387,11 +4383,11 @@ snapshots: chromium-pickle-js: 0.2.0 config-file-ts: 0.2.8-rc1 debug: 4.4.0 - dmg-builder: 26.1.0(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.3.5(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.1.0) + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.3.5) electron-publish: 25.1.7 form-data: 4.0.1 fs-extra: 10.1.0 @@ -4404,14 +4400,14 @@ snapshots: minimatch: 10.0.3 resedit: 1.7.2 sanitize-filename: 1.6.3 - semver: 7.7.0 + semver: 7.7.2 tar: 6.2.1 temp-file: 3.4.0 transitivePeerDependencies: - bluebird - supports-color - app-builder-lib@26.1.0(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@26.3.5(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/asar': 3.4.1 @@ -4423,17 +4419,17 @@ snapshots: '@malept/flatpak-bundler': 0.4.0 '@types/fs-extra': 9.0.13 async-exit-hook: 2.0.1 - builder-util: 26.1.0 - builder-util-runtime: 9.5.0 + builder-util: 26.3.4 + builder-util-runtime: 9.5.1 chromium-pickle-js: 0.2.0 - ci-info: 4.3.0 + ci-info: 4.3.1 debug: 4.4.0 - dmg-builder: 26.1.0(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.3.5(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.1.0) - electron-publish: 26.1.0 + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.3.5) + electron-publish: 26.3.4 fs-extra: 10.1.0 hosted-git-info: 4.1.0 isbinaryfile: 5.0.4 @@ -4444,7 +4440,7 @@ snapshots: minimatch: 10.0.3 plist: 3.1.0 resedit: 1.7.2 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 temp-file: 3.4.0 tiny-async-pool: 1.3.0 @@ -4609,7 +4605,7 @@ snapshots: transitivePeerDependencies: - supports-color - builder-util-runtime@9.5.0: + builder-util-runtime@9.5.1: dependencies: debug: 4.4.0 sax: 1.4.1 @@ -4637,14 +4633,13 @@ snapshots: transitivePeerDependencies: - supports-color - builder-util@26.1.0: + builder-util@26.3.4: dependencies: 7zip-bin: 5.2.0 '@types/debug': 4.1.12 app-builder-bin: 5.0.0-alpha.12 - builder-util-runtime: 9.5.0 + builder-util-runtime: 9.5.1 chalk: 4.1.2 - ci-info: 4.3.0 cross-spawn: 7.0.6 debug: 4.4.0 fs-extra: 10.1.0 @@ -4742,6 +4737,8 @@ snapshots: ci-info@4.3.0: {} + ci-info@4.3.1: {} + clean-stack@2.2.0: {} cli-cursor@3.1.0: @@ -4909,10 +4906,10 @@ snapshots: dependencies: path-type: 4.0.0 - dmg-builder@26.1.0(electron-builder-squirrel-windows@25.1.8): + dmg-builder@26.3.5(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.1.0(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8) - builder-util: 26.1.0 + app-builder-lib: 26.3.5(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8) + builder-util: 26.3.4 fs-extra: 10.1.0 iconv-lite: 0.6.3 js-yaml: 4.1.0 @@ -4946,9 +4943,9 @@ snapshots: dependencies: jake: 10.9.2 - electron-builder-squirrel-windows@25.1.8(dmg-builder@26.1.0): + electron-builder-squirrel-windows@25.1.8(dmg-builder@26.3.5): dependencies: - app-builder-lib: 25.1.8(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 25.1.8(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8) archiver: 5.3.2 builder-util: 25.1.7 fs-extra: 10.1.0 @@ -4957,14 +4954,14 @@ snapshots: - dmg-builder - supports-color - electron-builder@26.1.0(electron-builder-squirrel-windows@25.1.8): + electron-builder@26.3.5(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.1.0(dmg-builder@26.1.0)(electron-builder-squirrel-windows@25.1.8) - builder-util: 26.1.0 - builder-util-runtime: 9.5.0 + app-builder-lib: 26.3.5(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8) + builder-util: 26.3.4 + builder-util-runtime: 9.5.1 chalk: 4.1.2 ci-info: 4.3.0 - dmg-builder: 26.1.0(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.3.5(electron-builder-squirrel-windows@25.1.8) fs-extra: 10.1.0 lazy-val: 1.0.5 simple-update-notifier: 2.0.0 @@ -4999,11 +4996,11 @@ snapshots: transitivePeerDependencies: - supports-color - electron-publish@26.1.0: + electron-publish@26.3.4: dependencies: '@types/fs-extra': 9.0.13 - builder-util: 26.1.0 - builder-util-runtime: 9.5.0 + builder-util: 26.3.4 + builder-util-runtime: 9.5.1 chalk: 4.1.2 form-data: 4.0.1 fs-extra: 10.1.0 @@ -5027,7 +5024,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@39.1.0: + electron@39.2.6: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 @@ -5314,7 +5311,7 @@ snapshots: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.7.0 + semver: 7.7.2 serialize-error: 7.0.1 optional: true @@ -5397,7 +5394,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.1 + agent-base: 7.1.4 debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -5416,7 +5413,7 @@ snapshots: https-proxy-agent@7.0.5: dependencies: - agent-base: 7.1.1 + agent-base: 7.1.4 debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -5804,11 +5801,11 @@ snapshots: node-abi@3.71.0: dependencies: - semver: 7.7.0 + semver: 7.7.2 node-abi@4.17.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 node-addon-api@1.7.2: optional: true @@ -5822,13 +5819,9 @@ snapshots: node-api-headers@1.5.0: optional: true - node-api-version@0.2.0: - dependencies: - semver: 7.7.0 - node-api-version@0.2.1: dependencies: - semver: 7.7.2 + semver: 7.7.3 node-gyp@11.5.0: dependencies: @@ -5838,7 +5831,7 @@ snapshots: make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 tar: 7.5.2 tinyglobby: 0.2.15 which: 5.0.0 @@ -5855,7 +5848,7 @@ snapshots: nopt: 6.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.7.0 + semver: 7.7.2 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -6183,6 +6176,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.3: {} + serialize-error@7.0.1: dependencies: type-fest: 0.13.1 @@ -6208,7 +6203,7 @@ snapshots: simple-update-notifier@2.0.0: dependencies: - semver: 7.7.0 + semver: 7.7.2 slash@3.0.0: {} From eb61840f6aee72a135e928c273e86d195839c391 Mon Sep 17 00:00:00 2001 From: Liam Rooney <80072393+lbrooney@users.noreply.github.com> Date: Sun, 14 Dec 2025 22:15:34 -0800 Subject: [PATCH 771/896] equicord added new headerbar api which collides with exit buttons (#990) --- assets/app/css/linuxTitlebar.css | 2 +- assets/app/css/winTitlebar.css | 2 +- src/shelter/titlebar/index.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/app/css/linuxTitlebar.css b/assets/app/css/linuxTitlebar.css index 1e2eaf8..ff67592 100644 --- a/assets/app/css/linuxTitlebar.css +++ b/assets/app/css/linuxTitlebar.css @@ -1,4 +1,4 @@ -[legcord-platform="linux"] a[href="https://support.discord.com"] { +[legcord-platform="linux"] div[class^="trailing_"] { margin-right: 150px; } diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index 99ab9cf..6d62976 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -1,6 +1,6 @@ /* Legcord on Windows */ -[legcord-platform="win32"] a[href="https://support.discord.com"] { +[legcord-platform="win32"] div[class^="trailing_"] { margin-right: 150px; } diff --git a/src/shelter/titlebar/index.ts b/src/shelter/titlebar/index.ts index 1db05db..e038783 100644 --- a/src/shelter/titlebar/index.ts +++ b/src/shelter/titlebar/index.ts @@ -24,7 +24,7 @@ function injectButtonControls() { const elem = document.createElement("div"); elem.innerHTML = titlebarNavControls; elem.id = "legcordNavControls"; - document.body.prepend(elem); + document.body.append(elem); const minimize = document.getElementById("minimize"); const maximize = document.getElementById("maximize"); const quit = document.getElementById("quit"); From baf407ce7cf37b279999ca22ca03b06a44415da7 Mon Sep 17 00:00:00 2001 From: Liam Rooney <80072393+lbrooney@users.noreply.github.com> Date: Sun, 14 Dec 2025 22:16:12 -0800 Subject: [PATCH 772/896] css var name fixed (#989) --- assets/app/css/baseTitlebar.css | 2 +- assets/app/css/darwinTitlebar.css | 12 +-- assets/app/css/linuxTitlebar.css | 32 +++---- assets/app/css/titlebar.css | 88 +++++++++---------- assets/app/css/winTitlebar.css | 32 +++---- .../components/KeybindCard.module.css | 4 +- .../settings/components/ThemesCard.module.css | 4 +- 7 files changed, 87 insertions(+), 87 deletions(-) diff --git a/assets/app/css/baseTitlebar.css b/assets/app/css/baseTitlebar.css index 2cf840c..1d00859 100644 --- a/assets/app/css/baseTitlebar.css +++ b/assets/app/css/baseTitlebar.css @@ -47,6 +47,6 @@ height: 100%; width: 33.3%; text-align: center; - color: var(--interactive-normal); + color: var(--interactive-icon-default); cursor: default; } diff --git a/assets/app/css/darwinTitlebar.css b/assets/app/css/darwinTitlebar.css index 396387a..a9aeb11 100644 --- a/assets/app/css/darwinTitlebar.css +++ b/assets/app/css/darwinTitlebar.css @@ -59,9 +59,9 @@ background-color: #fac536; transition: background-color 0.1s ease-in; border: 1px solid #da9e10; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; transform: translateX(-21.5px); } @@ -69,9 +69,9 @@ background-color: #39ea49; transition: background-color 0.1s ease-in; border: 1px solid #13c11e; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; transform: translateX(21.5px); } @@ -79,9 +79,9 @@ background-color: #f25056; transition: background-color 0.1s ease-in; border: 1px solid #d52735; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; } [legcord-platform="darwin"] #window-controls-container:hover #maximize:active { diff --git a/assets/app/css/linuxTitlebar.css b/assets/app/css/linuxTitlebar.css index ff67592..2d2a369 100644 --- a/assets/app/css/linuxTitlebar.css +++ b/assets/app/css/linuxTitlebar.css @@ -6,19 +6,19 @@ width: 142px; } [legcord-platform="linux"] #window-controls-container #minimize:hover { - background-color: var(--background-modifier-hover); + background-color: var(--interactive-background-hover); transition: 0.2s ease; } [legcord-platform="linux"] #window-controls-container #maximize:hover { - background-color: var(--background-modifier-hover); + background-color: var(--interactive-background-hover); transition: 0.2s ease; } [legcord-platform="linux"] #window-controls-container #minimize:hover #minimize-icon { - background-color: var(--interactive-hover); + background-color: var(--interactive-text-hover); transition: 0.2s ease; } [legcord-platform="linux"] #window-controls-container #maximize:hover #maximize-icon { - background-color: var(--interactive-hover); + background-color: var(--interactive-text-hover); transition: 0.2s ease; } [legcord-platform="linux"] #window-controls-container #quit:hover { @@ -50,35 +50,35 @@ transition: 0.1s ease; } [legcord-platform="linux"] #window-controls-container #quit-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="linux"] #window-controls-container #minimize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="linux"] #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="linux"][isMaximized] #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; } diff --git a/assets/app/css/titlebar.css b/assets/app/css/titlebar.css index 296dc97..21cc620 100644 --- a/assets/app/css/titlebar.css +++ b/assets/app/css/titlebar.css @@ -38,7 +38,7 @@ height: 100%; width: 33.3%; text-align: center; - color: var(--interactive-normal); + color: var(--interactive-icon-default); cursor: default; } .titlebar #window-controls-container #spacer { @@ -59,19 +59,19 @@ transform: translateY(-8px); } [legcord-platform="linux"] .titlebar #window-controls-container #minimize:hover { - background-color: var(--background-modifier-hover); + background-color: var(--interactive-background-hover); transition: 0.2s ease; } [legcord-platform="linux"] .titlebar #window-controls-container #maximize:hover { - background-color: var(--background-modifier-hover); + background-color: var(--interactive-background-hover); transition: 0.2s ease; } [legcord-platform="linux"] .titlebar #window-controls-container #minimize:hover #minimize-icon { - background-color: var(--interactive-hover); + background-color: var(--interactive-text-hover); transition: 0.2s ease; } [legcord-platform="linux"] .titlebar #window-controls-container #maximize:hover #maximize-icon { - background-color: var(--interactive-hover); + background-color: var(--interactive-text-hover); transition: 0.2s ease; } [legcord-platform="linux"] .titlebar #window-controls-container #quit:hover { @@ -82,58 +82,58 @@ background-color: #ffffff; display: list-item; transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="linux"] .titlebar #window-controls-container #minimize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="linux"] .titlebar #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='9' height='9' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="linux"][isMaximized] .titlebar #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='9' height='9'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; } [legcord-platform="linux"] .titlebar #window-controls-container #minimize { background-color: transparent; transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; } [legcord-platform="linux"] .titlebar #window-controls-container #maximize { background-color: transparent; transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; } [legcord-platform="linux"] .titlebar #window-controls-container #quit { background-color: var(--brand-experiment); transition: 0.1s ease; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='25' height='25'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; } [legcord-platform="linux"] .titlebar #window-controls-container #quit:active { @@ -146,19 +146,19 @@ width: 142px; } [legcord-platform="win32"] .titlebar #window-controls-container #minimize:hover { - background-color: var(--background-modifier-hover); + background-color: var(--interactive-background-hover); transition: 0.2s ease; } [legcord-platform="win32"] .titlebar #window-controls-container #maximize:hover { - background-color: var(--background-modifier-hover); + background-color: var(--interactive-background-hover); transition: 0.2s ease; } [legcord-platform="win32"] .titlebar #window-controls-container #minimize:hover #minimize-icon { - background-color: var(--interactive-hover); + background-color: var(--interactive-text-hover); transition: 0.2s ease; } [legcord-platform="win32"] .titlebar #window-controls-container #maximize:hover #maximize-icon { - background-color: var(--interactive-hover); + background-color: var(--interactive-text-hover); transition: 0.2s ease; } [legcord-platform="win32"] .titlebar #window-controls-container #quit:hover { @@ -190,36 +190,36 @@ transition: 0.1s ease; } [legcord-platform="win32"] .titlebar #window-controls-container #quit-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="win32"] .titlebar #window-controls-container #minimize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="win32"] .titlebar #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="win32"][isMaximized] .titlebar #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; } @@ -290,9 +290,9 @@ background-color: #fac536; transition: background-color 0.1s ease-in; border: 1px solid #da9e10; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; transform: translateX(-21.5px); } @@ -300,9 +300,9 @@ background-color: #39ea49; transition: background-color 0.1s ease-in; border: 1px solid #13c11e; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; transform: translateX(21.5px); } @@ -310,9 +310,9 @@ background-color: #f25056; transition: background-color 0.1s ease-in; border: 1px solid #d52735; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; } [legcord-platform="darwin"] .titlebar #window-controls-container:hover #maximize:active { diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index 6d62976..793a6ed 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -8,19 +8,19 @@ width: 142px; } [legcord-platform="win32"] #window-controls-container #minimize:hover { - background-color: var(--background-modifier-hover); + background-color: var(--interactive-background-hover); transition: 0.2s ease; } [legcord-platform="win32"] #window-controls-container #maximize:hover { - background-color: var(--background-modifier-hover); + background-color: var(--interactive-background-hover); transition: 0.2s ease; } [legcord-platform="win32"] #window-controls-container #minimize:hover #minimize-icon { - background-color: var(--interactive-hover); + background-color: var(--interactive-text-hover); transition: 0.2s ease; } [legcord-platform="win32"] #window-controls-container #maximize:hover #maximize-icon { - background-color: var(--interactive-hover); + background-color: var(--interactive-text-hover); transition: 0.2s ease; } [legcord-platform="win32"] #window-controls-container #quit:hover { @@ -52,35 +52,35 @@ transition: 0.1s ease; } [legcord-platform="win32"] #window-controls-container #quit-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="win32"] #window-controls-container #minimize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 4.399V5.5H0V4.399h11z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="win32"] #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; - mask: url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z' fill='%23000'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml;charset=utf-8,") no-repeat 50% 50%; } [legcord-platform="win32"][isMaximized] #window-controls-container #maximize-icon { - background-color: var(--interactive-normal); + background-color: var(--interactive-icon-default); display: list-item; - -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + -webkit-mask: url("data:image/svg+xml,") no-repeat 50% 50%; - mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='11' height='11'%3E%3Cstyle%3E%3C/style%3E%3Cpath fill-rule='evenodd' d='m6 0h24v24h-6v6h-24v-24h6zm3 6h15v15h3v-18h-18zm-6 21h18v-18h-18z'/%3E%3C/svg%3E") + mask: url("data:image/svg+xml,") no-repeat 50% 50%; } diff --git a/src/shelter/settings/components/KeybindCard.module.css b/src/shelter/settings/components/KeybindCard.module.css index 1da3563..2f76ff9 100644 --- a/src/shelter/settings/components/KeybindCard.module.css +++ b/src/shelter/settings/components/KeybindCard.module.css @@ -21,12 +21,12 @@ .btn { border: none; background: none; - color: var(--interactive-active); + color: var(--interactive-text-active); transition: opacity 250ms; &:hover { - color: var(--interactive-hover); + color: var(--interactive-text-hover); } } diff --git a/src/shelter/settings/components/ThemesCard.module.css b/src/shelter/settings/components/ThemesCard.module.css index 9c7f529..ebeb749 100644 --- a/src/shelter/settings/components/ThemesCard.module.css +++ b/src/shelter/settings/components/ThemesCard.module.css @@ -20,12 +20,12 @@ .btn { border: none; background: none; - color: var(--interactive-active); + color: var(--interactive-text-active); transition: opacity 250ms; &:hover { - color: var(--interactive-hover); + color: var(--interactive-text-hover); } } From 677506b6aaf853152b84d30b33505cebe9eb50b8 Mon Sep 17 00:00:00 2001 From: Liam Rooney <80072393+lbrooney@users.noreply.github.com> Date: Thu, 1 Jan 2026 11:13:59 -0800 Subject: [PATCH 773/896] fix trailing bar collision with nav bar (#993) --- assets/app/css/linuxTitlebar.css | 2 +- assets/app/css/winTitlebar.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/app/css/linuxTitlebar.css b/assets/app/css/linuxTitlebar.css index 2d2a369..7935faa 100644 --- a/assets/app/css/linuxTitlebar.css +++ b/assets/app/css/linuxTitlebar.css @@ -1,4 +1,4 @@ -[legcord-platform="linux"] div[class^="trailing_"] { +[legcord-platform="linux"] div[class*="title"] + div[class*="trailing"] { margin-right: 150px; } diff --git a/assets/app/css/winTitlebar.css b/assets/app/css/winTitlebar.css index 793a6ed..1586911 100644 --- a/assets/app/css/winTitlebar.css +++ b/assets/app/css/winTitlebar.css @@ -1,6 +1,6 @@ /* Legcord on Windows */ -[legcord-platform="win32"] div[class^="trailing_"] { +[legcord-platform="win32"] div[class*="title"] + div[class*="trailing"] { margin-right: 150px; } From 485e560a562d30b329a8821bef724f3c4ac199e3 Mon Sep 17 00:00:00 2001 From: MahmodZE <97690050+MahmodZE@users.noreply.github.com> Date: Thu, 1 Jan 2026 11:15:55 -0800 Subject: [PATCH 774/896] fix: YouTube embeds in chat and watch together activity (#994) --- src/discord/window.ts | 4 ++-- src/shelter/settings/components/DropdownItem.module.css | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/discord/window.ts b/src/discord/window.ts index 5f4a620..a60ba9d 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -184,8 +184,8 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { // fix UMG video playback passedWindow.webContents.session.webRequest.onBeforeSendHeaders( { urls: ["https://www.youtube.com/embed/*"] }, - ({ requestHeaders, url }, callback) => { - requestHeaders.Referer = url; + ({ requestHeaders }, callback) => { + requestHeaders.Referer = "https://google.com"; callback({ requestHeaders }); }, ); diff --git a/src/shelter/settings/components/DropdownItem.module.css b/src/shelter/settings/components/DropdownItem.module.css index 78207cb..89f7ad7 100644 --- a/src/shelter/settings/components/DropdownItem.module.css +++ b/src/shelter/settings/components/DropdownItem.module.css @@ -1,6 +1,6 @@ .note { margin-top: 8px; - color: var(--header-secondary); + color: var(--text-subtle); font-size: 14px; line-height: 20px; font-weight: 400; @@ -11,7 +11,7 @@ display: block; overflow: hidden; margin: 0; - color: var(--header-primary); + color: var(--text-strong); line-height: 24px; font-weight: 500; word-wrap: break-word; From 004bc9244f501cc5c6a95da57ac9bc766138d7c4 Mon Sep 17 00:00:00 2001 From: MahmodZE <97690050+MahmodZE@users.noreply.github.com> Date: Thu, 1 Jan 2026 11:17:23 -0800 Subject: [PATCH 775/896] feat: refactored and redesigned some ui components (#995) --- .../components/ScreensharePicker.module.css | 11 +- .../components/ScreensharePicker.tsx | 77 ++++++------ .../settings/components/Dropdown.module.css | 83 +++++++++---- src/shelter/settings/components/Dropdown.tsx | 72 +++++++++-- .../settings/components/DropdownItem.tsx | 20 +-- .../settings/components/KeybindMaker.tsx | 22 ++-- .../components/SegmentedControl.module.css | 32 +++++ .../settings/components/SegmentedControl.tsx | 24 ++++ .../settings/pages/RegisteredGamesPage.tsx | 24 ++-- src/shelter/settings/pages/SettingsPage.tsx | 116 ++++++++---------- 10 files changed, 317 insertions(+), 164 deletions(-) create mode 100644 src/shelter/settings/components/SegmentedControl.module.css create mode 100644 src/shelter/settings/components/SegmentedControl.tsx diff --git a/src/shelter/screenshare/components/ScreensharePicker.module.css b/src/shelter/screenshare/components/ScreensharePicker.module.css index 746a356..bc90300 100644 --- a/src/shelter/screenshare/components/ScreensharePicker.module.css +++ b/src/shelter/screenshare/components/ScreensharePicker.module.css @@ -1,6 +1,6 @@ .sources { grid-template-columns: auto auto; - max-height: 300px; + max-height: 260px; overflow: hidden; display: grid; overflow-y: scroll; @@ -12,10 +12,15 @@ padding: 10px; } .qualityBox { - gap: 10%; - display: flex; + display: grid; + grid-template-columns: auto auto; + gap: 10px 10%; } .checkbox { padding-top: 10px; } +.header { + margin-bottom: 5px; + margin-left: 5px; +} \ No newline at end of file diff --git a/src/shelter/screenshare/components/ScreensharePicker.tsx b/src/shelter/screenshare/components/ScreensharePicker.tsx index db3b686..206ddcc 100644 --- a/src/shelter/screenshare/components/ScreensharePicker.tsx +++ b/src/shelter/screenshare/components/ScreensharePicker.tsx @@ -3,6 +3,8 @@ import { For, Show, createSignal } from "solid-js"; import { Dropdown } from "../../settings/components/Dropdown.jsx"; import classes from "./ScreensharePicker.module.css"; import { type IPCSources, SourceCard } from "./SourceCard.jsx"; +import { SegmentedControl } from "../../settings/components/SegmentedControl.jsx"; + const { ui: { ModalRoot, @@ -87,7 +89,7 @@ export const ScreensharePicker = (props: { props.close(); } return ( - + Screenshare
    @@ -110,42 +112,44 @@ export const ScreensharePicker = (props: {
    -
    Resolution
    - Resolution
    + { - store.resolution = Number(e.currentTarget.value); + onChange={(v) => { + store.resolution = Number(v); }} - > - - - - - - -
    -
    -
    FPS
    - { - store.fps = Number(e.currentTarget.value); - }} - > - - - - - + options={[ + { label: "480p", value: "480" }, + { label: "720p", value: "720" }, + { label: "1080p", value: "1080" }, + { label: "1440p", value: "1440" }, + { label: "2160p", value: "2160" }, + ]} + />
    -
    Audio
    +
    Audio
    +
    +
    FPS
    + { + store.fps = Number(v); + }} + options={[ + { label: "5", value: "5" }, + { label: "15", value: "15" }, + { label: "30", value: "30" }, + { label: "60", value: "60" }, + ]} + /> +
    @@ -153,19 +157,18 @@ export const ScreensharePicker = (props: {
    Venmic
    { - const source = props.audioSources!.find( - (node) => node["node.name"] === e.currentTarget.value, - ); + onChange={(v) => { + const source = props.audioSources!.find((node) => node["node.name"] === v); if (!source) return; setAudioSource(source); }} - > - - - {(source: Node) => } - - + limitHeight + options={[ + { label: "Venmic disabled", value: "Venmic disabled" }, + ...(props.audioSources?.map((s) => ({ label: s["node.name"], value: s["node.name"] })) ?? + []), + ]} + />
    diff --git a/src/shelter/settings/components/Dropdown.module.css b/src/shelter/settings/components/Dropdown.module.css index 03b0d70..c6e1857 100644 --- a/src/shelter/settings/components/Dropdown.module.css +++ b/src/shelter/settings/components/Dropdown.module.css @@ -1,27 +1,68 @@ -.acDropdown option { - color: var(--text-secondary); - font-weight: 400; - font-style: normal; +.container { + margin-top: 8px; + margin-bottom: 24px; + position: relative; } -.acDropdown { - margin-top: 10px; - margin-bottom: 20px; - padding-top: 5px; - padding-bottom: 5px; - width: 100%; - font-size: 25px; - -webkit-appearance: button; - -moz-appearance: button; - appearance: button; - background-color: var(--background-secondary-alt); - background-position: center right; - background-repeat: no-repeat; - border: 1px solid var(--background-floating); - border-radius: 2px; +.valuewrapper { + display: flex; + justify-content: space-between; + align-items: center; + cursor: pointer; + padding: 8px; + color: var(--text-default); - font-size: 1.2em; + font-weight: var(--font-weight-medium); + background-color: var(--input-background-default); + border: 1px solid var(--input-border-default); + border-radius: var(--radius-sm); + color: var(--input-text-default); + transition: border-color .1s ease; + box-sizing: border-box; + min-height: var(--control-input-height-md); + + &::hover { + border-color: var(--input-border-hover); + transition: border-color .1s ease; + } +} +.value { + align-items: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - outline: none !important; + color: var(--text-default); + font-family: var(--font-primary); + font-size: 16px; + font-weight: 500; + line-height: 1.25; } +.list { + min-height: 0; + margin: 0; + margin-top: 8px; + background-color: var(--background-surface-higher); + border: 1px solid var(--border-subtle); + border-radius: 8px; + position: absolute; + width: 100%; + z-index: 100; + overflow-y: auto; +} +option { + color: var(--text-subtle); + font-size: 16px; + font-weight: 400; + line-height: 20px; + align-items: center; + padding: 12px; + cursor: pointer; + + &:hover { + background-color: var(--interactive-background-hover); + color: var(--interactive-text-hover); + } + &[aria-selected="true"] { + background-color: var(--interactive-background-selected); + color: var(--interactive-text-active); + } +} \ No newline at end of file diff --git a/src/shelter/settings/components/Dropdown.tsx b/src/shelter/settings/components/Dropdown.tsx index ab74ad7..a80a373 100644 --- a/src/shelter/settings/components/Dropdown.tsx +++ b/src/shelter/settings/components/Dropdown.tsx @@ -1,14 +1,70 @@ -import type { JSX, JSXElement } from "solid-js"; +import { createSignal, onMount, onCleanup, createMemo, For, createEffect } from "solid-js"; import classes from "./Dropdown.module.css"; export const Dropdown = (props: { - value: string | number | string[]; - onChange: JSX.EventHandler; - children: JSXElement[]; + value: string | number; + onChange: (val: string) => void; + options: { label: string; value: string | number }[]; + limitHeight?: boolean | undefined; }) => { + const [open, set] = createSignal(false); + const [maxHeight, setMaxHeight] = createSignal(""); + let container: HTMLDivElement | undefined; + + const handler = (e: MouseEvent) => !container?.contains(e.target as Node) && set(false); + + onMount(() => document.addEventListener("click", handler)); + onCleanup(() => document.removeEventListener("click", handler)); + + createEffect(() => { + if (!open() || !props.limitHeight) return; + + const rect = container?.parentElement?.getBoundingClientRect(); + if(!rect) return; + + setMaxHeight(`${rect.bottom - container!.getBoundingClientRect().bottom - 20}px`); + }); + + const text = createMemo(() => props.options.find((o) => o.value == props.value)?.label ?? props.value); + return ( - +
    +
    set(!open())}> +
    + {text()} +
    +
    + +
    +
    + {open() && ( +
    + + {(opt) => ( + + )} + +
    + )} +
    ); -}; +}; \ No newline at end of file diff --git a/src/shelter/settings/components/DropdownItem.tsx b/src/shelter/settings/components/DropdownItem.tsx index f438497..8b99b50 100644 --- a/src/shelter/settings/components/DropdownItem.tsx +++ b/src/shelter/settings/components/DropdownItem.tsx @@ -1,4 +1,4 @@ -import { type JSX, type JSXElement, Show } from "solid-js"; +import { type JSXElement, Show } from "solid-js"; import { Dropdown } from "./Dropdown.jsx"; import classes from "./DropdownItem.module.css"; const { @@ -10,8 +10,9 @@ export const DropdownItem = (props: { note: string; link?: string; value: string; - onChange: JSX.EventHandler; - children: JSXElement[]; + onChange: (val: string) => void; + options: { label: string; value: string | number }[]; + limitHeight?: boolean | undefined; extraItems?: JSXElement; }) => { return ( @@ -19,12 +20,13 @@ export const DropdownItem = (props: {
    {props.title}
    -
    {props.note}
    - - Learn more here. - - {/* biome-ignore lint/correctness/noChildrenProp: FIX-ME, couldn't figure out proper types */} - +
    + {props.note} + + Learn more here. + +
    + {props.extraItems} diff --git a/src/shelter/settings/components/KeybindMaker.tsx b/src/shelter/settings/components/KeybindMaker.tsx index e85de17..2f2ca74 100644 --- a/src/shelter/settings/components/KeybindMaker.tsx +++ b/src/shelter/settings/components/KeybindMaker.tsx @@ -95,16 +95,18 @@ export const KeybindMaker = (props: { close: () => void }) => {
    Action
    setAction((e.target as HTMLInputElement).value as KeybindActions)} - > - - - - - - - - + onChange={(v) => setAction(v as KeybindActions)} + limitHeight + options={[ + { label: "Mute", value: "mute" }, + { label: "Deafen", value: "deafen" }, + { label: "Leave call", value: "leaveCall" }, + { label: "Navigate forward", value: "navigateForward" }, + { label: "Navigate back", value: "navigateBack" }, + { label: "Run Javascript", value: "runJavascript" }, + { label: "Open Quick CSS", value: "openQuickCss" }, + ]} + /> void; + options: { label: string; value: string | number }[]; +}) => { + return ( +
    + + {(opt) => ( +
    props.onChange(String(opt.value))} + > + {opt.label} +
    + )} +
    +
    + ); +}; \ No newline at end of file diff --git a/src/shelter/settings/pages/RegisteredGamesPage.tsx b/src/shelter/settings/pages/RegisteredGamesPage.tsx index a624d93..1bc1e83 100644 --- a/src/shelter/settings/pages/RegisteredGamesPage.tsx +++ b/src/shelter/settings/pages/RegisteredGamesPage.tsx @@ -1,5 +1,5 @@ import type { ProcessInfo } from "arrpc"; -import { For, createSignal } from "solid-js"; +import { createSignal } from "solid-js"; import { sleep } from "../../../common/sleep.js"; import { Dropdown } from "../components/Dropdown.jsx"; import classes from "./RegisteredGames.module.css"; @@ -9,7 +9,7 @@ const { export function RegisteredGamesPage() { const [detectables, setDetectables] = createSignal(); - const [selectedDetectable, setSelectedDetectable] = createSignal(""); + const [selectedDetectable, setSelectedDetectable] = createSignal("refresh"); function getDetectables() { window.legcord.rpc.refreshProcessList(); sleep(500).then(() => { @@ -28,23 +28,21 @@ export function RegisteredGamesPage() {
    { - const detectable = e.currentTarget.value; - if (detectable === "refresh") { + onChange={(v) => { + if (v === "refresh") { getDetectables(); setSelectedDetectable(""); console.log("Detectables refreshed"); } else { - console.log("Selected detectable:", detectable); - setSelectedDetectable(e.currentTarget.value); + console.log("Selected detectable:", v); + setSelectedDetectable(v); } }} - > - - {(process: ProcessInfo) => } - - - + options={[ + ...(detectables()?.map((p) => ({ label: p[1], value: p[1] })) ?? []), + { label: "Refresh list", value: "refresh" }, + ]} + /> diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index e368542..670660c 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -48,28 +48,22 @@ export function SettingsPage() { > {store.i18n["settings-invitewebsocket"]} -
    - {store.i18n["settings-category-lookAndFeel"]} -
    - setConfig("windowStyle", (e.target as HTMLInputElement).value as Settings["windowStyle"], true) - } + onChange={(v) => setConfig("windowStyle", v as Settings["windowStyle"], true)} title={store.i18n["settings-theme"]} note={store.i18n["settings-theme-desc"]} link="https://github.com/Legcord/Legcord/wiki/Settings-%5Bwip%5D#legcord-theme" - > - - - - - + options={[ + { label: store.i18n["settings-theme-default"], value: "default" }, + { label: store.i18n["settings-theme-native"], value: "native" }, + { label: store.i18n["settings-theme-overlay"], value: "overlay" }, + { label: "Legacy", value: "legacy" }, + ]} + /> - setConfig("transparency", (e.target as HTMLInputElement).value as Settings["transparency"], true) - } + onChange={(v) => setConfig("transparency", v as Settings["transparency"], true)} title={store.i18n["settings-transparency"]} note={store.i18n["settings-transparency-desc"]} link="https://github.com/Legcord/Legcord/wiki/Transparency-options" @@ -93,13 +87,14 @@ export function SettingsPage() {
    } - > - - - - - - + options={[ + { label: store.i18n["settings-transparency-universal"], value: "universal" }, + ...(window.legcord.platform === "win32" || window.legcord.platform === "darwin" + ? [{ label: store.i18n["settings-transparency-modern"], value: "modern" }] + : []), + { label: store.i18n["settings-none"], value: "none" }, + ]} + /> setConfig("tray", (e.target as HTMLInputElement).value as Settings["tray"], true)} + onChange={(v) => setConfig("tray", v as Settings["tray"], true)} title={store.i18n["settings-trayIcon"]} note={store.i18n["settings-trayIcon-desc"]} - > - - - - - - - - - - + options={[ + { label: store.i18n["settings-trayIcon-dynamic"], value: "dynamic" }, + { label: store.i18n["settings-trayIcon-disabled"], value: "disabled" }, + { label: store.i18n["settings-trayIcon-normal"], value: "dsc-tray" }, + { label: store.i18n["settings-trayIcon-classic"], value: "clsc-dsc-tray" }, + { label: store.i18n["settings-trayIcon-colored-plug"], value: "ac_plug_colored" }, + { label: store.i18n["settings-trayIcon-white-plug"], value: "ac_white_plug" }, + { label: store.i18n["settings-trayIcon-white-plug-alt"], value: "ac_white_plug_hollow" }, + { label: store.i18n["settings-trayIcon-black-plug"], value: "ac_black_plug" }, + { label: store.i18n["settings-trayIcon-black-plug-alt"], value: "ac_black_plug_hollow" }, + ]} + /> - setConfig("channel", (e.target as HTMLInputElement).value as Settings["channel"], true) - } + onChange={(v) => setConfig("channel", v as Settings["channel"], true)} title={store.i18n["settings-channel"]} note={store.i18n["settings-channel-desc"]} link="https://support.discord.com/hc/en-us/articles/360035675191-Discord-Testing-Clients" - > - - - - + options={[ + { label: "Stable", value: "stable" }, + { label: "Canary", value: "canary" }, + { label: "PTB", value: "ptb" }, + ]} + /> - setConfig( - "performanceMode", - (e.target as HTMLInputElement).value as Settings["performanceMode"], - true, - ) - } + onChange={(v) => setConfig("performanceMode", v as Settings["performanceMode"], true)} title={store.i18n["settings-prfmMode"]} note={store.i18n["settings-prfmMode-desc"]} link="https://github.com/Legcord/Legcord/blob/dev/src/common/flags.ts" - > - - - - - - + options={[ + { label: store.i18n["settings-prfmMode-dynamic"], value: "dynamic" }, + { label: store.i18n["settings-prfmMode-performance"], value: "performance" }, + { label: store.i18n["settings-prfmMode-battery"], value: "battery" }, + { label: store.i18n["settings-prfmMode-vaapi"], value: "vaapi" }, + { label: store.i18n["settings-none"], value: "none" }, + ]} + /> { + onChange={(v) => { const audioSettings = structuredClone({ ...settings.audio }); - audioSettings.loopbackType = (e.target as HTMLInputElement) - .value as Settings["audio"]["loopbackType"]; + audioSettings.loopbackType = v as Settings["audio"]["loopbackType"]; setConfig("audio", audioSettings); }} title={store.i18n["settings-audio"]} note={store.i18n["settings-audio-desc"]} link="https://www.electronjs.org/docs/latest/api/session#sessetdisplaymediarequesthandlerhandler-opts" - > - - - + options={[ + { label: "Loopback", value: "loopback" }, + { label: "Loopback with mute", value: "loopbackWithMute" }, + ]} + /> Date: Thu, 1 Jan 2026 11:18:08 -0800 Subject: [PATCH 776/896] fix: improve the keybind maker (#996) --- .../components/KeybindMaker.module.css | 17 ++++ .../settings/components/KeybindMaker.tsx | 99 ++++++++++++------- 2 files changed, 78 insertions(+), 38 deletions(-) diff --git a/src/shelter/settings/components/KeybindMaker.module.css b/src/shelter/settings/components/KeybindMaker.module.css index 1ae2dd7..5e819c4 100644 --- a/src/shelter/settings/components/KeybindMaker.module.css +++ b/src/shelter/settings/components/KeybindMaker.module.css @@ -1,5 +1,22 @@ .grabBox { + position: relative; flex-direction: row; flex: 1; display: flex; } +.recBtn { + position: absolute; + width: auto; + top: 50%; + right: 0; + transform: translate(-7px, -50%); +} +.error { + color: var(--control-critical-secondary-text-default); + font-size: 14px; + line-height: 20px; + font-weight: 400; + + margin: 0; + margin-left: 5px; +} \ No newline at end of file diff --git a/src/shelter/settings/components/KeybindMaker.tsx b/src/shelter/settings/components/KeybindMaker.tsx index 2f2ca74..a09f7f6 100644 --- a/src/shelter/settings/components/KeybindMaker.tsx +++ b/src/shelter/settings/components/KeybindMaker.tsx @@ -1,7 +1,8 @@ -import { Show, createSignal } from "solid-js"; +import { Show, createSignal, onCleanup } from "solid-js"; import type { KeybindActions } from "../../../@types/keybind.js"; import { Dropdown } from "./Dropdown.jsx"; import classes from "./KeybindMaker.module.css"; + const { ui: { ModalRoot, @@ -12,57 +13,64 @@ const { TextBox, Button, ButtonSizes, + ButtonColors, Header, HeaderTags, Divider, SwitchItem, - genId, - showToast, + genId }, plugin: { store }, } = shelter; + export const KeybindMaker = (props: { close: () => void }) => { + const [recording, setRecording] = createSignal(false); const [accelerator, setAccelerator] = createSignal(""); const [global, setGlobal] = createSignal(true); const [action, setAction] = createSignal("mute"); const [javascriptCode, setJavascriptCode] = createSignal(""); const [enabled, setEnabled] = createSignal(true); + let logged: string[] = []; - let lock = false; - function grabKeys() { - if (lock) return; - lock = true; + let containsNonModifier = false; + let timeout: NodeJS.Timeout | null = null; + function log(event: KeyboardEvent) { + const key = event.key.replace(" ", "Space"); + if (logged.includes(key) || logged.length > 3) { + console.log("already in array"); + } else { + console.log(key); + logged.unshift(key); + if(event.location == 0) containsNonModifier = true; + setAccelerator(logged.join("+")); + } + if(timeout) clearTimeout(timeout); + timeout = setTimeout(stopRecording, 3000); + }; + function stopRecording() { + if (!recording()) return; + setRecording(false); + if(timeout) { + clearTimeout(timeout); + timeout = null; + }; + + document.body.removeEventListener("keyup", log); + console.log("Recording stop"); + }; + onCleanup(() => recording() && stopRecording()); + + function startRecording() { + if (recording()) return; + setRecording(true); + logged = []; + containsNonModifier = false; setAccelerator(""); console.log("Recording start"); - document.body.addEventListener("keyup", function log(event) { - const key = event.key; - if (logged.includes(key) || logged.length > 3) { - console.log("already in array"); - } else { - key.replace(" ", "Space"); - console.log(key); - logged.push(key); - setAccelerator(`${key}+${accelerator()}`); - } - setTimeout(() => { - if (lock) { - lock = false; - document.body.removeEventListener("keyup", log); - console.log("Recording stop"); - setAccelerator(accelerator().slice(0, -1)); - } - }, 3000); - }); + document.body.addEventListener("keyup", log); } function save() { - if (lock) - return showToast({ - title: "Slow down!", - content: "Pause for a few seconds after recording a keybind before saving it.", - duration: 3000, - }); - if (accelerator() === "") return; const current = store.settings.keybinds; const keybind = { accelerator: accelerator(), @@ -78,18 +86,33 @@ export const KeybindMaker = (props: { close: () => void }) => { console.log(store.settings.keybinds); window.legcord.settings.addKeybind(keybind); } + return ( Add a keybind -
    Accelerator
    + +
    + Accelerator +
    + +

    Modifier-only shortcuts are not supported.

    +
    +
    {/* FIXME - I have no idea what this `disabled` tag is, its not in the typedefs // @ts-expect-error*/} - + { + recording() ? + + : + + }
    Action
    @@ -123,7 +146,7 @@ export const KeybindMaker = (props: { close: () => void }) => {
    - + ); }; From 0e215e6aae0a9f5dc9e7ce1fbeb34674280c7b40 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:46:43 +0100 Subject: [PATCH 777/896] feat: fix macOS titlebar CSS --- assets/app/css/darwinTitlebar.css | 8 +-- biome.jsonc | 3 ++ package.json | 2 +- pnpm-lock.yaml | 30 ++++++------ .../components/ScreensharePicker.module.css | 2 +- .../components/ScreensharePicker.tsx | 20 +++++--- .../settings/components/Dropdown.module.css | 2 +- src/shelter/settings/components/Dropdown.tsx | 38 +++++++------- .../settings/components/DropdownItem.tsx | 7 ++- .../components/KeybindMaker.module.css | 2 +- .../settings/components/KeybindMaker.tsx | 49 +++++++++++-------- .../components/SegmentedControl.module.css | 2 +- .../settings/components/SegmentedControl.tsx | 4 +- 13 files changed, 98 insertions(+), 71 deletions(-) diff --git a/assets/app/css/darwinTitlebar.css b/assets/app/css/darwinTitlebar.css index a9aeb11..f355555 100644 --- a/assets/app/css/darwinTitlebar.css +++ b/assets/app/css/darwinTitlebar.css @@ -13,7 +13,7 @@ display: block; line-height: 45px; left: 0; - transform: translate(-82px, 4px); + transform: translate(-82px, 0px); } [legcord-platform="darwin"] #window-controls-container:hover #minimize #minimize-icon, @@ -36,7 +36,7 @@ no-repeat 50% 50%; mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") no-repeat 50% 50%; - transform: translate(-0.3px, -9px); + transform: translate(-0.4px, -7px); } [legcord-platform="darwin"]:not([unFocused]) #window-controls-container #minimize #minimize-icon { background-color: #7d631b; @@ -44,7 +44,7 @@ no-repeat 50% 50%; mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=") no-repeat 50% 50%; - transform: translate(-0px, -9px); + transform: translate(-0px, -7px); } [legcord-platform="darwin"]:not([unFocused]) #window-controls-container #maximize #maximize-icon { background-color: #1d7525; @@ -52,7 +52,7 @@ no-repeat 50% 50%; mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=") no-repeat 50% 50%; - transform: translate(0.1px, -9px); + transform: translate(0px, -7px); } [legcord-platform="darwin"] #window-controls-container #minimize { diff --git a/biome.jsonc b/biome.jsonc index 21a09f5..da9bc49 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -27,6 +27,9 @@ "style": { "noNonNullAssertion": "off", "noUselessElse": "off" // NOTE - This rule seems broken + }, + "a11y": { + "useKeyWithClickEvents": "off" } } } diff --git a/package.json b/package.json index 5666351..f8ad0f5 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@uwu/lune": "^1.5.1", "@uwu/shelter-defs": "^1.4.1", "babel-preset-solid": "^1.9.3", - "electron": "39.2.6", + "electron": "39.2.7", "electron-builder": "^26.3.5", "lucide-solid": "^0.475.0", "rolldown": "1.0.0-beta.31", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e14e27..53dac3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,10 +23,6 @@ importers: ws: specifier: ^8.18.0 version: 8.18.0 - optionalDependencies: - '@vencord/venmic': - specifier: ^6.1.0 - version: 6.1.0 devDependencies: '@babel/preset-flow': specifier: ^7.25.9 @@ -62,8 +58,8 @@ importers: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 39.2.6 - version: 39.2.6 + specifier: 39.2.7 + version: 39.2.7 electron-builder: specifier: ^26.3.5 version: 26.3.5(electron-builder-squirrel-windows@25.1.8) @@ -91,6 +87,10 @@ importers: xml-formatter: specifier: ^3.6.6 version: 3.6.6 + optionalDependencies: + '@vencord/venmic': + specifier: ^6.1.0 + version: 6.1.0 packages: @@ -1755,8 +1755,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@39.2.6: - resolution: {integrity: sha512-dHBgTodWBZd+tL1Dt0PSh/CFLHeDkFCTKCTXu1dgPhlE9Z3k2zzlBQ9B2oW55CFsKanBDHiUomHJNw0XaSdQpA==} + electron@39.2.7: + resolution: {integrity: sha512-KU0uFS6LSTh4aOIC3miolcbizOFP7N1M46VTYVfqIgFiuA2ilfNaOHLDS9tCMvwwHRowAsvqBrh9NgMXcTOHCQ==} engines: {node: '>= 12.20.55'} hasBin: true @@ -3580,7 +3580,7 @@ snapshots: node-gyp: 9.4.1 ora: 5.4.1 read-binary-file-arch: 1.0.6 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 yargs: 17.7.2 transitivePeerDependencies: @@ -3935,7 +3935,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.2 + semver: 7.7.3 '@npmcli/fs@4.0.0': dependencies: @@ -4400,7 +4400,7 @@ snapshots: minimatch: 10.0.3 resedit: 1.7.2 sanitize-filename: 1.6.3 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 temp-file: 3.4.0 transitivePeerDependencies: @@ -5024,7 +5024,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@39.2.6: + electron@39.2.7: dependencies: '@electron/get': 2.0.3 '@types/node': 22.10.1 @@ -5311,7 +5311,7 @@ snapshots: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.7.2 + semver: 7.7.3 serialize-error: 7.0.1 optional: true @@ -5801,7 +5801,7 @@ snapshots: node-abi@3.71.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 node-abi@4.17.0: dependencies: @@ -5848,7 +5848,7 @@ snapshots: nopt: 6.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: diff --git a/src/shelter/screenshare/components/ScreensharePicker.module.css b/src/shelter/screenshare/components/ScreensharePicker.module.css index bc90300..14bf8a5 100644 --- a/src/shelter/screenshare/components/ScreensharePicker.module.css +++ b/src/shelter/screenshare/components/ScreensharePicker.module.css @@ -23,4 +23,4 @@ .header { margin-bottom: 5px; margin-left: 5px; -} \ No newline at end of file +} diff --git a/src/shelter/screenshare/components/ScreensharePicker.tsx b/src/shelter/screenshare/components/ScreensharePicker.tsx index 206ddcc..08b673a 100644 --- a/src/shelter/screenshare/components/ScreensharePicker.tsx +++ b/src/shelter/screenshare/components/ScreensharePicker.tsx @@ -1,9 +1,9 @@ import type { Node } from "@vencord/venmic"; import { For, Show, createSignal } from "solid-js"; import { Dropdown } from "../../settings/components/Dropdown.jsx"; +import { SegmentedControl } from "../../settings/components/SegmentedControl.jsx"; import classes from "./ScreensharePicker.module.css"; import { type IPCSources, SourceCard } from "./SourceCard.jsx"; -import { SegmentedControl } from "../../settings/components/SegmentedControl.jsx"; const { ui: { @@ -112,7 +112,9 @@ export const ScreensharePicker = (props: {
    -
    Resolution
    +
    + Resolution +
    { @@ -129,14 +131,18 @@ export const ScreensharePicker = (props: {
    -
    Audio
    +
    + Audio +
    -
    FPS
    +
    + FPS +
    { @@ -165,8 +171,10 @@ export const ScreensharePicker = (props: { limitHeight options={[ { label: "Venmic disabled", value: "Venmic disabled" }, - ...(props.audioSources?.map((s) => ({ label: s["node.name"], value: s["node.name"] })) ?? - []), + ...(props.audioSources?.map((s) => ({ + label: s["node.name"], + value: s["node.name"], + })) ?? []), ]} /> diff --git a/src/shelter/settings/components/Dropdown.module.css b/src/shelter/settings/components/Dropdown.module.css index c6e1857..d5b13db 100644 --- a/src/shelter/settings/components/Dropdown.module.css +++ b/src/shelter/settings/components/Dropdown.module.css @@ -65,4 +65,4 @@ option { background-color: var(--interactive-background-selected); color: var(--interactive-text-active); } -} \ No newline at end of file +} diff --git a/src/shelter/settings/components/Dropdown.tsx b/src/shelter/settings/components/Dropdown.tsx index a80a373..af61f23 100644 --- a/src/shelter/settings/components/Dropdown.tsx +++ b/src/shelter/settings/components/Dropdown.tsx @@ -1,4 +1,4 @@ -import { createSignal, onMount, onCleanup, createMemo, For, createEffect } from "solid-js"; +import { For, createEffect, createMemo, createSignal, onCleanup, onMount } from "solid-js"; import classes from "./Dropdown.module.css"; export const Dropdown = (props: { @@ -20,30 +20,34 @@ export const Dropdown = (props: { if (!open() || !props.limitHeight) return; const rect = container?.parentElement?.getBoundingClientRect(); - if(!rect) return; + if (!rect) return; setMaxHeight(`${rect.bottom - container!.getBoundingClientRect().bottom - 20}px`); }); - const text = createMemo(() => props.options.find((o) => o.value == props.value)?.label ?? props.value); + const text = createMemo(() => props.options.find((o) => o.value === props.value)?.label ?? props.value); return ( -
    + // biome-ignore lint/a11y/useSemanticElements: FIX-ME +
    set(!open())}> -
    +
    {text()}
    -
    @@ -53,7 +57,7 @@ export const Dropdown = (props: { {(opt) => (
    ); -}; \ No newline at end of file +}; diff --git a/src/shelter/settings/components/DropdownItem.tsx b/src/shelter/settings/components/DropdownItem.tsx index 8b99b50..7bae47f 100644 --- a/src/shelter/settings/components/DropdownItem.tsx +++ b/src/shelter/settings/components/DropdownItem.tsx @@ -26,7 +26,12 @@ export const DropdownItem = (props: { Learn more here.
    - + {props.extraItems} diff --git a/src/shelter/settings/components/KeybindMaker.module.css b/src/shelter/settings/components/KeybindMaker.module.css index 5e819c4..40d8c5d 100644 --- a/src/shelter/settings/components/KeybindMaker.module.css +++ b/src/shelter/settings/components/KeybindMaker.module.css @@ -19,4 +19,4 @@ margin: 0; margin-left: 5px; -} \ No newline at end of file +} diff --git a/src/shelter/settings/components/KeybindMaker.tsx b/src/shelter/settings/components/KeybindMaker.tsx index a09f7f6..d541cbb 100644 --- a/src/shelter/settings/components/KeybindMaker.tsx +++ b/src/shelter/settings/components/KeybindMaker.tsx @@ -18,7 +18,7 @@ const { HeaderTags, Divider, SwitchItem, - genId + genId, }, plugin: { store }, } = shelter; @@ -41,23 +41,23 @@ export const KeybindMaker = (props: { close: () => void }) => { } else { console.log(key); logged.unshift(key); - if(event.location == 0) containsNonModifier = true; + if (event.location === 0) containsNonModifier = true; setAccelerator(logged.join("+")); } - if(timeout) clearTimeout(timeout); + if (timeout) clearTimeout(timeout); timeout = setTimeout(stopRecording, 3000); - }; + } function stopRecording() { if (!recording()) return; setRecording(false); - if(timeout) { + if (timeout) { clearTimeout(timeout); timeout = null; - }; + } document.body.removeEventListener("keyup", log); console.log("Recording stop"); - }; + } onCleanup(() => recording() && stopRecording()); function startRecording() { @@ -92,9 +92,7 @@ export const KeybindMaker = (props: { close: () => void }) => { Add a keybind -
    - Accelerator -
    +
    Accelerator

    Modifier-only shortcuts are not supported.

    @@ -103,16 +101,20 @@ export const KeybindMaker = (props: { close: () => void }) => { {/* FIXME - I have no idea what this `disabled` tag is, its not in the typedefs // @ts-expect-error*/} - { - recording() ? - - : - - } + {recording() ? ( + + ) : ( + + )}
    Action
    @@ -146,7 +148,12 @@ export const KeybindMaker = (props: { close: () => void }) => { - + ); }; diff --git a/src/shelter/settings/components/SegmentedControl.module.css b/src/shelter/settings/components/SegmentedControl.module.css index aeaad2b..dbc0b3b 100644 --- a/src/shelter/settings/components/SegmentedControl.module.css +++ b/src/shelter/settings/components/SegmentedControl.module.css @@ -29,4 +29,4 @@ .item[aria-selected="true"] { background-color: var(--interactive-background-selected); color: var(--interactive-text-active); -} \ No newline at end of file +} diff --git a/src/shelter/settings/components/SegmentedControl.tsx b/src/shelter/settings/components/SegmentedControl.tsx index d296fb7..b5fff3c 100644 --- a/src/shelter/settings/components/SegmentedControl.tsx +++ b/src/shelter/settings/components/SegmentedControl.tsx @@ -12,7 +12,7 @@ export const SegmentedControl = (props: { {(opt) => (
    props.onChange(String(opt.value))} > {opt.label} @@ -21,4 +21,4 @@ export const SegmentedControl = (props: {
    ); -}; \ No newline at end of file +}; From 64d08d5fc660632054c3da5c0b5b1180379f8188 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 1 Jan 2026 21:09:42 +0100 Subject: [PATCH 778/896] fix: download apps button --- assets/app/css/discord.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/app/css/discord.css b/assets/app/css/discord.css index 1712677..7c17ba2 100644 --- a/assets/app/css/discord.css +++ b/assets/app/css/discord.css @@ -10,7 +10,7 @@ color: var(--text-muted); } -div[class^="listItem__"]:has([data-list-item-id="guildsnav___app-download-button"]) { +div:has(> span [data-list-item-id="guildsnav___app-download-button"]) { display: none !important; } From 2144463c50ff3dbaad4edb7f658dded00412ec0c Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 2 Jan 2026 14:40:24 +0100 Subject: [PATCH 779/896] chore: update arRPC --- assets/lang/en-US.json | 6 +++ package.json | 2 +- pnpm-lock.yaml | 18 ++++----- src/@types/settings.d.ts | 3 ++ src/common/config.ts | 3 ++ src/discord/rpcProcess.ts | 11 +++++- src/rpc.ts | 7 +++- src/shelter/settings/pages/SettingsPage.tsx | 43 ++++++++++++++++----- 8 files changed, 71 insertions(+), 22 deletions(-) diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index 7180b58..86b6b38 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.json @@ -62,6 +62,12 @@ "settings-noBundleUpdates-desc": "Disables automatic updates for client mods.", "settings-hardwareAcceleration": "Hardware acceleration", "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", + "settings-processScanning": "Process scanning", + "settings-processScanning-desc": "Enables scanning for running games to improve Rich Presence detection.", + "settings-windowsLegacyScanning": "Windows legacy scanning", + "settings-windowsLegacyScanning-desc": "Uses legacy method for scanning processes on Windows (pre v1.1.6). May improve compatibility on some systems but is less efficient.", + "settings-scanInterval": "Scan interval (ms)", + "settings-scanInterval-desc": "Sets how often (in milliseconds) the process scanning occurs. Lower values may improve detection speed but can increase CPU usage.", "settings-blockPowerSavingInVoiceChat": "Block power saving in voice chat", "settings-blockPowerSavingInVoiceChat-desc": "Prevent Legcord from being suspended. Keeps system active but allows screen to be turned off.", "settings-mobileMode": "Mobile mode", diff --git a/package.json b/package.json index f8ad0f5..330d99f 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "xml-formatter": "^3.6.6" }, "dependencies": { - "arrpc": "https://github.com/Legcord/arrpc.git#015c803a80288e3345ec55f8963015a626509007", + "arrpc": "https://github.com/Legcord/arrpc.git#f7ab641ad3386d44364e227d97ba0dc847de08d1", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53dac3a..20c9519 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: arrpc: - specifier: https://github.com/Legcord/arrpc.git#015c803a80288e3345ec55f8963015a626509007 - version: https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007 + specifier: https://github.com/Legcord/arrpc.git#f7ab641ad3386d44364e227d97ba0dc847de08d1 + version: https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1 electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -1369,8 +1369,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007: - resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1: + resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1} version: 3.5.0 hasBin: true @@ -2229,8 +2229,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - koffi@2.12.0: - resolution: {integrity: sha512-J886y/bvoGG4ZhMVstB2Nh6/q9tzAYn0kaH7Ss8DWavGIxP5jOLzUY9IZzw9pMuXArj0SLSpl0MYsKRURPAv7g==} + koffi@2.15.0: + resolution: {integrity: sha512-174BTuWK7L42Om7nDWy9YOTXj6Dkm14veuFf5yhVS5VU6GjtOI1Wjf+K16Z0JvSuZ3/NpkVzFBjE1oKbthTIEA==} lazy-val@1.0.5: resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} @@ -4495,9 +4495,9 @@ snapshots: array-union@2.1.0: {} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007: + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1: dependencies: - koffi: 2.12.0 + koffi: 2.15.0 ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -5553,7 +5553,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - koffi@2.12.0: {} + koffi@2.15.0: {} lazy-val@1.0.5: {} diff --git a/src/@types/settings.d.ts b/src/@types/settings.d.ts index a585f81..b5a05be 100644 --- a/src/@types/settings.d.ts +++ b/src/@types/settings.d.ts @@ -66,5 +66,8 @@ export interface Settings { additionalArguments: string; noBundleUpdates: boolean; overlayButtonColor: string; + processScanning: boolean; + windowsLegacyScanning: boolean; + scanInterval: number; modCache?: Record; } diff --git a/src/common/config.ts b/src/common/config.ts index a2ea050..2173567 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -10,6 +10,9 @@ const defaults: Settings = { bounceOnPing: false, legcordCSP: true, minimizeToTray: true, + processScanning: true, + windowsLegacyScanning: false, + scanInterval: 5000, overlayButtonColor: "#121214", keybinds: [], audio: { diff --git a/src/discord/rpcProcess.ts b/src/discord/rpcProcess.ts index 575a509..23286f9 100644 --- a/src/discord/rpcProcess.ts +++ b/src/discord/rpcProcess.ts @@ -1,5 +1,6 @@ import path from "node:path"; import { type BrowserWindow, utilityProcess } from "electron"; +import { getConfig } from "../common/config.js"; import { getDetectables } from "../common/detectables.js"; import { createInviteWindow } from "./window.js"; @@ -8,7 +9,15 @@ export let processList = []; export function startRPC(window: BrowserWindow) { child = utilityProcess.fork(path.join(import.meta.dirname, "rpc.js"), undefined, { - env: { detectables: JSON.stringify(getDetectables()) }, + env: { + detectables: JSON.stringify(getDetectables()), + settings: JSON.stringify({ + processScanning: getConfig("processScanning"), + windowsLegacyScanning: getConfig("windowsLegacyScanning"), + scanInterval: getConfig("scanInterval"), + }), + }, + serviceName: "legcord-rpc", }); child.on("spawn", () => { diff --git a/src/rpc.ts b/src/rpc.ts index 3ed3d60..4b593ac 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -1,10 +1,13 @@ // this file is executed in the utility process // check window.ts for more details // see more here https://www.electronjs.org/docs/latest/api/utility-process -import RPCServer, { type GameList } from "arrpc"; +import RPCServer, { type ServerSettings, type GameList } from "arrpc"; const detectables: GameList = process.env.detectables ? JSON.parse(process.env.detectables) : []; -const RPC = new RPCServer(detectables); +const settings: ServerSettings = process.env.settings + ? JSON.parse(process.env.settings) + : { processScanning: true, windowsLegacyScanning: false, scanInterval: 5000 }; +const RPC = new RPCServer(detectables, settings); RPC.on("activity", (data: string) => { console.log(data); diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index 670660c..10751ac 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -1,7 +1,6 @@ import { Show } from "solid-js"; import type { Settings } from "../../../@types/settings.js"; import { DropdownItem } from "../components/DropdownItem.jsx"; -import { HeroUpdater } from "../components/HeroUpdater.jsx"; import { TextBoxItem } from "../components/TextBoxItem.jsx"; import { setConfig, toggleMod } from "../settings.js"; import classes from "./SettingsPage.module.css"; @@ -16,7 +15,6 @@ const settings = store.settings as Settings; export function SettingsPage() { return ( <> -
    {store.i18n["settings-category-mods"]}
    @@ -41,13 +39,6 @@ export function SettingsPage() { > Equicord - setConfig("inviteWebsocket", e, true)} - > - {store.i18n["settings-invitewebsocket"]} - setConfig("windowStyle", v as Settings["windowStyle"], true)} @@ -262,6 +253,40 @@ export function SettingsPage() { > {store.i18n["settings-sleepInBackground"]} +
    + arRPC +
    + setConfig("inviteWebsocket", e, true)} + > + {store.i18n["settings-invitewebsocket"]} + + + setConfig("processScanning", e, true)} + > + {store.i18n["settings-processScanning"]} + + + setConfig("windowsLegacyScanning", e, true)} + > + {store.i18n["settings-windowsLegacyScanning"]} + + + setConfig("scanInterval", Number(v))} + /> +
    {store.i18n["settings-category-debug"]}
    From ce8f8c1b5b46f316eb9dcc17c1f7c66a233e3a7f Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:55:01 +0100 Subject: [PATCH 780/896] chore: bump arrpc --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 330d99f..7c96aa6 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "xml-formatter": "^3.6.6" }, "dependencies": { - "arrpc": "https://github.com/Legcord/arrpc.git#f7ab641ad3386d44364e227d97ba0dc847de08d1", + "arrpc": "https://github.com/Legcord/arrpc.git#811ed990be17a10ac5c6e992133f4172c6ec8640", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20c9519..7a8b59c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: arrpc: - specifier: https://github.com/Legcord/arrpc.git#f7ab641ad3386d44364e227d97ba0dc847de08d1 - version: https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1 + specifier: https://github.com/Legcord/arrpc.git#811ed990be17a10ac5c6e992133f4172c6ec8640 + version: https://codeload.github.com/Legcord/arrpc/tar.gz/811ed990be17a10ac5c6e992133f4172c6ec8640 electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -1369,8 +1369,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1: - resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/811ed990be17a10ac5c6e992133f4172c6ec8640: + resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/811ed990be17a10ac5c6e992133f4172c6ec8640} version: 3.5.0 hasBin: true @@ -4495,7 +4495,7 @@ snapshots: array-union@2.1.0: {} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1: + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/811ed990be17a10ac5c6e992133f4172c6ec8640: dependencies: koffi: 2.15.0 ws: 8.18.0 From 5ce1fb67f67ab8654abeee83f85b213d449947ca Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 2 Jan 2026 16:09:24 +0100 Subject: [PATCH 781/896] fix: SegmentedControl not updating visually --- .../settings/components/SegmentedControl.tsx | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/shelter/settings/components/SegmentedControl.tsx b/src/shelter/settings/components/SegmentedControl.tsx index b5fff3c..039690e 100644 --- a/src/shelter/settings/components/SegmentedControl.tsx +++ b/src/shelter/settings/components/SegmentedControl.tsx @@ -9,15 +9,21 @@ export const SegmentedControl = (props: { return (
    - {(opt) => ( -
    props.onChange(String(opt.value))} - > - {opt.label} -
    - )} + {(opt) => { + const isSelected = () => String(opt.value) === String(props.value); + + return ( + // biome-ignore lint/a11y/useFocusableInteractive: FIX-ME + + ); + }}
    ); From a255e4e06b8611b0d1c9b2a2e1648a2c5a376ba2 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 2 Jan 2026 22:46:53 +0100 Subject: [PATCH 782/896] fix: partial stream quality fix --- src/shelter/screenshare/index.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/shelter/screenshare/index.tsx b/src/shelter/screenshare/index.tsx index ced781a..65d0385 100644 --- a/src/shelter/screenshare/index.tsx +++ b/src/shelter/screenshare/index.tsx @@ -7,6 +7,7 @@ const { flux: { stores: { UserStore, MediaEngineStore }, dispatcher, + intercept }, ui: { openModal }, plugin: { store }, @@ -72,6 +73,19 @@ export function onLoad() { )); }); + intercept((dispatch) => { + if (dispatch.type === "MEDIA_ENGINE_SET_GO_LIVE_SOURCE") { + console.log("Intercepted stream quality change dispatch"); + console.log(dispatch) + dispatch.settings.qualityOptions = { + fps: store.fps, + resolution: store.resolution, + preset: 0 + }; + return dispatch; + } + + }); dispatcher.subscribe("MEDIA_ENGINE_VIDEO_SOURCE_QUALITY_CHANGED", onStreamQualityChange); dispatcher.subscribe("STREAM_DELETE", onStreamEnd); } From cb6072a853d7fc36fe1a6d5b666ee3ef7e238566 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 2 Jan 2026 22:50:04 +0100 Subject: [PATCH 783/896] fix: splash coming up when start minimized is on --- src/shelter/screenshare/index.tsx | 7 +++---- src/splash/main.ts | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/shelter/screenshare/index.tsx b/src/shelter/screenshare/index.tsx index 65d0385..3e44f5e 100644 --- a/src/shelter/screenshare/index.tsx +++ b/src/shelter/screenshare/index.tsx @@ -7,7 +7,7 @@ const { flux: { stores: { UserStore, MediaEngineStore }, dispatcher, - intercept + intercept, }, ui: { openModal }, plugin: { store }, @@ -76,15 +76,14 @@ export function onLoad() { intercept((dispatch) => { if (dispatch.type === "MEDIA_ENGINE_SET_GO_LIVE_SOURCE") { console.log("Intercepted stream quality change dispatch"); - console.log(dispatch) + console.log(dispatch); dispatch.settings.qualityOptions = { fps: store.fps, resolution: store.resolution, - preset: 0 + preset: 0, }; return dispatch; } - }); dispatcher.subscribe("MEDIA_ENGINE_VIDEO_SOURCE_QUALITY_CHANGED", onStreamQualityChange); dispatcher.subscribe("STREAM_DELETE", onStreamEnd); diff --git a/src/splash/main.ts b/src/splash/main.ts index 5bd1e57..ee49b58 100644 --- a/src/splash/main.ts +++ b/src/splash/main.ts @@ -5,6 +5,7 @@ import { getConfig } from "../common/config.js"; export let splashWindow: BrowserWindow; export async function createSplashWindow(): Promise { + if (getConfig("startMinimized")) return; splashWindow = new BrowserWindow({ width: 300, height: 350, From a9d30eb0dfd0fbe6defc2664bfc7c94d09e3c55b Mon Sep 17 00:00:00 2001 From: MahmodZE <97690050+MahmodZE@users.noreply.github.com> Date: Wed, 7 Jan 2026 09:16:16 -0800 Subject: [PATCH 784/896] fixed a launch failure related to global shortcuts (#1004) --- src/discord/globalKeybinds.ts | 8 +++++--- src/shelter/settings/components/KeybindMaker.tsx | 14 ++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/discord/globalKeybinds.ts b/src/discord/globalKeybinds.ts index 297281d..40d6e76 100644 --- a/src/discord/globalKeybinds.ts +++ b/src/discord/globalKeybinds.ts @@ -8,9 +8,11 @@ export function registerGlobalKeybinds() { const keybinds = getConfig("keybinds"); keybinds.forEach((keybind: Keybind) => { if (keybind.enabled && keybind.global) { - globalShortcut.register(keybind.accelerator, () => { - runAction(keybind); - }); + try { + globalShortcut.register(keybind.accelerator, () => { + runAction(keybind); + }); + } catch {} } }); } diff --git a/src/shelter/settings/components/KeybindMaker.tsx b/src/shelter/settings/components/KeybindMaker.tsx index d541cbb..b8a8e8b 100644 --- a/src/shelter/settings/components/KeybindMaker.tsx +++ b/src/shelter/settings/components/KeybindMaker.tsx @@ -33,6 +33,7 @@ export const KeybindMaker = (props: { close: () => void }) => { let logged: string[] = []; let containsNonModifier = false; + let containsNumpadKey = false; let timeout: NodeJS.Timeout | null = null; function log(event: KeyboardEvent) { const key = event.key.replace(" ", "Space"); @@ -41,7 +42,11 @@ export const KeybindMaker = (props: { close: () => void }) => { } else { console.log(key); logged.unshift(key); - if (event.location === 0) containsNonModifier = true; + if (event.location === 0) { + containsNonModifier = true; + } else if (event.location === 3) { + containsNumpadKey = true; + } setAccelerator(logged.join("+")); } if (timeout) clearTimeout(timeout); @@ -66,6 +71,7 @@ export const KeybindMaker = (props: { close: () => void }) => { logged = []; containsNonModifier = false; + containsNumpadKey = false; setAccelerator(""); console.log("Recording start"); document.body.addEventListener("keyup", log); @@ -93,8 +99,8 @@ export const KeybindMaker = (props: { close: () => void }) => {
    Accelerator
    - -

    Modifier-only shortcuts are not supported.

    + +

    This key combination is invalid or not supported.

    @@ -152,7 +158,7 @@ export const KeybindMaker = (props: { close: () => void }) => { confirmText="Add" onConfirm={save} close={props.close} - disabled={recording() || !accelerator() || !containsNonModifier} + disabled={recording() || !accelerator() || !containsNonModifier || containsNumpadKey} /> ); From 1382acd0c5f8f83954d04a63a60906df2c7c16e4 Mon Sep 17 00:00:00 2001 From: MahmodZE <97690050+MahmodZE@users.noreply.github.com> Date: Thu, 8 Jan 2026 10:37:43 -0800 Subject: [PATCH 785/896] =?UTF-8?q?fix:=20screenshare=20picker=20modal=20c?= =?UTF-8?q?loses=20on=20click-outside=20and=20won=E2=80=99t=20reopen=20(#1?= =?UTF-8?q?002)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/@types/legcordWindow.d.ts | 5 ++++- src/shelter/screenshare/components/ScreensharePicker.tsx | 4 +++- src/shelter/screenshare/components/SourceCard.tsx | 4 +++- src/shelter/screenshare/index.tsx | 3 +-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/@types/legcordWindow.d.ts b/src/@types/legcordWindow.d.ts index a043711..1923e8f 100644 --- a/src/@types/legcordWindow.d.ts +++ b/src/@types/legcordWindow.d.ts @@ -1,5 +1,6 @@ import type { Node } from "@vencord/venmic"; import type { Game, GameList, ProcessInfo } from "arrpc"; +import type { IPCSources } from "../shelter/screenshare/components/SourceCard.tsx"; import type { Keybind } from "./keybind.js"; import type { Settings } from "./settings.js"; import type { ThemeManifest } from "./themeManifest.js"; @@ -45,7 +46,9 @@ export interface LegcordWindow { isPowerSavingEnabled: () => boolean; }; screenshare: { - getSources: undefined; + getSources: ( + callback: (event: Electron.IpcRendererEvent, sources: Array, ...args: unknown[]) => void, + ) => void; start: (id: string, name: string, audio: boolean) => void; venmicStart: (include: Node[]) => Promise; venmicSystemStart: (exclude: Node[]) => Promise; diff --git a/src/shelter/screenshare/components/ScreensharePicker.tsx b/src/shelter/screenshare/components/ScreensharePicker.tsx index 08b673a..9521b8a 100644 --- a/src/shelter/screenshare/components/ScreensharePicker.tsx +++ b/src/shelter/screenshare/components/ScreensharePicker.tsx @@ -1,5 +1,5 @@ import type { Node } from "@vencord/venmic"; -import { For, Show, createSignal } from "solid-js"; +import { For, Show, createSignal, onCleanup } from "solid-js"; import { Dropdown } from "../../settings/components/Dropdown.jsx"; import { SegmentedControl } from "../../settings/components/SegmentedControl.jsx"; import classes from "./ScreensharePicker.module.css"; @@ -88,6 +88,8 @@ export const ScreensharePicker = (props: { window.legcord.screenshare.start("none", "", false); props.close(); } + onCleanup(closeAndSave); + return ( Screenshare diff --git a/src/shelter/screenshare/components/SourceCard.tsx b/src/shelter/screenshare/components/SourceCard.tsx index 3e842c9..ee817fc 100644 --- a/src/shelter/screenshare/components/SourceCard.tsx +++ b/src/shelter/screenshare/components/SourceCard.tsx @@ -1,9 +1,11 @@ +import type { NativeImage } from "electron"; import type { Accessor } from "solid-js"; import classes from "./SourceCard.module.css"; + export interface IPCSources { id: string; name: string; - thumbnail: HTMLCanvasElement; + thumbnail: NativeImage; } interface SourceCardProps { source: IPCSources; diff --git a/src/shelter/screenshare/index.tsx b/src/shelter/screenshare/index.tsx index 3e44f5e..7645b79 100644 --- a/src/shelter/screenshare/index.tsx +++ b/src/shelter/screenshare/index.tsx @@ -57,8 +57,7 @@ function onStreamEnd(dispatch: StreamDispatch) { export function onLoad() { log("Legcord Screenshare Module"); - // @ts-expect-error fix types - window.legcord.screenshare.getSources(async (_event: Event, sources: IPCSources[]) => { + window.legcord.screenshare.getSources(async (_event: Electron.IpcRendererEvent, sources: IPCSources[]) => { let audioSources: Node[] | undefined; if (window.legcord.platform === "linux") { const venmic = await window.legcord.screenshare.venmicList(); From 239fa917da3fbb9e81ad7c208084088068f7aa77 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 8 Jan 2026 21:00:07 +0100 Subject: [PATCH 786/896] chore: update arRPC --- package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- src/rpc.ts | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 7c96aa6..93be189 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "xml-formatter": "^3.6.6" }, "dependencies": { - "arrpc": "https://github.com/Legcord/arrpc.git#811ed990be17a10ac5c6e992133f4172c6ec8640", + "arrpc": "https://github.com/Legcord/arrpc.git#0605ca72fda920919e4e75e80945512b9fb347f1", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a8b59c..d825686 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: arrpc: - specifier: https://github.com/Legcord/arrpc.git#811ed990be17a10ac5c6e992133f4172c6ec8640 - version: https://codeload.github.com/Legcord/arrpc/tar.gz/811ed990be17a10ac5c6e992133f4172c6ec8640 + specifier: https://github.com/Legcord/arrpc.git#0605ca72fda920919e4e75e80945512b9fb347f1 + version: https://codeload.github.com/Legcord/arrpc/tar.gz/0605ca72fda920919e4e75e80945512b9fb347f1 electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -23,6 +23,10 @@ importers: ws: specifier: ^8.18.0 version: 8.18.0 + optionalDependencies: + '@vencord/venmic': + specifier: ^6.1.0 + version: 6.1.0 devDependencies: '@babel/preset-flow': specifier: ^7.25.9 @@ -87,10 +91,6 @@ importers: xml-formatter: specifier: ^3.6.6 version: 3.6.6 - optionalDependencies: - '@vencord/venmic': - specifier: ^6.1.0 - version: 6.1.0 packages: @@ -1369,8 +1369,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/811ed990be17a10ac5c6e992133f4172c6ec8640: - resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/811ed990be17a10ac5c6e992133f4172c6ec8640} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/0605ca72fda920919e4e75e80945512b9fb347f1: + resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/0605ca72fda920919e4e75e80945512b9fb347f1} version: 3.5.0 hasBin: true @@ -4495,7 +4495,7 @@ snapshots: array-union@2.1.0: {} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/811ed990be17a10ac5c6e992133f4172c6ec8640: + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/0605ca72fda920919e4e75e80945512b9fb347f1: dependencies: koffi: 2.15.0 ws: 8.18.0 diff --git a/src/rpc.ts b/src/rpc.ts index 4b593ac..6185877 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -7,7 +7,7 @@ const detectables: GameList = process.env.detectables ? JSON.parse(process.env.d const settings: ServerSettings = process.env.settings ? JSON.parse(process.env.settings) : { processScanning: true, windowsLegacyScanning: false, scanInterval: 5000 }; -const RPC = new RPCServer(detectables, settings); +const RPC = await new RPCServer(detectables, settings); RPC.on("activity", (data: string) => { console.log(data); From 933006f321e851c860daa6a7fcb0773e694c891f Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 8 Jan 2026 21:44:44 +0100 Subject: [PATCH 787/896] feat: rewrite rpc to use node worker threads Co-authored by: BMT --- src/discord/rpcProcess.ts | 37 +++++++++++++++++++------------------ src/rpc.ts | 26 +++++++++++++++++--------- 2 files changed, 36 insertions(+), 27 deletions(-) diff --git a/src/discord/rpcProcess.ts b/src/discord/rpcProcess.ts index 23286f9..68302ba 100644 --- a/src/discord/rpcProcess.ts +++ b/src/discord/rpcProcess.ts @@ -1,31 +1,29 @@ import path from "node:path"; -import { type BrowserWindow, utilityProcess } from "electron"; -import { getConfig } from "../common/config.js"; +import { Worker } from "node:worker_threads"; +import type { GameList } from "arrpc"; +import type { BrowserWindow } from "electron"; import { getDetectables } from "../common/detectables.js"; import { createInviteWindow } from "./window.js"; -let child: Electron.UtilityProcess; -export let processList = []; +let rpcWorker: Worker; +export let processList: GameList[] = []; export function startRPC(window: BrowserWindow) { - child = utilityProcess.fork(path.join(import.meta.dirname, "rpc.js"), undefined, { + const rpcPath = path.join(__dirname, "rpc.js"); + + rpcWorker = new Worker(rpcPath, { env: { + ...process.env, detectables: JSON.stringify(getDetectables()), - settings: JSON.stringify({ - processScanning: getConfig("processScanning"), - windowsLegacyScanning: getConfig("windowsLegacyScanning"), - scanInterval: getConfig("scanInterval"), - }), }, - serviceName: "legcord-rpc", }); - child.on("spawn", () => { + rpcWorker.on("online", () => { console.log("[arRPC] process started"); - console.log(child.pid); + console.log(rpcWorker.threadId); }); - child.on("message", (message) => { + rpcWorker.on("message", (message: string) => { const json = JSON.parse(message); if (json.type === "invite") { createInviteWindow(json.code); @@ -40,12 +38,15 @@ export function startRPC(window: BrowserWindow) { } }); - child.on("exit", () => { - console.log("[arRPC] process exited"); - console.log(child.pid); + rpcWorker.on("error", (err) => { + console.error("[arRPC] worker error:", err); + }); + + rpcWorker.on("exit", (code) => { + console.log("[arRPC] worker exited with code", code); }); } export function refreshProcessList() { - child.postMessage({ message: "refreshProcessList" }); + rpcWorker.postMessage({ message: "refreshProcessList" }); } diff --git a/src/rpc.ts b/src/rpc.ts index 6185877..56cf679 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -1,3 +1,4 @@ +import { parentPort } from "node:worker_threads"; // this file is executed in the utility process // check window.ts for more details // see more here https://www.electronjs.org/docs/latest/api/utility-process @@ -7,24 +8,31 @@ const detectables: GameList = process.env.detectables ? JSON.parse(process.env.d const settings: ServerSettings = process.env.settings ? JSON.parse(process.env.settings) : { processScanning: true, windowsLegacyScanning: false, scanInterval: 5000 }; + const RPC = await new RPCServer(detectables, settings); +// Guard parentPort +if (!parentPort) { + console.error("rpc.ts must be run inside a Worker!"); + process.exit(1); +} RPC.on("activity", (data: string) => { console.log(data); - const response = { type: "activity", data: data }; - process.parentPort.postMessage(JSON.stringify(response)); -}); -RPC.on("invite", (code: string) => { - console.log(code); - const response = { type: "invite", code: code }; - process.parentPort.postMessage(JSON.stringify(response)); + const response = { type: "activity", data }; + parentPort?.postMessage(JSON.stringify(response)); }); -process.parentPort.once("message", async (e) => { +RPC.on("invite", (code: string) => { + console.log(code); + const response = { type: "invite", code }; + parentPort?.postMessage(JSON.stringify(response)); +}); + +parentPort.once("message", async (e) => { if (e.data.message === "refreshProcessList") { const processes = await RPC.getProcessesList(); console.log(processes); const response = { type: "processList", data: processes }; - process.parentPort.postMessage(JSON.stringify(response)); + parentPort?.postMessage(JSON.stringify(response)); } }); From 4104aea0b89e600203e3b3d189649714877bcd70 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 8 Jan 2026 21:55:28 +0100 Subject: [PATCH 788/896] fix: refreshing processes --- src/rpc.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rpc.ts b/src/rpc.ts index 56cf679..d29c2a4 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -29,7 +29,7 @@ RPC.on("invite", (code: string) => { }); parentPort.once("message", async (e) => { - if (e.data.message === "refreshProcessList") { + if (e.message === "refreshProcessList") { const processes = await RPC.getProcessesList(); console.log(processes); const response = { type: "processList", data: processes }; From 90da98c5640d624f257ab605b7eaed40d5fd5d1a Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 9 Jan 2026 08:22:37 +0100 Subject: [PATCH 789/896] feat: discord deeplink protocol --- src/common/dom.ts | 10 ++++++++++ src/discord/window.ts | 13 ++++++++++++- src/main.ts | 2 +- src/protocol.ts | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/common/dom.ts b/src/common/dom.ts index b690acd..af5af84 100644 --- a/src/common/dom.ts +++ b/src/common/dom.ts @@ -1,3 +1,5 @@ +import type { BrowserWindow } from "electron"; + export function addStyle(styleUrl: string): void { const style = document.createElement("link"); style.rel = "stylesheet"; @@ -28,3 +30,11 @@ export async function injectJS(inject: string): Promise { document.body.appendChild(el); } + +export function navigateTo(passedWindow: BrowserWindow, url: string): void { + console.log(`[legcord deeplink] Navigating to ${url}`); + passedWindow.webContents.executeJavaScript(` + history.pushState({}, null, "${url}"); + window.dispatchEvent(new PopStateEvent("popstate", {})); + `); +} diff --git a/src/discord/window.ts b/src/discord/window.ts index a60ba9d..c184cbf 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -12,6 +12,7 @@ import { } from "electron"; import contextMenu from "electron-context-menu"; import { firstRun, getConfig, setConfig } from "../common/config.js"; +import { navigateTo } from "../common/dom.js"; import { forceQuit, setForceQuit } from "../common/forceQuit.js"; import { initQuickCss, injectThemesMain } from "../common/themes.js"; import { getWindowState, setWindowState } from "../common/windowState.js"; @@ -75,7 +76,7 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { passedWindow.webContents.userAgent = userAgent; } if (mainWindows.length === 1) { - app.on("second-instance", (_event, _commandLine, _workingDirectory, additionalData) => { + app.on("second-instance", (_event, commandLine, _workingDirectory, additionalData) => { void (async () => { // Print out data received from the second instance. console.log(additionalData); @@ -87,6 +88,12 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { passedWindow.show(); passedWindow.focus(); } + if (commandLine && commandLine.length > 0) { + const lastArg = commandLine.pop(); + if (lastArg?.startsWith("discord://-")) { + navigateTo(passedWindow, lastArg.replace("discord://-", "")); + } + } } else { await init(); } @@ -211,6 +218,10 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { } initQuickCss(passedWindow); passedWindow.setTouchBar(mainTouchBar); + app.on("open-url", (_event, url) => { + navigateTo(passedWindow, url.replace("discord://-", "")); + }); + passedWindow.webContents.on("page-title-updated", (e, title) => { const legcordSuffix = " - Legcord"; /* identify */ diff --git a/src/main.ts b/src/main.ts index e78b401..5c8c80a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -26,7 +26,7 @@ export let settings: Settings; export let bypassSetup = false; checkForDataFolder(); checkIfConfigExists(); - +app.setAsDefaultProtocolClient("discord"); app.on("render-process-gone", (_event, _webContents, details) => { if (details.reason === "crashed") { app.relaunch(); diff --git a/src/protocol.ts b/src/protocol.ts index 030a628..9c721c9 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -16,6 +16,7 @@ protocol.registerSchemesAsPrivileged([ ]); void app.whenReady().then(() => { + // Legcord custom internal protocol protocol.handle("legcord", (req) => { if (req.url.startsWith("legcord://plugins/")) { const url = req.url.replace("legcord://plugins/", "").split("/"); From d218831593bfd376fd54f84bd3fb25e4830407e6 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 9 Jan 2026 08:25:15 +0100 Subject: [PATCH 790/896] fix: include discord protocol in build config --- electron-builder.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/electron-builder.ts b/electron-builder.ts index f85cdbd..492941f 100644 --- a/electron-builder.ts +++ b/electron-builder.ts @@ -5,7 +5,12 @@ export const config: Configuration = { productName: "Legcord", artifactName: "Legcord-${version}-${os}-${arch}.${ext}", beforePack: "./scripts/build/sandboxFix.cjs", - + protocols: [ + { + name: "Discord", + schemes: ["discord"], + }, + ], mac: { category: "public.app-category.social-networking", darkModeSupport: true, From 0cbe94ff0bf910039870d962f6ab568dba7f0abf Mon Sep 17 00:00:00 2001 From: Patrick <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 9 Jan 2026 08:55:04 +0100 Subject: [PATCH 791/896] feat: open discord invites inside discord remove old invite manager --- src/common/dom.ts | 1 + src/discord/rpcProcess.ts | 4 ++-- src/discord/tray.ts | 7 +++++-- src/discord/window.ts | 36 +++++------------------------------- 4 files changed, 13 insertions(+), 35 deletions(-) diff --git a/src/common/dom.ts b/src/common/dom.ts index af5af84..5e210b5 100644 --- a/src/common/dom.ts +++ b/src/common/dom.ts @@ -37,4 +37,5 @@ export function navigateTo(passedWindow: BrowserWindow, url: string): void { history.pushState({}, null, "${url}"); window.dispatchEvent(new PopStateEvent("popstate", {})); `); + passedWindow.focus(); } diff --git a/src/discord/rpcProcess.ts b/src/discord/rpcProcess.ts index 68302ba..084ee3a 100644 --- a/src/discord/rpcProcess.ts +++ b/src/discord/rpcProcess.ts @@ -3,7 +3,7 @@ import { Worker } from "node:worker_threads"; import type { GameList } from "arrpc"; import type { BrowserWindow } from "electron"; import { getDetectables } from "../common/detectables.js"; -import { createInviteWindow } from "./window.js"; +import { navigateTo } from "../common/dom.js"; let rpcWorker: Worker; export let processList: GameList[] = []; @@ -26,7 +26,7 @@ export function startRPC(window: BrowserWindow) { rpcWorker.on("message", (message: string) => { const json = JSON.parse(message); if (json.type === "invite") { - createInviteWindow(json.code); + navigateTo(window, `/invite/${json.code}`); } else if (json.type === "activity") { console.log("activity pulse"); console.log(json.data); diff --git a/src/discord/tray.ts b/src/discord/tray.ts index 5f6b1c0..68c7a35 100644 --- a/src/discord/tray.ts +++ b/src/discord/tray.ts @@ -1,9 +1,10 @@ import { join } from "node:path"; import { Menu, Tray, app, nativeImage } from "electron"; import { getConfig } from "../common/config.js"; +import { navigateTo } from "../common/dom.js"; import { setForceQuit } from "../common/forceQuit.js"; import { getDisplayVersion } from "../common/version.js"; -import { createInviteWindow, mainWindows } from "./window.js"; +import { mainWindows } from "./window.js"; export let tray: Tray; export function createTray() { @@ -66,7 +67,9 @@ export function createTray() { { label: "Support Discord Server", click() { - void createInviteWindow("TnhxcqynZ2"); + mainWindows.forEach((mainWindow) => { + navigateTo(mainWindow, "/invite/TnhxcqynZ2"); + }); }, }, { diff --git a/src/discord/window.ts b/src/discord/window.ts index c184cbf..37f4ca6 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -89,6 +89,7 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { passedWindow.focus(); } if (commandLine && commandLine.length > 0) { + console.log(commandLine); const lastArg = commandLine.pop(); if (lastArg?.startsWith("discord://-")) { navigateTo(passedWindow, lastArg.replace("discord://-", "")); @@ -292,6 +293,10 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { }); setForceQuit(true); }); + passedWindow.webContents.session.webRequest.onBeforeRequest((details, callback) => { + if (details.url.includes("ws://127.0.0.1:")) return callback({ cancel: true }); + return callback({}); + }); passedWindow.on("focus", () => { void passedWindow.webContents.executeJavaScript(`document.body.removeAttribute("unFocused");`); }); @@ -396,34 +401,3 @@ export function createWindow() { mainWindows.push(mainWindow); doAfterDefiningTheWindow(mainWindow); } - -export function createInviteWindow(code: string): void { - inviteWindow = new BrowserWindow({ - width: 800, - height: 600, - title: "Legcord Invite Manager", - darkTheme: true, - icon: getConfig("customIcon") ?? path.join(import.meta.dirname, "../", "/assets/desktop.png"), - frame: true, - autoHideMenuBar: getConfig("autoHideMenuBar"), - webPreferences: { - sandbox: false, - spellcheck: getConfig("spellcheck"), - }, - }); - const formInviteURL = `https://discord.com/invite/${code}`; - inviteWindow.webContents.session.webRequest.onBeforeRequest((details, callback) => { - if (details.url.includes("ws://")) return callback({ cancel: true }); - return callback({}); - }); - // NOTE - This shouldn't matter, since below we have an event on it - void inviteWindow.loadURL(formInviteURL); - inviteWindow.webContents.once("did-finish-load", () => { - if (!mainWindows[0].webContents.isLoading()) { - inviteWindow.show(); - inviteWindow.webContents.once("will-navigate", () => { - inviteWindow.close(); - }); - } - }); -} From 14143820bf066d9681f86d9c839e859ceb2efd90 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 9 Jan 2026 09:04:27 +0100 Subject: [PATCH 792/896] feat: better touchbar handling --- src/discord/touchbar.ts | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/discord/touchbar.ts b/src/discord/touchbar.ts index aad3792..f9f0e73 100644 --- a/src/discord/touchbar.ts +++ b/src/discord/touchbar.ts @@ -1,6 +1,7 @@ import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { TouchBar, app, nativeImage } from "electron"; +import { navigateTo } from "../common/dom.js"; import { deafenToggle, leaveCall, muteToggle } from "../common/keybindActions.js"; import { mainWindows } from "./window.js"; @@ -16,20 +17,8 @@ const scrollableList = new TouchBar({ select(selectedIndex) { //@ts-expect-error Electron types are wrong const guildID = guildItems[selectedIndex].accessibilityLabel; - - mainWindows.forEach((mainWindow) => { - mainWindow.webContents.executeJavaScript(`shelter.flux.dispatcher.dispatch({ - "type": "CHANNEL_PRELOAD", - "guildId": "${guildID}", - "channelId": null, - "context": "APP" - })`); - mainWindow.webContents.executeJavaScript(`shelter.flux.dispatcher.dispatch({ - "type": "CHANNEL_SELECT", - "guildId": "${guildID}", - "channelId": null, - "messageId": null - })`); + mainWindows.forEach((win) => { + navigateTo(win, `/channels/${guildID}`); }); }, }), From 938dd5f948fb2f7310e2220f24580e86cfd841e4 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 9 Jan 2026 09:13:18 +0100 Subject: [PATCH 793/896] fix: exit arrpc gracefully --- src/discord/rpcProcess.ts | 7 +++++++ src/discord/window.ts | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/discord/rpcProcess.ts b/src/discord/rpcProcess.ts index 084ee3a..2816be6 100644 --- a/src/discord/rpcProcess.ts +++ b/src/discord/rpcProcess.ts @@ -47,6 +47,13 @@ export function startRPC(window: BrowserWindow) { }); } +export function stopRPC() { + if (rpcWorker) { + rpcWorker.terminate(); + console.log("[arRPC] process terminated"); + } +} + export function refreshProcessList() { rpcWorker.postMessage({ message: "refreshProcessList" }); } diff --git a/src/discord/window.ts b/src/discord/window.ts index 37f4ca6..79d51d5 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -20,7 +20,7 @@ import { init } from "../main.js"; import { registerGlobalKeybinds } from "./globalKeybinds.js"; import { registerIpc } from "./ipc.js"; import { setMenu } from "./menu.js"; -import { startRPC } from "./rpcProcess.js"; +import { startRPC, stopRPC } from "./rpcProcess.js"; import { registerCustomHandler } from "./screenshare.js"; import { mainTouchBar } from "./touchbar.js"; import { createTray, tray } from "./tray.js"; @@ -283,6 +283,7 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { } }); app.on("before-quit", () => { + stopRPC(); const [width, height] = passedWindow.getSize(); setWindowState({ width, From 42aa4b30f3c9ef44f8a48bc09fa4d0c982d03ada Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 9 Jan 2026 09:45:25 +0100 Subject: [PATCH 794/896] feat: add detectable modal --- .../components/AddDetectableModal.tsx | 53 +++++++++++++------ .../settings/pages/RegisteredGamesPage.tsx | 25 +++++---- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/src/shelter/settings/components/AddDetectableModal.tsx b/src/shelter/settings/components/AddDetectableModal.tsx index 0ad3cbf..2793045 100644 --- a/src/shelter/settings/components/AddDetectableModal.tsx +++ b/src/shelter/settings/components/AddDetectableModal.tsx @@ -1,7 +1,5 @@ -import { Show, createSignal } from "solid-js"; -import type { KeybindActions } from "../../../@types/keybind.js"; -import { Dropdown } from "./Dropdown.jsx"; -import classes from "./KeybindMaker.module.css"; +import type { Game } from "arrpc"; +import { createSignal } from "solid-js"; const { ui: { ModalRoot, @@ -17,14 +15,15 @@ const { }, plugin: { store }, } = shelter; -export const AddDetectableModal = (props: { close: () => void }) => { +export const AddDetectableModal = (props: { close: () => void; executable: string }) => { const [appName, setAppName] = createSignal(""); const [appId, setAppId] = createSignal(""); - const [executable, setExecutable] = createSignal(""); + const [themes, setThemes] = createSignal(""); + const [aliases, setAliases] = createSignal(""); const [enabled, setEnabled] = createSignal(true); function save() { - if (!appName().trim() || !appId().trim() || !executable().trim()) { + if (!appName().trim() || !appId().trim() || !props.executable) { return showToast({ title: "Missing fields", content: "Please fill in all fields before adding.", @@ -32,15 +31,33 @@ export const AddDetectableModal = (props: { close: () => void }) => { }); } const current = store.settings.detectables || []; - const detectable = { + const game: Game = { name: appName().trim(), + executables: [ + { + name: props.executable, + is_launcher: false, + os: window.legcord.platform as "win32" | "linux" | "darwin", + }, + ], id: appId().trim(), - executable: executable().trim(), - enabled: enabled(), + aliases: + aliases() + .split(",") + .map((a) => a.trim()) || [], + hook: false, + overlay: true, + overlay_compatibility_hook: false, + overlay_methods: null, + overlay_warn: false, + themes: + themes() + .split(",") + .map((t) => t.trim()) || [], }; - current.push(detectable); + current.push(game); store.settings.detectables = current; - window.legcord.rpc.addDetectable(detectable); + window.legcord.rpc.addDetectable(game); props.close(); } @@ -48,16 +65,18 @@ export const AddDetectableModal = (props: { close: () => void }) => { Add Detectable Application -
    App Name
    +
    App Name*
    -
    App ID
    +
    App ID*
    -
    Executable
    - +
    Themes
    + -
    + {(detectable) =>
    {detectable.name}
    }
    ); } From b37f65ffcc6cb196141f2635df66e32821c04a8e Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 9 Jan 2026 10:03:08 +0100 Subject: [PATCH 795/896] fix: theme/keybind card styling --- src/shelter/settings/components/KeybindCard.module.css | 2 ++ src/shelter/settings/components/ThemesCard.module.css | 1 + 2 files changed, 3 insertions(+) diff --git a/src/shelter/settings/components/KeybindCard.module.css b/src/shelter/settings/components/KeybindCard.module.css index 2f76ff9..d30cfd1 100644 --- a/src/shelter/settings/components/KeybindCard.module.css +++ b/src/shelter/settings/components/KeybindCard.module.css @@ -17,7 +17,9 @@ .eyebrow { margin-bottom: 0px !important; + color: var(--text-strong); } + .btn { border: none; background: none; diff --git a/src/shelter/settings/components/ThemesCard.module.css b/src/shelter/settings/components/ThemesCard.module.css index ebeb749..10583f9 100644 --- a/src/shelter/settings/components/ThemesCard.module.css +++ b/src/shelter/settings/components/ThemesCard.module.css @@ -16,6 +16,7 @@ .eyebrow { margin-bottom: 0px !important; + color: var(--text-strong); } .btn { border: none; From b1e8e208f85093b7cbfd3ae7d180b09b4bba13ae Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 11 Jan 2026 10:01:48 +0100 Subject: [PATCH 796/896] chore: translations update [skip ci] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Максим Горпиніч Translate-URL: https://hosted.weblate.org/projects/armcord/client/uk/ Translation: Legcord/Client --- assets/lang/uk.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/assets/lang/uk.json b/assets/lang/uk.json index bb5a00e..ce6cdf4 100644 --- a/assets/lang/uk.json +++ b/assets/lang/uk.json @@ -131,5 +131,11 @@ "settings-category-mods": "Моди", "settings-category-behaviour": "Поведінка", "settings-category-legacy": "Застарілі функції", - "settings-category-debug": "Параметри налагодження" + "settings-category-debug": "Параметри налагодження", + "settings-processScanning": "Сканування процесу", + "settings-processScanning-desc": "Увімкнення сканування запущених ігор для покращення виявлення Rich Presence.", + "settings-windowsLegacyScanning": "Сканування застарілих версій Windows", + "settings-windowsLegacyScanning-desc": "Використовує застарілий метод для процесів сканування у Windows (до версії 1.1.6). Може покращити сумісність у деяких системах, але менш ефективний.", + "settings-scanInterval": "Інтервал сканування (мс)", + "settings-scanInterval-desc": "Встановлює частоту (у мілісекундах) сканування процесу. Нижчі значення можуть покращити швидкість виявлення, але можуть збільшити використання процесора." } From 4a7fc671a74ce64dee63d3c7ee8b809137a619cc Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:19:51 +0100 Subject: [PATCH 797/896] feat: settings cache --- src/common/config.ts | 33 +++++++++++++ src/common/lang.ts | 66 +++++++++++++++++++++++-- src/common/themes.ts | 100 +++++++++++++++++++++++++++++++++----- src/common/windowState.ts | 21 ++++++++ 4 files changed, 205 insertions(+), 15 deletions(-) diff --git a/src/common/config.ts b/src/common/config.ts index 2173567..9bcf46d 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -4,6 +4,11 @@ import { app, dialog } from "electron"; import type { Settings } from "../@types/settings.js"; import { getWindowStateLocation } from "./windowState.js"; export let firstRun: boolean; + +// Performance optimization: Cache config to avoid reading file on every call +let configCache: Settings | null = null; +let configCacheTime = 0; +const CONFIG_CACHE_TTL = 1000; // Cache for 1 second const defaults: Settings = { windowStyle: "default", channel: "stable", @@ -82,8 +87,17 @@ export function getConfig(object: K): Settings[K] { if (process.argv.includes("--safe-mode")) { return safeMode[object]; } + + // Performance optimization: Use cached config if available and fresh + const now = Date.now(); + if (configCache && (now - configCacheTime) < CONFIG_CACHE_TTL) { + return configCache[object]; + } + const rawData = readFileSync(getConfigLocation(), "utf-8"); const returnData = JSON.parse(rawData) as Settings; + configCache = returnData; + configCacheTime = now; return returnData[object]; } export function setConfig(object: K, toSet: Settings[K]): void { @@ -92,6 +106,10 @@ export function setConfig(object: K, toSet: Settings[K parsed[object] = toSet; const toSave = JSON.stringify(parsed, null, 4); writeFileSync(getConfigLocation(), toSave, "utf-8"); + + // Performance optimization: Update cache immediately + configCache = parsed; + configCacheTime = Date.now(); } export function setConfigBulk(object: Settings): void { let existingData = {}; @@ -106,6 +124,10 @@ export function setConfigBulk(object: Settings): void { // Write the merged data back to the file const toSave = JSON.stringify(mergedData, null, 4); writeFileSync(getConfigLocation(), toSave, "utf-8"); + + // Performance optimization: Update cache immediately + configCache = mergedData as Settings; + configCacheTime = Date.now(); } export function checkIfConfigExists(): void { const userDataPath = app.getPath("userData"); @@ -141,6 +163,10 @@ export function checkIfConfigIsBroken(): void { try { const settingsData = readFileSync(getConfigLocation(), "utf-8"); const settingsObject = JSON.parse(settingsData) as Settings; + + // Performance optimization: Update cache after validation + configCache = settingsObject; + configCacheTime = Date.now(); let configWasFine = true; const settingsKeys = Object.keys(settingsObject) as (keyof Settings)[]; @@ -166,6 +192,13 @@ export function checkIfConfigIsBroken(): void { console.log(`Missing config root entry ${missingKey}, setting default config for this entry...`); setConfig(missingKey, defaults[missingKey]); }); + + // Performance optimization: Ensure cache is updated after fixes + if (!configWasFine) { + const updatedData = readFileSync(getConfigLocation(), "utf-8"); + configCache = JSON.parse(updatedData) as Settings; + configCacheTime = Date.now(); + } console.log(configWasFine ? "Config is fine" : "Config is now fine"); } catch (e) { diff --git a/src/common/lang.ts b/src/common/lang.ts index cf6f367..d23811e 100644 --- a/src/common/lang.ts +++ b/src/common/lang.ts @@ -2,6 +2,14 @@ import fs from "node:fs"; import path from "node:path"; import { app } from "electron"; import type { i18nStrings } from "../@types/i18nStrings.js"; + +// Performance optimization: Cache language files to avoid reading on every call +let languageCache: i18nStrings | null = null; +let languageCacheTime = 0; +let languageConfigCache: string | null = null; +let languageConfigCacheTime = 0; +const LANGUAGE_CACHE_TTL = 5000; // Cache for 5 seconds + export function setLang(language: string): void { const langConfigFile = `${path.join(app.getPath("userData"), "/storage/")}lang.json`; if (!fs.existsSync(langConfigFile)) { @@ -13,10 +21,19 @@ export function setLang(language: string): void { const toSave = JSON.stringify(parsed, null, 4); console.log(`Setting language to ${language}`); fs.writeFileSync(langConfigFile, toSave, "utf-8"); + + // Performance optimization: Invalidate cache when language changes + languageConfigCache = language; + languageConfigCacheTime = Date.now(); + languageCache = null; // Invalidate language file cache } let language: string; export function getLang(object: string): string { - if (language === undefined) { + // Performance optimization: Use cached language config if available + const now = Date.now(); + if (languageConfigCache && (now - languageConfigCacheTime) < LANGUAGE_CACHE_TTL) { + language = languageConfigCache; + } else if (language === undefined) { try { const userDataPath = app.getPath("userData"); const storagePath = path.join(userDataPath, "/storage/"); @@ -24,29 +41,53 @@ export function getLang(object: string): string { const rawData = fs.readFileSync(langConfigFile, "utf-8"); const parsed = JSON.parse(rawData) as i18nStrings; language = parsed.lang; + languageConfigCache = language; + languageConfigCacheTime = now; } catch (_e) { console.log("Language config file doesn't exist. Fallback to English."); language = "en-US"; + languageConfigCache = language; + languageConfigCacheTime = now; } } if (language.length === 2) { language = `${language}-${language.toUpperCase()}`; } - let langPath = path.join(import.meta.dirname, "../", `/assets/lang/${language}.json`); + + // Performance optimization: Use cached language file if available + const normalizedLang = language; + if (languageCache && (now - languageCacheTime) < LANGUAGE_CACHE_TTL) { + if (languageCache[object] !== undefined) { + return languageCache[object]; + } + } + + let langPath = path.join(import.meta.dirname, "../", `/assets/lang/${normalizedLang}.json`); if (!fs.existsSync(langPath)) { langPath = path.join(import.meta.dirname, "../", "/assets/lang/en-US.json"); } let rawData = fs.readFileSync(langPath, "utf-8"); let parsed = JSON.parse(rawData) as i18nStrings; if (parsed[object] === undefined) { - console.log(`${object} is undefined in ${language}`); + console.log(`${object} is undefined in ${normalizedLang}`); langPath = path.join(import.meta.dirname, "../", "/assets/lang/en-US.json"); rawData = fs.readFileSync(langPath, "utf-8"); parsed = JSON.parse(rawData) as i18nStrings; } + + // Update cache + languageCache = parsed; + languageCacheTime = now; + return parsed[object]; } export function getRawLang(): i18nStrings { + // Performance optimization: Use cached result if available + const now = Date.now(); + if (languageCache && (now - languageCacheTime) < LANGUAGE_CACHE_TTL) { + return languageCache; + } + if (language === undefined) { try { const userDataPath = app.getPath("userData"); @@ -55,9 +96,13 @@ export function getRawLang(): i18nStrings { const rawData = fs.readFileSync(langConfigFile, "utf-8"); const parsed = JSON.parse(rawData) as i18nStrings; language = parsed.lang; + languageConfigCache = language; + languageConfigCacheTime = now; } catch (_e) { console.log("Language config file doesn't exist. Fallback to English."); language = "en-US"; + languageConfigCache = language; + languageConfigCacheTime = now; } } if (language.length === 2) { @@ -77,9 +122,20 @@ export function getRawLang(): i18nStrings { parsed[key] = fallbackParsed[key]; } } + + // Update cache + languageCache = parsed; + languageCacheTime = now; + return parsed; } export function getLangName(): string { + // Performance optimization: Use cached language config if available + const now = Date.now(); + if (languageConfigCache && (now - languageConfigCacheTime) < LANGUAGE_CACHE_TTL) { + return languageConfigCache; + } + if (language === undefined) { try { const userDataPath = app.getPath("userData"); @@ -88,9 +144,13 @@ export function getLangName(): string { const rawData = fs.readFileSync(langConfigFile, "utf-8"); const parsed = JSON.parse(rawData) as i18nStrings; language = parsed.lang; + languageConfigCache = language; + languageConfigCacheTime = now; } catch (_e) { console.log("Language config file doesn't exist. Fallback to English."); language = "en-US"; + languageConfigCache = language; + languageConfigCacheTime = now; } } if (language.length === 2) { diff --git a/src/common/themes.ts b/src/common/themes.ts index 4c31ce8..20f769e 100644 --- a/src/common/themes.ts +++ b/src/common/themes.ts @@ -3,6 +3,11 @@ import path from "node:path"; import { type BrowserWindow, app } from "electron"; import type { ThemeManifest } from "../@types/themeManifest.js"; import { mainWindows } from "../discord/window.js"; + +// Performance optimization: Cache theme manifests to avoid reading on every call +const themeManifestCache = new Map(); +let quickCssWatcher: fs.FSWatcher | null = null; + const userDataPath = app.getPath("userData"); const themesFolder = path.join(userDataPath, "/themes/"); function parseBDManifest(content: string) { @@ -82,6 +87,34 @@ function parseBDManifest(content: string) { return manifest; } +// Performance optimization: Get theme manifest with caching +function getThemeManifest(themeId: string): ThemeManifest | null { + const themePath = path.join(themesFolder, themeId); + const manifestPath = path.join(themePath, "manifest.json"); + + if (!fs.existsSync(manifestPath)) { + return null; + } + + // Check cache + const stats = fs.statSync(manifestPath); + const cached = themeManifestCache.get(themeId); + if (cached && cached.mtime === stats.mtimeMs) { + return cached.manifest; + } + + // Read and cache + try { + const manifestContent = fs.readFileSync(manifestPath, "utf8"); + const manifest = JSON.parse(manifestContent) as ThemeManifest; + themeManifestCache.set(themeId, { manifest, mtime: stats.mtimeMs }); + return manifest; + } catch (err) { + console.error(`Error reading theme manifest for ${themeId}:`, err); + return null; + } +} + export function injectThemesMain(browserWindow: BrowserWindow): void { if (process.argv.includes("--safe-mode")) return; if (!fs.existsSync(themesFolder)) { @@ -89,7 +122,8 @@ export function injectThemesMain(browserWindow: BrowserWindow): void { console.log("Created missing theme folder"); } browserWindow.webContents.on("did-finish-load", () => { - fs.readdirSync(themesFolder).forEach((file) => { + const files = fs.readdirSync(themesFolder); + for (const file of files) { const themePath = path.join(themesFolder, file); if (fs.statSync(themePath).isFile() && file.endsWith(".DS_Store")) { console.log(`[Theme Manager] Local theme detected: ${themePath}`); @@ -98,10 +132,12 @@ export function injectThemesMain(browserWindow: BrowserWindow): void { }); } else { try { - const manifest = fs.readFileSync(path.join(themePath, "manifest.json"), "utf8"); - const themeFile = JSON.parse(manifest) as ThemeManifest; + const themeFile = getThemeManifest(file); + if (!themeFile) continue; + if (themeFile.enabled === undefined) { - if (fs.readFileSync(`${userDataPath}/disabled.txt`).toString().includes(file)) { + const disabledPath = `${userDataPath}/disabled.txt`; + if (fs.existsSync(disabledPath) && fs.readFileSync(disabledPath).toString().includes(file)) { themeFile.enabled = false; } else { themeFile.enabled = true; @@ -121,7 +157,7 @@ export function injectThemesMain(browserWindow: BrowserWindow): void { console.error(err); } } - }); + } }); } @@ -137,9 +173,14 @@ export function uninstallTheme(id: string) { } export function setThemeEnabled(id: string, enabled: boolean) { - const manifest = JSON.parse( - fs.readFileSync(path.join(themesFolder, id, "/manifest.json"), "utf8"), - ) as ThemeManifest; + // Performance optimization: Use cached manifest if available + let manifest = getThemeManifest(id); + if (!manifest) { + manifest = JSON.parse( + fs.readFileSync(path.join(themesFolder, id, "/manifest.json"), "utf8"), + ) as ThemeManifest; + } + if (enabled !== manifest.enabled) { mainWindows.every((passedWindow) => { if (enabled) { @@ -157,6 +198,9 @@ export function setThemeEnabled(id: string, enabled: boolean) { } manifest.enabled = enabled; fs.writeFileSync(`${themesFolder}/${id}/manifest.json`, JSON.stringify(manifest)); + + // Performance optimization: Invalidate cache + themeManifestCache.delete(id); } export async function installTheme(linkOrPath: string) { @@ -192,10 +236,42 @@ export function initQuickCss(browserWindow: BrowserWindow) { } browserWindow.webContents.send("addTheme", "legcord-quick-css", fs.readFileSync(quickCssPath, "utf-8")); console.log("[Theme Manager] Loaded Quick CSS"); - fs.watchFile(quickCssPath, { interval: 1000 }, () => { - console.log("[Theme Manager] Quick CSS updated."); - browserWindow.webContents.send("removeTheme", "legcord-quick-css"); - browserWindow.webContents.send("addTheme", "legcord-quick-css", fs.readFileSync(quickCssPath, "utf-8")); + + // Performance optimization: Use fs.watch instead of fs.watchFile for better performance + // Clean up existing watcher if any + if (quickCssWatcher) { + quickCssWatcher.close(); + } + + // Performance optimization: Debounce file changes to avoid excessive updates + let updateTimeout: NodeJS.Timeout | null = null; + quickCssWatcher = fs.watch(quickCssPath, (eventType) => { + if (eventType === "change") { + // Debounce: wait 300ms before updating to batch rapid changes + if (updateTimeout) { + clearTimeout(updateTimeout); + } + updateTimeout = setTimeout(() => { + try { + console.log("[Theme Manager] Quick CSS updated."); + browserWindow.webContents.send("removeTheme", "legcord-quick-css"); + browserWindow.webContents.send("addTheme", "legcord-quick-css", fs.readFileSync(quickCssPath, "utf-8")); + } catch (err) { + console.error("[Theme Manager] Error updating Quick CSS:", err); + } + }, 300); + } + }); + + // Clean up watcher when window is closed + browserWindow.on("closed", () => { + if (quickCssWatcher) { + quickCssWatcher.close(); + quickCssWatcher = null; + } + if (updateTimeout) { + clearTimeout(updateTimeout); + } }); }); } diff --git a/src/common/windowState.ts b/src/common/windowState.ts index e4422ad..a68e4bb 100644 --- a/src/common/windowState.ts +++ b/src/common/windowState.ts @@ -2,6 +2,12 @@ import fs from "node:fs"; import path from "node:path"; import { app } from "electron"; import type { WindowState } from "../@types/windowState.js"; + +// Performance optimization: Cache window state to avoid reading file on every call +let windowStateCache: WindowState | null = null; +let windowStateCacheTime = 0; +const WINDOW_STATE_CACHE_TTL = 1000; // Cache for 1 second + export function getWindowStateLocation() { const userDataPath = app.getPath("userData"); const storagePath = path.join(userDataPath, "/storage/"); @@ -13,11 +19,21 @@ export function setWindowState(object: WindowState): void { const saveFile = `${storagePath}window.json`; const toSave = JSON.stringify(object, null, 4); fs.writeFileSync(saveFile, toSave, "utf-8"); + + // Performance optimization: Update cache immediately + windowStateCache = object; + windowStateCacheTime = Date.now(); } // NOTE - Similar to getConfig, this seems to return a promise when it has no async. Originally Promise export function getWindowState(object: K): WindowState[K] { + // Performance optimization: Use cached window state if available + const now = Date.now(); + if (windowStateCache && (now - windowStateCacheTime) < WINDOW_STATE_CACHE_TTL) { + return windowStateCache[object]; + } + const userDataPath = app.getPath("userData"); const storagePath = path.join(userDataPath, "/storage/"); const settingsFile = `${storagePath}window.json`; @@ -27,5 +43,10 @@ export function getWindowState(object: K): WindowSt const rawData = fs.readFileSync(settingsFile, "utf-8"); const returnData = JSON.parse(rawData) as WindowState; console.log(`[Window state manager] ${JSON.stringify(returnData)}`); + + // Update cache + windowStateCache = returnData; + windowStateCacheTime = now; + return returnData[object]; } From fa15156e04105bc749152cae9c2ce13da43d4429 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:20:06 +0100 Subject: [PATCH 798/896] chore: linting --- src/common/config.ts | 14 +++++++------- src/common/lang.ts | 26 +++++++++++++------------- src/common/themes.ts | 28 +++++++++++++++------------- src/common/windowState.ts | 10 +++++----- 4 files changed, 40 insertions(+), 38 deletions(-) diff --git a/src/common/config.ts b/src/common/config.ts index 9bcf46d..0f086f1 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -87,13 +87,13 @@ export function getConfig(object: K): Settings[K] { if (process.argv.includes("--safe-mode")) { return safeMode[object]; } - + // Performance optimization: Use cached config if available and fresh const now = Date.now(); - if (configCache && (now - configCacheTime) < CONFIG_CACHE_TTL) { + if (configCache && now - configCacheTime < CONFIG_CACHE_TTL) { return configCache[object]; } - + const rawData = readFileSync(getConfigLocation(), "utf-8"); const returnData = JSON.parse(rawData) as Settings; configCache = returnData; @@ -106,7 +106,7 @@ export function setConfig(object: K, toSet: Settings[K parsed[object] = toSet; const toSave = JSON.stringify(parsed, null, 4); writeFileSync(getConfigLocation(), toSave, "utf-8"); - + // Performance optimization: Update cache immediately configCache = parsed; configCacheTime = Date.now(); @@ -124,7 +124,7 @@ export function setConfigBulk(object: Settings): void { // Write the merged data back to the file const toSave = JSON.stringify(mergedData, null, 4); writeFileSync(getConfigLocation(), toSave, "utf-8"); - + // Performance optimization: Update cache immediately configCache = mergedData as Settings; configCacheTime = Date.now(); @@ -163,7 +163,7 @@ export function checkIfConfigIsBroken(): void { try { const settingsData = readFileSync(getConfigLocation(), "utf-8"); const settingsObject = JSON.parse(settingsData) as Settings; - + // Performance optimization: Update cache after validation configCache = settingsObject; configCacheTime = Date.now(); @@ -192,7 +192,7 @@ export function checkIfConfigIsBroken(): void { console.log(`Missing config root entry ${missingKey}, setting default config for this entry...`); setConfig(missingKey, defaults[missingKey]); }); - + // Performance optimization: Ensure cache is updated after fixes if (!configWasFine) { const updatedData = readFileSync(getConfigLocation(), "utf-8"); diff --git a/src/common/lang.ts b/src/common/lang.ts index d23811e..d39c80f 100644 --- a/src/common/lang.ts +++ b/src/common/lang.ts @@ -21,7 +21,7 @@ export function setLang(language: string): void { const toSave = JSON.stringify(parsed, null, 4); console.log(`Setting language to ${language}`); fs.writeFileSync(langConfigFile, toSave, "utf-8"); - + // Performance optimization: Invalidate cache when language changes languageConfigCache = language; languageConfigCacheTime = Date.now(); @@ -31,7 +31,7 @@ let language: string; export function getLang(object: string): string { // Performance optimization: Use cached language config if available const now = Date.now(); - if (languageConfigCache && (now - languageConfigCacheTime) < LANGUAGE_CACHE_TTL) { + if (languageConfigCache && now - languageConfigCacheTime < LANGUAGE_CACHE_TTL) { language = languageConfigCache; } else if (language === undefined) { try { @@ -53,15 +53,15 @@ export function getLang(object: string): string { if (language.length === 2) { language = `${language}-${language.toUpperCase()}`; } - + // Performance optimization: Use cached language file if available const normalizedLang = language; - if (languageCache && (now - languageCacheTime) < LANGUAGE_CACHE_TTL) { + if (languageCache && now - languageCacheTime < LANGUAGE_CACHE_TTL) { if (languageCache[object] !== undefined) { return languageCache[object]; } } - + let langPath = path.join(import.meta.dirname, "../", `/assets/lang/${normalizedLang}.json`); if (!fs.existsSync(langPath)) { langPath = path.join(import.meta.dirname, "../", "/assets/lang/en-US.json"); @@ -74,20 +74,20 @@ export function getLang(object: string): string { rawData = fs.readFileSync(langPath, "utf-8"); parsed = JSON.parse(rawData) as i18nStrings; } - + // Update cache languageCache = parsed; languageCacheTime = now; - + return parsed[object]; } export function getRawLang(): i18nStrings { // Performance optimization: Use cached result if available const now = Date.now(); - if (languageCache && (now - languageCacheTime) < LANGUAGE_CACHE_TTL) { + if (languageCache && now - languageCacheTime < LANGUAGE_CACHE_TTL) { return languageCache; } - + if (language === undefined) { try { const userDataPath = app.getPath("userData"); @@ -122,20 +122,20 @@ export function getRawLang(): i18nStrings { parsed[key] = fallbackParsed[key]; } } - + // Update cache languageCache = parsed; languageCacheTime = now; - + return parsed; } export function getLangName(): string { // Performance optimization: Use cached language config if available const now = Date.now(); - if (languageConfigCache && (now - languageConfigCacheTime) < LANGUAGE_CACHE_TTL) { + if (languageConfigCache && now - languageConfigCacheTime < LANGUAGE_CACHE_TTL) { return languageConfigCache; } - + if (language === undefined) { try { const userDataPath = app.getPath("userData"); diff --git a/src/common/themes.ts b/src/common/themes.ts index 20f769e..8f8de2d 100644 --- a/src/common/themes.ts +++ b/src/common/themes.ts @@ -91,18 +91,18 @@ function parseBDManifest(content: string) { function getThemeManifest(themeId: string): ThemeManifest | null { const themePath = path.join(themesFolder, themeId); const manifestPath = path.join(themePath, "manifest.json"); - + if (!fs.existsSync(manifestPath)) { return null; } - + // Check cache const stats = fs.statSync(manifestPath); const cached = themeManifestCache.get(themeId); if (cached && cached.mtime === stats.mtimeMs) { return cached.manifest; } - + // Read and cache try { const manifestContent = fs.readFileSync(manifestPath, "utf8"); @@ -134,7 +134,7 @@ export function injectThemesMain(browserWindow: BrowserWindow): void { try { const themeFile = getThemeManifest(file); if (!themeFile) continue; - + if (themeFile.enabled === undefined) { const disabledPath = `${userDataPath}/disabled.txt`; if (fs.existsSync(disabledPath) && fs.readFileSync(disabledPath).toString().includes(file)) { @@ -176,11 +176,9 @@ export function setThemeEnabled(id: string, enabled: boolean) { // Performance optimization: Use cached manifest if available let manifest = getThemeManifest(id); if (!manifest) { - manifest = JSON.parse( - fs.readFileSync(path.join(themesFolder, id, "/manifest.json"), "utf8"), - ) as ThemeManifest; + manifest = JSON.parse(fs.readFileSync(path.join(themesFolder, id, "/manifest.json"), "utf8")) as ThemeManifest; } - + if (enabled !== manifest.enabled) { mainWindows.every((passedWindow) => { if (enabled) { @@ -198,7 +196,7 @@ export function setThemeEnabled(id: string, enabled: boolean) { } manifest.enabled = enabled; fs.writeFileSync(`${themesFolder}/${id}/manifest.json`, JSON.stringify(manifest)); - + // Performance optimization: Invalidate cache themeManifestCache.delete(id); } @@ -236,13 +234,13 @@ export function initQuickCss(browserWindow: BrowserWindow) { } browserWindow.webContents.send("addTheme", "legcord-quick-css", fs.readFileSync(quickCssPath, "utf-8")); console.log("[Theme Manager] Loaded Quick CSS"); - + // Performance optimization: Use fs.watch instead of fs.watchFile for better performance // Clean up existing watcher if any if (quickCssWatcher) { quickCssWatcher.close(); } - + // Performance optimization: Debounce file changes to avoid excessive updates let updateTimeout: NodeJS.Timeout | null = null; quickCssWatcher = fs.watch(quickCssPath, (eventType) => { @@ -255,14 +253,18 @@ export function initQuickCss(browserWindow: BrowserWindow) { try { console.log("[Theme Manager] Quick CSS updated."); browserWindow.webContents.send("removeTheme", "legcord-quick-css"); - browserWindow.webContents.send("addTheme", "legcord-quick-css", fs.readFileSync(quickCssPath, "utf-8")); + browserWindow.webContents.send( + "addTheme", + "legcord-quick-css", + fs.readFileSync(quickCssPath, "utf-8"), + ); } catch (err) { console.error("[Theme Manager] Error updating Quick CSS:", err); } }, 300); } }); - + // Clean up watcher when window is closed browserWindow.on("closed", () => { if (quickCssWatcher) { diff --git a/src/common/windowState.ts b/src/common/windowState.ts index a68e4bb..9ff063b 100644 --- a/src/common/windowState.ts +++ b/src/common/windowState.ts @@ -19,7 +19,7 @@ export function setWindowState(object: WindowState): void { const saveFile = `${storagePath}window.json`; const toSave = JSON.stringify(object, null, 4); fs.writeFileSync(saveFile, toSave, "utf-8"); - + // Performance optimization: Update cache immediately windowStateCache = object; windowStateCacheTime = Date.now(); @@ -30,10 +30,10 @@ export function setWindowState(object: WindowState): void { export function getWindowState(object: K): WindowState[K] { // Performance optimization: Use cached window state if available const now = Date.now(); - if (windowStateCache && (now - windowStateCacheTime) < WINDOW_STATE_CACHE_TTL) { + if (windowStateCache && now - windowStateCacheTime < WINDOW_STATE_CACHE_TTL) { return windowStateCache[object]; } - + const userDataPath = app.getPath("userData"); const storagePath = path.join(userDataPath, "/storage/"); const settingsFile = `${storagePath}window.json`; @@ -43,10 +43,10 @@ export function getWindowState(object: K): WindowSt const rawData = fs.readFileSync(settingsFile, "utf-8"); const returnData = JSON.parse(rawData) as WindowState; console.log(`[Window state manager] ${JSON.stringify(returnData)}`); - + // Update cache windowStateCache = returnData; windowStateCacheTime = now; - + return returnData[object]; } From 4ccb21b88c39a387701cf65d31330a7572abd45d Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 19 Jan 2026 23:08:15 +0100 Subject: [PATCH 799/896] chore: translations update [skip ci] Co-authored-by: Morkovka21Vek Translate-URL: https://hosted.weblate.org/projects/armcord/client/ru/ Translation: Legcord/Client --- assets/lang/ru.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/assets/lang/ru.json b/assets/lang/ru.json index 0967ef4..7942905 100644 --- a/assets/lang/ru.json +++ b/assets/lang/ru.json @@ -1 +1,12 @@ -{} +{ + "loading_screen_start": "Запуск Legcord…", + "loading_screen_update": "Доступна новая версия Legcord. Пожалуйста, обновитесь до последней версии.", + "setup_question1": "Добро пожаловать в установку Legcord", + "setup_offline": "Похоже, вы офлайн. Пожалуйста, подключитесь к интернету и перезапустите Legcord.", + "yes": "Да", + "no": "Нет", + "next": "Далее", + "settings-category-mods": "Модификации", + "settings-save": "Сохранить настройки", + "loading_screen_offline": "Похоже, вы офлайн. Перезапуск через " +} From 5f0016bf51bd2d71c45ddd6fdbe6a4d29eb37dfe Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 26 Jan 2026 17:01:21 +0100 Subject: [PATCH 800/896] chore: translations update [skip ci] Co-authored-by: Loposmo Translate-URL: https://hosted.weblate.org/projects/armcord/client/es_419/ Translation: Legcord/Client --- assets/lang/es_419.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/lang/es_419.json b/assets/lang/es_419.json index 0967ef4..73e729c 100644 --- a/assets/lang/es_419.json +++ b/assets/lang/es_419.json @@ -1 +1,3 @@ -{} +{ + "loading_screen_start": "Iniciando Legcord…" +} From d679a0ac9ca1b2cc0c7814ee6fb93c7824fb72c5 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 27 Jan 2026 18:01:54 +0100 Subject: [PATCH 801/896] chore: translations update [skip ci] Co-authored-by: Blueberry Co-authored-by: Loposmo Co-authored-by: brknstasis Translate-URL: https://hosted.weblate.org/projects/armcord/client/es_419/ Translate-URL: https://hosted.weblate.org/projects/armcord/client/ru/ Translation: Legcord/Client --- assets/lang/es_419.json | 50 ++++++++++++++++++++++++++++++++++++++++- assets/lang/ru.json | 8 +++++-- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/assets/lang/es_419.json b/assets/lang/es_419.json index 73e729c..1ed4c46 100644 --- a/assets/lang/es_419.json +++ b/assets/lang/es_419.json @@ -1,3 +1,51 @@ { - "loading_screen_start": "Iniciando Legcord…" + "loading_screen_start": "Iniciando Legcord…", + "loading_screen_offline": "Parece que estás desconectado. Reiniciando en ", + "loading_screen_update": "Una nueva versión de Legcord está disponible. Por favor actualiza a la versión más reciente.", + "setup_question1": "Bienvenido/a a la configuración de Legcord", + "setup_offline": "Apareces sin conexión. Conéctate a internet y reinicia Legcord.", + "setup_question2": "Elige tu canal/instancia de Discord:", + "setup_question3": "Debería Legcord manejar la instalación de mods de cliente?", + "yes": "Sí", + "no": "No", + "next": "Siguiente", + "setup_question4": "Elige un mod de cliente que quieras instalar:", + "setup_question5": "¿Quieres usar un ícono en la barra de tareas?", + "settings-bounceOnPing": "Rebota en la barra durante notificación", + "settings-bounceOnPing-desc": "Hace rebotar el icono de la app en la barra cuando recibes una notificación.", + "settings-theme": "Estilo de ventana", + "settings-theme-desc": "El estilo de ventana controla qué barra de título utiliza Legcord.", + "settings-theme-default": "Predeterminado (Perzonalizado)", + "settings-theme-native": "Nativo", + "settings-theme-overlay": "Superposición", + "settings-autoHideMenuBar": "Ocultar automáticamente la barra de menús", + "settings-autoHideMenuBar-desc": "Ocultar automáticamente la barra de menús cuando no se utilice.", + "settings-sleepInBackground": "Suspender en segundo plano", + "settings-sleepInBackground-desc": "Habilita la limitación de fondo de Chromium. Esto puede ayudar a ahorrar batería, pero también interrumpe las notificaciones.", + "settings-transparency": "Transparencia", + "settings-transparency-desc": "Elige el modo de transparencia que utiliza Legcord.", + "settings-transparency-universal": "Universal", + "settings-transparency-modern": "Moderna", + "settings-theme-transparent": "Transparente", + "settings-transparency-tahoe-warning": "La transparencia puede provocar lag excesivo en MacOS 26 Tahoe.", + "settings-popoutPiP": "Ventana emergente siempre visible", + "settings-popoutPiP-desc": "Cuanto está habilitado, la ventana emergente estará en modo siempre visible.", + "settings-venmic-workaround": "Workaraound", + "settings-venmic-workaround-desc": "Activar o desactivar el workaround para un problema que hace que el micrófono se comparta en lugar del audio correcto.", + "settings-venmic-deviceSelect": "Seleccionar dispositivo", + "settings-venmic-deviceSelect-desc": "Permite seleccionar un dispositivo de audio.", + "settings-venmic-granularSelect": "Selección Granular", + "settings-venmic-granularSelect-desc": "Permite seleccionar una fuente de entrada de audio.", + "settings-venmic-ignoreVirtual": "Ignorar dispositivos virtuales", + "settings-venmic-ignoreVirtual-desc": "Ignora los dispositivos de audio virtuales.", + "settings-venmic-ignoreDevices": "Ignorar dispositivos", + "settings-venmic-ignoreDevices-desc": "Ignora dispositivos de audio específicos.", + "settings-venmic-ignoreInputMedia": "Ignorar entradas multimedia", + "settings-venmic-ignoreInputMedia-desc": "Ignora la entrada de audio de las fuentes multimedia.", + "settings-venmic-onlySpeakers": "Solo altavoces", + "settings-venmic-onlySpeakers-desc": "Utiliza únicamente los altavoces para la selección de audio.", + "settings-venmic-onlyDefaultSpeakers": "Solo altavoces predeterminados", + "settings-venmic-onlyDefaultSpeakers-desc": "Utilice únicamente los altavoces predeterminados para la selección de audio.", + "settings-audio": "Audio", + "settings-audio-desc": "Seleccione el método que Legcord utilizará para capturar el audio de su sistema al compartir pantalla." } diff --git a/assets/lang/ru.json b/assets/lang/ru.json index 7942905..a0bb8e8 100644 --- a/assets/lang/ru.json +++ b/assets/lang/ru.json @@ -2,11 +2,15 @@ "loading_screen_start": "Запуск Legcord…", "loading_screen_update": "Доступна новая версия Legcord. Пожалуйста, обновитесь до последней версии.", "setup_question1": "Добро пожаловать в установку Legcord", - "setup_offline": "Похоже, вы офлайн. Пожалуйста, подключитесь к интернету и перезапустите Legcord.", + "setup_offline": "Похоже, вы не в сети. Пожалуйста, подключитесь к интернету и перезапустите Legcord.", "yes": "Да", "no": "Нет", "next": "Далее", "settings-category-mods": "Модификации", "settings-save": "Сохранить настройки", - "loading_screen_offline": "Похоже, вы офлайн. Перезапуск через " + "loading_screen_offline": "Похоже, вы не в сети. Перезапуск через ", + "setup_question2": "Выберите свой канал/экземпляр Discord:", + "setup_question3": "Должен ли Legcord заниматься установкой модификаций клиента?", + "setup_question4": "Выберите модификацию клиента, которую хотите установить:", + "setup_question5": "Хотите использовать значок в трее?" } From 49a908370037c18a5129de701e6bf6e686630520 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 29 Jan 2026 17:23:57 +0100 Subject: [PATCH 802/896] fix: better vencord quickcss handling --- assets/app/js/patchVencordQuickCSS.js | 18 +++++++++++++++++- src/@types/legcordWindow.d.ts | 1 + src/discord/ipc.ts | 7 ++++++- src/discord/preload/bridge.ts | 1 + 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/assets/app/js/patchVencordQuickCSS.js b/assets/app/js/patchVencordQuickCSS.js index 50fb58b..3d914af 100644 --- a/assets/app/js/patchVencordQuickCSS.js +++ b/assets/app/js/patchVencordQuickCSS.js @@ -3,6 +3,22 @@ if (window.VencordNative) { VencordNative.quickCss.openEditor = function openEditor() { - window.legcord.themes.openQuickCss() + shelter.ui.openConfirmationModal({ + header: () => "Vencord QuickCSS is not compatible", + body: () => `Vencord’s QuickCSS editor is not supported in Legcord. Legcord uses its own Quick CSS editor instead which can be found in it's respective themes section. + Would you like to import your existing Vencord CSS into Legcord?`, + type: "danger", + confirmText: "Import CSS", + cancelText: "Cancel" + }).then( + async () => { + const css = await VencordNative.quickCss.get(); + window.legcord.themes.importQuickCss(css); + await VencordNative.quickCss.set(""); + window.legcord.themes.openQuickCss() + }, + () => console.log("Cancel.") + ); + } } \ No newline at end of file diff --git a/src/@types/legcordWindow.d.ts b/src/@types/legcordWindow.d.ts index 1923e8f..abed16a 100644 --- a/src/@types/legcordWindow.d.ts +++ b/src/@types/legcordWindow.d.ts @@ -66,6 +66,7 @@ export interface LegcordWindow { openQuickCss: () => void; edit: (id: string) => void; folder: (id: string) => void; + importQuickCss: (css: string) => void; }; rpc: { listen: ( diff --git a/src/discord/ipc.ts b/src/discord/ipc.ts index b59cb88..d9d5cdb 100644 --- a/src/discord/ipc.ts +++ b/src/discord/ipc.ts @@ -1,4 +1,4 @@ -import { existsSync, readFileSync, readdirSync } from "node:fs"; +import { existsSync, readFileSync, readdirSync, writeFileSync } from "node:fs"; import os from "node:os"; import path from "node:path"; import type { Game } from "arrpc"; @@ -70,6 +70,11 @@ export function registerIpc(passedWindow: BrowserWindow): void { openCssEditor(quickCssPath); } }); + ipcMain.on("importQuickCss", (_event, css: string) => { + let currentCss = readFileSync(quickCssPath, "utf-8"); + currentCss += `\n/* Imported CSS */\n${css}`; + writeFileSync(quickCssPath, currentCss, "utf-8"); + }); ipcMain.on("openThemesFolder", () => { shell.showItemInFolder(themesPath); }); diff --git a/src/discord/preload/bridge.ts b/src/discord/preload/bridge.ts index 7c1be43..3363edb 100644 --- a/src/discord/preload/bridge.ts +++ b/src/discord/preload/bridge.ts @@ -90,6 +90,7 @@ contextBridge.exposeInMainWorld("legcord", { set: (id: string, state: boolean) => ipcRenderer.send("setThemeEnabled", id, state), folder: (id: string) => ipcRenderer.send("openThemeFolder", id), openQuickCss: () => ipcRenderer.send("openQuickCss"), + importQuickCss: (css: string) => ipcRenderer.send("importQuickCss", css), }, rpc: { listen: (callback: () => void) => { From 56a39ece47457b340101b183becc9399b6345096 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 29 Jan 2026 17:45:47 +0100 Subject: [PATCH 803/896] chore: add missing i18n strings --- assets/lang/en-US.json | 144 ++++++++++++++++- src/common/config.ts | 6 +- src/discord/ipc.ts | 10 +- src/discord/menu.ts | 63 ++++---- src/discord/touchbar.ts | 3 +- src/discord/tray.ts | 15 +- src/discord/window.ts | 22 +-- src/setup/main.ts | 7 +- src/setup/preload.mts | 3 + src/setup/setup.tsx | 146 +++++++++++------- .../components/ScreensharePicker.tsx | 13 +- .../components/AddDetectableModal.tsx | 27 ++-- .../settings/components/KeybindCard.tsx | 6 +- .../settings/components/KeybindMaker.tsx | 41 +++-- .../settings/components/ThemesCard.tsx | 23 +-- src/shelter/settings/index.ts | 8 +- .../settings/pages/RegisteredGamesPage.tsx | 7 +- src/shelter/settings/pages/SettingsPage.tsx | 16 +- src/shelter/settings/pages/ThemesPage.tsx | 15 +- src/splash/main.ts | 3 +- 20 files changed, 389 insertions(+), 189 deletions(-) diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index 86b6b38..9898199 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.json @@ -137,5 +137,147 @@ "settings-category-mods": "Mods", "settings-category-behaviour": "Behaviour", "settings-category-legacy": "Legacy features", - "settings-category-debug": "Debug options" + "settings-category-debug": "Debug options", + "menu-about": "About Legcord", + "menu-developerTools": "Developer tools", + "menu-openSettings": "Open settings", + "menu-reload": "Reload", + "menu-restart": "Restart", + "menu-quit": "Quit", + "menu-edit": "Edit", + "menu-undo": "Undo", + "menu-redo": "Redo", + "menu-cut": "Cut", + "menu-copy": "Copy", + "menu-paste": "Paste", + "menu-selectAll": "Select All", + "menu-view": "View", + "menu-toggleFullscreen": "Toggle Fullscreen", + "menu-zoomIn": "Zoom in", + "menu-zoomOut": "Zoom out", + "menu-resetZoom": "Reset zoom", + "menu-window": "Window", + "menu-minimize": "Minimize", + "menu-close": "Close", + "menu-keybind": "Keybind", + "menu-legcord": "Legcord", + "tray-openLegcord": "Open Legcord", + "tray-openSettings": "Open Settings", + "tray-supportServer": "Support Discord Server", + "tray-restartLegcord": "Restart Legcord", + "tray-quitLegcord": "Quit Legcord", + "tray-tooltip": "Legcord", + "dialog-openUrl-title": "Do you want to open this link?", + "dialog-openUrl-message": "Do you want to open {url}?", + "dialog-openUrl-detail": "This url was detected to not use normal browser protocols. It could mean that this url leads to a local program on your computer. Please check if you recognise it, before proceeding!", + "dialog-openUrl-checkbox": "Remember my answer and ignore this warning for future sessions", + "dialog-openUrl-yes": "Yes, please", + "dialog-openUrl-no": "No, I don't", + "title-unreadMessages": "You have some unread messages.", + "title-legcordSuffix": " - Legcord", + "dialog-importTheme-title": "Select a theme you want to import", + "dialog-importTheme-button": "Import", + "dialog-importTheme-discordStyles": "Discord styles", + "dialog-importTheme-allFiles": "All Files", + "dialog-customIcon-filters": "Icons", + "config-corrupted-title": "Oops, something went wrong.", + "config-corrupted-message": "Legcord has detected that your configuration file is corrupted, please restart the app and set your settings again. If this issue persists, report it on the support server/Github issues.", + "setup-welcomeTitle": "Welcome to Legcord", + "setup-welcomeSubtitle": "Let's get you set up with your perfect configuration.", + "setup-getStarted": "Get Started", + "setup-windowStyle-nativeTitle": "Native Window", + "setup-windowStyle-nativeDesc": "Use your system's default window decorations", + "setup-windowStyle-customTitle": "Custom Titlebar", + "setup-windowStyle-customDesc": "Use Legcord's custom titlebar design", + "setup-chooseWindowStyle": "Choose Window Style", + "setup-selectAppearance": "Select how Legcord appears on your machine", + "setup-systemTray": "System Tray", + "setup-trayChoose": "Choose whether to enable the system tray icon", + "setup-trayEnableTitle": "Enable Tray Icon", + "setup-trayEnableDesc": "Show Legcord in your system tray", + "setup-trayDisableTitle": "Disable Tray Icon", + "setup-trayDisableDesc": "Don't show Legcord in your system tray", + "setup-linuxTrayWarning": "System tray functionality may have issues or behave differently on Linux systems.", + "setup-finishTitle": "You're All Set!", + "setup-finishSubtitle": "Your Legcord configuration is complete and personalized to your preferences.", + "setup-finishSettingsNote": "Need to make changes later? You'll find all these options in Discord's settings menu under Legcord.", + "setup-launchLegcord": "Launch Legcord", + "setup-modSelectorTitle": "Choose Your Client Mod", + "setup-modSelectorSubtitle": "Legcord includes Shelter out of the box, but you can also choose another client mod if wanted.", + "setup-vencordTitle": "Vencord", + "setup-vencordDesc": "Client mod with plugins and themes.", + "setup-equicordTitle": "Equicord", + "setup-equicordDesc": "A fork of Vencord with more plugins.", + "setup-useShelterOnly": "Use Shelter Only", + "setup-back": "Back", + "setup-next": "Next", + "setup-stepOf": "Step {current} of {total}", + "setup-loading": "Loading...", + "setup-windowTitle": "Legcord Setup", + "settings-restartRequired": "Restart required", + "settings-restartRequiredBody": "You need to restart to apply these changes.", + "settings-restartLater": "I'll do it later", + "settings-theme-legacy": "Legacy", + "settings-channel-stable": "Stable", + "settings-channel-canary": "Canary", + "settings-channel-ptb": "PTB", + "settings-category-powerManagement": "Power Management", + "settings-category-arrpc": "arRPC", + "settings-audio-loopback": "Loopback", + "settings-audio-loopbackWithMute": "Loopback with mute", + "keybind-addKeybind": "Add a keybind", + "keybind-accelerator": "Accelerator", + "keybind-invalidCombo": "This key combination is invalid or not supported.", + "keybind-recording": "Recording", + "keybind-record": "Record", + "keybind-action": "Action", + "keybind-mute": "Mute", + "keybind-deafen": "Deafen", + "keybind-leaveCall": "Leave call", + "keybind-navigateForward": "Navigate forward", + "keybind-navigateBack": "Navigate back", + "keybind-runJavascript": "Run Javascript", + "keybind-openQuickCss": "Open Quick CSS", + "keybind-globalNote": "Allows you to assign a specific keyboard shortcut that can be used across different applications and programs.", + "keybind-global": "Global", + "keybind-enabled": "Enabled", + "keybind-jsCode": "Javascript code", + "keybind-add": "Add", + "keybind-delete": "Delete", + "detectable-missingFields": "Missing fields", + "detectable-fillAllFields": "Please fill in all fields before adding.", + "detectable-addApp": "Add Detectable Application", + "detectable-appName": "App Name*", + "detectable-appId": "App ID*", + "detectable-themes": "Themes", + "detectable-aliases": "Aliases", + "detectable-enabled": "Enabled", + "detectable-placeholderName": "e.g. Discord", + "detectable-placeholderId": "e.g. 1234567890", + "detectable-placeholderThemes": "Action, Adventure", + "detectable-placeholderAliases": "Alias1, Alias2", + "themes-success": "Success!", + "themes-updated": "Theme successfully updated!", + "themes-bdInstalled": "BD theme successfully installed!", + "themes-delete": "Delete", + "themes-edit": "Edit", + "themes-update": "Update", + "themes-open": "Open", + "themes-by": "by", + "themes-openQuickCss": "Open Quick CSS file", + "themes-importFromFile": "Import from file", + "themes-openThemesFolder": "Open themes folder", + "themes-import": "Import", + "themes-importUrlPlaceholder": "https://raw.githubusercontent.com/... [.theme.css]", + "games-registeredGames": "Registered Games", + "games-refreshList": "Refresh list", + "games-add": "Add", + "screenshare-selectSource": "Please select a source", + "screenshare-venmicDisabled": "Venmic disabled", + "screenshare-share": "Share", + "screenshare-title": "Screenshare", + "contextMenu-searchGoogle": "Search with Google", + "contextMenu-searchDuckDuckGo": "Search with DuckDuckGo", + "touchbar-servers": "Servers", + "splash-title": "Legcord" } diff --git a/src/common/config.ts b/src/common/config.ts index 0f086f1..d75031d 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -2,6 +2,7 @@ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "no import { dirname, join } from "node:path"; import { app, dialog } from "electron"; import type { Settings } from "../@types/settings.js"; +import { getLang } from "./lang.js"; import { getWindowStateLocation } from "./windowState.js"; export let firstRun: boolean; @@ -205,10 +206,7 @@ export function checkIfConfigIsBroken(): void { console.error(e); console.log("Detected a corrupted config"); setup(); - dialog.showErrorBox( - "Oops, something went wrong.", - "Legcord has detected that your configuration file is corrupted, please restart the app and set your settings again. If this issue persists, report it on the support server/Github issues.", - ); + dialog.showErrorBox(getLang("config-corrupted-title"), getLang("config-corrupted-message")); } try { const windowData = readFileSync(getWindowStateLocation(), "utf-8"); diff --git a/src/discord/ipc.ts b/src/discord/ipc.ts index d9d5cdb..afbd200 100644 --- a/src/discord/ipc.ts +++ b/src/discord/ipc.ts @@ -81,12 +81,12 @@ export function registerIpc(passedWindow: BrowserWindow): void { ipcMain.on("openImportPicker", () => { dialog .showOpenDialog({ - title: "Select a theme you want to import", - buttonLabel: "Import", + title: getLang("dialog-importTheme-title"), + buttonLabel: getLang("dialog-importTheme-button"), properties: ["openFile", "multiSelections"], filters: [ - { name: "Discord styles", extensions: ["scss", "css"] }, - { name: "All Files", extensions: ["*"] }, + { name: getLang("dialog-importTheme-discordStyles"), extensions: ["scss", "css"] }, + { name: getLang("dialog-importTheme-allFiles"), extensions: ["*"] }, ], }) .then((result) => { @@ -289,7 +289,7 @@ export function registerIpc(passedWindow: BrowserWindow): void { dialog .showOpenDialog({ properties: ["openFile"], - filters: [{ name: "Icons", extensions: ["ico", "png", "icns"] }], + filters: [{ name: getLang("dialog-customIcon-filters"), extensions: ["ico", "png", "icns"] }], }) .then((result) => { if (result.canceled) return; diff --git a/src/discord/menu.ts b/src/discord/menu.ts index 36fb8cf..90d97e8 100644 --- a/src/discord/menu.ts +++ b/src/discord/menu.ts @@ -3,15 +3,26 @@ import type { Keybind, KeybindActions } from "../@types/keybind.js"; import { getConfig } from "../common/config.js"; import { setForceQuit } from "../common/forceQuit.js"; import { runAction } from "../common/keybindActions.js"; +import { getLang } from "../common/lang.js"; import { mainWindows } from "./window.js"; +const keybindActionLabels: Record = { + mute: "keybind-mute", + deafen: "keybind-deafen", + leaveCall: "keybind-leaveCall", + navigateForward: "keybind-navigateForward", + navigateBack: "keybind-navigateBack", + runJavascript: "keybind-runJavascript", + openQuickCss: "keybind-openQuickCss", +}; + export function setMenu(): void { const keybinds = getConfig("keybinds"); - const keybindSubMenu: { label: KeybindActions; accelerator: string; click: () => void }[] = []; + const keybindSubMenu: { label: string; accelerator: string; click: () => void }[] = []; keybinds.forEach((keybind: Keybind) => { if (!keybind.global && keybind.enabled) { keybindSubMenu.push({ - label: keybind.action, + label: getLang(keybindActionLabels[keybind.action]), accelerator: keybind.accelerator, click: () => { runAction(keybind); @@ -22,21 +33,21 @@ export function setMenu(): void { const template: MenuItemConstructorOptions[] = [ { - label: "Legcord", + label: getLang("menu-legcord"), submenu: [ - { label: "About Legcord", role: "about" }, + { label: getLang("menu-about"), role: "about" }, { type: "separator" }, { role: "services" }, { type: "separator" }, { - label: "Developer tools", + label: getLang("menu-developerTools"), accelerator: process.platform === "darwin" ? "Cmd+Option+I" : "Ctrl+Shift+I", click() { BrowserWindow.getFocusedWindow()!.webContents.toggleDevTools(); }, }, { - label: "Open settings", + label: getLang("menu-openSettings"), accelerator: "Cmd+,", click() { mainWindows.forEach((mainWindow) => { @@ -55,7 +66,7 @@ export function setMenu(): void { }, }, { - label: "Reload", + label: getLang("menu-reload"), accelerator: "CmdOrCtrl+R", click() { mainWindows.forEach((mainWindow) => { @@ -64,7 +75,7 @@ export function setMenu(): void { }, }, { - label: "Restart", + label: getLang("menu-restart"), accelerator: "CmdOrCtrl+Shift+R", click() { app.relaunch(); @@ -77,7 +88,7 @@ export function setMenu(): void { { role: "unhide" }, { type: "separator" }, { - label: "Quit", + label: getLang("menu-quit"), accelerator: "CmdOrCtrl+Q", click() { setForceQuit(true); @@ -87,54 +98,54 @@ export function setMenu(): void { ], }, { - label: "Edit", + label: getLang("menu-edit"), submenu: [ { - label: "Undo", + label: getLang("menu-undo"), accelerator: "CmdOrCtrl+Z", click() { BrowserWindow.getFocusedWindow()!.webContents.undo(); }, }, { - label: "Redo", + label: getLang("menu-redo"), accelerator: "Shift+CmdOrCtrl+Z", click() { BrowserWindow.getFocusedWindow()!.webContents.redo(); }, }, { type: "separator" }, - { label: "Cut", accelerator: "CmdOrCtrl+X", role: "cut" }, - { label: "Copy", accelerator: "CmdOrCtrl+C", role: "copy" }, - { label: "Paste", accelerator: "CmdOrCtrl+V", role: "paste" }, - { label: "Select All", accelerator: "CmdOrCtrl+A", role: "selectAll" }, + { label: getLang("menu-cut"), accelerator: "CmdOrCtrl+X", role: "cut" }, + { label: getLang("menu-copy"), accelerator: "CmdOrCtrl+C", role: "copy" }, + { label: getLang("menu-paste"), accelerator: "CmdOrCtrl+V", role: "paste" }, + { label: getLang("menu-selectAll"), accelerator: "CmdOrCtrl+A", role: "selectAll" }, ], }, { - label: "View", + label: getLang("menu-view"), submenu: [ { - label: "Toggle Fullscreen", + label: getLang("menu-toggleFullscreen"), role: "togglefullscreen", }, - { label: "Zoom in", accelerator: "CmdOrCtrl+Plus", role: "zoomIn" }, + { label: getLang("menu-zoomIn"), accelerator: "CmdOrCtrl+Plus", role: "zoomIn" }, // Fix for zoom in on keyboards with dedicated + like QWERTZ (or numpad) // See https://github.com/electron/electron/issues/14742 and https://github.com/electron/electron/issues/5256 - { label: "Zoom in", accelerator: "CmdOrCtrl+=", role: "zoomIn", visible: false }, - { label: "Zoom out", accelerator: "CmdOrCtrl+-", role: "zoomOut" }, + { label: getLang("menu-zoomIn"), accelerator: "CmdOrCtrl+=", role: "zoomIn", visible: false }, + { label: getLang("menu-zoomOut"), accelerator: "CmdOrCtrl+-", role: "zoomOut" }, { type: "separator" }, - { label: "Reset zoom", accelerator: "CmdOrCtrl+0", role: "resetZoom" }, + { label: getLang("menu-resetZoom"), accelerator: "CmdOrCtrl+0", role: "resetZoom" }, ], }, { - label: "Window", + label: getLang("menu-window"), submenu: [ - { label: "Minimize", accelerator: "Cmd+M", role: "minimize" }, - { label: "Close", accelerator: "Cmd+W", role: "close" }, + { label: getLang("menu-minimize"), accelerator: "Cmd+M", role: "minimize" }, + { label: getLang("menu-close"), accelerator: "Cmd+W", role: "close" }, ], }, { - label: "Keybind", + label: getLang("menu-keybind"), submenu: keybindSubMenu, }, ]; diff --git a/src/discord/touchbar.ts b/src/discord/touchbar.ts index f9f0e73..cc4dec0 100644 --- a/src/discord/touchbar.ts +++ b/src/discord/touchbar.ts @@ -3,6 +3,7 @@ import { join } from "node:path"; import { TouchBar, app, nativeImage } from "electron"; import { navigateTo } from "../common/dom.js"; import { deafenToggle, leaveCall, muteToggle } from "../common/keybindActions.js"; +import { getLang } from "../common/lang.js"; import { mainWindows } from "./window.js"; const { TouchBarButton, TouchBarSpacer, TouchBarPopover, TouchBarScrubber } = TouchBar; @@ -96,5 +97,5 @@ export const voiceTouchBar = new TouchBar({ }); export const mainTouchBar = new TouchBar({ - items: [new TouchBarPopover({ label: "Servers", showCloseButton: true, items: scrollableList })], + items: [new TouchBarPopover({ label: getLang("touchbar-servers"), showCloseButton: true, items: scrollableList })], }); diff --git a/src/discord/tray.ts b/src/discord/tray.ts index 68c7a35..e555609 100644 --- a/src/discord/tray.ts +++ b/src/discord/tray.ts @@ -3,6 +3,7 @@ import { Menu, Tray, app, nativeImage } from "electron"; import { getConfig } from "../common/config.js"; import { navigateTo } from "../common/dom.js"; import { setForceQuit } from "../common/forceQuit.js"; +import { getLang } from "../common/lang.js"; import { getDisplayVersion } from "../common/version.js"; import { mainWindows } from "./window.js"; export let tray: Tray; @@ -31,7 +32,7 @@ export function createTray() { tray = new Tray(trayImg); const contextMenu = Menu.buildFromTemplate([ { - label: `Legcord ${getDisplayVersion()}`, + label: `${getLang("menu-legcord")} ${getDisplayVersion()}`, icon: trayImg, enabled: false, }, @@ -39,7 +40,7 @@ export function createTray() { type: "separator", }, { - label: "Open Legcord", + label: getLang("tray-openLegcord"), click() { mainWindows.forEach((mainWindow) => { mainWindow.show(); @@ -47,7 +48,7 @@ export function createTray() { }, }, { - label: "Open Settings", + label: getLang("tray-openSettings"), click() { mainWindows.forEach((mainWindow) => { mainWindow.show(); @@ -65,7 +66,7 @@ export function createTray() { }, }, { - label: "Support Discord Server", + label: getLang("tray-supportServer"), click() { mainWindows.forEach((mainWindow) => { navigateTo(mainWindow, "/invite/TnhxcqynZ2"); @@ -76,7 +77,7 @@ export function createTray() { type: "separator", }, { - label: "Restart Legcord", + label: getLang("tray-restartLegcord"), click() { app.relaunch(); setForceQuit(true); @@ -84,7 +85,7 @@ export function createTray() { }, }, { - label: "Quit Legcord", + label: getLang("tray-quitLegcord"), click() { setForceQuit(true); app.quit(); @@ -93,7 +94,7 @@ export function createTray() { ]); tray.setContextMenu(contextMenu); - tray.setToolTip("Legcord"); + tray.setToolTip(getLang("tray-tooltip")); tray.on("click", () => { mainWindows.forEach((mainWindow) => { mainWindow.show(); diff --git a/src/discord/window.ts b/src/discord/window.ts index 79d51d5..5b685b9 100644 --- a/src/discord/window.ts +++ b/src/discord/window.ts @@ -14,6 +14,7 @@ import contextMenu from "electron-context-menu"; import { firstRun, getConfig, setConfig } from "../common/config.js"; import { navigateTo } from "../common/dom.js"; import { forceQuit, setForceQuit } from "../common/forceQuit.js"; +import { getLang } from "../common/lang.js"; import { initQuickCss, injectThemesMain } from "../common/themes.js"; import { getWindowState, setWindowState } from "../common/windowState.js"; import { init } from "../main.js"; @@ -34,7 +35,7 @@ contextMenu({ showSearchWithGoogle: false, prepend: (_defaultActions, parameters) => [ { - label: "Search with Google", + label: getLang("contextMenu-searchGoogle"), // Only show it when right-clicking text visible: parameters.selectionText.trim().length > 0, click: () => { @@ -42,7 +43,7 @@ contextMenu({ }, }, { - label: "Search with DuckDuckGo", + label: getLang("contextMenu-searchDuckDuckGo"), // Only show it when right-clicking text visible: parameters.selectionText.trim().length > 0, click: () => { @@ -146,12 +147,12 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { } else { const options: MessageBoxOptions = { type: "question", - buttons: ["Yes, please", "No, I don't"], + buttons: [getLang("dialog-openUrl-yes"), getLang("dialog-openUrl-no")], defaultId: 1, - title: url, - message: `Do you want to open ${url}?`, - detail: "This url was detected to not use normal browser protocols. It could mean that this url leads to a local program on your computer. Please check if you recognise it, before proceeding!", - checkboxLabel: "Remember my answer and ignore this warning for future sessions", + title: getLang("dialog-openUrl-title"), + message: getLang("dialog-openUrl-message").replace("{url}", url), + detail: getLang("dialog-openUrl-detail"), + checkboxLabel: getLang("dialog-openUrl-checkbox"), checkboxChecked: false, }; @@ -225,25 +226,26 @@ function doAfterDefiningTheWindow(passedWindow: BrowserWindow): void { passedWindow.webContents.on("page-title-updated", (e, title) => { const legcordSuffix = " - Legcord"; /* identify */ + const unreadMessages = getLang("title-unreadMessages"); // FIXME - This is a bit of a mess. I'm not sure how to clean it up. if (process.platform === "win32") { if (title.startsWith("•")) return passedWindow.setOverlayIcon( nativeImage.createFromPath(path.join(import.meta.dirname, "../", "/assets/badge-11.ico")), - "You have some unread messages.", + unreadMessages, ); if (title.startsWith("(")) { const pings = Number.parseInt(/\((\d+)\)/.exec(title)![1]); if (pings > 9) { return passedWindow.setOverlayIcon( nativeImage.createFromPath(path.join(import.meta.dirname, "../", "/assets/badge-10.ico")), - "You have some unread messages.", + unreadMessages, ); } else { return passedWindow.setOverlayIcon( nativeImage.createFromPath(path.join(import.meta.dirname, "../", `/assets/badge-${pings}.ico`)), - "You have some unread messages.", + unreadMessages, ); } } diff --git a/src/setup/main.ts b/src/setup/main.ts index e18ab4f..8760967 100644 --- a/src/setup/main.ts +++ b/src/setup/main.ts @@ -4,7 +4,7 @@ import path from "node:path"; import { BrowserWindow, type BrowserWindowConstructorOptions, app, ipcMain } from "electron"; import type { Settings } from "../@types/settings.js"; import { getConfig, getConfigLocation, setConfigBulk } from "../common/config.js"; -import { getLang } from "../common/lang.js"; +import { getLang, getRawLang } from "../common/lang.js"; let setupWindow: BrowserWindow; export async function createSetupWindow(): Promise { @@ -13,7 +13,7 @@ export async function createSetupWindow(): Promise { const windowOptions: BrowserWindowConstructorOptions = { width: 800, height: 600, - title: "Legcord Setup", + title: getLang("setup-windowTitle"), darkTheme: true, icon: getConfig("customIcon") ?? path.join(import.meta.dirname, "../", "/assets/desktop.png"), resizable: false, @@ -62,6 +62,9 @@ export async function createSetupWindow(): Promise { ipcMain.handle("setup-getLang", (_event, toGet: string) => { return getLang(toGet); }); + ipcMain.handle("setup-getRawLang", () => { + return getRawLang(); + }); ipcMain.on("setup-restart", () => { app.relaunch(); app.exit(); diff --git a/src/setup/preload.mts b/src/setup/preload.mts index 9b979f8..3266b46 100644 --- a/src/setup/preload.mts +++ b/src/setup/preload.mts @@ -9,6 +9,7 @@ contextBridge.exposeInMainWorld("setup", { ipcRenderer.invoke("setup-getLang", toGet).then((result: string) => { return result; }), + getRawLang: () => ipcRenderer.invoke("setup-getRawLang") as Promise>, }); if (ipcRenderer.sendSync("setup-getOS") !== "darwin") { @@ -34,6 +35,8 @@ declare global { saveSettings: (settings: any) => void; restart: () => void; os: string; + getLang: (toGet: string) => Promise; + getRawLang: () => Promise>; }; } } diff --git a/src/setup/setup.tsx b/src/setup/setup.tsx index e8dc2f4..a6c3a72 100644 --- a/src/setup/setup.tsx +++ b/src/setup/setup.tsx @@ -11,27 +11,32 @@ import { Settings, Sparkles, } from "lucide-solid"; -import { For, Show, createSignal } from "solid-js"; +import { For, Show, createResource, createSignal } from "solid-js"; import { render } from "solid-js/web"; import { Motion } from "solid-motionone"; -const Welcome = ({ onNext }: { onNext: () => void }) => ( +const Welcome = ({ onNext, t }: { onNext: () => void; t: () => Record | undefined }) => (

    - Welcome to Legcord + {t()?.["setup-welcomeTitle"] ?? "Welcome to Legcord"}

    -

    Let's get you set up with your perfect configuration.

    +

    + {t()?.["setup-welcomeSubtitle"] ?? "Let's get you set up with your perfect configuration."} +

    - Get Started + {t()?.["setup-getStarted"] ?? "Get Started"}
    ); -const WindowStyle = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) => { +const WindowStyle = ({ + readyToNext, + t, +}: { readyToNext: (valid: boolean) => void; t: () => Record | undefined }) => { const [selectedStyle, setSelectedStyle] = createSignal(null); const handleStyleSelect = (styleId: string) => { @@ -48,24 +53,29 @@ const WindowStyle = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) const styles = [ { id: "native", - title: "Native Window", - description: "Use your system's default window decorations", + titleKey: "setup-windowStyle-nativeTitle", + descKey: "setup-windowStyle-nativeDesc", screenshot: "legcord://assets/native.png", }, { id: "default", - title: "Custom Titlebar", - description: "Use Legcord's custom titlebar design", + titleKey: "setup-windowStyle-customTitle", + descKey: "setup-windowStyle-customDesc", screenshot: "legcord://assets/custom.png", }, ]; + const lang = t(); return (
    -

    Choose Window Style

    -

    Select how Legcord appears on your machine

    +

    + {lang?.["setup-chooseWindowStyle"] ?? "Choose Window Style"} +

    +

    + {lang?.["setup-selectAppearance"] ?? "Select how Legcord appears on your machine"} +

    @@ -83,13 +93,15 @@ const WindowStyle = ({ readyToNext }: { readyToNext: (valid: boolean) => void })
    {`${item.title}
    -

    {item.title}

    -

    {item.description}

    +

    + {lang?.[item.titleKey] ?? item.titleKey} +

    +

    {lang?.[item.descKey] ?? item.descKey}

    void }) ); }; -const TraySettings = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) => { +const TraySettings = ({ + readyToNext, + t, +}: { readyToNext: (valid: boolean) => void; t: () => Record | undefined }) => { const [selectedOption, setSelectedOption] = createSignal(null); const handleOptionSelect = (optionId: string) => { @@ -124,26 +139,19 @@ const TraySettings = ({ readyToNext }: { readyToNext: (valid: boolean) => void } }; const options = [ - { - id: "dynamic", - title: "Enable Tray Icon", - description: "Show Legcord in your system tray", - icon: LaptopMinimalCheck, - }, - { - id: "disabled", - title: "Disable Tray Icon", - description: "Don't show Legcord in your system tray", - icon: LaptopMinimal, - }, + { id: "dynamic", titleKey: "setup-trayEnableTitle", descKey: "setup-trayEnableDesc", icon: LaptopMinimalCheck }, + { id: "disabled", titleKey: "setup-trayDisableTitle", descKey: "setup-trayDisableDesc", icon: LaptopMinimal }, ]; + const lang = t(); return (
    -

    System Tray

    -

    Choose whether to enable the system tray icon

    +

    {lang?.["setup-systemTray"] ?? "System Tray"}

    +

    + {lang?.["setup-trayChoose"] ?? "Choose whether to enable the system tray icon"} +

    @@ -151,7 +159,8 @@ const TraySettings = ({ readyToNext }: { readyToNext: (valid: boolean) => void }

    - System tray functionality may have issues or behave differently on Linux systems. + {lang?.["setup-linuxTrayWarning"] ?? + "System tray functionality may have issues or behave differently on Linux systems."}

    @@ -176,8 +185,10 @@ const TraySettings = ({ readyToNext }: { readyToNext: (valid: boolean) => void }
    -

    {option.title}

    -

    {option.description}

    +

    + {lang?.[option.titleKey] ?? option.titleKey} +

    +

    {lang?.[option.descKey] ?? option.descKey}

    void } ); }; -const Finish = ({ restart }: { restart: () => void }) => ( +const Finish = ({ restart, t }: { restart: () => void; t: () => Record | undefined }) => (
    -

    You're All Set!

    -

    Your Legcord configuration is complete and personalized to your preferences.

    +

    {t()?.["setup-finishTitle"] ?? "You're All Set!"}

    +

    + {t()?.["setup-finishSubtitle"] ?? + "Your Legcord configuration is complete and personalized to your preferences."} +

    - Need to make changes later? You'll find all these options in Discord's settings menu under Legcord. + {t()?.["setup-finishSettingsNote"] ?? + "Need to make changes later? You'll find all these options in Discord's settings menu under Legcord."}

    - Launch Legcord + {t()?.["setup-launchLegcord"] ?? "Launch Legcord"}
    ); -const ModSelector = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) => { +const ModSelector = ({ + readyToNext, + t, +}: { readyToNext: (valid: boolean) => void; t: () => Record | undefined }) => { const [selectedMod, setSelectedMod] = createSignal(null); const handleModSelect = (optionId: string) => { const newValue = selectedMod() === optionId ? null : optionId; @@ -235,30 +253,34 @@ const ModSelector = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) const mods = [ { id: "vencord", - title: "Vencord", - description: "Client mod with plugins and themes.", + titleKey: "setup-vencordTitle", + descKey: "setup-vencordDesc", icon: "legcord://assets/vencord.png", }, { id: "equicord", - title: "Equicord", - description: "A fork of Vencord with more plugins.", + titleKey: "setup-equicordTitle", + descKey: "setup-equicordDesc", icon: "legcord://assets/equicord.png", }, ]; + const lang = t(); return (
    -

    Choose Your Client Mod

    +

    + {lang?.["setup-modSelectorTitle"] ?? "Choose Your Client Mod"} +

    - Legcord includes Shelter out of the box, but you can also choose another client mod if wanted. + {lang?.["setup-modSelectorSubtitle"] ?? + "Legcord includes Shelter out of the box, but you can also choose another client mod if wanted."}

    - Loading...
    }> + {lang?.["setup-loading"] ?? "Loading..."}
    }> {(mod) => ( handleModSelect(mod.id)} @@ -276,13 +298,15 @@ const ModSelector = ({ readyToNext }: { readyToNext: (valid: boolean) => void }) > {`${mod.title}
    -

    {mod.title}

    -

    {mod.description}

    +

    + {lang?.[mod.titleKey] ?? mod.titleKey} +

    +

    {lang?.[mod.descKey] ?? mod.descKey}

    void }) : "border-gray-700/30 text-gray-500 hover:border-purple-500/50 hover:text-purple-400 hover:bg-purple-500/10" }`} > - Use Shelter Only + {lang?.["setup-useShelterOnly"] ?? "Use Shelter Only"}
    ); }; function Stepper() { + const [t] = createResource(() => window.setup.getRawLang()); const [currentStep, setCurrentStep] = createSignal(0); const [isValid, setValid] = createSignal(true); const maxSteps = 5; @@ -337,6 +362,11 @@ function Stepper() { window.setup.saveSettings({ doneSetup: true }); window.setup.restart(); }; + const stepOfText = () => { + const lang = t(); + const template = lang?.["setup-stepOf"] ?? "Step {current} of {total}"; + return template.replace("{current}", String(currentStep() + 1)).replace("{total}", String(maxSteps)); + }; return (
    - + - + - + - + - + @@ -367,11 +397,11 @@ function Stepper() { class="px-6 py-2.5 rounded-xl bg-gray-800 hover:bg-gray-700 text-white font-medium transition-colors inline-flex items-center gap-2" > - Back + {t()?.["setup-back"] ?? "Back"}
    - Step {currentStep() + 1} of {maxSteps} + {stepOfText()}
    - Next + {t()?.["setup-next"] ?? "Next"}
    diff --git a/src/shelter/screenshare/components/ScreensharePicker.tsx b/src/shelter/screenshare/components/ScreensharePicker.tsx index 9521b8a..1f34103 100644 --- a/src/shelter/screenshare/components/ScreensharePicker.tsx +++ b/src/shelter/screenshare/components/ScreensharePicker.tsx @@ -66,9 +66,10 @@ export const ScreensharePicker = (props: { setSource(props.sources[0].id); setName(props.sources[0].name); } + const t = store.i18n; function startScreenshare() { if (source() === "") { - showToast("Please select a source", "error"); + showToast(t["screenshare-selectSource"], "error"); } console.log(source(), name(), audio()); if (audioSource() !== undefined && audio()) { @@ -92,7 +93,7 @@ export const ScreensharePicker = (props: { return ( - Screenshare + {t["screenshare-title"]}
    @@ -172,7 +173,7 @@ export const ScreensharePicker = (props: { }} limitHeight options={[ - { label: "Venmic disabled", value: "Venmic disabled" }, + { label: t["screenshare-venmicDisabled"], value: "Venmic disabled" }, ...(props.audioSources?.map((s) => ({ label: s["node.name"], value: s["node.name"], @@ -182,7 +183,11 @@ export const ScreensharePicker = (props: {
    - +
    ); }; diff --git a/src/shelter/settings/components/AddDetectableModal.tsx b/src/shelter/settings/components/AddDetectableModal.tsx index 2793045..adbf0c3 100644 --- a/src/shelter/settings/components/AddDetectableModal.tsx +++ b/src/shelter/settings/components/AddDetectableModal.tsx @@ -25,8 +25,8 @@ export const AddDetectableModal = (props: { close: () => void; executable: strin function save() { if (!appName().trim() || !appId().trim() || !props.executable) { return showToast({ - title: "Missing fields", - content: "Please fill in all fields before adding.", + title: store.i18n["detectable-missingFields"], + content: store.i18n["detectable-fillAllFields"], duration: 3000, }); } @@ -61,31 +61,32 @@ export const AddDetectableModal = (props: { close: () => void; executable: strin props.close(); } + const t = store.i18n; return ( - Add Detectable Application + {t["detectable-addApp"]} -
    App Name*
    - +
    {t["detectable-appName"]}
    + -
    App ID*
    - +
    {t["detectable-appId"]}
    + -
    Themes
    - +
    {t["detectable-themes"]}
    + -
    Aliases
    - +
    {t["detectable-aliases"]}
    +
    - +
    ); }; diff --git a/src/shelter/settings/components/KeybindCard.tsx b/src/shelter/settings/components/KeybindCard.tsx index 28463dc..6f54518 100644 --- a/src/shelter/settings/components/KeybindCard.tsx +++ b/src/shelter/settings/components/KeybindCard.tsx @@ -25,13 +25,15 @@ export const KeybindCard = (props: { keybind: Keybind }) => { return (
    -
    {props.keybind.action}
    +
    + {store.i18n[`keybind-${props.keybind.action}`] ?? props.keybind.action} +
    {props.keybind.accelerator}
    -
    diff --git a/src/shelter/settings/components/KeybindMaker.tsx b/src/shelter/settings/components/KeybindMaker.tsx index b8a8e8b..f8d37a6 100644 --- a/src/shelter/settings/components/KeybindMaker.tsx +++ b/src/shelter/settings/components/KeybindMaker.tsx @@ -93,14 +93,15 @@ export const KeybindMaker = (props: { close: () => void }) => { window.legcord.settings.addKeybind(keybind); } + const t = store.i18n; return ( - Add a keybind + {t["keybind-addKeybind"]} -
    Accelerator
    +
    {t["keybind-accelerator"]}
    -

    This key combination is invalid or not supported.

    +

    {t["keybind-invalidCombo"]}

    @@ -114,48 +115,44 @@ export const KeybindMaker = (props: { close: () => void }) => { size={ButtonSizes.SMALL} color={ButtonColors.RED} > - Recording + {t["keybind-recording"]} ) : ( )}
    -
    Action
    +
    {t["keybind-action"]}
    setAction(v as KeybindActions)} limitHeight options={[ - { label: "Mute", value: "mute" }, - { label: "Deafen", value: "deafen" }, - { label: "Leave call", value: "leaveCall" }, - { label: "Navigate forward", value: "navigateForward" }, - { label: "Navigate back", value: "navigateBack" }, - { label: "Run Javascript", value: "runJavascript" }, - { label: "Open Quick CSS", value: "openQuickCss" }, + { label: t["keybind-mute"], value: "mute" }, + { label: t["keybind-deafen"], value: "deafen" }, + { label: t["keybind-leaveCall"], value: "leaveCall" }, + { label: t["keybind-navigateForward"], value: "navigateForward" }, + { label: t["keybind-navigateBack"], value: "navigateBack" }, + { label: t["keybind-runJavascript"], value: "runJavascript" }, + { label: t["keybind-openQuickCss"], value: "openQuickCss" }, ]} /> - - Global + + {t["keybind-global"]} - Enabled + {t["keybind-enabled"]} -
    Javascript code
    +
    {t["keybind-jsCode"]}
    { @@ -36,8 +37,8 @@ export const ThemesCard = (props: { theme: ThemeManifest }) => { refreshThemes(); }, 1000); showToast({ - title: "Success!", - content: "Theme successfully updated!", + title: store.i18n["themes-success"], + content: store.i18n["themes-updated"], duration: 3000, }); } @@ -53,7 +54,7 @@ export const ThemesCard = (props: { theme: ThemeManifest }) => {
    {props.theme.name}
    -
    by
    +
    {store.i18n["themes-by"]}
    {props.theme.author}
    @@ -63,17 +64,17 @@ export const ThemesCard = (props: { theme: ThemeManifest }) => {
    {props.theme.description}
    - - - -
    ); diff --git a/src/shelter/settings/index.ts b/src/shelter/settings/index.ts index 8759562..facb008 100644 --- a/src/shelter/settings/index.ts +++ b/src/shelter/settings/index.ts @@ -27,11 +27,11 @@ function restartRequired(payload: { event: string; properties: { origin_pane: st if (payload.properties.origin_pane === "legcord-settings") { if (isRestartRequired) { openConfirmationModal({ - header: () => "Restart required", - body: () => "You need to restart to apply these changes.", + header: () => store.i18n["settings-restartRequired"], + body: () => store.i18n["settings-restartRequiredBody"], type: "danger", - confirmText: "Restart", - cancelText: "I'll do it later", + confirmText: store.i18n["settings-restart"], + cancelText: store.i18n["settings-restartLater"], }).then( () => window.legcord.restart(), () => console.log("restart skipped"), diff --git a/src/shelter/settings/pages/RegisteredGamesPage.tsx b/src/shelter/settings/pages/RegisteredGamesPage.tsx index 52c1b3a..cd21572 100644 --- a/src/shelter/settings/pages/RegisteredGamesPage.tsx +++ b/src/shelter/settings/pages/RegisteredGamesPage.tsx @@ -25,9 +25,10 @@ export function RegisteredGamesPage() { )); } + const t = shelter.plugin.store.i18n; return ( <> -
    Registered Games
    +
    {t["games-registeredGames"]}
    ({ label: p[1], value: p[1] })) ?? []), - { label: "Refresh list", value: "refresh" }, + { label: t["games-refreshList"], value: "refresh" }, ]} />
    {(detectable) =>
    {detectable.name}
    }
    diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index 10751ac..5d15674 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -49,7 +49,7 @@ export function SettingsPage() { { label: store.i18n["settings-theme-default"], value: "default" }, { label: store.i18n["settings-theme-native"], value: "native" }, { label: store.i18n["settings-theme-overlay"], value: "overlay" }, - { label: "Legacy", value: "legacy" }, + { label: store.i18n["settings-theme-legacy"], value: "legacy" }, ]} />
    - Power Management + {store.i18n["settings-category-powerManagement"]}
    - arRPC + {store.i18n["settings-category-arrpc"]}
    Themes
    {(theme: ThemeManifest) => } diff --git a/src/splash/main.ts b/src/splash/main.ts index ee49b58..c4d5433 100644 --- a/src/splash/main.ts +++ b/src/splash/main.ts @@ -2,6 +2,7 @@ import path from "node:path"; import { BrowserWindow, ipcMain } from "electron"; import isDev from "electron-is-dev"; import { getConfig } from "../common/config.js"; +import { getLang } from "../common/lang.js"; export let splashWindow: BrowserWindow; export async function createSplashWindow(): Promise { @@ -9,7 +10,7 @@ export async function createSplashWindow(): Promise { splashWindow = new BrowserWindow({ width: 300, height: 350, - title: "Legcord", + title: getLang("splash-title"), show: true, darkTheme: true, icon: getConfig("customIcon") ?? path.join(import.meta.dirname, "../", "/assets/desktop.png"), From 366c4d474c12aaf04d2bb6c9bf9e19a0ee747143 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 29 Jan 2026 17:56:25 +0100 Subject: [PATCH 804/896] feat: add detectable game card --- assets/lang/en-US.json | 5 ++ src/@types/legcordWindow.d.ts | 1 + src/common/detectables.ts | 5 ++ src/discord/ipc.ts | 5 +- src/discord/preload/bridge.ts | 1 + .../components/DetectableCard.module.css | 50 ++++++++++++++++++ .../settings/components/DetectableCard.tsx | 52 +++++++++++++++++++ src/shelter/settings/index.ts | 27 +++++----- .../settings/pages/RegisteredGames.module.css | 9 ++++ .../settings/pages/RegisteredGamesPage.tsx | 48 +++++++++++++---- src/shelter/settings/settings.ts | 4 ++ 11 files changed, 182 insertions(+), 25 deletions(-) create mode 100644 src/shelter/settings/components/DetectableCard.module.css create mode 100644 src/shelter/settings/components/DetectableCard.tsx diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index 9898199..d9efb3a 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.json @@ -272,6 +272,11 @@ "games-registeredGames": "Registered Games", "games-refreshList": "Refresh list", "games-add": "Add", + "games-remove": "Remove", + "games-removeConfirmHeader": "Remove game?", + "games-removeConfirmBody": "This game will be removed from rich presence. The client must be restarted for changes to take effect.", + "games-noExecutables": "No executables", + "games-empty": "No registered games. Add one using the dropdown above.", "screenshare-selectSource": "Please select a source", "screenshare-venmicDisabled": "Venmic disabled", "screenshare-share": "Share", diff --git a/src/@types/legcordWindow.d.ts b/src/@types/legcordWindow.d.ts index abed16a..6052631 100644 --- a/src/@types/legcordWindow.d.ts +++ b/src/@types/legcordWindow.d.ts @@ -81,6 +81,7 @@ export interface LegcordWindow { getProcessList: () => ProcessInfo[]; refreshProcessList: () => void; addDetectable: (e: Game) => void; + removeDetectable: (id: string) => void; getDetectables: () => GameList; }; } diff --git a/src/common/detectables.ts b/src/common/detectables.ts index 2614652..49f913a 100644 --- a/src/common/detectables.ts +++ b/src/common/detectables.ts @@ -19,6 +19,11 @@ export function addDetectable(object: Game): void { setDetectables(currentDetectables); } +export function removeDetectable(id: string): void { + const currentDetectables = getDetectables().filter((g) => g.id !== id); + setDetectables(currentDetectables); +} + export function getDetectables(): GameList { if (!fs.existsSync(getDetectablesPath())) { fs.writeFileSync(getDetectablesPath(), "[]", "utf-8"); diff --git a/src/discord/ipc.ts b/src/discord/ipc.ts index afbd200..1e6354c 100644 --- a/src/discord/ipc.ts +++ b/src/discord/ipc.ts @@ -8,7 +8,7 @@ import type { Keybind } from "../@types/keybind.js"; import type { Settings } from "../@types/settings.js"; import type { ThemeManifest } from "../@types/themeManifest.js"; import { getConfig, getConfigLocation, setConfig, setConfigBulk } from "../common/config.js"; -import { addDetectable, getDetectables } from "../common/detectables.js"; +import { addDetectable, getDetectables, removeDetectable } from "../common/detectables.js"; import { getLang, getLangName, getRawLang, setLang } from "../common/lang.js"; import { installTheme, setThemeEnabled, uninstallTheme } from "../common/themes.js"; import { getDisplayVersion, getVersion } from "../common/version.js"; @@ -314,4 +314,7 @@ export function registerIpc(passedWindow: BrowserWindow): void { ipcMain.on("addDetectable", (_event, game: Game) => { addDetectable(game); }); + ipcMain.on("removeDetectable", (_event, id: string) => { + removeDetectable(id); + }); } diff --git a/src/discord/preload/bridge.ts b/src/discord/preload/bridge.ts index 3363edb..ca7fb8e 100644 --- a/src/discord/preload/bridge.ts +++ b/src/discord/preload/bridge.ts @@ -99,6 +99,7 @@ contextBridge.exposeInMainWorld("legcord", { refreshProcessList: () => ipcRenderer.send("refreshProcessList"), getProcessList: () => ipcRenderer.sendSync("getProcessList"), addDetectable: (detectable: Game) => ipcRenderer.send("addDetectable", detectable), + removeDetectable: (id: string) => ipcRenderer.send("removeDetectable", id), getDetectables: () => ipcRenderer.sendSync("getDetectables") as Game[], }, } as unknown as LegcordWindow); diff --git a/src/shelter/settings/components/DetectableCard.module.css b/src/shelter/settings/components/DetectableCard.module.css new file mode 100644 index 0000000..c12df94 --- /dev/null +++ b/src/shelter/settings/components/DetectableCard.module.css @@ -0,0 +1,50 @@ +.card { + border: 1px solid var(--background-accent); + border-radius: 4px; + padding: 0.5rem; + margin-top: 0.5rem; + flex-wrap: wrap; + display: flex; + align-items: flex-start; + gap: 0.5rem; +} + +.info { + align-self: flex-start; + flex: 1; + min-width: 0; +} + +.eyebrow { + margin-bottom: 0px !important; + color: var(--text-strong); +} + +.btn { + border: none; + background: none; + color: var(--interactive-text-active); + transition: opacity 250ms; +} + +.btn:hover { + color: var(--interactive-text-hover); +} + +.icon { + height: 20px; + margin-top: 2px; + filter: brightness(0) invert(1); +} + +.mainInfo { + flex-wrap: wrap; + align-items: baseline; + gap: 5px; + margin-bottom: -0.5em; + display: flex; +} + +.title { + margin-right: 0.25rem; +} diff --git a/src/shelter/settings/components/DetectableCard.tsx b/src/shelter/settings/components/DetectableCard.tsx new file mode 100644 index 0000000..18684c7 --- /dev/null +++ b/src/shelter/settings/components/DetectableCard.tsx @@ -0,0 +1,52 @@ +import type { Game } from "arrpc"; +import { setRestartRequired } from "../settings.js"; +import classes from "./DetectableCard.module.css"; + +const { + ui: { Header, HeaderTags, openConfirmationModal }, + plugin: { store }, +} = shelter; + +export const DetectableCard = (props: { + detectable: Game; + onRemove: () => void; +}) => { + function removeDetectable() { + openConfirmationModal({ + header: () => store.i18n["games-removeConfirmHeader"], + body: () => store.i18n["games-removeConfirmBody"], + type: "danger", + confirmText: store.i18n["games-remove"], + cancelText: store.i18n["settings-restartLater"], + }).then( + () => { + window.legcord.rpc.removeDetectable(props.detectable.id); + setRestartRequired(); + props.onRemove(); + }, + () => {}, + ); + } + + const executablesLabel = + props.detectable.executables.map((e) => e.name).join(", ") || store.i18n["games-noExecutables"]; + + return ( +
    +
    +
    +
    + {props.detectable.name} +
    +
    + {props.detectable.id} +
    +
    +
    {executablesLabel}
    +
    + +
    + ); +}; diff --git a/src/shelter/settings/index.ts b/src/shelter/settings/index.ts index facb008..7d673df 100644 --- a/src/shelter/settings/index.ts +++ b/src/shelter/settings/index.ts @@ -14,29 +14,28 @@ const { } = shelter; const settingsPages = [ - registerSection("section", "legcord-games", "Registered Games", RegisteredGamesPage), registerSection("divider"), registerSection("header", "Legcord"), registerSection("section", "legcord-settings", "Settings", SettingsPage), registerSection("section", "legcord-themes", "Themes", ThemesPage), registerSection("section", "legcord-keybinds", "Keybinds", KeybindsPage), + registerSection("section", "legcord-games", "Registered Games", RegisteredGamesPage), ]; function restartRequired(payload: { event: string; properties: { origin_pane: string } }) { if (payload.event === "settings_pane_viewed" && typeof payload.properties.origin_pane !== "undefined") { - if (payload.properties.origin_pane === "legcord-settings") { - if (isRestartRequired) { - openConfirmationModal({ - header: () => store.i18n["settings-restartRequired"], - body: () => store.i18n["settings-restartRequiredBody"], - type: "danger", - confirmText: store.i18n["settings-restart"], - cancelText: store.i18n["settings-restartLater"], - }).then( - () => window.legcord.restart(), - () => console.log("restart skipped"), - ); - } + const pane = payload.properties.origin_pane; + if ((pane === "legcord-settings" || pane === "legcord-games") && isRestartRequired) { + openConfirmationModal({ + header: () => store.i18n["settings-restartRequired"], + body: () => store.i18n["settings-restartRequiredBody"], + type: "danger", + confirmText: store.i18n["settings-restart"], + cancelText: store.i18n["settings-restartLater"], + }).then( + () => window.legcord.restart(), + () => console.log("restart skipped"), + ); } } } diff --git a/src/shelter/settings/pages/RegisteredGames.module.css b/src/shelter/settings/pages/RegisteredGames.module.css index 224bed9..82f2ded 100644 --- a/src/shelter/settings/pages/RegisteredGames.module.css +++ b/src/shelter/settings/pages/RegisteredGames.module.css @@ -1,6 +1,15 @@ .addBox { display: flex; justify-content: space-between; + align-items: center; + gap: 0.5rem; padding: 3px; margin-top: 1rem; + border: 1px solid var(--background-modifier-accent); + border-radius: 6px; +} + +.empty { + margin-top: 1rem; + color: var(--text-muted); } diff --git a/src/shelter/settings/pages/RegisteredGamesPage.tsx b/src/shelter/settings/pages/RegisteredGamesPage.tsx index cd21572..6bf5aee 100644 --- a/src/shelter/settings/pages/RegisteredGamesPage.tsx +++ b/src/shelter/settings/pages/RegisteredGamesPage.tsx @@ -1,31 +1,46 @@ import type { GameList, ProcessInfo } from "arrpc"; -import { For, createSignal } from "solid-js"; +import { For, Show, createSignal, onMount } from "solid-js"; import { sleep } from "../../../common/sleep.js"; import { AddDetectableModal } from "../components/AddDetectableModal.jsx"; +import { DetectableCard } from "../components/DetectableCard.jsx"; import { Dropdown } from "../components/Dropdown.jsx"; import classes from "./RegisteredGames.module.css"; + const { ui: { Header, HeaderTags, Divider, Button, ButtonSizes, openModal }, } = shelter; export function RegisteredGamesPage() { const [processList, setProcessList] = createSignal(); - const [detectables, setDetectables] = createSignal(); + const [detectables, setDetectables] = createSignal([]); const [selectedDetectable, setSelectedDetectable] = createSignal("refresh"); - function getDetectables() { + + function refreshDetectables() { window.legcord.rpc.refreshProcessList(); setDetectables(window.legcord.rpc.getDetectables()); sleep(500).then(() => { setProcessList(window.legcord.rpc.getProcessList()); }); } - getDetectables(); + + onMount(() => { + refreshDetectables(); + }); + function addNewGame() { openModal(({ close }: { close: () => void }) => ( - + { + close(); + refreshDetectables(); + }} + executable={selectedDetectable()} + /> )); } + const t = shelter.plugin.store.i18n; + return ( <>
    {t["games-registeredGames"]}
    @@ -35,11 +50,9 @@ export function RegisteredGamesPage() { value={selectedDetectable()} onChange={(v) => { if (v === "refresh") { - getDetectables(); + refreshDetectables(); setSelectedDetectable(""); - console.log("Detectables refreshed"); } else { - console.log("Selected detectable:", v); setSelectedDetectable(v); } }} @@ -48,11 +61,26 @@ export function RegisteredGamesPage() { { label: t["games-refreshList"], value: "refresh" }, ]} /> -
    - {(detectable) =>
    {detectable.name}
    }
    + 0} + fallback={ +
    + {t["games-empty"]} +
    + } + > + + {(detectable) => } + +
    ); } diff --git a/src/shelter/settings/settings.ts b/src/shelter/settings/settings.ts index 414e90f..e2307c5 100644 --- a/src/shelter/settings/settings.ts +++ b/src/shelter/settings/settings.ts @@ -8,6 +8,10 @@ const settings = store.settings as Settings; export let isRestartRequired = false; +export function setRestartRequired() { + isRestartRequired = true; +} + export function refreshSettings() { store.settings = window.legcord.settings.getConfig(); } From 450d167d94845d95b2dcb9f645bfa42850b2b726 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 29 Jan 2026 18:01:13 +0100 Subject: [PATCH 805/896] chore: bump dependencies --- package.json | 10 +- pnpm-lock.yaml | 433 +++++++++++++++++++++++++------------------------ 2 files changed, 229 insertions(+), 214 deletions(-) diff --git a/package.json b/package.json index 93be189..32e3b58 100644 --- a/package.json +++ b/package.json @@ -40,13 +40,13 @@ "@rollup/plugin-esm-shim": "^0.1.7", "@types/node": "^22.10.1", "@types/ws": "^8.5.13", - "@uwu/lune": "^1.5.1", - "@uwu/shelter-defs": "^1.4.1", + "@uwu/lune": "^1.6.2", + "@uwu/shelter-defs": "^1.5.1", "babel-preset-solid": "^1.9.3", - "electron": "39.2.7", - "electron-builder": "^26.3.5", + "electron": "40.1.0", + "electron-builder": "^26.4.0", "lucide-solid": "^0.475.0", - "rolldown": "1.0.0-beta.31", + "rolldown": "1.0.0-rc.2", "rollup-plugin-copy": "^3.5.0", "solid-js": "^1.9.3", "solid-motionone": "^1.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d825686..aa14965 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,10 +23,6 @@ importers: ws: specifier: ^8.18.0 version: 8.18.0 - optionalDependencies: - '@vencord/venmic': - specifier: ^6.1.0 - version: 6.1.0 devDependencies: '@babel/preset-flow': specifier: ^7.25.9 @@ -53,26 +49,26 @@ importers: specifier: ^8.5.13 version: 8.5.13 '@uwu/lune': + specifier: ^1.6.2 + version: 1.6.2 + '@uwu/shelter-defs': specifier: ^1.5.1 version: 1.5.1 - '@uwu/shelter-defs': - specifier: ^1.4.1 - version: 1.4.1 babel-preset-solid: specifier: ^1.9.3 version: 1.9.3(@babel/core@7.26.7) electron: - specifier: 39.2.7 - version: 39.2.7 + specifier: 40.1.0 + version: 40.1.0 electron-builder: - specifier: ^26.3.5 - version: 26.3.5(electron-builder-squirrel-windows@25.1.8) + specifier: ^26.4.0 + version: 26.4.0(electron-builder-squirrel-windows@25.1.8) lucide-solid: specifier: ^0.475.0 version: 0.475.0(solid-js@1.9.3) rolldown: - specifier: 1.0.0-beta.31 - version: 1.0.0-beta.31 + specifier: 1.0.0-rc.2 + version: 1.0.0-rc.2 rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 @@ -91,6 +87,10 @@ importers: xml-formatter: specifier: ^3.6.6 version: 3.6.6 + optionalDependencies: + '@vencord/venmic': + specifier: ^6.1.0 + version: 6.1.0 packages: @@ -159,12 +159,6 @@ packages: resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.27.3': resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} engines: {node: '>=6.9.0'} @@ -411,24 +405,24 @@ packages: resolution: {integrity: sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==} engines: {node: '>=16.4'} - '@emnapi/core@1.3.1': - resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} - '@emnapi/core@1.4.5': resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} - '@emnapi/runtime@1.3.1': - resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} '@emnapi/runtime@1.4.5': resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} - '@emnapi/wasi-threads@1.0.1': - resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@emnapi/wasi-threads@1.0.4': resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@esbuild/aix-ppc64@0.23.1': resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} @@ -777,8 +771,8 @@ packages: '@napi-rs/wasm-runtime@0.2.6': resolution: {integrity: sha512-z8YVS3XszxFTO73iwvFDNpQIzdMmSDTP/mB3E/ucR37V3Sx57hSExcXyMoNwaucWxnsWf4xfbZv0iZ30jr0M4Q==} - '@napi-rs/wasm-runtime@1.0.1': - resolution: {integrity: sha512-KVlQ/jgywZpixGCKMNwxStmmbYEMyokZpCf2YuIChhfJA2uqfAKNEM8INz7zzTo55iEXfBhIIs3VqYyqzDLj8g==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -809,12 +803,8 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This functionality has been moved to @npmcli/fs - '@oxc-project/runtime@0.80.0': - resolution: {integrity: sha512-3rzy1bJAZ4s7zV9TKT60x119RwJDCDqEtCwK/Zc2qlm7wGhiIUxLLYUhE/mN91yB0u1kxm5sh4NjU12sPqQTpg==} - engines: {node: '>=6.9.0'} - - '@oxc-project/types@0.80.0': - resolution: {integrity: sha512-xxHQm8wfCv2e8EmtaDwpMeAHOWqgQDAYg+BJouLXSQt5oTKu9TIXrgNMGSrM2fLvKmECsRd9uUFAAD+hPyootA==} + '@oxc-project/types@0.111.0': + resolution: {integrity: sha512-bh54LJMafgRGl2cPQ/QM+tI5rWaShm/wK9KywEj/w36MhiPKXYM67H2y3q+9pr4YO7ufwg2AKdBAZkhHBD8ClA==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -902,8 +892,9 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@rolldown/binding-android-arm64@1.0.0-beta.31': - resolution: {integrity: sha512-0mFtKwOG7smn0HkvQ6h8j0m/ohkR7Fp5eMTJ2Pns/HSbePHuDpxMaQ4TjZ6arlVXxpeWZlAHeT5BeNsOA3iWTg==} + '@rolldown/binding-android-arm64@1.0.0-rc.2': + resolution: {integrity: sha512-AGV80viZ4Hil4C16GFH+PSwq10jclV9oyRFhD+5HdowPOCJ+G+99N5AClQvMkUMIahTY8cX0SQpKEEWcCg6fSA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -912,8 +903,9 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-beta.31': - resolution: {integrity: sha512-BHfHJ8Nb5G7ZKJl6pimJacupONT4F7w6gmQHw41rouAnJF51ORDwGefWeb6OMLzGmJwzxlIVPERfnJf1EsMM7A==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.2': + resolution: {integrity: sha512-PYR+PQu1mMmQiiKHN2JiOctvH32Xc/Mf+Su2RSmWtC9BbIqlqsVWjbulnShk0imjRim0IsbkMMCN5vYQwiuqaA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -922,8 +914,9 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.31': - resolution: {integrity: sha512-4MiuRtExC08jHbSU/diIL+IuQP+3Ck1FbWAplK+ysQJ7fxT3DMxy5FmnIGfmhaqow8oTjb2GEwZJKgTRjZL1Vw==} + '@rolldown/binding-darwin-x64@1.0.0-rc.2': + resolution: {integrity: sha512-X2G36Z6oh5ynoYpE2JAyG+uQ4kO/3N7XydM/I98FNk8VVgDKjajFF+v7TXJ2FMq6xa7Xm0UIUKHW2MRQroqoUA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -932,8 +925,9 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-beta.31': - resolution: {integrity: sha512-nffC1u7ccm12qlAea8ExY3AvqlaHy/o/3L4p5Es8JFJ3zJSs6e3DyuxGZZVdl9EVwsLxPPTvioIl4tEm2afwyw==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.2': + resolution: {integrity: sha512-XpiFTsl9qjiDfrmJF6CE3dgj1nmSbxUIT+p2HIbXV6WOj/32btO8FKkWSsOphUwVinEt3R8HVkVrcLtFNruMMQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -942,8 +936,9 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.31': - resolution: {integrity: sha512-LHmAaB3rB1GOJuHscKcL2Ts/LKLcb3YWTh2uQ/876rg/J9WE9kQ0kZ+3lRSYbth/YL8ln54j4JZmHpqQY3xptQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.2': + resolution: {integrity: sha512-zjYZ99e47Wlygs4hW+sQ+kshlO8ake9OoY2ecnJ9cwpDGiiIB9rQ3LgP3kt8j6IeVyMSksu//VEhc8Mrd1lRIw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -952,8 +947,9 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.31': - resolution: {integrity: sha512-oTDZVfqIAjLB2I1yTiLyyhfPPO6dky33sTblxTCpe+ZT55WizN3KDoBKJ4yXG8shI6I4bRShVu29Xg0yAjyQYw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.2': + resolution: {integrity: sha512-Piso04EZ9IHV1aZSsLQVMOPTiCq4Ps2UPL3pchjNXHGJGFiB9U42s22LubPaEBFS+i6tCawS5EarIwex1zC4BA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -962,23 +958,20 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.31': - resolution: {integrity: sha512-duJ3IkEBj9Xe9NYW1n8Y3483VXHGi8zQ0ZsLbK8464EJUXLF7CXM8Ry+jkkUw+ZvA+Zu1E/+C6p2Y6T9el0C9g==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.2': + resolution: {integrity: sha512-OwJCeMZlmjKsN9pfJfTmqYpe3JC+L6RO87+hu9ajRLr1Lh6cM2FRQ8e48DLRyRDww8Ti695XQvqEANEMmsuzLw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.31': - resolution: {integrity: sha512-qdbmU5QSZ0uoLZBYMxiHsMQmizqtzFGTVPU5oyU1n0jU0Mo+mkSzqZuL8VBnjHOHzhVxZsoAGH9JjiRzCnoGVA==} - cpu: [arm64] - os: [openharmony] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.1': resolution: {integrity: sha512-a8QP35x/3mggWqCpFtaF3/PbWl5P9QKpP/muk3iMPgzrXto8zPsEl3imsP3EBh4KwanBVHIf8pEkBQ+/7iMTgQ==} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.31': - resolution: {integrity: sha512-H7+r34TSV8udB2gAsebFM/YuEeNCkPGEAGJ1JE7SgI9XML6FflqcdKfrRSneQFsPaom/gCEc1g0WW5MZ0O3blw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.2': + resolution: {integrity: sha512-uQqBmA8dTWbKvfqbeSsXNUssRGfdgQCc0hkGfhQN7Pf85wG2h0Fd/z2d+ykyT4YbcsjQdgEGxBNsg3v4ekOuEA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -987,18 +980,25 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.31': - resolution: {integrity: sha512-zRm2YmzFVqbsmUsyyZnHfJrOlQUcWS/FJ5ZWL8Q1kZh5PnLBrTVZNpakIWwAxpN5gNEi9MmFd5YHocVJp8ps1Q==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.2': + resolution: {integrity: sha512-ItZabVsICCYWHbP+jcAgNzjPAYg5GIVQp/NpqT6iOgWctaMYtobClc5m0kNtxwqfNrLXoyt998xUey4AvcxnGQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.2': + resolution: {integrity: sha512-U4UYANwafcMXSUC0VqdrqTAgCo2v8T7SiuTYwVFXgia0KOl8jiv3okwCFqeZNuw/G6EWDiqhT8kK1DLgyLsxow==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-wasm32-wasi@1.0.0-beta.1': resolution: {integrity: sha512-RB+gbhwZtTbKbvHzUcaRFva2ONCUTuxDEb/b3/rd3O82OTPUZzOY24mqreiXH1XG09p6WFXSE8dzUrN120Q29w==} engines: {node: '>=14.21.3'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.31': - resolution: {integrity: sha512-fM1eUIuHLsNJXRlWOuIIex1oBJ89I0skFWo5r/D3KSJ5gD9MBd3g4Hp+v1JGohvyFE+7ylnwRxSUyMEeYpA69A==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.2': + resolution: {integrity: sha512-ZIWCjQsMon4tqRoao0Vzowjwx0cmFT3kublh2nNlgeasIJMWlIGHtr0d4fPypm57Rqx4o1h4L8SweoK2q6sMGA==} engines: {node: '>=14.0.0'} cpu: [wasm32] @@ -1007,8 +1007,9 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.31': - resolution: {integrity: sha512-4nftR9V2KHH3zjBwf6leuZZJQZ7v0d70ogjHIqB3SDsbDLvVEZiGSsSn2X6blSZRZeJSFzK0pp4kZ67zdZXwSw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.2': + resolution: {integrity: sha512-NIo7vwRUPEzZ4MuZGr5YbDdjJ84xdiG+YYf8ZBfTgvIsk9wM0sZamJPEXvaLkzVIHpOw5uqEHXS85Gqqb7aaqQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -1017,23 +1018,19 @@ packages: cpu: [ia32] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.31': - resolution: {integrity: sha512-0TQcKu9xZVHYALit+WJsSuADGlTFfOXhnZoIHWWQhTk3OgbwwbYcSoZUXjRdFmR6Wswn4csHtJGN1oYKeQ6/2g==} - cpu: [ia32] - os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.1': resolution: {integrity: sha512-k8Ld05OlxkzR/+Ob8+IESaZ4uFcgLwbbwtUZLoryn3S6lCogkclcN/4m1wo/PyWtUAWF5mdz83SrkRL8dS4AqA==} cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.31': - resolution: {integrity: sha512-3zMICWwpZh1jrkkKDYIUCx/2wY3PXLICAS0AnbeLlhzfWPhCcpNK9eKhiTlLAZyTp+3kyipoi/ZSVIh+WDnBpQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.2': + resolution: {integrity: sha512-bLKzyLFbvngeNPZocuLo3LILrKwCrkyMxmRXs6fZYDrvh7cyZRw9v56maDL9ipPas0OOmQK1kAKYwvTs30G21Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.31': - resolution: {integrity: sha512-IaDZ9NhjOIOkYtm+hH0GX33h3iVZ2OeSUnFF0+7Z4+1GuKs4Kj5wK3+I2zNV9IPLfqV4XlwWif8SXrZNutxciQ==} + '@rolldown/pluginutils@1.0.0-rc.2': + resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} '@rollup/plugin-babel@6.0.4': resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} @@ -1197,8 +1194,8 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@tybys/wasm-util@0.10.0': - resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} @@ -1236,6 +1233,9 @@ packages: '@types/node@22.10.1': resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} + '@types/node@24.10.9': + resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} + '@types/plist@3.0.5': resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} @@ -1251,12 +1251,12 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@uwu/lune@1.5.1': - resolution: {integrity: sha512-q+xfFZagj+TKaC4l6mHiHxR83/CfzGeqo9sIsh99M5B71c0qpP4dR8SOm5/QfH0pdk5Fpfjf/7LTrYnUy+uoTg==} + '@uwu/lune@1.6.2': + resolution: {integrity: sha512-0/e1zFGm7pBISyuNvhKMqdg4gEQOpBtf8wdquJaUDqA0enrV55iwMWrrCdJHlfx77K1D8hjnAUGvCXxwFebg5Q==} hasBin: true - '@uwu/shelter-defs@1.4.1': - resolution: {integrity: sha512-KDQQf7S8yT1/ZxBZ8Ch5zHZ1ps9QcVtRWfnzK0pqrQb++5Tb2hqD0RiL5IrdS765/ZXglq0cgKWB6xesHVCZKg==} + '@uwu/shelter-defs@1.5.1': + resolution: {integrity: sha512-bO3M5SgqEpuNZkjd/LZFtTNNATpmVle5uznVp0QNgi3o1w2ej/ieYmwFK6nBZqnZHd8/4aJN1Njl/JbTnZcY5A==} '@vencord/venmic@6.1.0': resolution: {integrity: sha512-YiCtzml/W8tYbGhu3jm5jfbbEnl2slKKARNK0jO+8qV979k9eFnfIRTxvhMN/SWq1h8ZNJdXVwvXpffQwq0RuA==} @@ -1314,10 +1314,6 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - ansis@4.1.0: - resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} - engines: {node: '>=14'} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1335,12 +1331,12 @@ packages: dmg-builder: 25.1.8 electron-builder-squirrel-windows: 25.1.8 - app-builder-lib@26.3.5: - resolution: {integrity: sha512-AluSgBV7oWEE6wqC80S4drTTBWB8opxBgRGa8kSClRhULttN7pKiRz5K/74rCUi7XkstggtdQALsI6zCqenNzA==} + app-builder-lib@26.4.0: + resolution: {integrity: sha512-Uas6hNe99KzP3xPWxh5LGlH8kWIVjZixzmMJHNB9+6hPyDpjc7NQMkVgi16rQDdpCFy22ZU5sp8ow7tvjeMgYQ==} engines: {node: '>=14.0.0'} peerDependencies: - dmg-builder: 26.3.5 - electron-builder-squirrel-windows: 26.3.5 + dmg-builder: 26.4.0 + electron-builder-squirrel-windows: 26.4.0 aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1520,10 +1516,6 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - ci-info@4.3.0: - resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} - engines: {node: '>=8'} - ci-info@4.3.1: resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} @@ -1631,6 +1623,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -1698,8 +1693,8 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dmg-builder@26.3.5: - resolution: {integrity: sha512-3qXWrP5zWswQi3EqFQyQWMkAHpwMdNDoVaJfqbfLPqX1umq7m+Fav30mQd6Sk7nXH+YvrrjjoeIfif/PH/l1mQ==} + dmg-builder@26.4.0: + resolution: {integrity: sha512-ce4Ogns4VMeisIuCSK0C62umG0lFy012jd8LMZ6w/veHUeX4fqfDrGe+HTWALAEwK6JwKP+dhPvizhArSOsFbg==} dmg-license@1.0.11: resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} @@ -1726,8 +1721,8 @@ packages: electron-builder-squirrel-windows@25.1.8: resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==} - electron-builder@26.3.5: - resolution: {integrity: sha512-I0HNjrWEGnCKDsQ9GkFa92E1hW/FmKe88bh75jucBoHRIcZUvTwbqJFGn9kKG6cFq9eOWCXOEVs+RvXT/Ma49Q==} + electron-builder@26.4.0: + resolution: {integrity: sha512-FCUqvdq2AULL+Db2SUGgjOYTbrgkPxZtCjqIZGnjH9p29pTWyesQqBIfvQBKa6ewqde87aWl49n/WyI/NyUBog==} engines: {node: '>=14.0.0'} hasBin: true @@ -1755,8 +1750,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@39.2.7: - resolution: {integrity: sha512-KU0uFS6LSTh4aOIC3miolcbizOFP7N1M46VTYVfqIgFiuA2ilfNaOHLDS9tCMvwwHRowAsvqBrh9NgMXcTOHCQ==} + electron@40.1.0: + resolution: {integrity: sha512-2j/kvw7uF0H1PnzYBzw2k2Q6q16J8ToKrtQzZfsAoXbbMY0l5gQi2DLOauIZLzwp4O01n8Wt/74JhSRwG0yj9A==} engines: {node: '>= 12.20.55'} hasBin: true @@ -2005,6 +2000,11 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -2492,6 +2492,9 @@ packages: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + node-abi@3.71.0: resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} engines: {node: '>=10'} @@ -2765,8 +2768,9 @@ packages: '@babel/runtime': optional: true - rolldown@1.0.0-beta.31: - resolution: {integrity: sha512-M2Q+RfG0FMJeSW3RSFTbvtjGVTcQpTQvN247D0EMSsPkpZFoinopR9oAnQiwgogQyzDuvKNnbyCbQQlmNAzSoQ==} + rolldown@1.0.0-rc.2: + resolution: {integrity: sha512-1g/8Us9J8sgJGn3hZfBecX1z4U3y5KO7V/aV2U1M/9UUzLNqHA8RfFQ/NPT7HLxOIldyIgrcjaYTRvA81KhJIg==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true rollup-plugin-copy@3.5.0: @@ -2817,11 +2821,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -2922,8 +2921,8 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - spitroast@1.4.4: - resolution: {integrity: sha512-S69rzIFjbGoEW5YCLpm1kEdqMEYqC09lmE1ZMY4gyUXfke0wi9qZjKYa0DDSv5eIy/D+/UGJT8yxgJddU3oqlA==} + spitroast@2.1.4: + resolution: {integrity: sha512-IA987I3wS8RbrKrgag+NsxLUAttrqONF7UGOL+uQFmLLXlMhZl42LomTAltBQaev0jUXIaRiqShZ3hnJYT7OCQ==} sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} @@ -2989,10 +2988,12 @@ packages: tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me tar@7.5.2: resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me temp-file@3.4.0: resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} @@ -3041,9 +3042,17 @@ packages: engines: {node: '>=14.17'} hasBin: true + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + unique-filename@2.0.1: resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -3113,6 +3122,9 @@ packages: wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -3190,8 +3202,8 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 '@babel/code-frame@7.26.2': dependencies: @@ -3210,15 +3222,15 @@ snapshots: '@babel/core@7.26.7': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.5 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.7) + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.26.7) '@babel/helpers': 7.26.7 - '@babel/parser': 7.26.7 - '@babel/template': 7.25.9 - '@babel/traverse': 7.26.7 - '@babel/types': 7.26.7 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 convert-source-map: 2.0.0 debug: 4.4.0 gensync: 1.0.0-beta.2 @@ -3250,7 +3262,7 @@ snapshots: '@babel/helper-compilation-targets@7.26.5': dependencies: '@babel/compat-data': 7.26.5 - '@babel/helper-validator-option': 7.25.9 + '@babel/helper-validator-option': 7.27.1 browserslist: 4.24.4 lru-cache: 5.1.1 semver: 6.3.1 @@ -3295,15 +3307,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.7)': - dependencies: - '@babel/core': 7.26.7 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.7 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.26.7)': dependencies: '@babel/core': 7.26.7 @@ -3351,8 +3354,8 @@ snapshots: '@babel/helpers@7.26.7': dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.7 + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 '@babel/parser@7.26.7': dependencies: @@ -3630,20 +3633,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@emnapi/core@1.3.1': - dependencies: - '@emnapi/wasi-threads': 1.0.1 - tslib: 2.8.1 - optional: true - '@emnapi/core@1.4.5': dependencies: '@emnapi/wasi-threads': 1.0.4 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.3.1': + '@emnapi/core@1.8.1': dependencies: + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true @@ -3652,7 +3650,7 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.1': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true @@ -3662,6 +3660,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.23.1': optional: true @@ -3830,7 +3833,7 @@ snapshots: dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/resolve-uri@3.1.2': {} @@ -3898,16 +3901,16 @@ snapshots: '@napi-rs/wasm-runtime@0.2.6': dependencies: - '@emnapi/core': 1.3.1 - '@emnapi/runtime': 1.3.1 + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 '@tybys/wasm-util': 0.9.0 optional: true - '@napi-rs/wasm-runtime@1.0.1': + '@napi-rs/wasm-runtime@1.1.1': dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 - '@tybys/wasm-util': 0.10.0 + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 optional: true '@nodelib/fs.scandir@2.1.5': @@ -3946,9 +3949,7 @@ snapshots: mkdirp: 1.0.4 rimraf: 3.0.2 - '@oxc-project/runtime@0.80.0': {} - - '@oxc-project/types@0.80.0': {} + '@oxc-project/types@0.111.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -4014,58 +4015,58 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rolldown/binding-android-arm64@1.0.0-beta.31': + '@rolldown/binding-android-arm64@1.0.0-rc.2': optional: true '@rolldown/binding-darwin-arm64@1.0.0-beta.1': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.31': + '@rolldown/binding-darwin-arm64@1.0.0-rc.2': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.1': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.31': + '@rolldown/binding-darwin-x64@1.0.0-rc.2': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.1': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.31': + '@rolldown/binding-freebsd-x64@1.0.0-rc.2': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.31': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.2': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.31': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.2': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.31': - optional: true - - '@rolldown/binding-linux-arm64-ohos@1.0.0-beta.31': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.2': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.31': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.2': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.1': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.31': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.2': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.2': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-beta.1': @@ -4073,30 +4074,27 @@ snapshots: '@napi-rs/wasm-runtime': 0.2.6 optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.31': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.2': dependencies: - '@napi-rs/wasm-runtime': 1.0.1 + '@napi-rs/wasm-runtime': 1.1.1 optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.1': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.31': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.2': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.1': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.31': - optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.1': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.31': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.2': optional: true - '@rolldown/pluginutils@1.0.0-beta.31': {} + '@rolldown/pluginutils@1.0.0-rc.2': {} '@rollup/plugin-babel@6.0.4(@babel/core@7.26.7)(rollup@4.27.4)': dependencies: @@ -4208,7 +4206,7 @@ snapshots: '@tootallnate/once@2.0.0': {} - '@tybys/wasm-util@0.10.0': + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true @@ -4258,6 +4256,10 @@ snapshots: dependencies: undici-types: 6.20.0 + '@types/node@24.10.9': + dependencies: + undici-types: 7.16.0 + '@types/plist@3.0.5': dependencies: '@types/node': 22.10.1 @@ -4280,12 +4282,14 @@ snapshots: '@types/node': 22.10.1 optional: true - '@uwu/lune@1.5.1': + '@uwu/lune@1.6.2': dependencies: '@babel/core': 7.26.7 '@babel/preset-typescript': 7.27.1(@babel/core@7.26.7) chokidar: 3.6.0 + date-fns: 4.1.0 esbuild: 0.17.19 + handlebars: 4.7.8 lightningcss: 1.29.1 resolve: 1.22.10 rolldown: 1.0.0-beta.1 @@ -4297,11 +4301,11 @@ snapshots: - supports-color - utf-8-validate - '@uwu/shelter-defs@1.4.1': + '@uwu/shelter-defs@1.5.1': dependencies: idb: 7.1.1 solid-js: 1.6.16 - spitroast: 1.4.4 + spitroast: 2.1.4 '@vencord/venmic@6.1.0': dependencies: @@ -4356,8 +4360,6 @@ snapshots: ansi-styles@6.2.1: {} - ansis@4.1.0: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -4367,7 +4369,7 @@ snapshots: app-builder-bin@5.0.0-alpha.12: {} - app-builder-lib@25.1.8(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@25.1.8(dmg-builder@26.4.0)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.5.0 @@ -4383,11 +4385,11 @@ snapshots: chromium-pickle-js: 0.2.0 config-file-ts: 0.2.8-rc1 debug: 4.4.0 - dmg-builder: 26.3.5(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.4.0(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.3.5) + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.4.0) electron-publish: 25.1.7 form-data: 4.0.1 fs-extra: 10.1.0 @@ -4407,7 +4409,7 @@ snapshots: - bluebird - supports-color - app-builder-lib@26.3.5(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@26.4.0(dmg-builder@26.4.0)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/asar': 3.4.1 @@ -4424,11 +4426,11 @@ snapshots: chromium-pickle-js: 0.2.0 ci-info: 4.3.1 debug: 4.4.0 - dmg-builder: 26.3.5(electron-builder-squirrel-windows@25.1.8) + dmg-builder: 26.4.0(electron-builder-squirrel-windows@25.1.8) dotenv: 16.4.5 dotenv-expand: 11.0.7 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.3.5) + electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.4.0) electron-publish: 26.3.4 fs-extra: 10.1.0 hosted-git-info: 4.1.0 @@ -4735,8 +4737,6 @@ snapshots: ci-info@3.9.0: {} - ci-info@4.3.0: {} - ci-info@4.3.1: {} clean-stack@2.2.0: {} @@ -4850,6 +4850,8 @@ snapshots: csstype@3.1.3: {} + date-fns@4.1.0: {} + debug@4.3.7: dependencies: ms: 2.1.3 @@ -4906,9 +4908,9 @@ snapshots: dependencies: path-type: 4.0.0 - dmg-builder@26.3.5(electron-builder-squirrel-windows@25.1.8): + dmg-builder@26.4.0(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.3.5(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 26.4.0(dmg-builder@26.4.0)(electron-builder-squirrel-windows@25.1.8) builder-util: 26.3.4 fs-extra: 10.1.0 iconv-lite: 0.6.3 @@ -4943,9 +4945,9 @@ snapshots: dependencies: jake: 10.9.2 - electron-builder-squirrel-windows@25.1.8(dmg-builder@26.3.5): + electron-builder-squirrel-windows@25.1.8(dmg-builder@26.4.0): dependencies: - app-builder-lib: 25.1.8(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 25.1.8(dmg-builder@26.4.0)(electron-builder-squirrel-windows@25.1.8) archiver: 5.3.2 builder-util: 25.1.7 fs-extra: 10.1.0 @@ -4954,14 +4956,14 @@ snapshots: - dmg-builder - supports-color - electron-builder@26.3.5(electron-builder-squirrel-windows@25.1.8): + electron-builder@26.4.0(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 26.3.5(dmg-builder@26.3.5)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 26.4.0(dmg-builder@26.4.0)(electron-builder-squirrel-windows@25.1.8) builder-util: 26.3.4 builder-util-runtime: 9.5.1 chalk: 4.1.2 - ci-info: 4.3.0 - dmg-builder: 26.3.5(electron-builder-squirrel-windows@25.1.8) + ci-info: 4.3.1 + dmg-builder: 26.4.0(electron-builder-squirrel-windows@25.1.8) fs-extra: 10.1.0 lazy-val: 1.0.5 simple-update-notifier: 2.0.0 @@ -5024,10 +5026,10 @@ snapshots: transitivePeerDependencies: - supports-color - electron@39.2.7: + electron@40.1.0: dependencies: '@electron/get': 2.0.3 - '@types/node': 22.10.1 + '@types/node': 24.10.9 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -5355,6 +5357,15 @@ snapshots: graceful-fs@4.2.11: {} + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -5799,6 +5810,8 @@ snapshots: negotiator@1.0.0: {} + neo-async@2.6.2: {} + node-abi@3.71.0: dependencies: semver: 7.7.3 @@ -6086,27 +6099,24 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.1 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.1 - rolldown@1.0.0-beta.31: + rolldown@1.0.0-rc.2: dependencies: - '@oxc-project/runtime': 0.80.0 - '@oxc-project/types': 0.80.0 - '@rolldown/pluginutils': 1.0.0-beta.31 - ansis: 4.1.0 + '@oxc-project/types': 0.111.0 + '@rolldown/pluginutils': 1.0.0-rc.2 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.31 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.31 - '@rolldown/binding-darwin-x64': 1.0.0-beta.31 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.31 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.31 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.31 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.31 - '@rolldown/binding-linux-arm64-ohos': 1.0.0-beta.31 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.31 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.31 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.31 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.31 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.31 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.31 + '@rolldown/binding-android-arm64': 1.0.0-rc.2 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.2 + '@rolldown/binding-darwin-x64': 1.0.0-rc.2 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.2 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.2 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.2 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.2 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.2 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.2 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.2 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.2 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.2 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.2 rollup-plugin-copy@3.5.0: dependencies: @@ -6174,8 +6184,6 @@ snapshots: semver@7.7.0: {} - semver@7.7.2: {} - semver@7.7.3: {} serialize-error@7.0.1: @@ -6203,7 +6211,7 @@ snapshots: simple-update-notifier@2.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 slash@3.0.0: {} @@ -6279,7 +6287,7 @@ snapshots: source-map@0.6.1: {} - spitroast@1.4.4: {} + spitroast@2.1.4: {} sprintf-js@1.1.3: {} @@ -6414,8 +6422,13 @@ snapshots: typescript@5.7.2: {} + uglify-js@3.19.3: + optional: true + undici-types@6.20.0: {} + undici-types@7.16.0: {} + unique-filename@2.0.1: dependencies: unique-slug: 3.0.0 @@ -6483,6 +6496,8 @@ snapshots: dependencies: string-width: 4.2.3 + wordwrap@1.0.0: {} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 From afac1b094b38edc27567167044185d3471f609f4 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 29 Jan 2026 18:18:05 +0100 Subject: [PATCH 806/896] feat: functional add detectable modal --- .../components/AddDetectableModal.tsx | 57 +++++++++++++------ src/shelter/settings/components/Dropdown.tsx | 21 +++++-- src/shelter/settings/index.ts | 2 +- .../settings/pages/RegisteredGames.module.css | 5 +- .../settings/pages/RegisteredGamesPage.tsx | 1 + 5 files changed, 62 insertions(+), 24 deletions(-) diff --git a/src/shelter/settings/components/AddDetectableModal.tsx b/src/shelter/settings/components/AddDetectableModal.tsx index adbf0c3..d525976 100644 --- a/src/shelter/settings/components/AddDetectableModal.tsx +++ b/src/shelter/settings/components/AddDetectableModal.tsx @@ -1,5 +1,7 @@ import type { Game } from "arrpc"; import { createSignal } from "solid-js"; +import { setRestartRequired } from "../settings.js"; + const { ui: { ModalRoot, @@ -11,10 +13,13 @@ const { Header, HeaderTags, Divider, + SwitchItem, showToast, + openConfirmationModal, }, plugin: { store }, } = shelter; + export const AddDetectableModal = (props: { close: () => void; executable: string }) => { const [appName, setAppName] = createSignal(""); const [appId, setAppId] = createSignal(""); @@ -41,27 +46,44 @@ export const AddDetectableModal = (props: { close: () => void; executable: strin }, ], id: appId().trim(), - aliases: - aliases() - .split(",") - .map((a) => a.trim()) || [], + aliases: aliases() + .split(",") + .map((a) => a.trim()) + .filter(Boolean), hook: false, overlay: true, overlay_compatibility_hook: false, overlay_methods: null, overlay_warn: false, - themes: - themes() - .split(",") - .map((t) => t.trim()) || [], + themes: themes() + .split(",") + .map((t) => t.trim()) + .filter(Boolean), }; current.push(game); store.settings.detectables = current; - window.legcord.rpc.addDetectable(game); + // Send a plain object so IPC structured clone does not fail (store may wrap with proxies) + window.legcord.rpc.addDetectable(JSON.parse(JSON.stringify(game)) as Game); + setRestartRequired(); + props.close(); + + openConfirmationModal({ + header: () => store.i18n["settings-restartRequired"], + body: () => store.i18n["settings-restartRequiredBody"], + type: "danger", + confirmText: store.i18n["settings-restart"], + cancelText: store.i18n["settings-restartLater"], + }).then( + () => window.legcord.restart(), + () => {}, + ); } const t = store.i18n; + const canSave = () => + Boolean(appName().trim() && appId().trim() && props.executable && props.executable !== "refresh"); + return ( {t["detectable-addApp"]} @@ -77,16 +99,17 @@ export const AddDetectableModal = (props: { close: () => void; executable: strin
    {t["detectable-aliases"]}
    - +
    - + ); }; diff --git a/src/shelter/settings/components/Dropdown.tsx b/src/shelter/settings/components/Dropdown.tsx index af61f23..85b3ff9 100644 --- a/src/shelter/settings/components/Dropdown.tsx +++ b/src/shelter/settings/components/Dropdown.tsx @@ -5,7 +5,9 @@ export const Dropdown = (props: { value: string | number; onChange: (val: string) => void; options: { label: string; value: string | number }[]; + styles?: { [key: string]: string }; limitHeight?: boolean | undefined; + class?: string; }) => { const [open, set] = createSignal(false); const [maxHeight, setMaxHeight] = createSignal(""); @@ -28,10 +30,16 @@ export const Dropdown = (props: { const text = createMemo(() => props.options.find((o) => o.value === props.value)?.label ?? props.value); return ( - // biome-ignore lint/a11y/useSemanticElements: FIX-ME -
    -
    set(!open())}> -
    +
    +
    set(!open())} style={props.styles?.valuewrapper}> +
    {text()}
    @@ -52,7 +60,10 @@ export const Dropdown = (props: {
    {open() && ( -
    +
    {(opt) => (