mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-22 11:05:22 -04:00
distros(void linux): initial packaging support
This commit is contained in:
@@ -299,7 +299,7 @@ func installGreeter(nonInteractive bool) error {
|
||||
|
||||
fmt.Println("\n=== Installation Complete ===")
|
||||
fmt.Println("\nTo start the greeter now, run:")
|
||||
fmt.Println(" sudo systemctl start greetd")
|
||||
fmt.Println(startGreeterHint())
|
||||
fmt.Println("\nOr reboot to see the greeter at next boot.")
|
||||
|
||||
return nil
|
||||
@@ -326,7 +326,13 @@ func uninstallGreeter(nonInteractive bool) error {
|
||||
}
|
||||
|
||||
fmt.Println("\nDisabling greetd...")
|
||||
if err := privesc.Run(context.Background(), "", "systemctl", "disable", "greetd"); err != nil {
|
||||
if isRunit() {
|
||||
if err := disableRunitService("greetd"); err != nil {
|
||||
fmt.Printf(" ⚠ Could not disable greetd: %v\n", err)
|
||||
} else {
|
||||
fmt.Println(" ✓ greetd disabled")
|
||||
}
|
||||
} else if err := privesc.Run(context.Background(), "", "systemctl", "disable", "greetd"); err != nil {
|
||||
fmt.Printf(" ⚠ Could not disable greetd: %v\n", err)
|
||||
} else {
|
||||
fmt.Println(" ✓ greetd disabled")
|
||||
@@ -449,6 +455,14 @@ func suggestDisplayManagerRestore(nonInteractive bool) {
|
||||
|
||||
enableDM := func(dm string) {
|
||||
fmt.Printf(" Enabling %s...\n", dm)
|
||||
if isRunit() {
|
||||
if err := enableRunitService(dm); err != nil {
|
||||
fmt.Printf(" ⚠ Failed to enable %s: %v\n", dm, err)
|
||||
} else {
|
||||
fmt.Printf(" ✓ %s enabled (linked into %s).\n", dm, runitServiceDir)
|
||||
}
|
||||
return
|
||||
}
|
||||
if err := privesc.Run(context.Background(), "", "systemctl", "enable", "--force", dm); err != nil {
|
||||
fmt.Printf(" ⚠ Failed to enable %s: %v\n", dm, err)
|
||||
} else {
|
||||
@@ -495,6 +509,9 @@ func suggestDisplayManagerRestore(nonInteractive bool) {
|
||||
}
|
||||
|
||||
func isSystemdUnitInstalled(unit string) bool {
|
||||
if isRunit() {
|
||||
return runitServiceInstalled(unit)
|
||||
}
|
||||
cmd := exec.Command("systemctl", "list-unit-files", unit+".service", "--no-legend", "--no-pager")
|
||||
out, err := cmd.Output()
|
||||
return err == nil && strings.Contains(string(out), unit)
|
||||
@@ -943,6 +960,18 @@ func resolveLocalDMSPath() (string, error) {
|
||||
}
|
||||
|
||||
func disableDisplayManager(dmName string) (bool, error) {
|
||||
if isRunit() {
|
||||
if !runitServiceEnabled(dmName) {
|
||||
return false, nil
|
||||
}
|
||||
fmt.Printf("\nDisabling %s (runit)...\n", dmName)
|
||||
if err := disableRunitService(dmName); err != nil {
|
||||
return false, fmt.Errorf("failed to disable %s: %w", dmName, err)
|
||||
}
|
||||
fmt.Printf(" ✓ %s disabled (removed from %s)\n", dmName, runitServiceDir)
|
||||
return true, nil
|
||||
}
|
||||
|
||||
state, err := getSystemdServiceState(dmName)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("failed to check %s state: %w", dmName, err)
|
||||
@@ -996,6 +1025,21 @@ func disableDisplayManager(dmName string) (bool, error) {
|
||||
}
|
||||
|
||||
func ensureGreetdEnabled() error {
|
||||
if isRunit() {
|
||||
fmt.Println("\nEnabling greetd service (runit)...")
|
||||
if !runitServiceInstalled("greetd") {
|
||||
return fmt.Errorf("greetd service not found in %s. Please install greetd first", runitSvDir)
|
||||
}
|
||||
// Seat + runtime-dir setup that logind handles automatically on systemd.
|
||||
ensureRunitSeat("_greeter")
|
||||
ensureGreetdPamRundir()
|
||||
if err := enableRunitService("greetd"); err != nil {
|
||||
return fmt.Errorf("failed to enable greetd: %w", err)
|
||||
}
|
||||
fmt.Printf(" ✓ greetd enabled (%s)\n", runitServiceDir)
|
||||
return nil
|
||||
}
|
||||
|
||||
fmt.Println("\nChecking greetd service status...")
|
||||
|
||||
state, err := getSystemdServiceState("greetd")
|
||||
@@ -1043,6 +1087,12 @@ func ensureGreetdEnabled() error {
|
||||
}
|
||||
|
||||
func ensureGraphicalTarget() error {
|
||||
if isRunit() {
|
||||
// runit has no targets; a supervised greetd service is the graphical
|
||||
// login, so there is nothing to set here.
|
||||
return nil
|
||||
}
|
||||
|
||||
getDefaultCmd := exec.Command("systemctl", "get-default")
|
||||
currentTarget, err := getDefaultCmd.Output()
|
||||
if err != nil {
|
||||
@@ -1176,7 +1226,7 @@ func enableGreeter(nonInteractive bool) error {
|
||||
fmt.Println("\n=== Enable Complete ===")
|
||||
fmt.Println("\nGreeter configuration verified and system state corrected.")
|
||||
fmt.Println("To start the greeter now, run:")
|
||||
fmt.Println(" sudo systemctl start greetd")
|
||||
fmt.Println(startGreeterHint())
|
||||
fmt.Println("\nOr reboot to see the greeter at boot time.")
|
||||
|
||||
return nil
|
||||
@@ -1257,7 +1307,7 @@ func enableGreeter(nonInteractive bool) error {
|
||||
|
||||
fmt.Println("\n=== Enable Complete ===")
|
||||
fmt.Println("\nTo start the greeter now, run:")
|
||||
fmt.Println(" sudo systemctl start greetd")
|
||||
fmt.Println(startGreeterHint())
|
||||
fmt.Println("\nOr reboot to see the greeter at boot time.")
|
||||
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user