Added layer_shell_surfaces to get_output in swayipc
This commit is contained in:
parent
1030f08b06
commit
63c7e95332
2 changed files with 77 additions and 3 deletions
|
@ -10,6 +10,7 @@
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "sway/config.h"
|
#include "sway/config.h"
|
||||||
#include "sway/ipc-json.h"
|
#include "sway/ipc-json.h"
|
||||||
|
#include "sway/layers.h"
|
||||||
#include "sway/tree/container.h"
|
#include "sway/tree/container.h"
|
||||||
#include "sway/tree/view.h"
|
#include "sway/tree/view.h"
|
||||||
#include "sway/tree/workspace.h"
|
#include "sway/tree/workspace.h"
|
||||||
|
@ -273,7 +274,8 @@ static json_object *ipc_json_create_node(int id, const char* type, char *name,
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipc_json_describe_wlr_output(struct wlr_output *wlr_output, json_object *object) {
|
static void ipc_json_describe_wlr_output(struct wlr_output *wlr_output,
|
||||||
|
struct sway_output *output, json_object *object) {
|
||||||
json_object_object_add(object, "primary", json_object_new_boolean(false));
|
json_object_object_add(object, "primary", json_object_new_boolean(false));
|
||||||
json_object_object_add(object, "make",
|
json_object_object_add(object, "make",
|
||||||
json_object_new_string(wlr_output->make ? wlr_output->make : "Unknown"));
|
json_object_new_string(wlr_output->make ? wlr_output->make : "Unknown"));
|
||||||
|
@ -299,7 +301,7 @@ static void ipc_json_describe_wlr_output(struct wlr_output *wlr_output, json_obj
|
||||||
|
|
||||||
static void ipc_json_describe_output(struct sway_output *output,
|
static void ipc_json_describe_output(struct sway_output *output,
|
||||||
json_object *object) {
|
json_object *object) {
|
||||||
ipc_json_describe_wlr_output(output->wlr_output, object);
|
ipc_json_describe_wlr_output(output->wlr_output, output, object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipc_json_describe_enabled_output(struct sway_output *output,
|
static void ipc_json_describe_enabled_output(struct sway_output *output,
|
||||||
|
@ -331,6 +333,51 @@ static void ipc_json_describe_enabled_output(struct sway_output *output,
|
||||||
json_object_object_add(object, "adaptive_sync_status",
|
json_object_object_add(object, "adaptive_sync_status",
|
||||||
json_object_new_string(adaptive_sync_status));
|
json_object_new_string(adaptive_sync_status));
|
||||||
|
|
||||||
|
struct json_object *layers = json_object_new_array();
|
||||||
|
size_t len = sizeof(output->layers) / sizeof(output->layers[0]);
|
||||||
|
for (size_t i = 0; i < len; ++i) {
|
||||||
|
struct sway_layer_surface *lsurface;
|
||||||
|
wl_list_for_each(lsurface, &output->layers[i], link) {
|
||||||
|
json_object *layer = json_object_new_object();
|
||||||
|
|
||||||
|
json_object_object_add(layer, "namespace",
|
||||||
|
json_object_new_string(lsurface->layer_surface->namespace));
|
||||||
|
|
||||||
|
char *layer_name;
|
||||||
|
switch (lsurface->layer) {
|
||||||
|
case ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND:
|
||||||
|
layer_name = "background";
|
||||||
|
break;
|
||||||
|
case ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM:
|
||||||
|
layer_name = "bottom";
|
||||||
|
break;
|
||||||
|
case ZWLR_LAYER_SHELL_V1_LAYER_TOP:
|
||||||
|
layer_name = "top";
|
||||||
|
break;
|
||||||
|
case ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY:
|
||||||
|
layer_name = "overlay";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
json_object_object_add(layer, "layer",
|
||||||
|
json_object_new_string(layer_name));
|
||||||
|
|
||||||
|
json_object *extent = json_object_new_object();
|
||||||
|
json_object_object_add(extent, "width",
|
||||||
|
json_object_new_int(lsurface->extent.width));
|
||||||
|
json_object_object_add(extent, "height",
|
||||||
|
json_object_new_int(lsurface->extent.height));
|
||||||
|
json_object_object_add(extent, "x",
|
||||||
|
json_object_new_int(lsurface->extent.x));
|
||||||
|
json_object_object_add(extent, "y",
|
||||||
|
json_object_new_int(lsurface->extent.y));
|
||||||
|
json_object_object_add(layer, "extent", extent);
|
||||||
|
|
||||||
|
json_object_array_add(layers, layer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
json_object_object_add(object, "layer_shell_surfaces", layers);
|
||||||
|
|
||||||
struct sway_workspace *ws = output_get_active_workspace(output);
|
struct sway_workspace *ws = output_get_active_workspace(output);
|
||||||
if (!sway_assert(ws, "Expected output to have a workspace")) {
|
if (!sway_assert(ws, "Expected output to have a workspace")) {
|
||||||
return;
|
return;
|
||||||
|
@ -413,7 +460,7 @@ json_object *ipc_json_describe_non_desktop_output(struct sway_output_non_desktop
|
||||||
|
|
||||||
json_object *object = json_object_new_object();
|
json_object *object = json_object_new_object();
|
||||||
|
|
||||||
ipc_json_describe_wlr_output(wlr_output, object);
|
ipc_json_describe_wlr_output(wlr_output, NULL, object);
|
||||||
|
|
||||||
json_object_object_add(object, "non_desktop", json_object_new_boolean(true));
|
json_object_object_add(object, "non_desktop", json_object_new_boolean(true));
|
||||||
json_object_object_add(object, "type", json_object_new_string("output"));
|
json_object_object_add(object, "type", json_object_new_string("output"));
|
||||||
|
|
|
@ -230,6 +230,11 @@ following properties:
|
||||||
: string
|
: string
|
||||||
: The transform currently in use for the output. This can be _normal_, _90_,
|
: The transform currently in use for the output. This can be _normal_, _90_,
|
||||||
_180_, _270_, _flipped-90_, _flipped-180_, or _flipped-270_
|
_180_, _270_, _flipped-90_, _flipped-180_, or _flipped-270_
|
||||||
|
|- layer_shell_surfaces
|
||||||
|
: array
|
||||||
|
: An array of all layer-shell surfaces attached to the output. Each object
|
||||||
|
contains _namespace_, _layer_, and _extent_ object that contains _x_, _y_
|
||||||
|
_width_, and _height_
|
||||||
|- current_workspace
|
|- current_workspace
|
||||||
: string
|
: string
|
||||||
: The workspace currently visible on the output or _null_ for disabled outputs
|
: The workspace currently visible on the output or _null_ for disabled outputs
|
||||||
|
@ -259,6 +264,28 @@ following properties:
|
||||||
"scale": 1.0,
|
"scale": 1.0,
|
||||||
"subpixel_hinting": "rgb",
|
"subpixel_hinting": "rgb",
|
||||||
"transform": "normal",
|
"transform": "normal",
|
||||||
|
"layer_shell_surfaces": [
|
||||||
|
{
|
||||||
|
"namespace": "wallpaper",
|
||||||
|
"layer": "background",
|
||||||
|
"extent": {
|
||||||
|
"width": 2560,
|
||||||
|
"height": 1440,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"namespace": "waybar",
|
||||||
|
"layer": "top",
|
||||||
|
"extent": {
|
||||||
|
"width": 2548,
|
||||||
|
"height": 31,
|
||||||
|
"x": 6,
|
||||||
|
"y": 6
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
"current_workspace": "1",
|
"current_workspace": "1",
|
||||||
"modes": [
|
"modes": [
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue