aboutsummaryrefslogtreecommitdiff
path: root/layer_surface.c
diff options
context:
space:
mode:
authorJack Jamison <jackqjamison@gmail.com>2025-10-17 18:21:51 -0400
committerJack Jamison <jackqjamison@gmail.com>2025-10-17 18:21:51 -0400
commitec8c94dc43db11c79ef58b212cacfadec09bb59c (patch)
treedac513e9acb40b2d6f606031bb4d9299e2e8c423 /layer_surface.c
parent7abba4bd6aea943870bfd571866e36a6167c80a2 (diff)
lines argument
Diffstat (limited to 'layer_surface.c')
-rw-r--r--layer_surface.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/layer_surface.c b/layer_surface.c
index eb23da9..017ac8a 100644
--- a/layer_surface.c
+++ b/layer_surface.c
@@ -1,18 +1,33 @@
#include "./state.h"
+#include "array.h"
struct zwlr_layer_surface_v1_listener layer_surface_listener;
void create_surface(client_state* state) {
+ // figure out anchor
+ uint32_t anchor = ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
+ ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT |
+ ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT;
+ if (state->lines > 0) {
+ anchor |= ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM;
+ }
+
+ // figure out size
+ uint32_t desired_width = 0;
+ uint32_t desired_height = state->line_height;
+ if (state->lines > 0) {
+ desired_width = 600; // figure out later
+ desired_height = (state->lines + 1) * state->line_height;
+ }
+
+ // create surface
state->surface = wl_compositor_create_surface(state->compositor);
state->layer_surface = zwlr_layer_shell_v1_get_layer_surface(
state->layer_shell, state->surface, NULL,
ZWLR_LAYER_SHELL_V1_LAYER_TOP, "swenu");
zwlr_layer_surface_v1_add_listener(state->layer_surface, &layer_surface_listener, state);
- zwlr_layer_surface_v1_set_size(state->layer_surface, 600, 400);
- zwlr_layer_surface_v1_set_anchor(state->layer_surface, ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT);
+ zwlr_layer_surface_v1_set_size(state->layer_surface, desired_width, desired_height);
+ zwlr_layer_surface_v1_set_anchor(state->layer_surface, anchor);
zwlr_layer_surface_v1_set_exclusive_zone(state->layer_surface, -1);
zwlr_layer_surface_v1_set_margin(state->layer_surface, 0, 0, 0, 0);
zwlr_layer_surface_v1_set_keyboard_interactivity(state->layer_surface, ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE);