M config.def.h => config.def.h +3 -0
  
@@ 17,6 17,9 @@ static const float fullscreen_bg[]         = {0.1, 0.1, 0.1, 1.0}; /* You can al
 #define TAGCOUNT (9)
 static const int tagcount = TAGCOUNT;
 
+/* logging */
+static int log_level = WLR_ERROR;
+
 static const Rule rules[] = {
 	/* app_id     title       tags mask     isfloating   monitor */
 	/* examples:
 
M dwl.1 => dwl.1 +7 -0
  
@@ 7,6 7,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl v
+.Op Fl d
 .Op Fl s Ar startup command
 .Sh DESCRIPTION
 .Nm
@@ 22,6 23,12 @@ option,
 writes its name and version to standard error and exits unsuccessfully.
 .Pp
 When given the
+.Fl d
+option,
+.Nm
+enables full wlroots logging, including debug information.
+.Pp
+When given the
 .Fl s
 option,
 .Nm
 
M dwl.c => dwl.c +6 -2
  
@@ 2139,6 2139,8 @@ setup(void)
 	for (i = 0; i < LENGTH(sig); i++)
 		sigaction(sig[i], &sa, NULL);
 
+	wlr_log_init(log_level, NULL);
+
 	/* 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();
@@ 2797,9 2799,11 @@ main(int argc, char *argv[])
 	char *startup_cmd = NULL;
 	int c;
 
-	while ((c = getopt(argc, argv, "s:hv")) != -1) {
+	while ((c = getopt(argc, argv, "s:hdv")) != -1) {
 		if (c == 's')
 			startup_cmd = optarg;
+		else if (c == 'd')
+			log_level = WLR_DEBUG;
 		else if (c == 'v')
 			die("dwl " VERSION);
 		else
@@ 2817,5 2821,5 @@ main(int argc, char *argv[])
 	return EXIT_SUCCESS;
 
 usage:
-	die("Usage: %s [-v] [-s startup command]", argv[0]);
+	die("Usage: %s [-v] [-d] [-s startup command]", argv[0]);
 }