diff options
Diffstat (limited to 'rootston/main.c')
-rw-r--r-- | rootston/main.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/rootston/main.c b/rootston/main.c new file mode 100644 index 00000000..c8ec1249 --- /dev/null +++ b/rootston/main.c @@ -0,0 +1,46 @@ +#define _POSIX_C_SOURCE 200112L +#include <assert.h> +#include <stdlib.h> +#include <wayland-server.h> +#include <wlr/backend.h> +#include <wlr/render.h> +#include <wlr/render/gles2.h> +#include <wlr/util/log.h> +#include "rootston/config.h" +#include "rootston/server.h" + +struct roots_server server = { 0 }; + +int main(int argc, char **argv) { + assert(server.config = parse_args(argc, argv)); + assert(server.wl_display = wl_display_create()); + assert(server.wl_event_loop = wl_display_get_event_loop(server.wl_display)); + + assert(server.backend = wlr_backend_autocreate(server.wl_display)); + + assert(server.renderer = wlr_gles2_renderer_create(server.backend)); + wl_display_init_shm(server.wl_display); + server.input = input_create(&server, server.config); + server.desktop = desktop_create(&server, server.config); + server.data_device_manager = wlr_data_device_manager_create( + server.wl_display); + + const char *socket = wl_display_add_socket_auto(server.wl_display); + if (!socket) { + wlr_log_errno(L_ERROR, "Unable to open wayland socket"); + wlr_backend_destroy(server.backend); + return 1; + } + + wlr_log(L_INFO, "Running compositor on wayland display '%s'", socket); + setenv("_WAYLAND_DISPLAY", socket, true); + + if (!wlr_backend_start(server.backend)) { + wlr_log(L_ERROR, "Failed to start backend"); + wlr_backend_destroy(server.backend); + return 1; + } + + wl_display_run(server.wl_display); + return 0; +} |