From e94f4b8363f4122f9b00f774a5b541a00c49fd35 Mon Sep 17 00:00:00 2001
From: MayOrMayNotBeACat <maybeacat804@gmail.com>
Date: Fri, 6 Jun 2025 22:42:16 -0400
Subject: [PATCH] Allow initial layout to be set per tag.

---
 config.def.h | 1 +
 dwl.c        | 9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/config.def.h b/config.def.h
index 22d2171..8f2fade 100644
--- a/config.def.h
+++ b/config.def.h
@@ -16,6 +16,7 @@ static const float fullscreen_bg[]         = {0.1f, 0.1f, 0.1f, 1.0f}; /* You ca
 
 /* tagging - TAGCOUNT must be no greater than 31 */
 #define TAGCOUNT (9)
+static int tag_layout[TAGCOUNT] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; /* Modify as needed to match TAGCOUNT */
 
 /* logging */
 static int log_level = WLR_ERROR;
diff --git a/dwl.c b/dwl.c
index d234cd2..da46816 100644
--- a/dwl.c
+++ b/dwl.c
@@ -1045,11 +1045,18 @@ createmon(struct wl_listener *listener, void *data)
 		m->pertag->nmasters[i] = m->nmaster;
 		m->pertag->mfacts[i] = m->mfact;
 
-		m->pertag->ltidxs[i][0] = m->lt[0];
+		if (i != 0)
+			m->pertag->ltidxs[i][0] = &layouts[tag_layout[i-1]];
+		else
+			m->pertag->ltidxs[i][0] = m->lt[0];
 		m->pertag->ltidxs[i][1] = m->lt[1];
 		m->pertag->sellts[i] = m->sellt;
 	}
 
+	m->lt[0] = m->pertag->ltidxs[1][0];
+	m->lt[1] = m->pertag->ltidxs[1][1];
+	strncpy(m->ltsymbol, m->pertag->ltidxs[1][0]->symbol, LENGTH(m->ltsymbol));
+
 	/* The xdg-protocol specifies:
 	 *
 	 * If the fullscreened surface is not opaque, the compositor must make
-- 
2.49.0

