diff --git a/CEFInjectLib/CEFInject.h b/CEFInjectLib/CEFInject.h index 2fd103d..c712354 100644 --- a/CEFInjectLib/CEFInject.h +++ b/CEFInjectLib/CEFInject.h @@ -76,6 +76,7 @@ namespace CEFInject static inline const std::map path_tab_map_ = { {L"SharedContext", "Steam Shared Context"}, {L"Overlay", "HOW TF GET OVERLAY TAB NAME?"}, // TODO: Figure out how to get the overlay tab name + {L"GamepadUI", "Steam Big Picture Mode"}, }; static constexpr std::string_view steam_shared_ctx_tab_name_ = "Steam Shared Context"; diff --git a/GlosSIConfig/UIModel.cpp b/GlosSIConfig/UIModel.cpp index 2ba051e..8343107 100644 --- a/GlosSIConfig/UIModel.cpp +++ b/GlosSIConfig/UIModel.cpp @@ -403,7 +403,8 @@ QVariantMap UIModel::getDefaultConf() const {"steamUserId", QJsonValue::fromVariant(QString::fromStdWString(getSteamUserId(false)))}, {"globalModeGameId", ""}, - {"globalModeUseGamepadUI", false}, + {"globalModeUseGamepadUI", true}, + {"minimizeSteamGamepadUI", true}, {"controller", QJsonObject{{"maxControllers", -1}, {"emulateDS4", false}, {"allowDesktopConfig", false}}}, {"devices", QJsonObject{ diff --git a/SteamTweaks/src/@types/GlosSISettings.d.ts b/SteamTweaks/src/@types/GlosSISettings.d.ts new file mode 100644 index 0000000..b94eea8 --- /dev/null +++ b/SteamTweaks/src/@types/GlosSISettings.d.ts @@ -0,0 +1,44 @@ +export interface GlosSISettings { + controller: { + allowDesktopConfig: boolean; + emulateDS4: boolean; + maxControllers: number; + }; + devices: { + hideDevices: boolean; + realDeviceIds: boolean; + }; + extendedLogging: boolean; + globalModeGameId: string; + globalModeUseGamepadUI: boolean; + icon?: string; + ignoreEGS: boolean; + killEGS: boolean; + launch: { + closeOnExit: boolean; + ignoreLauncher: boolean; + killLauncher: boolean; + launch: boolean; + launchAppArgs?: string; + launchPath?: string; + launcherProcesses: string[]; + waitForChildProcs: boolean; + }; + name?: string; + snapshotNotify: boolean; + standaloneModeGameId: string; + standaloneUseGamepadUI: boolean; + minimizeSteamGamepadUI: boolean; + steamPath: string; + steamUserId: string; + steamgridApiKey: string; + version: number; + window: { + disableGlosSIOverlay: boolean; + disableOverlay: boolean; + hideAltTab: boolean; + maxFps?: number; + scale?: number; + windowMode: boolean; + }; +} diff --git a/SteamTweaks/src/@types/SteamClient.d.ts b/SteamTweaks/src/@types/SteamClient.d.ts index c2072e5..a812952 100644 --- a/SteamTweaks/src/@types/SteamClient.d.ts +++ b/SteamTweaks/src/@types/SteamClient.d.ts @@ -3,8 +3,18 @@ export interface SteamClient { SetInGameOverlayShowFPSCorner: (value: 0|1|2|3|4) => void; SetInGameOverlayShowFPSContrast: (value: boolean) => void; }; + UI: { + GetUiMode: () => Promise; + SetUiMode: (mode: SteamUiMode) => void; + }; + Window: { + Minimize(); + HideWindow(); + }; } +export type FullSteamClient = Required; + declare global { interface Window { SteamClient: SteamClient; diff --git a/SteamTweaks/src/Tweaks/GamepadUI/MinimizeSteamGamepadUI.ts b/SteamTweaks/src/Tweaks/GamepadUI/MinimizeSteamGamepadUI.ts new file mode 100644 index 0000000..8245818 --- /dev/null +++ b/SteamTweaks/src/Tweaks/GamepadUI/MinimizeSteamGamepadUI.ts @@ -0,0 +1,21 @@ +import { SteamUiMode } from '../../common/Steam'; +import { initTweak } from '../../common/tweakApi'; + + +initTweak('MinimizeSteamGamepadUI', async () => { + + const [isGamepadUI, minimizeGPUI] = await Promise.all([ + (async () => (await SteamClient.UI.GetUiMode()) === SteamUiMode.GamepadUI)(), + (async () => (await GlosSIApi.SteamTarget.getGlosSISettings()).minimizeSteamGamepadUI)() + ]); + if (isGamepadUI && minimizeGPUI) { + SteamClient.Window.Minimize(); + return true; + } + if (!isGamepadUI && minimizeGPUI) { + console.warn('MinimizeSteamGamepadUI is enabled but Steam is not in GamepadUI mode'); + } + return false; +}).then((minimized: boolean) => { + console.log('MinimizeSteamGamepadUI installed; Minimized GamepadUI:', minimized); +}).catch((e) => console.error('MinimizeSteamGamepadUI failed to install', e)); diff --git a/SteamTweaks/src/common/Steam.ts b/SteamTweaks/src/common/Steam.ts new file mode 100644 index 0000000..07be9e2 --- /dev/null +++ b/SteamTweaks/src/common/Steam.ts @@ -0,0 +1,8 @@ +// eslint-disable-next-line no-shadow +export enum SteamUiMode { + Desktop = 0, + Unknown1 = 1, + Unknown2 = 2, + Unknown3 = 3, + GamepadUI = 4, +} diff --git a/common/Settings.h b/common/Settings.h index 2d83b58..6413dcd 100644 --- a/common/Settings.h +++ b/common/Settings.h @@ -83,6 +83,7 @@ namespace Settings std::wstring globalModeGameId; /* = L"12605636929694728192"; */ bool globalModeUseGamepadUI = false; bool allowGlobalMode = true; + bool minimizeSteam = true; } common; inline const std::map> cmd_args = { @@ -235,6 +236,7 @@ namespace Settings safeParseValue(json, "globalModeGameId", common.globalModeGameId); safeParseValue(json, "globalModeUseGamepadUI", common.globalModeUseGamepadUI); + safeParseValue(json, "minimizeSteam", common.minimizeSteam); } catch (const nlohmann::json::exception &e) {