summaryrefslogtreecommitdiff
path: root/src/managers/KeybindManager.cpp
diff options
context:
space:
mode:
authorgiskard <rtgiskard@gmail.com>2024-05-29 05:37:24 +0800
committerGitHub <noreply@github.com>2024-05-28 23:37:24 +0200
commitebf258788e46cd0320fb17138ba413f719180418 (patch)
treed7b96e24caab26cb3d46b2857eebf90ad475b2a9 /src/managers/KeybindManager.cpp
parent73b133d0155d376f35833cd992f821399a42f76b (diff)
config: add tag dispacther and window rule (#6211)
Diffstat (limited to 'src/managers/KeybindManager.cpp')
-rw-r--r--src/managers/KeybindManager.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 41b82d10..4f89315d 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -1,17 +1,16 @@
-#include "KeybindManager.hpp"
-#include "../render/decorations/CHyprGroupBarDecoration.hpp"
-#include "debug/Log.hpp"
-#include "helpers/VarList.hpp"
#include "../config/ConfigValue.hpp"
-#include "TokenManager.hpp"
-#include "../protocols/ShortcutsInhibit.hpp"
#include "../devices/IKeyboard.hpp"
#include "../managers/SeatManager.hpp"
+#include "../protocols/ShortcutsInhibit.hpp"
+#include "../render/decorations/CHyprGroupBarDecoration.hpp"
+#include "KeybindManager.hpp"
+#include "TokenManager.hpp"
+#include "debug/Log.hpp"
+#include "helpers/VarList.hpp"
#include <optional>
-#include <regex>
#include <string>
-#include <tuple>
+#include <string_view>
#include <sys/ioctl.h>
#include <fcntl.h>
@@ -87,6 +86,7 @@ CKeybindManager::CKeybindManager() {
m_mDispatchers["cyclenext"] = circleNext;
m_mDispatchers["focuswindowbyclass"] = focusWindow;
m_mDispatchers["focuswindow"] = focusWindow;
+ m_mDispatchers["tagwindow"] = tagWindow;
m_mDispatchers["submap"] = setSubmap;
m_mDispatchers["pass"] = pass;
m_mDispatchers["sendshortcut"] = sendshortcut;
@@ -1928,6 +1928,23 @@ void CKeybindManager::focusWindow(std::string regexp) {
g_pCompositor->warpCursorTo(PWINDOW->middle());
}
+void CKeybindManager::tagWindow(std::string args) {
+ PHLWINDOW PWINDOW = nullptr;
+ CVarList vars{args, 0, 's', true};
+
+ if (vars.size() == 1)
+ PWINDOW = g_pCompositor->m_pLastWindow.lock();
+ else if (vars.size() == 2)
+ PWINDOW = g_pCompositor->getWindowByRegex(vars[1]);
+ else
+ return;
+
+ if (PWINDOW && PWINDOW->m_tags.applyTag(vars[0])) {
+ PWINDOW->updateDynamicRules();
+ g_pCompositor->updateWindowAnimatedDecorationValues(PWINDOW->m_pSelf.lock());
+ }
+}
+
void CKeybindManager::setSubmap(std::string submap) {
if (submap == "reset" || submap == "") {
m_szCurrentSelectedSubmap = "";