diff --git a/.gitignore b/.gitignore index 9267cd5..cca8e6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ sowm -sowm.o config.h .ccls-cache +src/*.o diff --git a/Makefile b/Makefile index 0fe2f58..9a15a34 100644 --- a/Makefile +++ b/Makefile @@ -4,16 +4,22 @@ PREFIX = /usr/local ALL_WARN = -Wall -Wextra -pedantic -Wmissing-prototypes -Wstrict-prototypes ALL_CFLAGS = $(CFLAGS) $(CPPFLAGS) -std=c99 $(ALL_WARN) -ALL_LDFLAGS = $(LDFLAGS) -lxcb +ALL_LDFLAGS = $(LDFLAGS) $(LIBS) -lxcb CC = cc -all: sowm +OBJ = src/event.o src/sowm.o +HDR = src/event.h -sowm: sowm.c Makefile - $(CC) -O3 $(ALL_CFLAGS) -o $@ $< $(ALL_LDFLAGS) +.c.o: + $(CC) $(ALL_CFLAGS) -c -o $@ $< -install: all +sowm: $(OBJ) + $(CC) $(ALL_CFLAGS) -o $@ $(OBJ) $(ALL_LDFLAGS) + +$(OBJ): $(HDR) + +install: sowm mkdir -p $(DESTDIR)/bin cp sowm $(DESTDIR)/bin/sowm @@ -23,4 +29,4 @@ uninstall: clean: rm -f sowm *.o -.PHONY: all install uninstall clean +.PHONY: install uninstall clean diff --git a/src/event.c b/src/event.c new file mode 100644 index 0000000..7d39574 --- /dev/null +++ b/src/event.c @@ -0,0 +1,23 @@ +#include "event.h" + +void (*events[XCB_NO_OPERATION])(xcb_generic_event_t *) = { + [XCB_BUTTON_PRESS] = event_button_press, + [XCB_BUTTON_RELEASE] = event_button_release, + [XCB_CONFIGURE_REQUEST] = event_configure_request, + [XCB_KEY_PRESS] = event_key_press, + [XCB_CREATE_NOTIFY] = event_notify_create, + [XCB_DESTROY_NOTIFY] = event_notify_destroy, + [XCB_ENTER_NOTIFY] = event_notify_enter, + [XCB_MOTION_NOTIFY] = event_notify_motion +}; + +/* todo */ +void event_button_press(xcb_generic_event_t *ev) { } +void event_button_release(xcb_generic_event_t *ev) { } +void event_configure_request(xcb_generic_event_t *ev) { } +void event_key_press(xcb_generic_event_t *ev) { } +void event_notify_create(xcb_generic_event_t *ev) { } +void event_notify_destroy(xcb_generic_event_t *ev) { } +void event_notify_enter(xcb_generic_event_t *ev) { } +void event_notify_motion(xcb_generic_event_t *ev) { } + diff --git a/src/event.h b/src/event.h new file mode 100644 index 0000000..1dd44b3 --- /dev/null +++ b/src/event.h @@ -0,0 +1,17 @@ +#ifndef SOWM_EVENT_H_INCLUDED +#define SOWM_EVENT_H_INCLUDED + +#include + +void event_button_press(xcb_generic_event_t *ev); +void event_button_release(xcb_generic_event_t *ev); +void event_configure_request(xcb_generic_event_t *ev); +void event_key_press(xcb_generic_event_t *ev); +void event_notify_create(xcb_generic_event_t *ev); +void event_notify_destroy(xcb_generic_event_t *ev); +void event_notify_enter(xcb_generic_event_t *ev); +void event_notify_motion(xcb_generic_event_t *ev); + +extern void (*events[XCB_NO_OPERATION])(xcb_generic_event_t *); + +#endif diff --git a/sowm.c b/src/sowm.c similarity index 55% rename from sowm.c rename to src/sowm.c index 368f329..2774e69 100644 --- a/sowm.c +++ b/src/sowm.c @@ -4,42 +4,14 @@ #include +#include "event.h" + static xcb_connection_t *dpy; static xcb_screen_t *scr; static void init_wm(void); static void init_input(void); -static void event_button_press(xcb_generic_event_t *ev); -static void event_button_release(xcb_generic_event_t *ev); -static void event_configure_request(xcb_generic_event_t *ev); -static void event_key_press(xcb_generic_event_t *ev); -static void event_notify_create(xcb_generic_event_t *ev); -static void event_notify_destroy(xcb_generic_event_t *ev); -static void event_notify_enter(xcb_generic_event_t *ev); -static void event_notify_motion(xcb_generic_event_t *ev); - -void (*events[XCB_NO_OPERATION])(xcb_generic_event_t *) = { - [XCB_BUTTON_PRESS] = event_button_press, - [XCB_BUTTON_RELEASE] = event_button_release, - [XCB_CONFIGURE_REQUEST] = event_configure_request, - [XCB_KEY_PRESS] = event_key_press, - [XCB_CREATE_NOTIFY] = event_notify_create, - [XCB_DESTROY_NOTIFY] = event_notify_destroy, - [XCB_ENTER_NOTIFY] = event_notify_enter, - [XCB_MOTION_NOTIFY] = event_notify_motion -}; - -/* todo */ -static void event_button_press(xcb_generic_event_t *ev) { } -static void event_button_release(xcb_generic_event_t *ev) { } -static void event_configure_request(xcb_generic_event_t *ev) { } -static void event_key_press(xcb_generic_event_t *ev) { } -static void event_notify_create(xcb_generic_event_t *ev) { } -static void event_notify_destroy(xcb_generic_event_t *ev) { } -static void event_notify_enter(xcb_generic_event_t *ev) { } -static void event_notify_motion(xcb_generic_event_t *ev) { } - static void init_wm(void) { uint32_t values[2];