mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-26 17:05:59 +01:00
show groupings and swallowing in hyprctl (#1159)
* feat: show groupings and swallowing in hyprctl
This commit is contained in:
parent
ffc580dda9
commit
826e35f7a4
1 changed files with 36 additions and 4 deletions
|
@ -68,6 +68,34 @@ R"#({
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::string getGroupedData(CWindow* w, HyprCtl::eHyprCtlOutputFormat format) {
|
||||||
|
const bool isJson = format == HyprCtl::FORMAT_JSON;
|
||||||
|
if (g_pLayoutManager->getCurrentLayout()->getLayoutName() != "dwindle")
|
||||||
|
return isJson ? "" : "0";
|
||||||
|
|
||||||
|
SLayoutMessageHeader header;
|
||||||
|
header.pWindow = w;
|
||||||
|
const auto groupMembers = std::any_cast<std::deque<CWindow*>>(g_pLayoutManager->getCurrentLayout()->layoutMessage(header, "groupinfo"));
|
||||||
|
if (groupMembers.empty())
|
||||||
|
return isJson ? "" : "0";
|
||||||
|
|
||||||
|
const auto comma = isJson ? ", " : ",";
|
||||||
|
const auto fmt = isJson ? "\"0x%x\"" : "%x";
|
||||||
|
std::ostringstream result;
|
||||||
|
|
||||||
|
bool first = true;
|
||||||
|
for (auto& gw : groupMembers) {
|
||||||
|
if (first)
|
||||||
|
first = false;
|
||||||
|
else
|
||||||
|
result << comma;
|
||||||
|
|
||||||
|
result << getFormat(fmt, gw);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.str();
|
||||||
|
}
|
||||||
|
|
||||||
static std::string getWindowData(CWindow* w, HyprCtl::eHyprCtlOutputFormat format) {
|
static std::string getWindowData(CWindow* w, HyprCtl::eHyprCtlOutputFormat format) {
|
||||||
if (format == HyprCtl::FORMAT_JSON) {
|
if (format == HyprCtl::FORMAT_JSON) {
|
||||||
return getFormat(
|
return getFormat(
|
||||||
|
@ -87,7 +115,9 @@ R"#({
|
||||||
"xwayland": %s,
|
"xwayland": %s,
|
||||||
"pinned": %s,
|
"pinned": %s,
|
||||||
"fullscreen": %s,
|
"fullscreen": %s,
|
||||||
"fullscreenMode": %i
|
"fullscreenMode": %i,
|
||||||
|
"grouped": [%s],
|
||||||
|
"swallowing": %s
|
||||||
},)#",
|
},)#",
|
||||||
w,
|
w,
|
||||||
(int)w->m_vRealPosition.goalv().x, (int)w->m_vRealPosition.goalv().y,
|
(int)w->m_vRealPosition.goalv().x, (int)w->m_vRealPosition.goalv().y,
|
||||||
|
@ -101,11 +131,13 @@ R"#({
|
||||||
((int)w->m_bIsX11 == 1 ? "true" : "false"),
|
((int)w->m_bIsX11 == 1 ? "true" : "false"),
|
||||||
(w->m_bPinned ? "true" : "false"),
|
(w->m_bPinned ? "true" : "false"),
|
||||||
(w->m_bIsFullscreen ? "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_bIsFullscreen ? (g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_efFullscreenMode : 0) : 0),
|
||||||
|
getGroupedData(w, format).c_str(),
|
||||||
|
(w->m_pSwallowed ? getFormat("\"0x%x\"", w->m_pSwallowed).c_str() : "null")
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return getFormat("Window %x -> %s:\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: %i\n\txwayland: %i\n\tpinned: %i\n\tfullscreen: %i\n\tfullscreenmode: %i\n\n",
|
return getFormat("Window %x -> %s:\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: %i\n\txwayland: %i\n\tpinned: %i\n\tfullscreen: %i\n\tfullscreenmode: %i\n\tgrouped: %s\n\tswallowing: %x\n\n",
|
||||||
w, w->m_szTitle.c_str(), (int)w->m_vRealPosition.goalv().x, (int)w->m_vRealPosition.goalv().y, (int)w->m_vRealSize.goalv().x, (int)w->m_vRealSize.goalv().y, w->m_iWorkspaceID, (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, (w->m_bIsFullscreen ? (g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_efFullscreenMode : 0) : 0));
|
w, w->m_szTitle.c_str(), (int)w->m_vRealPosition.goalv().x, (int)w->m_vRealPosition.goalv().y, (int)w->m_vRealSize.goalv().x, (int)w->m_vRealSize.goalv().y, w->m_iWorkspaceID, (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, (w->m_bIsFullscreen ? (g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_efFullscreenMode : 0) : 0), getGroupedData(w, format).c_str(), w->m_pSwallowed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue