From 33356d9231782e42007b261add7b865effc26adf Mon Sep 17 00:00:00 2001 From: Alessio Molinari Date: Wed, 28 Feb 2024 17:55:18 +0100 Subject: [PATCH 1/2] fix: fix build for Hyprland >=0.36. #21 --- src/VirtualDeskManager.cpp | 6 +++--- src/main.cpp | 23 ++++++++++++----------- src/utils.cpp | 4 ++-- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/VirtualDeskManager.cpp b/src/VirtualDeskManager.cpp index 0a5ab75..4fc43c5 100644 --- a/src/VirtualDeskManager.cpp +++ b/src/VirtualDeskManager.cpp @@ -163,14 +163,14 @@ void VirtualDeskManager::loadLayoutConf() { // Maybe in a future release :) if (confLoaded) return; - static auto* const PREMEMBER_LAYOUT = &HyprlandAPI::getConfigValue(PHANDLE, REMEMBER_LAYOUT_CONF)->strValue; + static auto* const PREMEMBER_LAYOUT = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, REMEMBER_LAYOUT_CONF); conf = layoutConfFromString(*PREMEMBER_LAYOUT); confLoaded = true; } void VirtualDeskManager::cycleWorkspaces() { - static auto* const PCYCLEWORKSPACES = &HyprlandAPI::getConfigValue(PHANDLE, CYCLEWORKSPACES_CONF)->intValue; - if (!*PCYCLEWORKSPACES) + static auto* const PCYCLEWORKSPACES = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, CYCLEWORKSPACES_CONF); + if (!**PCYCLEWORKSPACES) return; auto n_monitors = g_pCompositor->m_vMonitors.size(); diff --git a/src/main.cpp b/src/main.cpp index abc5489..7f8291d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -131,8 +131,9 @@ void printVdesk(std::string name) { } void printVDeskDispatch(std::string arg) { - static auto* const PVDESKNAMES = &HyprlandAPI::getConfigValue(PHANDLE, VIRTUALDESK_NAMES_CONF)->strValue; - parseNamesConf(*PVDESKNAMES); + std::string vdesknamesConf = std::any_cast(HyprlandAPI::getConfigValue(PHANDLE, VIRTUALDESK_NAMES_CONF)); + + parseNamesConf(vdesknamesConf); if (arg.length() == 0) { printVdesk(manager->activeVdesk()->id); @@ -217,13 +218,13 @@ void onRender(void*, SCallbackInfo&, std::any val) { } void onConfigReloaded(void*, SCallbackInfo&, std::any val) { - static auto* const PNOTIFYINIT = &HyprlandAPI::getConfigValue(PHANDLE, NOTIFY_INIT)->intValue; + static auto* const PNOTIFYINIT = (Hyprlang::INT const*)HyprlandAPI::getConfigValue(PHANDLE, NOTIFY_INIT); if (*PNOTIFYINIT && !notifiedInit) { HyprlandAPI::addNotification(PHANDLE, "Virtual desk Initialized successfully!", CColor{0.f, 1.f, 1.f, 1.f}, 5000); notifiedInit = true; } - static auto* const PVDESKNAMES = &HyprlandAPI::getConfigValue(PHANDLE, VIRTUALDESK_NAMES_CONF)->strValue; - parseNamesConf(*PVDESKNAMES); + std::string vdesknamesConf = std::any_cast(HyprlandAPI::getConfigValue(PHANDLE, VIRTUALDESK_NAMES_CONF)); + parseNamesConf(vdesknamesConf); manager->loadLayoutConf(); } @@ -257,11 +258,11 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { HyprlandAPI::addDispatcher(PHANDLE, PRINTLAYOUT_DISPATCH_STR, printLayoutDispatch); // Configs - HyprlandAPI::addConfigValue(PHANDLE, VIRTUALDESK_NAMES_CONF, SConfigValue{.strValue = "unset"}); - HyprlandAPI::addConfigValue(PHANDLE, CYCLEWORKSPACES_CONF, SConfigValue{.intValue = 1}); - HyprlandAPI::addConfigValue(PHANDLE, REMEMBER_LAYOUT_CONF, SConfigValue{.strValue = REMEMBER_SIZE}); - HyprlandAPI::addConfigValue(PHANDLE, NOTIFY_INIT, SConfigValue{.intValue = 1}); - HyprlandAPI::addConfigValue(PHANDLE, VERBOSE_LOGS, SConfigValue{.intValue = 0}); + HyprlandAPI::addConfigValue(PHANDLE, VIRTUALDESK_NAMES_CONF, Hyprlang::STRING{"unset"}); + HyprlandAPI::addConfigValue(PHANDLE, CYCLEWORKSPACES_CONF, Hyprlang::INT{1}); + HyprlandAPI::addConfigValue(PHANDLE, REMEMBER_LAYOUT_CONF, Hyprlang::STRING{REMEMBER_SIZE.c_str()}); + HyprlandAPI::addConfigValue(PHANDLE, NOTIFY_INIT, Hyprlang::INT{1}); + HyprlandAPI::addConfigValue(PHANDLE, VERBOSE_LOGS, Hyprlang::INT{0}); onWorkspaceChangeHook = HyprlandAPI::registerCallbackDynamic(PHANDLE, "workspace", onWorkspaceChange); onConfigReloadedHook = HyprlandAPI::registerCallbackDynamic(PHANDLE, "configReloaded", onConfigReloaded); @@ -271,5 +272,5 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { // Initialize first vdesk HyprlandAPI::reloadConfig(); - return {"virtual-desktops", "Virtual desktop like workspaces", "LevMyskin", "2.1.0"}; + return {"virtual-desktops", "Virtual desktop like workspaces", "LevMyskin", "2.1.1"}; } diff --git a/src/utils.cpp b/src/utils.cpp index 5b693bb..d760300 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -51,8 +51,8 @@ RememberLayoutConf layoutConfFromString(const std::string& conf) { } bool isVerbose() { - static auto* const PVERBOSELOGS = &HyprlandAPI::getConfigValue(PHANDLE, VERBOSE_LOGS)->intValue; - return *PVERBOSELOGS; + static auto* const PVERBOSELOGS = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, VERBOSE_LOGS); + return **PVERBOSELOGS; } std::vector> currentlyEnabledMonitors(const CMonitor* exclude) { From bc404b8c65b33ae58a0f091f9934100d492904e4 Mon Sep 17 00:00:00 2001 From: Alessio Molinari Date: Wed, 28 Feb 2024 21:54:02 +0100 Subject: [PATCH 2/2] fix: fix calls to static ptrs --- src/VirtualDeskManager.cpp | 4 ++-- src/main.cpp | 19 +++++++++++-------- src/utils.cpp | 2 +- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/VirtualDeskManager.cpp b/src/VirtualDeskManager.cpp index 4fc43c5..68e3ed3 100644 --- a/src/VirtualDeskManager.cpp +++ b/src/VirtualDeskManager.cpp @@ -163,13 +163,13 @@ void VirtualDeskManager::loadLayoutConf() { // Maybe in a future release :) if (confLoaded) return; - static auto* const PREMEMBER_LAYOUT = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, REMEMBER_LAYOUT_CONF); + static auto* const PREMEMBER_LAYOUT = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, REMEMBER_LAYOUT_CONF)->getDataStaticPtr(); conf = layoutConfFromString(*PREMEMBER_LAYOUT); confLoaded = true; } void VirtualDeskManager::cycleWorkspaces() { - static auto* const PCYCLEWORKSPACES = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, CYCLEWORKSPACES_CONF); + static auto* const PCYCLEWORKSPACES = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, CYCLEWORKSPACES_CONF)->getDataStaticPtr(); if (!**PCYCLEWORKSPACES) return; diff --git a/src/main.cpp b/src/main.cpp index 7f8291d..69f7aad 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,12 +26,12 @@ bool needsReloading = false; bool monitorLayoutChanging = false; inline CFunctionHook* g_pMonitorDestroy = nullptr; -typedef void (*origMonitorDestroy)(void*, void*); +typedef void (*origMonitorDestroy)(void*, void*); -inline CFunctionHook* g_pMonitorAdded = nullptr; -typedef void (*origMonitorAdded)(void*, void*); +inline CFunctionHook* g_pMonitorAdded = nullptr; +typedef void (*origMonitorAdded)(void*, void*); -void parseNamesConf(std::string& conf) { +void parseNamesConf(std::string& conf) { size_t pos; size_t delim; std::string rule; @@ -218,13 +218,16 @@ void onRender(void*, SCallbackInfo&, std::any val) { } void onConfigReloaded(void*, SCallbackInfo&, std::any val) { - static auto* const PNOTIFYINIT = (Hyprlang::INT const*)HyprlandAPI::getConfigValue(PHANDLE, NOTIFY_INIT); - if (*PNOTIFYINIT && !notifiedInit) { + static auto* const PNOTIFYINIT = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, NOTIFY_INIT)->getDataStaticPtr(); + printLog("aiuto"); + if (**PNOTIFYINIT && !notifiedInit) { HyprlandAPI::addNotification(PHANDLE, "Virtual desk Initialized successfully!", CColor{0.f, 1.f, 1.f, 1.f}, 5000); notifiedInit = true; } - std::string vdesknamesConf = std::any_cast(HyprlandAPI::getConfigValue(PHANDLE, VIRTUALDESK_NAMES_CONF)); - parseNamesConf(vdesknamesConf); + printLog("aiuto2"); + static auto* const PVDESKNAMESCONF = (Hyprlang::STRING const*)(HyprlandAPI::getConfigValue(PHANDLE, VIRTUALDESK_NAMES_CONF))->getDataStaticPtr(); + auto vdeskNamesConf = std::string{*PVDESKNAMESCONF}; + parseNamesConf(vdeskNamesConf); manager->loadLayoutConf(); } diff --git a/src/utils.cpp b/src/utils.cpp index d760300..2064b75 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -51,7 +51,7 @@ RememberLayoutConf layoutConfFromString(const std::string& conf) { } bool isVerbose() { - static auto* const PVERBOSELOGS = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, VERBOSE_LOGS); + static auto* const PVERBOSELOGS = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, VERBOSE_LOGS)->getDataStaticPtr(); return **PVERBOSELOGS; }