From 0fae7444c66080616eba01f7702bdb2d9b493166 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Tue, 2 Jun 2020 14:54:32 -0700 Subject: prototype of dway. needs testing --- sys/cmd/dway/config.h | 6 +++--- sys/cmd/dway/dway.c | 59 +++++++++++++++++++++++++++++++++++++++++---------- sys/cmd/dway/dway.h | 2 +- sys/libn/mmap.c | 1 + sys/rules.mk | 7 ++++-- 5 files changed, 58 insertions(+), 17 deletions(-) (limited to 'sys') diff --git a/sys/cmd/dway/config.h b/sys/cmd/dway/config.h index 4dc7cb5..b3f7c83 100644 --- a/sys/cmd/dway/config.h +++ b/sys/cmd/dway/config.h @@ -37,7 +37,7 @@ static const byte *termcmd[] = { "alacritty", 0 }; /* keymaps */ static const Key keys[] = { /* modifier key function argument */ - { MODKEY, XKB_KEY_Return, spawn, {.p = termcmd} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} }, { MODKEY, XKB_KEY_j, focusstack, {.i = +1} }, { MODKEY, XKB_KEY_k, focusstack, {.i = -1} }, { MODKEY, XKB_KEY_i, incmaster, {.i = +1} }, @@ -45,8 +45,8 @@ static const Key keys[] = { { MODKEY, XKB_KEY_h, setmfact, {.f = -0.05} }, { MODKEY, XKB_KEY_l, setmfact, {.f = +0.05} }, { MODKEY, XKB_KEY_Tab, view, {0} }, - { MODKEY, XKB_KEY_t, setlayout, {.p = &layouts[0]} }, - { MODKEY, XKB_KEY_f, setlayout, {.p = &layouts[1]} }, + { MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} }, { MODKEY, XKB_KEY_0, view, {.ui = ~0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} }, diff --git a/sys/cmd/dway/dway.c b/sys/cmd/dway/dway.c index 2aaf575..aff47b6 100644 --- a/sys/cmd/dway/dway.c +++ b/sys/cmd/dway/dway.c @@ -884,10 +884,10 @@ static void setlayout(const Arg *arg) { - if (!arg || !arg->p || arg->p != monitor->lt[monitor->sellt]) + if (!arg || !arg->v || arg->v != monitor->lt[monitor->sellt]) monitor->sellt ^= 1; - if (arg && arg->p) - monitor->lt[monitor->sellt] = (Layout *)arg->p; + if (arg && arg->v) + monitor->lt[monitor->sellt] = (Layout *)arg->v; arrange(monitor); } @@ -913,8 +913,8 @@ spawn(const Arg *arg) { if (fork() == 0) { setsid(); - execvp(((char **)arg->p)[0], (char **)arg->p); - fatal("dwl: execvp %s", ((char **)arg->p)[0]); + execvp(((char **)arg->v)[0], (char **)arg->v); + fatal("dwl: execvp %s", ((char **)arg->v)[0]); } } @@ -1119,12 +1119,13 @@ void run(void) { byte *socket; + pid_t start = -1; - // socket = (byte*)wl_display_add_socket_auto(dway.display); - // if (!socket) { - // wlr_backend_destroy(dway.backend); - // fatal("could not open socket"); - // } + socket = (byte*)wl_display_add_socket_auto(dway.display); + if (!socket) { + wlr_backend_destroy(dway.backend); + fatal("could not open socket"); + } if (!wlr_backend_start(dway.backend)) { wlr_backend_destroy(dway.backend); @@ -1132,7 +1133,11 @@ run(void) fatal("failed to start backend"); } - // setenv("WAYLAND_DISPLAY", socket, true); + monitor = getmonitorat(mouse.cursor->x, mouse.cursor->y); + wlr_cursor_warp_closest(mouse.cursor, nil, mouse.cursor->x, mouse.cursor->y); + wlr_xcursor_manager_set_cursor_image(mouse.manager, "left_ptr", mouse.cursor); + + setenv("WAYLAND_DISPLAY", socket, true); wlr_log(WLR_INFO, "running dway on WAYLAND_DISPLAY\n"); wl_display_run(dway.display); @@ -1145,9 +1150,41 @@ cleanup(void) wl_display_destroy(dway.display); } +void +usage(void) +{ + printf("usage: %s [-qvd] [-s startup_cmd]\n", argv0); + exit(1); +} + int main(int argc, byte *argv[]) { + byte *cmd; + enum wlr_log_importance lvl; + + cmd = nil; + lvl = WLR_ERROR; + + ARGBEGIN { + case 'q': + lvl = WLR_SILENT; + break; + case 'v': + lvl = WLR_INFO; + break; + case 'd': + lvl = WLR_DEBUG; + break; + case 's': + cmd = EARGF(usage()); + break; + default: + usage(); + } ARGEND; + + wlr_log_init(lvl, nil); + setup(); run(); cleanup(); diff --git a/sys/cmd/dway/dway.h b/sys/cmd/dway/dway.h index 430f3b7..9c1450c 100644 --- a/sys/cmd/dway/dway.h +++ b/sys/cmd/dway/dway.h @@ -50,7 +50,7 @@ union Arg int i; uint ui; float f; - const void *p; + const void *v; }; struct Button diff --git a/sys/libn/mmap.c b/sys/libn/mmap.c index d8b2a61..89b7519 100644 --- a/sys/libn/mmap.c +++ b/sys/libn/mmap.c @@ -19,6 +19,7 @@ mmap·open(byte *filename) errorf("file stat: error code %d", err); goto ERROR; } + buf = mmap(nil, st.st_size, PROT_READ, MAP_SHARED, fd, 0); if (!buf) { errorf("mmap: failed"); diff --git a/sys/rules.mk b/sys/rules.mk index cfff9b7..5e8262e 100644 --- a/sys/rules.mk +++ b/sys/rules.mk @@ -2,8 +2,8 @@ include share/push.mk # Iterate through subdirectory tree -DIR := $(d)/libc -include $(DIR)/rules.mk +# DIR := $(d)/libc +# include $(DIR)/rules.mk DIR := $(d)/libn include $(DIR)/rules.mk @@ -14,6 +14,9 @@ include $(DIR)/rules.mk DIR := $(d)/libbio include $(DIR)/rules.mk +DIR := $(d)/libfont +include $(DIR)/rules.mk + DIR := $(d)/cmd include $(DIR)/rules.mk -- cgit v1.2.1