#!/bin/sh set -e case "$1" in configure) # Create greeter user/group if they don't exist if ! getent group greeter >/dev/null; then addgroup --system greeter fi if ! getent passwd greeter >/dev/null; then adduser --system --ingroup greeter --home /var/lib/greeter \ --shell /bin/bash --gecos "System Greeter" greeter fi if [ -d /var/cache/dms-greeter ]; then chown -R greeter:greeter /var/cache/dms-greeter 2>/dev/null || true fi if [ -d /var/lib/greeter ]; then chown -R greeter:greeter /var/lib/greeter 2>/dev/null || true fi # Check and set graphical.target as default CURRENT_TARGET=$(systemctl get-default 2>/dev/null || echo "unknown") if [ "$CURRENT_TARGET" != "graphical.target" ]; then systemctl set-default graphical.target >/dev/null 2>&1 || true TARGET_STATUS="Set to graphical.target (was: $CURRENT_TARGET) ✓" else TARGET_STATUS="Already graphical.target ✓" fi GREETD_CONFIG="/etc/greetd/config.toml" 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 ✓" 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 # 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 # Only show banner on initial install if [ -z "$2" ]; then cat << 'EOF' ========================================================================= DMS Greeter Installation Complete! ========================================================================= Status: EOF echo " ✓ Greetd config: $CONFIG_STATUS" echo " ✓ Default target: $TARGET_STATUS" cat << 'EOF' ✓ Greeter user: Created ✓ Greeter directories: /var/cache/dms-greeter, /var/lib/greeter Next steps: 1. Enable the greeter: dms greeter enable (This will automatically disable conflicting display managers, set graphical.target, and enable greetd) 2. Sync your theme with the greeter (optional): dms greeter sync 3. Check your setup: dms greeter status Ready to test? Run: sudo systemctl start greetd Documentation: https://danklinux.com/docs/dankgreeter/ ========================================================================= EOF fi ;; esac #DEBHELPER# exit 0