mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-04 06:01:56 -07:00
hyprctl/layers: print pid for layershell clients (#9468)
Adds a `getPID()` fn to layershell to print it in `hyprctl layers`
This commit is contained in:
@@ -479,9 +479,11 @@ static std::string layersRequest(eHyprCtlOutputFormat format, std::string reques
|
|||||||
"y": {},
|
"y": {},
|
||||||
"w": {},
|
"w": {},
|
||||||
"h": {},
|
"h": {},
|
||||||
"namespace": "{}"
|
"namespace": "{}",
|
||||||
|
"pid": {}
|
||||||
}},)#",
|
}},)#",
|
||||||
(uintptr_t)layer.get(), layer->geometry.x, layer->geometry.y, layer->geometry.width, layer->geometry.height, escapeJSONStrings(layer->szNamespace));
|
(uintptr_t)layer.get(), layer->geometry.x, layer->geometry.y, layer->geometry.width, layer->geometry.height, escapeJSONStrings(layer->szNamespace),
|
||||||
|
layer->getPID());
|
||||||
}
|
}
|
||||||
|
|
||||||
trimTrailingComma(result);
|
trimTrailingComma(result);
|
||||||
@@ -512,8 +514,8 @@ static std::string layersRequest(eHyprCtlOutputFormat format, std::string reques
|
|||||||
result += std::format("\tLayer level {} ({}):\n", layerLevel, levelNames[layerLevel]);
|
result += std::format("\tLayer level {} ({}):\n", layerLevel, levelNames[layerLevel]);
|
||||||
|
|
||||||
for (auto const& layer : level) {
|
for (auto const& layer : level) {
|
||||||
result += std::format("\t\tLayer {:x}: xywh: {} {} {} {}, namespace: {}\n", (uintptr_t)layer.get(), layer->geometry.x, layer->geometry.y, layer->geometry.width,
|
result += std::format("\t\tLayer {:x}: xywh: {} {} {} {}, namespace: {}, pid: {}\n", (uintptr_t)layer.get(), layer->geometry.x, layer->geometry.y,
|
||||||
layer->geometry.height, layer->szNamespace);
|
layer->geometry.width, layer->geometry.height, layer->szNamespace, layer->getPID());
|
||||||
}
|
}
|
||||||
|
|
||||||
layerLevel++;
|
layerLevel++;
|
||||||
|
@@ -584,3 +584,15 @@ int CLayerSurface::popupsCount() {
|
|||||||
MONITORID CLayerSurface::monitorID() {
|
MONITORID CLayerSurface::monitorID() {
|
||||||
return monitor ? monitor->ID : MONITOR_INVALID;
|
return monitor ? monitor->ID : MONITOR_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pid_t CLayerSurface::getPID() {
|
||||||
|
pid_t PID = -1;
|
||||||
|
|
||||||
|
if (!layerSurface || !layerSurface->surface || !layerSurface->surface->getResource() || !layerSurface->surface->getResource()->resource() ||
|
||||||
|
!layerSurface->surface->getResource()->resource()->client)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
wl_client_get_credentials(layerSurface->surface->getResource()->resource()->client, &PID, nullptr, nullptr);
|
||||||
|
|
||||||
|
return PID;
|
||||||
|
}
|
||||||
|
@@ -61,6 +61,8 @@ class CLayerSurface {
|
|||||||
std::string szNamespace = "";
|
std::string szNamespace = "";
|
||||||
UP<CPopup> popupHead;
|
UP<CPopup> popupHead;
|
||||||
|
|
||||||
|
pid_t getPID();
|
||||||
|
|
||||||
void onDestroy();
|
void onDestroy();
|
||||||
void onMap();
|
void onMap();
|
||||||
void onUnmap();
|
void onUnmap();
|
||||||
|
Reference in New Issue
Block a user