From 510db64860fa307e33db5fdb843c6cc5a428b5a4 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Thu, 20 Apr 2023 23:59:31 +0100 Subject: hyprctl: allow spaces in cursor themes --- src/debug/HyprCtl.cpp | 47 +++++++++++++++-------------------------------- 1 file changed, 15 insertions(+), 32 deletions(-) (limited to 'src/debug/HyprCtl.cpp') diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp index 0603b182..4153a2d2 100644 --- a/src/debug/HyprCtl.cpp +++ b/src/debug/HyprCtl.cpp @@ -804,47 +804,30 @@ std::string dispatchBatch(std::string request) { } std::string dispatchSetCursor(std::string request) { - std::string curitem = ""; - - auto nextItem = [&]() { - auto idx = request.find_first_of(' '); - - if (idx != std::string::npos) { - curitem = request.substr(0, idx); - request = request.substr(idx + 1); - } else { - curitem = request; - request = ""; - } - - curitem = removeBeginEndSpacesTabs(curitem); - }; - - nextItem(); - nextItem(); - - const auto THEME = curitem; - - nextItem(); + CVarList vars(request, 0, ' '); - const auto SIZE = curitem; + const auto SIZESTR = vars[vars.size() - 1]; + std::string theme = ""; + for (size_t i = 1; i < vars.size() - 1; ++i) + theme += vars[i] + " "; + theme.pop_back(); - if (!isNumber(SIZE)) { + int size = 0; + try { + size = std::stoi(SIZESTR); + } catch (...) { return "size not int"; } - const auto SIZEINT = std::stoi(SIZE); - - if (SIZEINT < 1) { - return "size must be positive"; - } + if (size <= 0) + return "size not positive"; wlr_xcursor_manager_destroy(g_pCompositor->m_sWLRXCursorMgr); - g_pCompositor->m_sWLRXCursorMgr = wlr_xcursor_manager_create(THEME.c_str(), SIZEINT); + g_pCompositor->m_sWLRXCursorMgr = wlr_xcursor_manager_create(theme.c_str(), size); - setenv("XCURSOR_SIZE", SIZE.c_str(), true); - setenv("XCURSOR_THEME", THEME.c_str(), true); + setenv("XCURSOR_SIZE", SIZESTR.c_str(), true); + setenv("XCURSOR_THEME", theme.c_str(), true); for (auto& m : g_pCompositor->m_vMonitors) { wlr_xcursor_manager_load(g_pCompositor->m_sWLRXCursorMgr, m->scale); -- cgit v1.2.3