diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-04-03 19:16:51 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-04-03 19:16:51 +0100 |
| commit | a43b18ae265e83cb2e5968b46e5bc2b9f666f81f (patch) | |
| tree | 16de41c9e2f17507438f72b451398747085c5f89 /src | |
| parent | 0a099ca2ab8e4b5da01189202740bbc4bbe81f5b (diff) | |
Feat: add initial class/title to hyprctl clients
Diffstat (limited to 'src')
| -rw-r--r-- | src/Window.hpp | 26 | ||||
| -rw-r--r-- | src/debug/HyprCtl.cpp | 13 | ||||
| -rw-r--r-- | src/events/Windows.cpp | 3 |
3 files changed, 25 insertions, 17 deletions
diff --git a/src/Window.hpp b/src/Window.hpp index 0b9f9f81..b93f74b7 100644 --- a/src/Window.hpp +++ b/src/Window.hpp @@ -107,19 +107,19 @@ struct SWindowSpecialRenderData { }; struct SWindowAdditionalConfigData { - std::string animationStyle = std::string(""); - CWindowOverridableVar<int> rounding = -1; // -1 means no - CWindowOverridableVar<bool> forceNoBlur = false; - CWindowOverridableVar<bool> forceOpaque = false; + std::string animationStyle = std::string(""); + CWindowOverridableVar<int> rounding = -1; // -1 means no + CWindowOverridableVar<bool> forceNoBlur = false; + CWindowOverridableVar<bool> forceOpaque = false; CWindowOverridableVar<bool> forceOpaqueOverridden = false; // if true, a rule will not change the forceOpaque state. This is for the force opaque dispatcher. - CWindowOverridableVar<bool> forceAllowsInput = false; - CWindowOverridableVar<bool> forceNoAnims = false; - CWindowOverridableVar<bool> forceNoBorder = false; - CWindowOverridableVar<bool> forceNoShadow = false; - CWindowOverridableVar<bool> windowDanceCompat = false; - CWindowOverridableVar<bool> noMaxSize = false; - CWindowOverridableVar<bool> dimAround = false; - CWindowOverridableVar<bool> forceRGBX = false; + CWindowOverridableVar<bool> forceAllowsInput = false; + CWindowOverridableVar<bool> forceNoAnims = false; + CWindowOverridableVar<bool> forceNoBorder = false; + CWindowOverridableVar<bool> forceNoShadow = false; + CWindowOverridableVar<bool> windowDanceCompat = false; + CWindowOverridableVar<bool> noMaxSize = false; + CWindowOverridableVar<bool> dimAround = false; + CWindowOverridableVar<bool> forceRGBX = false; }; struct SWindowRule { @@ -195,6 +195,8 @@ class CWindow { bool m_bWasMaximized = false; uint64_t m_iMonitorID = -1; std::string m_szTitle = ""; + std::string m_szInitialTitle = ""; + std::string m_szInitialClass = ""; int m_iWorkspaceID = -1; bool m_bIsMapped = false; diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp index 4d65135e..97a1f750 100644 --- a/src/debug/HyprCtl.cpp +++ b/src/debug/HyprCtl.cpp @@ -126,6 +126,8 @@ static std::string getWindowData(CWindow* w, HyprCtl::eHyprCtlOutputFormat forma "monitor": %i, "class": "%s", "title": "%s", + "initialClass": "%s", + "initialTitle": "%s", "pid": %i, "xwayland": %s, "pinned": %s, @@ -142,13 +144,14 @@ static std::string getWindowData(CWindow* w, HyprCtl::eHyprCtlOutputFormat forma std::string("Invalid workspace " + std::to_string(w->m_iWorkspaceID))) .c_str(), ((int)w->m_bIsFloating == 1 ? "true" : "false"), w->m_iMonitorID, escapeJSONStrings(g_pXWaylandManager->getAppIDClass(w)).c_str(), - escapeJSONStrings(g_pXWaylandManager->getTitle(w)).c_str(), w->getPID(), ((int)w->m_bIsX11 == 1 ? "true" : "false"), (w->m_bPinned ? "true" : "false"), - (w->m_bIsFullscreen ? "true" : "false"), + escapeJSONStrings(g_pXWaylandManager->getTitle(w)).c_str(), escapeJSONStrings(w->m_szInitialClass).c_str(), escapeJSONStrings(w->m_szInitialTitle).c_str(), w->getPID(), + ((int)w->m_bIsX11 == 1 ? "true" : "false"), (w->m_bPinned ? "true" : "false"), (w->m_bIsFullscreen ? "true" : "false"), (w->m_bIsFullscreen ? (g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_efFullscreenMode : 0) : 0), w->m_bFakeFullscreenState ? "true" : "false", getGroupedData(w, format).c_str(), (w->m_pSwallowed ? getFormat("\"0x%x\"", w->m_pSwallowed).c_str() : "null")); } else { return getFormat( - "Window %x -> %s:\n\tmapped: %i\n\thidden: %i\n\tat: %i,%i\n\tsize: %i,%i\n\tworkspace: %i (%s)\n\tfloating: %i\n\tmonitor: %i\n\tclass: %s\n\ttitle: %s\n\tpid: " + "Window %x -> %s:\n\tmapped: %i\n\thidden: %i\n\tat: %i,%i\n\tsize: %i,%i\n\tworkspace: %i (%s)\n\tfloating: %i\n\tmonitor: %i\n\tclass: %s\n\ttitle: " + "%s\n\tinitialClass: %s\n\tinitialTitle: %s\n\tpid: " "%i\n\txwayland: %i\n\tpinned: " "%i\n\tfullscreen: %i\n\tfullscreenmode: %i\n\tfakefullscreen: %i\n\tgrouped: %s\n\tswallowing: %x\n\n", w, w->m_szTitle.c_str(), (int)w->m_bIsMapped, (int)w->isHidden(), (int)w->m_vRealPosition.goalv().x, (int)w->m_vRealPosition.goalv().y, (int)w->m_vRealSize.goalv().x, @@ -156,8 +159,8 @@ static std::string getWindowData(CWindow* w, HyprCtl::eHyprCtlOutputFormat forma (w->m_iWorkspaceID == -1 ? "" : g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_szName.c_str() : std::string("Invalid workspace " + std::to_string(w->m_iWorkspaceID)).c_str()), - (int)w->m_bIsFloating, w->m_iMonitorID, g_pXWaylandManager->getAppIDClass(w).c_str(), g_pXWaylandManager->getTitle(w).c_str(), w->getPID(), (int)w->m_bIsX11, - (int)w->m_bPinned, (int)w->m_bIsFullscreen, + (int)w->m_bIsFloating, w->m_iMonitorID, g_pXWaylandManager->getAppIDClass(w).c_str(), g_pXWaylandManager->getTitle(w).c_str(), w->m_szInitialClass.c_str(), + w->m_szInitialTitle.c_str(), w->getPID(), (int)w->m_bIsX11, (int)w->m_bPinned, (int)w->m_bIsFullscreen, (w->m_bIsFullscreen ? (g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_efFullscreenMode : 0) : 0), (int)w->m_bFakeFullscreenState, getGroupedData(w, format).c_str(), w->m_pSwallowed); } diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 4a0d3dbe..95de2305 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -117,6 +117,9 @@ void Events::listener_mapWindow(void* owner, void* data) { bool shouldFocus = true; bool workspaceSpecial = false; + PWINDOW->m_szInitialTitle = g_pXWaylandManager->getTitle(PWINDOW); + PWINDOW->m_szInitialClass = g_pXWaylandManager->getAppIDClass(PWINDOW); + for (auto& r : WINDOWRULES) { if (r.szRule.find("monitor") == 0) { try { |
