Compare commits

...

6 Commits

@ -90,16 +90,6 @@ namespace CEFInject
nlohmann::basic_json<> InjectJs(std::string_view tab_name, std::string_view debug_url, std::wstring_view js, uint16_t port)
{
#ifdef _WIN32
INT rc;
WSADATA wsaData;
rc = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (rc) {
printf("WSAStartup Failed.\n");
return nullptr;
}
#endif
std::shared_ptr<easywsclient::WebSocket> ws{
easywsclient::WebSocket::from_url(debug_url.data())
@ -145,20 +135,15 @@ namespace CEFInject
return res;
}
}
} catch (...) {
}
catch (...) {
spdlog::error(
"CEFInject: Error injecting JS into tab: {}, {}",
std::string(tab_name.data()),
std::string(debug_url.data()));
}
#ifdef _WIN32
WSACleanup();
#endif
return res;
}
#ifdef _WIN32
WSACleanup();
#endif
return nullptr;
}
@ -178,6 +163,28 @@ namespace CEFInject
return nullptr;
}
WSAStartupWrap::WSAStartupWrap()
{
#ifdef _WIN32
WSADATA wsa_data;
if (const INT rc = WSAStartup(MAKEWORD(2, 2), &wsa_data)) {
spdlog::error("WSAStartup Failed.");
return;
}
wsa_startup_succeeded_ = true;
#endif
}
WSAStartupWrap::~WSAStartupWrap()
{
#ifdef _WIN32
if (wsa_startup_succeeded_)
{
WSACleanup();
}
#endif
}
bool SteamTweaks::injectGlosSITweaks(std::string_view tab_name, uint16_t port)
{
@ -292,7 +299,7 @@ namespace CEFInject
for (auto& f : futures)
{
if (f.valid()){
if (f.valid()) {
f.wait();
}
}
@ -339,19 +346,19 @@ namespace CEFInject
}
glossi_tweaks_injected_map_[tab["id"].get<std::string>()] = true;
futures.push_back(std::async([this, &tab]()
futures.push_back(std::async([this, &tab]()
{
InjectJs(tab["title"].get<std::string>(), tab["webSocketDebuggerUrl"].get<std::string>(), glossi_tweaks_js_);
for (auto& [path, js] : js_tweaks_cache_) {
const auto dir_name = path.parent_path().filename();
for (auto& [path, js] : js_tweaks_cache_) {
const auto dir_name = path.parent_path().filename();
if (path_tab_map_.contains(dir_name.wstring())) {
if (tab["title"].get<std::string>().find(path_tab_map_.at(dir_name.wstring())) != std::string::npos) {
InjectJs(tab["title"].get<std::string>(), tab["webSocketDebuggerUrl"].get<std::string>(), js);
}
}
if (path_tab_map_.contains(dir_name.wstring())) {
if (tab["title"].get<std::string>().find(path_tab_map_.at(dir_name.wstring())) != std::string::npos) {
InjectJs(tab["title"].get<std::string>(), tab["webSocketDebuggerUrl"].get<std::string>(), js);
}
}
}
}));
}
for (auto& f : futures)
@ -445,6 +452,13 @@ namespace CEFInject
};
find_tweak_files(tweaks_path.wstring(), find_tweak_files);
for (const auto& tweak : js_tweaks_cache_ | std::views::keys) {
spdlog::debug(
"CEFInject: Found {} tweak: {}",
builtin ? "builtin" : "user",
tweak.string()
);
}
}
}

@ -36,6 +36,15 @@ namespace CEFInject
nlohmann::basic_json<> InjectJs(std::string_view tab_name, std::string_view debug_url, std::wstring_view js, uint16_t port = internal::port_);
nlohmann::basic_json<> InjectJsByName(std::wstring_view tabname, std::wstring_view js, uint16_t port = internal::port_);
class WSAStartupWrap
{
public:
explicit WSAStartupWrap();
~WSAStartupWrap();
private:
bool wsa_startup_succeeded_ = false;
};
class SteamTweaks
{
public:
@ -88,4 +97,8 @@ namespace CEFInject
)";
};
namespace internal {
static WSAStartupWrap wsa_startup_wrap{};
}
}

@ -57,6 +57,8 @@ int SteamTarget::run()
run_ = true;
server_.run();
if (!overlay_.expired())
overlay_.lock()->setEnabled(false);
@ -149,9 +151,7 @@ int SteamTarget::run()
}
const auto tray = createTrayMenu();
server_.run();
bool delayed_full_init_1_frame = false;
sf::Clock frame_time_clock;
@ -323,6 +323,12 @@ void SteamTarget::init_FuckingRenameMe()
steamwindow = FindWindow(L"Steam Big Picture Mode", nullptr);
Sleep(50);
}
if (cef_tweaks_enabled_) {
steam_tweaks_.setAutoInject(true);
steam_tweaks_.update(999);
}
Sleep(6000); // DIRTY HACK to wait until BPM (GamepadUI) is initialized
// TODO: find way to force BPM even if BPM is not active
LoadLibrary((steam_path_ / "GameOverlayRenderer64.dll").wstring().c_str());

@ -1,11 +1,11 @@
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 SteamClient.UI.GetUiMode()) === SteamUiMode.GamepadUI)(),
true, // Steam is always GamepadUI if injected into GamepadUI, duh!
(async () => (await GlosSIApi.SteamTarget.getGlosSISettings()).minimizeSteamGamepadUI)()
]);
if (isGamepadUI && minimizeGPUI) {

@ -83,7 +83,7 @@ namespace Settings
std::wstring globalModeGameId; /* = L"12605636929694728192"; */
bool globalModeUseGamepadUI = false;
bool allowGlobalMode = true;
bool minimizeSteam = true;
bool minimizeSteamGamepadUI = true;
} common;
inline const std::map<std::wstring, std::function<void()>> cmd_args = {
@ -236,7 +236,7 @@ namespace Settings
safeParseValue(json, "globalModeGameId", common.globalModeGameId);
safeParseValue(json, "globalModeUseGamepadUI", common.globalModeUseGamepadUI);
safeParseValue(json, "minimizeSteam", common.minimizeSteam);
safeParseValue(json, "minimizeSteamGamepadUI", common.minimizeSteamGamepadUI);
}
catch (const nlohmann::json::exception &e)
{
@ -338,6 +338,16 @@ namespace Settings
json["controller"]["allowDesktopConfig"] = controller.allowDesktopConfig;
json["controller"]["emulateDS4"] = controller.emulateDS4;
json["globalModeGameId"] = common.globalModeGameId;;
json["globalModeUseGamepadUI"] = common.globalModeUseGamepadUI;
json["minimizeSteamGamepadUI"] = common.minimizeSteamGamepadUI;
// json["steamgridApiKey"] = common.steamgridApiKey;
json["steamPath"] = common.steamPath;
json["steamUserId"] = common.steamUserId;
json["extendedLogging"] = common.extendedLogging;
json["name"] = common.name;
json["icon"] = common.icon;

Loading…
Cancel
Save