aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/dway/dway.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cmd/dway/dway.c')
-rw-r--r--sys/cmd/dway/dway.c59
1 files changed, 48 insertions, 11 deletions
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();