commit c24785e579166daa08817f09cb20d500ae5e4862
Author: Nihal Jere <nihal@nihaljere.xyz>
Date: Thu, 3 Jun 2021 14:29:56 -0500
initial commit
Diffstat:
A | velocior.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);
+}