summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2022-07-01 18:20:10 +0200
committerGitHub <noreply@github.com>2022-07-01 18:20:10 +0200
commit3d294b1aaa76e1b875705f47c74bad2511ec7556 (patch)
tree4d1f1e5a5f5c809d375e617abd8d4e544d88dde2 /src
parent7d7e82d446f097692e24220614951da435dcca2b (diff)
parent2225dca57665059102cd0225b8843a1d90a4f076 (diff)
Merge pull request #292 from Dakes/focus-window-title
Changed dispatcher: focusWindowByClass -> focusWindow. Now supports titles & classes
Diffstat (limited to 'src')
-rw-r--r--src/managers/KeybindManager.cpp26
-rw-r--r--src/managers/KeybindManager.hpp2
2 files changed, 20 insertions, 8 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index f5554f57..cb091c9f 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -30,7 +30,8 @@ CKeybindManager::CKeybindManager() {
m_mDispatchers["resizeactive"] = resizeActive;
m_mDispatchers["moveactive"] = moveActive;
m_mDispatchers["cyclenext"] = circleNext;
- m_mDispatchers["focuswindowbyclass"] = focusWindowByClass;
+ m_mDispatchers["focuswindowbyclass"] = focusWindow;
+ m_mDispatchers["focuswindow"] = focusWindow;
m_mDispatchers["submap"] = setSubmap;
}
@@ -1017,17 +1018,28 @@ void CKeybindManager::circleNext(std::string) {
wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr, MIDPOINT.x, MIDPOINT.y);
}
-void CKeybindManager::focusWindowByClass(std::string clazz) {
- std::regex classCheck(clazz);
+void CKeybindManager::focusWindow(std::string regexp) {
+ bool titleRegex = false;
+ std::regex regexCheck(regexp);
+ if (regexp.find("title:") == 0) {
+ titleRegex = true;
+ regexCheck = std::regex(regexp.substr(6));
+ }
for (auto& w : g_pCompositor->m_vWindows) {
if (!w->m_bIsMapped || w->m_bHidden)
continue;
- const auto windowClass = g_pXWaylandManager->getAppIDClass(w.get());
-
- if (!std::regex_search(windowClass, classCheck))
- continue;
+ if (titleRegex) {
+ const auto windowTitle = g_pXWaylandManager->getTitle(w.get());
+ if (!std::regex_search(windowTitle, regexCheck))
+ continue;
+ }
+ else {
+ const auto windowClass = g_pXWaylandManager->getAppIDClass(w.get());
+ if (!std::regex_search(windowClass, regexCheck))
+ continue;
+ }
Debug::log(LOG, "Focusing to window name: %s", w->m_szTitle.c_str());
diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp
index 117a5ec4..31498677 100644
--- a/src/managers/KeybindManager.hpp
+++ b/src/managers/KeybindManager.hpp
@@ -61,7 +61,7 @@ private:
static void resizeActive(std::string);
static void moveActive(std::string);
static void circleNext(std::string);
- static void focusWindowByClass(std::string);
+ static void focusWindow(std::string);
static void setSubmap(std::string);
friend class CCompositor;