<html> <head> <link rel="stylesheet" href="/steam_resource/css/2.css"> <link rel="stylesheet" href="/steam_resource/css/39.css"> <link rel="stylesheet" href="/steam_resource/css/library.css"> <script src="/static/library.js"></script> <script> // Python functions function getVersion() { return call_plugin_method("get_version", {}); } function onViewReady() { return call_plugin_method("on_ready", {}); } function setCPUs(value, smt) { return call_plugin_method("set_cpus", {"count":value, "smt": smt}); } function getCPUs() { return call_plugin_method("get_cpus", {}); } function getSMT() { return call_plugin_method("get_smt", {}); } function setCPUBoost(value) { return call_plugin_method("set_boost", {"enabled": value}); } function getCPUBoost() { return call_plugin_method("get_boost", {}); } function setMaxBoost(index) { return call_plugin_method("set_max_boost", {"index": index}); } function getMaxBoost() { return call_plugin_method("get_max_boost", {}); } function setGPUPower(value, index) { return call_plugin_method("set_gpu_power", {"value": value, "power_number": index}); } function getGPUPower(index) { return call_plugin_method("get_gpu_power", {"power_number": index}); } function setFanTick(tick) { return call_plugin_method("set_fan_tick", {"tick": tick}); } function getFanTick() { return call_plugin_method("get_fan_tick", {}); } function getFantastic() { return call_plugin_method("fantastic_installed", {}); } function getChargeNow() { return call_plugin_method("get_charge_now", {}); } function getChargeFull() { return call_plugin_method("get_charge_full", {}); } function getChargeDesign() { return call_plugin_method("get_charge_design", {}); } function setPersistent(value) { return call_plugin_method("set_persistent", {"enabled": value}); } function getPersistent() { return call_plugin_method("get_persistent", {}); } function setPerGameProfile(value) { return call_plugin_method("set_per_game_profile", {"enabled": value}); } function getPerGameProfile() { return call_plugin_method("get_per_game_profile", {}); } function getCurrentGame() { return call_plugin_method("get_current_game", {}); } // other logic async function onReady() { await onViewReady(); // detect game starts and exits console.log("Injecting game detection code into main window (SP)"); await execute_in_tab("SP", false, `console.log("Hey PowerTools is over here now too!"); SteamClient.Apps.RegisterForGameActionStart((actionType, data) => { console.log("start game", appStore.GetAppOverviewByGameID(data)); fetch("http://127.0.0.1:5030/on_game_start/" + data.toString(), {method: "POST", body: JSON.stringify(appStore.GetAppOverviewByGameID(data))}).then((_) => {}); }); // this seems to not run when I thought (runs right after ^^^, not when game exits) /*SteamClient.Apps.RegisterForGameActionEnd((actionType, data) => { if (data != null && data != undefined) { console.log("stop game", appStore.GetAppOverviewByGameID(data)); fetch("http://127.0.0.1:5030/on_game_exit/" + data.toString(), {method: "POST", body: JSON.stringify(appStore.GetAppOverviewByGameID(data))}).then((_) => {}); } else { console.log("stop game null"); fetch("http://127.0.0.1:5030/on_game_exit_null", {method: "POST", body:data}).then((_) => {}); } });*/` ); await updateCurrentGame(); /*let boostToggle = document.getElementById("boostToggle"); setToggleState(boostToggle, await getCPUBoost()); setToggleState(document.getElementById("smtToggle"), await getSMT()); selectNotch("cpuThreadsNotch", await getCPUs() - 1, 8); selectNotch("frequencyNotch", await getMaxBoost(), 3); await onReadyGPU(); let isFantasticInstalled = await getFantastic(); if (isFantasticInstalled) { // Don't fight with Fantastic let fanRoot = document.getElementById("fanRoot"); fanRoot.style.visibility = "hidden"; fanRoot.style.height = "0px"; } else { selectNotch("fanNotch", await getFanTick(), 8); } await updateBatteryStats(); setToggleState(document.getElementById("persistToggle"), await getPersistent()); setToggleState(document.getElementById("gameProfileToggle"), await getPerGameProfile()); await updateCurrentGame();*/ // this is unimportant; always do it last await updateVersion(); window.setInterval(function() { updateBatteryStats().then(_ => {}); updateCurrentGame().then(_ => {}); }, 1000); } async function reloadSettings() { let boostToggle = document.getElementById("boostToggle"); setToggleState(boostToggle, await getCPUBoost()); setToggleState(document.getElementById("smtToggle"), await getSMT()); selectNotch("cpuThreadsNotch", await getCPUs() - 1, 8); selectNotch("frequencyNotch", await getMaxBoost(), 3); await onReadyGPU(); let isFantasticInstalled = await getFantastic(); if (isFantasticInstalled) { // Don't fight with Fantastic let fanRoot = document.getElementById("fanRoot"); fanRoot.style.visibility = "hidden"; fanRoot.style.height = "0px"; } else { selectNotch("fanNotch", await getFanTick(), 8); } await updateBatteryStats(); setToggleState(document.getElementById("persistToggle"), await getPersistent()); setToggleState(document.getElementById("gameProfileToggle"), await getPerGameProfile()); } async function setCPUNotch(index) { const ROOT_ID = "cpuThreadsNotch"; await setCPUs(index, getToggleState(document.getElementById("smtToggle"))); selectNotch(ROOT_ID, await getCPUs() - 1, 8); } async function onSlideCPUNotch(e) { const ROOT_ID = "cpuThreadsNotch"; let closest = closestNotch(e, ROOT_ID, 8); await setCPUNotch(closest); } const TOGGLE_ON_CLASS = "gamepaddialog_On_3ld7T"; function setToggleState(toggle, state) { if (state && !toggle.classList.contains(TOGGLE_ON_CLASS)) { toggle.classList.add(TOGGLE_ON_CLASS); } if (!state && toggle.classList.contains(TOGGLE_ON_CLASS)) { toggle.classList.remove(TOGGLE_ON_CLASS); } } function getToggleState(toggle) { return toggle.classList.contains(TOGGLE_ON_CLASS); } async function toggleCPUBoost() { let toggle = document.getElementById("boostToggle"); let isActive = getToggleState(toggle); await setCPUBoost(!isActive); setToggleState(toggle, !isActive); } async function toggleCPUSMT() { let toggle = document.getElementById("smtToggle"); let isActive = getToggleState(toggle); let currentCPUs = await getCPUs(); if (currentCPUs == 4 && !isActive) { // if all cores are running, enable all the threads as well await setCPUs(8, !isActive); } else { await setCPUs(currentCPUs, !isActive); } setToggleState(toggle, !isActive); selectNotch("cpuThreadsNotch", await getCPUs() - 1, 8); } async function setBoostNotch(index) { const ROOT_ID = "frequencyNotch"; await setMaxBoost(index); selectNotch(ROOT_ID, await getMaxBoost(), 3); } async function onSlideBoostNotch(e) { const ROOT_ID = "frequencyNotch"; let closest = closestNotch(e, ROOT_ID, 3); await setBoostNotch(closest); } async function onSetFanNotch(index) { const ROOT_ID = "fanNotch"; await setFanTick(index); selectNotch(ROOT_ID, index, 8); } async function onSlideFanNotch(e) { const ROOT_ID = "fanNotch"; let closest = closestNotch(e, ROOT_ID, 8); await onSetFanNotch(closest); } async function onReadyGPU() { let power1_cap = await getGPUPower(1); let power2_cap = await getGPUPower(2); if (power1_cap <= 0) { selectNotch("slowPPTNotch", 0, 3); document.getElementById("slowPPTAutoDefault").innerText = "Default"; } else if (power1_cap > 15000000) { selectNotch("slowPPTNotch", 2, 3); document.getElementById("slowPPTAutoDefault").innerText = "Default"; } else { selectNotch("slowPPTNotch", 1, 3); } if (power2_cap <= 0) { selectNotch("fastPPTNotch", 0, 3); document.getElementById("fastPPTAutoDefault").innerText = "Default"; } else if (power2_cap > 15000000) { selectNotch("fastPPTNotch", 2, 3); document.getElementById("fastPPTAutoDefault").innerText = "Default"; } else { selectNotch("fastPPTNotch", 1, 3); } } async function onSetSlowPPTNotch(index) { const ROOT_ID = "slowPPTNotch"; document.getElementById("slowPPTAutoDefault").innerText = "Default"; if (index == 0) { await setGPUPower(0, 1); } else if (index == 1) { await setGPUPower(15000000, 1); } else { await setGPUPower(29000000, 1); } selectNotch(ROOT_ID, index, 3); } async function onSlideSlowPPTNotch(e) { const ROOT_ID = "slowPPTNotch"; let closest = closestNotch(e, ROOT_ID, 3); onSetSlowPPTNotch(closest); } async function onSetFastPPTNotch(index) { const ROOT_ID = "fastPPTNotch"; document.getElementById("fastPPTAutoDefault").innerText = "Default"; if (index == 0) { await setGPUPower(0, 2); } else if (index == 1) { await setGPUPower(15000000, 2); } else { await setGPUPower(30000000, 2); } selectNotch(ROOT_ID, index, 3); } async function onSlideFastPPTNotch(e) { const ROOT_ID = "fastPPTNotch"; let closest = closestNotch(e, ROOT_ID, 3); await onSetFastPPTNotch(closest); } function selectNotch(rootId, index, elements) { // WARNING: this yeets any style in div of slider const ENABLED_CLASS = "gamepadslider_TickActive_1gnUV"; //console.log("Selecting notches up to " + index); let root = document.getElementById(rootId); root.style = "--normalized-slider-value:" + index/(elements-1) + ";"; for (let i = 0; i < elements; i++) { let notch = document.getElementById(rootId + i); if (notch.classList.contains(ENABLED_CLASS) && i > index) { notch.classList.remove(ENABLED_CLASS); } else if (!notch.classList.contains(ENABLED_CLASS) && i <= index) { notch.classList.add(ENABLED_CLASS); } } } function closestNotch(e, rootId, elements) { let root = document.getElementById(rootId); let val = e.x / root.scrollWidth; let closest_notch = Math.round(val * elements); if (closest_notch > elements) { closest_notch = elements; } else if (closest_notch < 0) { closest_notch = 0; } return closest_notch //selectNotch(closest_notch); } async function updateBatteryStats() { //console.log("Updating battery stats"); let batCapacityNow = document.getElementById("batCapacityNow"); let batCapacityFull = document.getElementById("batCapacityFull"); let chargeNow = await getChargeNow(); let chargeFull = await getChargeFull(); let chargeDesign = await getChargeDesign(); batCapacityNow.innerText = (7.7 * chargeNow / 1000000).toFixed(2).toString() + " Wh (" + (100 * chargeNow / chargeFull).toFixed(2).toString() + "%)"; batCapacityFull.innerText = (7.7 * chargeFull / 1000000).toFixed(2).toString() + " Wh (" + (100 * chargeFull / chargeDesign).toFixed(2).toString() + "%)"; } async function togglePersist() { let toggle = document.getElementById("persistToggle"); let isActive = getToggleState(toggle); await setPersistent(!isActive); setToggleState(toggle, !isActive); } async function toggleGameProfile() { let toggle = document.getElementById("gameProfileToggle"); let isActive = getToggleState(toggle); await setPerGameProfile(!isActive); setToggleState(toggle, await getPerGameProfile()); } let lastGameName = ""; async function updateCurrentGame() { let gameNow = document.getElementById("gameNow"); let gameNameNow = await getCurrentGame(); if (lastGameName != gameNameNow) { setToggleState(document.getElementById("gameProfileToggle"), await getPerGameProfile()); await reloadSettings(); } lastGameName = gameNameNow gameNow.innerText = gameNameNow; } let versionCount = -1; async function updateVersion() { let version = await getVersion(); let target = document.getElementById("versionStr"); target.innerText = "v" + version; if (versionCount >= 9) { target.innerText += " by NGnius ;) "; versionCount = 0; } else { versionCount += 1; } } </script> <style type="text/css" media="screen"></style> </head> <body onload="onReady()" style="/*margin:0px;padding:0px;*/overflow-x:hidden;margin:0px;"> <!-- Spacer (moves top out of shadow above it) --> <div class="quickaccessmenu_TabGroupPanel_1QO7b"> <div class="quickaccesscontrols_PanelSection_2C0g0" style="margin-bottom:6px;"> <!--<div class="quickaccesscontrols_PanelSectionRow_2VQ88"> </div>--> </div> </div> <!-- CPU --> <!-- SMT toggle switch, roughly copied from https://github.com/SteamDeckHomebrew/ExtraSettingsPlugin/blob/main/main_view.html --> <!-- Due to a bug in MangoHud, this has a warning for now --> <div class="quickaccessmenu_TabGroupPanel_1QO7b Panel Focusable"> <div class="quickaccesscontrols_PanelSection_2C0g0" style=""> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_WithDescription_3bMIS gamepaddialog_ExtraPaddingOnChildrenBelow_5UO-_ gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable" style="--indent-level:0;" onclick="toggleCPUSMT()"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-"> CPU SMT </div> <div class="gamepaddialog_FieldChildren_14_HB"> <div id="smtToggle" tabindex="0" class="gamepaddialog_Toggle_24G4g Focusable" > <div class="gamepaddialog_ToggleRail_2JtC3"></div> <div class="gamepaddialog_ToggleSwitch_3__OD"></div> </div> </div> </div> <div class="gamepaddialog_FieldDescription_2OJfk">Enables odd-numbered CPUs</div> </div> </div> <!-- CPUs selector --> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_WithChildrenBelow_1u5FT gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_InlineWrapShiftsChildrenBelow_pHUb6 gamepaddialog_WithBottomSeparatorStandard_3s1Rk gamepaddialog_ChildrenWidthFixed_1ugIU gamepaddialog_ExtraPaddingOnChildrenBelow_5UO-_ gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-">Threads</div> </div> <div id="cpuThreadsNotch" class="gamepadslider_SliderControlAndNotches_1Cccx Focusable" tabindex="0" style="--normalized-slider-value:0.5;" onmousemove="onSlideCPUNotch(event)"> <div class="gamepadslider_SliderControl_3o137"> <div class="gamepadslider_SliderTrack_Mq25N gamepadslider_SliderHasNotches_2XiAy "></div> <div class="gamepadslider_SliderHandleContainer_1pQZi"> <div class="gamepadslider_SliderHandle_2yVKj"></div> </div> </div> <div class="gamepadslider_SliderNotchContainer_2N-a5 Panel Focusable"> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="cpuThreadsNotch0" class="gamepadslider_SliderNotchTick_Fv1Ht" onclick='setCPUNotch(1)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">1</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="cpuThreadsNotch1" class="gamepadslider_SliderNotchTick_Fv1Ht" onclick='setCPUNotch(2)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">2</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="cpuThreadsNotch2" class="gamepadslider_SliderNotchTick_Fv1Ht" onclick='setCPUNotch(3)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">3</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="cpuThreadsNotch3" class="gamepadslider_SliderNotchTick_Fv1Ht" onclick='setCPUNotch(4)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">4</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="cpuThreadsNotch4" class="gamepadslider_SliderNotchTick_Fv1Ht" onclick='setCPUNotch(5)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">5</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="cpuThreadsNotch5" class="gamepadslider_SliderNotchTick_Fv1Ht" onclick='setCPUNotch(6)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">6</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="cpuThreadsNotch6" class="gamepadslider_SliderNotchTick_Fv1Ht" onclick='setCPUNotch(7)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">7</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="cpuThreadsNotch7" class="gamepadslider_SliderNotchTick_Fv1Ht" onclick='setCPUNotch(8)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">8</div> </div> </div> </div> </div> </div> </div> <!-- CPU Boost toggle switch, roughly copied from https://github.com/SteamDeckHomebrew/ExtraSettingsPlugin/blob/main/main_view.html --> <div class="quickaccesscontrols_PanelSection_2C0g0" style=""> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_WithDescription_3bMIS gamepaddialog_ExtraPaddingOnChildrenBelow_5UO-_ gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable" style="--indent-level:0;" onclick="toggleCPUBoost()"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-"> CPU Boost </div> <div class="gamepaddialog_FieldChildren_14_HB"> <div id="boostToggle" tabindex="0" class="gamepaddialog_Toggle_24G4g Focusable"> <div class="gamepaddialog_ToggleRail_2JtC3"></div> <div class="gamepaddialog_ToggleSwitch_3__OD"></div> </div> </div> </div> <div class="gamepaddialog_FieldDescription_2OJfk">Allows the CPU to go above max frequency</div> </div> </div> <!-- Frequency selector --> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_WithChildrenBelow_1u5FT gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_InlineWrapShiftsChildrenBelow_pHUb6 gamepaddialog_WithBottomSeparatorStandard_3s1Rk gamepaddialog_ChildrenWidthFixed_1ugIU gamepaddialog_ExtraPaddingOnChildrenBelow_5UO-_ gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-">Max Frequency</div> </div> <div class="gamepaddialog_FieldChildren_14_HB"> <div id="frequencyNotch" class="gamepadslider_SliderControlAndNotches_1Cccx Focusable" tabindex="0" style="--normalized-slider-value:0.5;" onmousemove="onSlideBoostNotch(event)"> <div class="gamepadslider_SliderControl_3o137"> <div class="gamepadslider_SliderTrack_Mq25N gamepadslider_SliderHasNotches_2XiAy "></div> <div class="gamepadslider_SliderHandleContainer_1pQZi"> <div class="gamepadslider_SliderHandle_2yVKj"></div> </div> </div> <div class="gamepadslider_SliderNotchContainer_2N-a5 Panel Focusable"> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="frequencyNotch0" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='setBoostNotch(0)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1" style="margin-left:2em;">1.7GHz</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="frequencyNotch1" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='setBoostNotch(1)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">2.4GHz</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="frequencyNotch2" class="gamepadslider_SliderNotchTick_Fv1Ht" onclick='setBoostNotch(2)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1" style="margin-right:2em;">2.8GHz</div> </div> </div> </div> </div> <div style="font-size:x-small;"> WARNING: This will change the CPU governor. </div> </div> </div> </div> <!-- GPU --> <div class="quickaccesscontrols_PanelSection_2C0g0" style=""> <!-- SlowPPT power limit (number 1) --> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_WithChildrenBelow_1u5FT gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_InlineWrapShiftsChildrenBelow_pHUb6 gamepaddialog_ChildrenWidthFixed_1ugIU gamepaddialog_ExtraPaddingOnChildrenBelow_5UO-_ gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-">GPU SlowPPT Power</div> </div> <div class="gamepaddialog_FieldChildren_14_HB"> <div id="slowPPTNotch" class="gamepadslider_SliderControlAndNotches_1Cccx Focusable" tabindex="0" style="--normalized-slider-value:0.33;" onmousemove="onSlideSlowPPTNotch(event)"> <div class="gamepadslider_SliderControl_3o137"> <div class="gamepadslider_SliderTrack_Mq25N gamepadslider_SliderHasNotches_2XiAy "></div> <div class="gamepadslider_SliderHandleContainer_1pQZi"> <div class="gamepadslider_SliderHandle_2yVKj"></div> </div> </div> <div class="gamepadslider_SliderNotchContainer_2N-a5 Panel Focusable"> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="slowPPTNotch0" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetSlowPPTNotch(0)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">0</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="slowPPTNotch1" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetSlowPPTNotch(1)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1" id="slowPPTAutoDefault">Auto</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="slowPPTNotch2" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetSlowPPTNotch(2)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">Max</div> </div> </div> </div> </div> </div> </div> <!-- FastPPT power limit (number 2) --> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_WithChildrenBelow_1u5FT gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_InlineWrapShiftsChildrenBelow_pHUb6 gamepaddialog_WithBottomSeparatorStandard_3s1Rk gamepaddialog_ChildrenWidthFixed_1ugIU gamepaddialog_ExtraPaddingOnChildrenBelow_5UO-_ gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-">GPU FastPPT Power</div> </div> <div class="gamepaddialog_FieldChildren_14_HB"> <div id="fastPPTNotch" class="gamepadslider_SliderControlAndNotches_1Cccx Focusable" tabindex="0" style="--normalized-slider-value:0.33;" onmousemove="onSlideFastPPTNotch(event)"> <div class="gamepadslider_SliderControl_3o137"> <div class="gamepadslider_SliderTrack_Mq25N gamepadslider_SliderHasNotches_2XiAy "></div> <div class="gamepadslider_SliderHandleContainer_1pQZi"> <div class="gamepadslider_SliderHandle_2yVKj"></div> </div> </div> <div class="gamepadslider_SliderNotchContainer_2N-a5 Panel Focusable"> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fastPPTNotch0" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFastPPTNotch(0)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">0</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fastPPTNotch1" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFastPPTNotch(1)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1" id="fastPPTAutoDefault">Auto</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fastPPTNotch2" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFastPPTNotch(2)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">Max</div> </div> </div> </div> </div> </div> </div> </div> <!-- Fan RPM selector --> <div class="quickaccesscontrols_PanelSection_2C0g0" style="" id="fanRoot"> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <!-- TODO: Make this non-notched slider when PluginLoader PR#41 is merged --> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_WithChildrenBelow_1u5FT gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_InlineWrapShiftsChildrenBelow_pHUb6 gamepaddialog_WithBottomSeparatorStandard_3s1Rk gamepaddialog_ChildrenWidthFixed_1ugIU gamepaddialog_ExtraPaddingOnChildrenBelow_5UO-_ gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-">Fan RPM</div> </div> <div class="gamepaddialog_FieldDescription_2OJfk">Requires disabling updated fan control</div> <div class="gamepaddialog_FieldChildren_14_HB"> <div id="fanNotch" class="gamepadslider_SliderControlAndNotches_1Cccx Focusable" tabindex="0" style="--normalized-slider-value:0.33;" onmousemove="onSlideFanNotch(event)"> <div class="gamepadslider_SliderControl_3o137"> <div class="gamepadslider_SliderTrack_Mq25N gamepadslider_SliderHasNotches_2XiAy "></div> <div class="gamepadslider_SliderHandleContainer_1pQZi"> <div class="gamepadslider_SliderHandle_2yVKj"></div> </div> </div> <div class="gamepadslider_SliderNotchContainer_2N-a5 Panel Focusable"> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fanNotch0" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFanNotch(0)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">0</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fanNotch1" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFanNotch(1)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">1K</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fanNotch2" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFanNotch(2)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">2K</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fanNotch3" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFanNotch(3)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">3K</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fanNotch4" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFanNotch(4)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">4K</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fanNotch5" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFanNotch(5)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">5K</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fanNotch6" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFanNotch(6)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">6K</div> </div> <div class="gamepadslider_SliderNotch_3x6ve"> <div id="fanNotch7" class="gamepadslider_SliderNotchTick_Fv1Ht gamepadslider_TickActive_j418S" onclick='onSetFanNotch(7)'></div> <div class="gamepadslider_SliderNotchLabel_u_sH1">Auto</div> </div> </div> </div> </div> <div style="font-size:x-small;"> WARNING: This can cause component overheating. </div> </div> </div> </div> <!-- Battery Info --> <div class="quickaccesscontrols_PanelSection_2C0g0" style="" onclick="updateBatteryStats()" style="margin-bottom:0px;"> <div class="quickaccesscontrols_PanelSectionTitle_2iFf9"> <div class="quickaccesscontrols_Text_1hJkB">Battery</div> </div> <div class="Panel Focusable" tabindex="0"> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_InlineWrapShiftsChildrenBelow_pHUb6 gamepaddialog_WithBottomSeparatorStandard_3s1Rk gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable" style="--indent-level:0;"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-">Now (Charge)</div> <div class="gamepaddialog_FieldChildren_14_HB"> <div class="gamepaddialog_LabelFieldValue_5Mylh" id="batCapacityNow"> :'( (|-_-|) </div> </div> </div> </div> </div> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_InlineWrapShiftsChildrenBelow_pHUb6 gamepaddialog_WithBottomSeparatorStandard_3s1Rk gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable" style="--indent-level:0;"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-">Max (Design)</div> <div class="gamepaddialog_FieldChildren_14_HB"> <div class="gamepaddialog_LabelFieldValue_5Mylh" id="batCapacityFull"> 9000+ (420%) </div> </div> </div> </div> </div> </div> </div> <div class="quickaccesscontrols_PanelSection_2C0g0" style=""> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_WithDescription_3bMIS gamepaddialog_ExtraPaddingOnChildrenBelow_5UO-_ gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable" style="--indent-level:0;" onclick="togglePersist()"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-"> Persistent </div> <div class="gamepaddialog_FieldChildren_14_HB"> <div id="persistToggle" tabindex="0" class="gamepaddialog_Toggle_24G4g Focusable"> <div class="gamepaddialog_ToggleRail_2JtC3"></div> <div class="gamepaddialog_ToggleSwitch_3__OD"></div> </div> </div> </div> <div class="gamepaddialog_FieldDescription_2OJfk">Restores settings after an app or OS restart</div> </div> </div> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_WithDescription_3bMIS gamepaddialog_ExtraPaddingOnChildrenBelow_5UO-_ gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable" style="--indent-level:0;" onclick="toggleGameProfile()"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-"> Use per-game profile </div> <div class="gamepaddialog_FieldChildren_14_HB"> <div id="gameProfileToggle" tabindex="0" class="gamepaddialog_Toggle_24G4g Focusable"> <div class="gamepaddialog_ToggleRail_2JtC3"></div> <div class="gamepaddialog_ToggleSwitch_3__OD"></div> </div> </div> </div> </div> </div> <div class="quickaccesscontrols_PanelSectionRow_2VQ88"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_InlineWrapShiftsChildrenBelow_pHUb6 gamepaddialog_WithBottomSeparatorStandard_3s1Rk gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable" style="--indent-level:0;"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-">Now Playing</div> <div class="gamepaddialog_FieldChildren_14_HB"> <div class="gamepaddialog_LabelFieldValue_5Mylh" id="gameNow"> the bongos </div> </div> </div> </div> </div> <div class="quickaccesscontrols_PanelSectionRow_2VQ88" onclick="updateVersion()"> <div class="gamepaddialog_Field_S-_La gamepaddialog_WithFirstRow_qFXi6 gamepaddialog_VerticalAlignCenter_3XNvA gamepaddialog_InlineWrapShiftsChildrenBelow_pHUb6 gamepaddialog_WithBottomSeparatorStandard_3s1Rk gamepaddialog_StandardPadding_XRBFu gamepaddialog_HighlightOnFocus_wE4V6 Panel Focusable" style="--indent-level:0;"> <div class="gamepaddialog_FieldLabelRow_H9WOq"> <div class="gamepaddialog_FieldLabel_3b0U-">PowerTools</div> <div class="gamepaddialog_FieldChildren_14_HB"> <div class="gamepaddialog_LabelFieldValue_5Mylh" id="versionStr"> v0.42.0 </div> </div> </div> </div> </div> </div> </div> </body> </html>