1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-30 00:12:50 -05:00

Enhance DMS Greeter automation

- Thanks @brunodsf05 for doing some legwork to hunt this down!
This commit is contained in:
purian23
2025-11-27 23:12:33 -05:00
parent 966021bfd4
commit 0221021078
2 changed files with 89 additions and 18 deletions

View File

@@ -322,11 +322,74 @@ func enableGreeter() error {
} }
fmt.Printf("✓ Updated greetd configuration to use %s\n", selectedCompositor) fmt.Printf("✓ Updated greetd configuration to use %s\n", selectedCompositor)
// Check and set graphical.target as default
getDefaultCmd := exec.Command("systemctl", "get-default")
currentTarget, err := getDefaultCmd.Output()
if err != nil {
fmt.Println("⚠ Warning: Could not detect current default systemd target")
} else {
currentTargetStr := strings.TrimSpace(string(currentTarget))
if currentTargetStr != "graphical.target" {
fmt.Printf("\nSetting graphical.target as default (current: %s)...\n", currentTargetStr)
setDefaultCmd := exec.Command("sudo", "systemctl", "set-default", "graphical.target")
setDefaultCmd.Stdout = os.Stdout
setDefaultCmd.Stderr = os.Stderr
if err := setDefaultCmd.Run(); err != nil {
fmt.Println("⚠ Warning: Failed to set graphical.target as default")
fmt.Println(" Greeter may not start on boot. Run manually:")
fmt.Println(" sudo systemctl set-default graphical.target")
} else {
fmt.Println("✓ Set graphical.target as default")
}
} else {
fmt.Println("✓ Default target already set to graphical.target")
}
}
// Check for conflicting display managers and disable them
fmt.Println("\nChecking for conflicting display managers...")
conflictingDMs := []string{"gdm", "lightdm", "sddm"}
disabledAny := false
for _, dm := range conflictingDMs {
checkCmd := exec.Command("systemctl", "is-enabled", dm)
output, err := checkCmd.Output()
if err == nil && strings.TrimSpace(string(output)) == "enabled" {
fmt.Printf("⚠ Found enabled display manager: %s\n", dm)
fmt.Printf(" Disabling %s...\n", dm)
disableCmd := exec.Command("sudo", "systemctl", "disable", dm)
disableCmd.Stdout = os.Stdout
disableCmd.Stderr = os.Stderr
if err := disableCmd.Run(); err != nil {
fmt.Printf(" ⚠ Warning: Failed to disable %s\n", dm)
} else {
fmt.Printf(" ✓ Disabled %s\n", dm)
disabledAny = true
}
}
}
if !disabledAny {
fmt.Println("✓ No conflicting display managers found")
}
// Enable greetd service
fmt.Println("\nEnabling greetd service...")
enableCmd := exec.Command("sudo", "systemctl", "enable", "greetd")
enableCmd.Stdout = os.Stdout
enableCmd.Stderr = os.Stderr
if err := enableCmd.Run(); err != nil {
fmt.Println("⚠ Warning: Failed to enable greetd service")
fmt.Println(" Run manually: sudo systemctl enable greetd")
} else {
fmt.Println("✓ Enabled greetd service")
}
fmt.Println("\n=== Enable Complete ===") fmt.Println("\n=== Enable Complete ===")
fmt.Println("\nTo start the greeter, run:") fmt.Println("\nTo start the greeter now, run:")
fmt.Println(" sudo systemctl start greetd") fmt.Println(" sudo systemctl start greetd")
fmt.Println("\nTo enable on boot, run:") fmt.Println("\nOr reboot to see the greeter at boot time.")
fmt.Println(" sudo systemctl enable --now greetd")
return nil return nil
} }

View File

@@ -210,6 +210,15 @@ elif ! grep -q "dms-greeter" "$GREETD_CONFIG"; then
CONFIG_STATUS="Updated existing config (backed up) with $COMPOSITOR " CONFIG_STATUS="Updated existing config (backed up) with $COMPOSITOR "
fi fi
# 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
# Only show banner on initial install # Only show banner on initial install
if [ "$1" -eq 1 ]; then if [ "$1" -eq 1 ]; then
cat << 'EOF' cat << 'EOF'
@@ -219,31 +228,30 @@ cat << 'EOF'
========================================================================= =========================================================================
Status: Status:
EOF
echo " Greetd config: $CONFIG_STATUS"
echo " Default target: $TARGET_STATUS"
cat << 'EOF'
Greeter user: Created Greeter user: Created
Greeter directories: /var/cache/dms-greeter, /var/lib/greeter Greeter directories: /var/cache/dms-greeter, /var/lib/greeter
SELinux contexts: Applied SELinux contexts: Applied
EOF
echo " Greetd config: $CONFIG_STATUS"
cat << 'EOF'
Next steps: Next steps:
1. Disable any existing display managers (IMPORTANT): 1. Enable the greeter:
sudo systemctl disable gdm sddm lightdm dms greeter enable
(This will automatically disable gdm, sddm, or lightdm display managers,
set graphical.target, and enable greetd)
2. Enable greetd service: 2. Sync your theme with the greeter (optional):
sudo systemctl enable greetd If you have DankMaterialShell (DMS) installed, you can sync theming with:
3. (Optional) Sync your theme with the greeter:
If you have DankMaterialShell (DMS) installed, you can sync with:
dms greeter sync dms greeter sync
Check sync status: dms greeter status 3. Check your setup:
Then logout/login to see your wallpaper on the greeter! dms greeter status
Ready to test? Reboot or run: sudo systemctl start greetd Ready to test? Run: sudo systemctl start greetd or simply log out/reboot your system
Documentation: /usr/share/doc/dms-greeter/README.md Documentation: https://danklinux.com/docs/dankgreeter/
Website: https://danklinux.com/docs/dankgreeter/
========================================================================= =========================================================================
EOF EOF