diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix
index 0a9d8af4f..82f564d95 100644
--- a/modules/lib/maintainers.nix
+++ b/modules/lib/maintainers.nix
@@ -756,4 +756,10 @@
github = "mipmip";
githubId = 658612;
};
+ LesVu = {
+ name = "John Ferse";
+ email = "lesvu@ingressland.com";
+ github = "LesVu";
+ githubId = 66196443;
+ };
}
diff --git a/modules/modules.nix b/modules/modules.nix
index befe59e63..13b719ce1 100644
--- a/modules/modules.nix
+++ b/modules/modules.nix
@@ -446,6 +446,7 @@ let
./services/window-managers/i3-sway/i3.nix
./services/window-managers/i3-sway/sway.nix
./services/window-managers/i3-sway/swaynag.nix
+ ./services/window-managers/labwc/labwc.nix
./services/window-managers/river.nix
./services/window-managers/spectrwm.nix
./services/window-managers/wayfire.nix
diff --git a/modules/services/window-managers/labwc/function.nix b/modules/services/window-managers/labwc/function.nix
new file mode 100644
index 000000000..e15057959
--- /dev/null
+++ b/modules/services/window-managers/labwc/function.nix
@@ -0,0 +1,146 @@
+{ lib, ... }:
+
+let
+ # Escape XML special characters (e.g., <, >, &, etc.)
+ escape = lib.escapeXML;
+
+ # Indent each non-empty line of the given text by `level` using two spaces per level.
+ indent =
+ level: text:
+ let
+ indentation = lib.concatStrings (lib.genList (_: " ") level); # Two spaces per level
+ lines = lib.splitString "\n" text; # Split text into lines
+ indentedLines = map (line: if line == "" then "" else "${indentation}${line}") lines;
+ in
+ lib.concatStringsSep "\n" indentedLines;
+
+ # Generate a