From 6e6971606d9613f6b5aa1df9ecf68327d079c2cc Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sat, 18 Mar 2023 01:33:48 +0000 Subject: [PATCH] windowrules: allow monitor by str --- src/events/Windows.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 5b96d279..be75dfd9 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -125,11 +125,21 @@ void Events::listener_mapWindow(void* owner, void* data) { if (MONITORSTR == "unset") { PWINDOW->m_iMonitorID = PMONITOR->ID; } else { - const long int MONITOR = std::stoi(MONITORSTR); - if (!g_pCompositor->getMonitorFromID(MONITOR)) - PWINDOW->m_iMonitorID = 0; - else - PWINDOW->m_iMonitorID = MONITOR; + if (isNumber(MONITORSTR)) { + const long int MONITOR = std::stoi(MONITORSTR); + if (!g_pCompositor->getMonitorFromID(MONITOR)) + PWINDOW->m_iMonitorID = 0; + else + PWINDOW->m_iMonitorID = MONITOR; + } else { + const auto PMONITOR = g_pCompositor->getMonitorFromName(MONITORSTR); + if (PMONITOR) + PWINDOW->m_iMonitorID = PMONITOR->ID; + else { + Debug::log(ERR, "No monitor in monitor %s rule", MONITORSTR.c_str()); + continue; + } + } } PWINDOW->m_iWorkspaceID = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID)->activeWorkspace;