mowc

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.nihaljere.xyz/mowc
Log | Files | Refs

commit c24785e579166daa08817f09cb20d500ae5e4862
Author: Nihal Jere <nihal@nihaljere.xyz>
Date:   Thu,  3 Jun 2021 14:29:56 -0500

initial commit

Diffstat:
Avelocior.c | 67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+), 0 deletions(-)

diff --git a/velocior.c b/velocior.c @@ -0,0 +1,67 @@ +#include <stdlib.h> +#include <string.h> +#include <swc.h> +#include <wayland-server.h> +#include <xkbcommon/xkbcommon.h> + +static struct wl_display *display; +static struct swc_screen *curscreen; +static struct swc_window *curwindow; + +void +new_screen(struct swc_screen *screen) +{ + if (!curscreen) + curscreen = screen; +} + +void +new_window(struct swc_window *window) +{ + if (curwindow) + swc_window_close(curwindow); + + curwindow = window; + swc_window_show(window); + swc_window_focus(window); +} + +struct swc_manager manager = { + .new_screen = new_screen, + .new_window = new_window, +}; + +static void +quit(void *data, uint32_t time, uint32_t value, uint32_t state) +{ + if (state != WL_KEYBOARD_KEY_STATE_PRESSED) + return; + + swc_finalize(); + wl_display_terminate(display); +} + +int +main(int argc, char *argv[]) +{ + struct wl_event_loop *event_loop; + const char *socket; + + display = wl_display_create(); + if (!display) + return 1; + + socket = wl_display_add_socket_auto(display); + if (!socket) + return 1; + setenv("WAYLAND_DISPLAY", socket, 1); + + if (!swc_initialize(display, NULL, &manager)) + return 1; + + swc_add_binding(SWC_BINDING_KEY, SWC_MOD_LOGO, XKB_KEY_q, &quit, NULL); + + event_loop = wl_display_get_event_loop(display); + wl_display_run(display); + wl_display_destroy(display); +}