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:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user