diff options
| author | giskard <rtgiskard@gmail.com> | 2024-05-29 05:37:24 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-28 23:37:24 +0200 |
| commit | ebf258788e46cd0320fb17138ba413f719180418 (patch) | |
| tree | d7b96e24caab26cb3d46b2857eebf90ad475b2a9 /src/managers/KeybindManager.cpp | |
| parent | 73b133d0155d376f35833cd992f821399a42f76b (diff) | |
config: add tag dispacther and window rule (#6211)
Diffstat (limited to 'src/managers/KeybindManager.cpp')
| -rw-r--r-- | src/managers/KeybindManager.cpp | 33 |
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 = ""; |
