commit c1031d84655d2658dfeb8f4b93f099adee0494be
parent 4852087e6166062d33372bd2869fce4033232e08
Author: Ferdinand Bachmann <ferdinand.bachmann@yrlf.at>
Date: Sun, 16 Feb 2025 18:37:25 +0100
sway/ipc-json: add ext-foreign-toplevel-handle identifier to get_tree ipc output
Fixes #8291
Diffstat:
3 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
@@ -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));
diff --git a/sway/sway-ipc.7.scd b/sway/sway-ipc.7.scd
@@ -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
diff --git a/swaymsg/main.c b/swaymsg/main.c
@@ -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);
}