aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/wm/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cmd/wm/main.c')
-rw-r--r--sys/cmd/wm/main.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/sys/cmd/wm/main.c b/sys/cmd/wm/main.c
index 9d18b01..a447d80 100644
--- a/sys/cmd/wm/main.c
+++ b/sys/cmd/wm/main.c
@@ -5,6 +5,7 @@ Server server = {
.make_input = { .notify = make_input },
.make_monitor = { .notify = make_monitor },
.make_xdg_surface = { .notify = make_xdg_surface },
+ .make_layer_surface = { .notify = make_layer_surface },
.monitor_change = { .notify = monitor_change },
.monitor_test = { .notify = monitor_test },
@@ -16,6 +17,7 @@ Server server = {
.cursor_axis = { .notify = cursor_axis },
.cursor_frame = { .notify = cursor_frame },
+ .request_activate = { .notify = request_activate },
.request_cursor = { .notify = request_cursor },
.request_set_selection = { .notify = request_set_selection },
},
@@ -26,8 +28,9 @@ Server server = {
static inline
void
-init_compositor(void)
+init(void)
{
+ /* compositor initialization */
server.display = wl_display_create();
server.backend = wlr_backend_autocreate(server.display);
server.renderer = wlr_backend_get_renderer(server.backend);
@@ -44,24 +47,23 @@ init_compositor(void)
wlr_primary_selection_v1_device_manager_create(server.display);
wlr_viewporter_create(server.display);
+ server.activate = wlr_xdg_activation_v1_create(server.display);
+ wl_signal_add(&server.activate->events.request_activate, &server.event.request_activate);
+
wlr_data_device_manager_create(server.display);
server.monitor.layout = wlr_output_layout_create();
wl_signal_add(&server.monitor.layout->events.change, &server.event.monitor_change);
+ wlr_xdg_output_manager_v1_create(server.display, server.monitor.layout);
wl_list_init(&server.monitor.list);
wl_signal_add(&server.backend->events.new_output, &server.event.make_monitor);
- /* rearrange monitor layouts */
server.monitor.manager = wlr_output_manager_v1_create(server.display);
wl_signal_add(&server.monitor.manager->events.test, &server.event.monitor_test);
wl_signal_add(&server.monitor.manager->events.apply, &server.event.monitor_apply);
-}
-static inline
-void
-init_shells(void)
-{
+ /* shell initialization */
wl_list_init(&server.client.list);
wl_list_init(&server.client.stack);
wl_list_init(&server.client.focus);
@@ -69,17 +71,16 @@ init_shells(void)
server.shell.xdg = wlr_xdg_shell_create(server.display);
wl_signal_add(&server.shell.xdg->events.new_surface, &server.event.make_xdg_surface);
+ server.shell.layer = wlr_layer_shell_v1_create(server.display);
+ wl_signal_add(&server.shell.layer->events.new_surface, &server.event.make_layer_surface);
+
wlr_server_decoration_manager_set_default_mode(
wlr_server_decoration_manager_create(server.display),
WLR_SERVER_DECORATION_MANAGER_MODE_SERVER
);
wlr_xdg_decoration_manager_v1_create(server.display);
-}
-static inline
-void
-init_inputs(void)
-{
+ /* input initialization */
server.cursor.dot = wlr_cursor_create();
wlr_cursor_attach_output_layout(server.cursor.dot, server.monitor.layout);
@@ -104,7 +105,7 @@ init_inputs(void)
static inline
void
-cleanup(void)
+fini(void)
{
wl_display_destroy_clients(server.display);
@@ -145,9 +146,7 @@ main(int argc, char *argv[])
wlr_log_init(WLR_DEBUG, nil);
- init_compositor();
- init_shells();
- init_inputs();
+ init();
if(!(socket=(char*)wl_display_add_socket_auto(server.display))) {
wlr_backend_destroy(server.backend);
@@ -173,6 +172,6 @@ main(int argc, char *argv[])
wl_display_run(server.display); /* event loop */
- cleanup();
+ fini();
return 0;
}