git.lucas.co / cce-display-manager
login greeter
git clone https://git.lucas.co/cce-display-manager.git

commit4c4139769c69693d8a4424773479a0887ed886ee
parent721f67f00b
authorLucas Galante <[email protected]>
date2026-07-21 21:09
fix: point the root-run greeter at system fonts

The greeter runs as root inside cage, so cce-ui's default bundled-fonts
dir ($HOME/Dropbox/Fonts) doesn't exist and the empty font db panicked
on the first shaped glyph, crash-looping the daemon. Pass
CCE_FONTS_DIR=/usr/share/fonts/cce and CCE_LOAD_SYSTEM_FONTS=1 so the
greeter never depends on a user's home directory.

Co-Authored-By: Claude Fable 5 <[email protected]>

 src/main.rs | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/main.rs b/src/main.rs
index a1eaa7a..91258ad 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1259,6 +1259,12 @@ fn run_daemon() {
             .arg(exe_path)
             .arg("--greeter")
             .env("XDG_RUNTIME_DIR", &runtime_dir)
+            // The greeter runs as root: cce-ui's default bundled-fonts dir
+            // ($HOME/Dropbox/Fonts) doesn't exist for root, and an empty font
+            // db panics on the first shaped glyph. Point it at a system
+            // location and load installed system fonts as a fallback.
+            .env("CCE_FONTS_DIR", "/usr/share/fonts/cce")
+            .env("CCE_LOAD_SYSTEM_FONTS", "1")
             .env("LIBSEAT_BACKEND", "seatd")
             .env("WLR_DRM_NO_MODIFIERS", "1")
             .env("WLR_DRM_DEVICES", "/dev/dri/card1:/dev/dri/card0")