sway/ipc-json: add ext-foreign-toplevel-handle identifier to get_tree ipc output

Fixes #8291
This commit is contained in:
Ferdinand Bachmann 2025-02-16 18:37:25 +01:00 committed by Simon Ser
parent 4852087e61
commit c1031d8465
3 changed files with 12 additions and 0 deletions

View file

@ -6,6 +6,7 @@
#include <wlr/config.h>
#include <wlr/types/wlr_content_type_v1.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_ext_foreign_toplevel_list_v1.h>
#include <xkbcommon/xkbcommon.h>
#include "config.h"
#include "log.h"
@ -577,6 +578,10 @@ static void ipc_json_describe_view(struct sway_container *c, json_object *object
json_object_object_add(object, "app_id",
app_id ? json_object_new_string(app_id) : NULL);
json_object_object_add(object, "foreign_toplevel_identifier",
c->view->ext_foreign_toplevel ?
json_object_new_string(c->view->ext_foreign_toplevel->identifier) : NULL);
bool visible = view_is_visible(c->view);
json_object_object_add(object, "visible", json_object_new_boolean(visible));

View file

@ -389,6 +389,9 @@ node and will have the following properties:
|- pid
: integer
: (Only views) The PID of the application that owns the view
|- foreign_toplevel_identifier
: string
: (Only views) The ext-foreign-toplevel-list-v1 toplevel identifier of this node.
|- visible
: boolean
: (Only views) Whether the node is visible

View file

@ -330,6 +330,7 @@ static void pretty_print_tree(json_object *obj, int indent) {
const char *instance = json_object_get_string(json_object_object_get(window_props_obj, "instance"));
const char *class = json_object_get_string(json_object_object_get(window_props_obj, "class"));
int x11_id = json_object_get_int(json_object_object_get(obj, "window"));
const char *foreign_toplevel_id = json_object_get_string(json_object_object_get(obj, "foreign_toplevel_identifier"));
const char *sandbox_engine = json_object_get_string(json_object_object_get(obj, "sandbox_engine"));
const char *sandbox_app_id = json_object_get_string(json_object_object_get(obj, "sandbox_app_id"));
const char *sandbox_instance_id = json_object_get_string(json_object_object_get(obj, "sandbox_instance_id"));
@ -347,6 +348,9 @@ static void pretty_print_tree(json_object *obj, int indent) {
if (x11_id != 0) {
printf(", X11 window: 0x%X", x11_id);
}
if (foreign_toplevel_id != NULL) {
printf(", foreign_toplevel_id: \"%s\"", foreign_toplevel_id);
}
if (sandbox_engine != NULL) {
printf(", sandbox_engine: \"%s\"", sandbox_engine);
}