mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-05 21:15:38 -05:00
109 lines
3.6 KiB
Bash
Executable File
109 lines
3.6 KiB
Bash
Executable File
#!/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
|