From b277bd8014c271616d9b9725a9d2e54ee9c1fb17 Mon Sep 17 00:00:00 2001 From: purian23 Date: Wed, 15 Oct 2025 23:37:57 -0400 Subject: [PATCH] Improve Fedora dms-greeter post install --- dms-greeter.spec | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/dms-greeter.spec b/dms-greeter.spec index 19add328..474a5e60 100644 --- a/dms-greeter.spec +++ b/dms-greeter.spec @@ -86,24 +86,41 @@ if [ -x /usr/sbin/semanage ]; then restorecon -v %{_bindir}/dms-greeter 2>/dev/null || true fi -# Auto-configure greetd if config file exists and contains no dms-greeter command +# Auto-configure greetd config GREETD_CONFIG="/etc/greetd/config.toml" -if [ -f "$GREETD_CONFIG" ] && ! grep -q "dms-greeter" "$GREETD_CONFIG"; then +CONFIG_STATUS="Not modified (already configured)" + +# Check if niri or hyprland exists +COMPOSITOR="niri" +if ! command -v niri >/dev/null 2>&1; then + if command -v Hyprland >/dev/null 2>&1; then + COMPOSITOR="hyprland" + fi +fi + +# If config doesn't exist, create a default one +if [ ! -f "$GREETD_CONFIG" ]; then + mkdir -p /etc/greetd + cat > "$GREETD_CONFIG" << 'GREETD_EOF' +[terminal] +vt = 1 + +[default_session] +user = "greeter" +command = "/usr/bin/dms-greeter --command COMPOSITOR_PLACEHOLDER" +GREETD_EOF + sed -i "s|COMPOSITOR_PLACEHOLDER|$COMPOSITOR|" "$GREETD_CONFIG" + CONFIG_STATUS="Created new config with $COMPOSITOR ✓" +# If config exists and doesn't have dms-greeter, update it +elif ! grep -q "dms-greeter" "$GREETD_CONFIG"; then # Backup existing config BACKUP_FILE="${GREETD_CONFIG}.backup-$(date +%%Y%%m%%d-%%H%%M%%S)" cp "$GREETD_CONFIG" "$BACKUP_FILE" 2>/dev/null || true - # Check if niri or hyprland exists - COMPOSITOR="niri" - if ! command -v niri >/dev/null 2>&1; then - if command -v Hyprland >/dev/null 2>&1; then - COMPOSITOR="hyprland" - fi - fi - # Update command in default_session section sed -i "/^\[default_session\]/,/^\[/ s|^command =.*|command = \"/usr/bin/dms-greeter --command $COMPOSITOR\"|" "$GREETD_CONFIG" sed -i '/^\[default_session\]/,/^\[/ s|^user =.*|user = "greeter"|' "$GREETD_CONFIG" + CONFIG_STATUS="Updated existing config (backed up) with $COMPOSITOR ✓" fi cat << EOF @@ -115,7 +132,7 @@ cat << EOF Configuration status: - Greeter cache directory: /var/cache/dms-greeter (created with proper permissions) - SELinux contexts: Applied (if semanage available) - - Greetd config: $([ -f "$GREETD_CONFIG" ] && grep -q "dms-greeter" "$GREETD_CONFIG" && echo "Auto-configured ✓" || echo "Needs manual setup") + - Greetd config: $CONFIG_STATUS Next steps to enable the greeter: