2 * Copyright (c) 2014, Andy Spencer <andy753421@gmail.com>
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
21 #include <xkbcommon/xkbcommon.h>
22 #include <wayland-server.h>
23 #include <wayland-client.h>
30 /* Internal structures */
36 static struct wl_display *display;
37 static struct wl_event_loop *events;
42 static const char * cmd_term[] = { "st-wl", NULL };
43 static const char * cmd_menu[] = { "dmenu_run-wl", NULL };
45 static void cmd_exit(void *data, uint32_t time, uint32_t value, uint32_t state)
47 if (state != WL_KEYBOARD_KEY_STATE_PRESSED)
54 static void cmd_spawn(void *data, uint32_t time, uint32_t value, uint32_t state)
57 if (state != WL_KEYBOARD_KEY_STATE_PRESSED)
60 printf("cmd_spawn: %s\n", cmd[0]);
71 static void new_window(void)
73 printf("new_window\n");
76 static void new_screen(void)
78 printf("new_screen\n");
84 void sys_move(win_t *win, int x, int y, int w, int h)
86 printf("sys_move: %p - %d,%d %dx%d\n",
90 void sys_raise(win_t *win)
92 printf("sys_raise: %p\n", win);
95 void sys_focus(win_t *win)
97 printf("sys_focus: %p\n", win);
100 void sys_show(win_t *win, state_t state)
102 printf("sys_show: %p: %d", win, state);
105 void sys_watch(win_t *win, event_t ev, mod_t mod)
107 printf("sys_watch: %p - %x %hhx\n",
108 win, ev, mod2int(mod));
111 void sys_unwatch(win_t *win, event_t ev, mod_t mod)
113 printf("sys_unwatch: %p - %x %hhx\n",
114 win, ev, mod2int(mod));
117 list_t *sys_info(win_t *win)
119 printf("sys_info: %p\n", win);
120 return list_insert(NULL, win);
123 win_t *sys_init(void)
125 printf("sys_init\n");
127 /* Register log handler */
128 wl_log_set_handler_server((wl_log_func_t)vprintf);
130 /* Open the display */
131 if (!(display = wl_display_create()))
132 error("Unable to create display");
133 if (wl_display_add_socket(display, NULL) != 0)
134 error("Unable to add socket");
135 if (!(events = wl_display_get_event_loop(display)))
136 error("Unable to get event loop");
138 /* Add input devices */
149 void sys_run(win_t *root)
151 printf("sys_run: %p\n", root);
152 wl_display_run(display);
157 printf("sys_exit\n");
161 void sys_free(win_t *root)
163 printf("sys_free: %p\n", root);