layer shell working

This commit is contained in:
Rakarake 2025-12-27 01:14:00 +01:00
parent 29a8910556
commit 5f412e825c

View file

@ -59,6 +59,7 @@ static void zwlr_layer_surface_v1_configure(void *data, struct zwlr_layer_surfac
state->width = width;
state->height = height;
wl_egl_window_resize(state->egl_window, width, height, 0, 0);
zwlr_layer_surface_v1_ack_configure(zwlr_layer_surface_v1, serial);
}
static const struct zwlr_layer_surface_v1_listener zwlr_layer_surface_v1_listener = {
@ -98,8 +99,6 @@ static void registry_handle_global(
}
if ((strcmp(interface, zwlr_layer_shell_v1_interface.name) == 0) && (state->output_type == OUTPUT_LAYER)) {
state->zwlr_layer_shell_v1 = wl_registry_bind(registry, name, &zwlr_layer_shell_v1_interface, 4);
int layer = ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND;
state->zwlr_layer_surface_v1 = zwlr_layer_shell_v1_get_layer_surface(state->zwlr_layer_shell_v1, state->wl_surface, NULL, layer, "wallpaper");
}
if (strcmp(interface, wl_output_interface.name) == 0) {
state->wl_output = wl_registry_bind(
@ -215,13 +214,21 @@ void wayland_init(struct client_state *state, int output_type) {
state->output_type = output_type;
state->wl_display = wl_display_connect(NULL);
state->wl_registry = wl_display_get_registry(state->wl_display);
state->wl_output = NULL;
wl_registry_add_listener(state->wl_registry, &wl_registry_listener, state);
wl_display_roundtrip(state->wl_display);
// wlr_layer_shell
//int layer = ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND;
//struct zwlr_layer_surface_v1 *zwlr_layer_surface = zwlr_layer_shell_v1_get_layer_surface(state->zwlr_layer_shell_v1, state->wl_surface, state->wl_output, layer, "wallpaper");
// toplevel
if (output_type == OUTPUT_LAYER) {
// wlr_layer_shell
int layer = ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND;
state->zwlr_layer_surface_v1 = zwlr_layer_shell_v1_get_layer_surface(state->zwlr_layer_shell_v1, state->wl_surface, state->wl_output, layer, "wallpaper");
zwlr_layer_surface_v1_set_anchor(state->zwlr_layer_surface_v1,
ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM | ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP
| ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT);
zwlr_layer_surface_v1_set_size(state->zwlr_layer_surface_v1, 0, 0);
zwlr_layer_surface_v1_add_listener(state->zwlr_layer_surface_v1, &zwlr_layer_surface_v1_listener, state);
}
wl_surface_commit(state->wl_surface);
egl_init(state);