From d8263c0b845cec48869dc6b2ba80125fa002ff03 Mon Sep 17 00:00:00 2001
From: LesVu <66196443+LesVu@users.noreply.github.com>
Date: Thu, 17 Apr 2025 00:15:07 +0800
Subject: [PATCH] labwc: Add module for Labwc (#6807)
Add a module for labwc compositor.
Add myself as labwc module maintainer
---
modules/lib/maintainers.nix | 6 +
modules/modules.nix | 1 +
.../window-managers/labwc/function.nix | 146 ++++++++++
.../services/window-managers/labwc/labwc.nix | 272 ++++++++++++++++++
tests/default.nix | 1 +
.../services/window-managers/labwc/autostart | 11 +
.../window-managers/labwc/default.nix | 6 +
.../window-managers/labwc/environment | 3 +
.../window-managers/labwc/labwc-autostart.nix | 18 ++
.../labwc/labwc-environment.nix | 18 ++
.../window-managers/labwc/labwc-menu.nix | 99 +++++++
.../window-managers/labwc/labwc-rc.nix | 81 ++++++
.../services/window-managers/labwc/menu.xml | 38 +++
.../services/window-managers/labwc/rc.xml | 41 +++
14 files changed, 741 insertions(+)
create mode 100644 modules/services/window-managers/labwc/function.nix
create mode 100644 modules/services/window-managers/labwc/labwc.nix
create mode 100644 tests/modules/services/window-managers/labwc/autostart
create mode 100644 tests/modules/services/window-managers/labwc/default.nix
create mode 100644 tests/modules/services/window-managers/labwc/environment
create mode 100644 tests/modules/services/window-managers/labwc/labwc-autostart.nix
create mode 100644 tests/modules/services/window-managers/labwc/labwc-environment.nix
create mode 100644 tests/modules/services/window-managers/labwc/labwc-menu.nix
create mode 100644 tests/modules/services/window-managers/labwc/labwc-rc.nix
create mode 100644 tests/modules/services/window-managers/labwc/menu.xml
create mode 100644 tests/modules/services/window-managers/labwc/rc.xml
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