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:
littleblack111
2025-02-26 23:03:06 +08:00
committed by GitHub
parent 6787fe8933
commit 01f4074421
3 changed files with 20 additions and 4 deletions

View File

@@ -479,9 +479,11 @@ static std::string layersRequest(eHyprCtlOutputFormat format, std::string reques
"y": {},
"w": {},
"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);
@@ -512,8 +514,8 @@ static std::string layersRequest(eHyprCtlOutputFormat format, std::string reques
result += std::format("\tLayer level {} ({}):\n", layerLevel, levelNames[layerLevel]);
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,
layer->geometry.height, layer->szNamespace);
result += std::format("\t\tLayer {:x}: xywh: {} {} {} {}, namespace: {}, pid: {}\n", (uintptr_t)layer.get(), layer->geometry.x, layer->geometry.y,
layer->geometry.width, layer->geometry.height, layer->szNamespace, layer->getPID());
}
layerLevel++;

View File

@@ -584,3 +584,15 @@ int CLayerSurface::popupsCount() {
MONITORID CLayerSurface::monitorID() {
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;
}

View File

@@ -61,6 +61,8 @@ class CLayerSurface {
std::string szNamespace = "";
UP<CPopup> popupHead;
pid_t getPID();
void onDestroy();
void onMap();
void onUnmap();