summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevin J. Pohly <djpohly@gmail.com>2020-06-07 11:43:48 -0500
committerDevin J. Pohly <djpohly@gmail.com>2020-06-07 11:43:48 -0500
commit14063d58bbe2a262cf39b875f89a20493fe86afa (patch)
treef050588f36ee88919e037a63b170b916d58a8f6e
parentf19d00b94a6ba56ba4e2ca72b56a6d0345bed7d9 (diff)
Handle missing XDG_RUNTIME_DIR explicitly
Also update the documentation to indicate that this is a Wayland thing and not dwl-specific.
-rw-r--r--README.md12
-rw-r--r--dwl.c7
2 files changed, 15 insertions, 4 deletions
diff --git a/README.md b/README.md
index a357698..92bfe19 100644
--- a/README.md
+++ b/README.md
@@ -74,16 +74,20 @@ this process a SIGTERM and wait for it to terminate (if it hasn't already).
This makes it ideal not only for initialization but also for execing into a
user-level service manager like s6 or `systemd --user`.
-You'll have to explicitly set `XDG_RUNTIME_DIR` if your system doesn't do it for
-you, e.g. `export XDG_RUNTIME_DIR=/tmp/xdg-runtime-$USER && mkdir -p
-$XDG_RUNTIME_DIR`.
-
More/less verbose output can be requested with flags as well:
* `-q`: quiet (log level WLR_SILENT)
* `-v`: verbose (log level WLR_INFO)
* `-d`: debug (log level WLR_DEBUG)
+Note: Wayland requires a valid `XDG_RUNTIME_DIR`, which is usually set up by a
+session manager such as `elogind` or `systemd-logind`. If your system doesn't
+do this automatically, you will need to configure it prior to launching `dwl`,
+e.g.:
+
+ export XDG_RUNTIME_DIR=/run/user/$(id -u)
+ mkdir -p $XDG_RUNTIME_DIR
+
## Known limitations and issues
diff --git a/dwl.c b/dwl.c
index 7305f53..dfbafce 100644
--- a/dwl.c
+++ b/dwl.c
@@ -1527,6 +1527,13 @@ main(int argc, char *argv[])
goto usage;
wlr_log_init(loglevel, NULL);
+ // Wayland requires XDG_RUNTIME_DIR for creating its communications
+ // socket
+ if (!getenv("XDG_RUNTIME_DIR")) {
+ fprintf(stderr, "XDG_RUNTIME_DIR must be set\n");
+ exit(EXIT_FAILURE);
+ }
+
/* The Wayland display is managed by libwayland. It handles accepting
* clients from the Unix socket, manging Wayland globals, and so on. */
dpy = wl_display_create();