mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-08-02 03:28:28 -04:00
72 lines
2.7 KiB
Go
72 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"syscall"
|
|
|
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/distros"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var greeterCmd = &cobra.Command{
|
|
Use: "greeter",
|
|
Short: "Deprecated: moved to the standalone dms-greeter binary",
|
|
Long: "The greeter has moved to the standalone dms-greeter package.\nThis command forwards to 'dms-greeter' when it is installed.",
|
|
DisableFlagParsing: true,
|
|
SilenceUsage: true,
|
|
RunE: func(_ *cobra.Command, args []string) error {
|
|
binary, err := exec.LookPath("dms-greeter")
|
|
if err != nil {
|
|
return fmt.Errorf("'dms greeter' has moved to the standalone dms-greeter package.\n %s", greeterPackageInstallHint())
|
|
}
|
|
if isLegacyWrapperScript(binary) {
|
|
return fmt.Errorf("'dms greeter' has moved to the standalone dms-greeter package; %s is the old wrapper script.\n %s", binary, greeterPackageInstallHint())
|
|
}
|
|
fmt.Fprintln(os.Stderr, "warning: 'dms greeter' is deprecated; use 'dms-greeter' directly")
|
|
return syscall.Exec(binary, append([]string{"dms-greeter"}, args...), os.Environ())
|
|
},
|
|
}
|
|
|
|
func isLegacyWrapperScript(path string) bool {
|
|
file, err := os.Open(path)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
defer file.Close()
|
|
header := make([]byte, 2)
|
|
if _, err := file.Read(header); err != nil {
|
|
return false
|
|
}
|
|
return string(header) == "#!"
|
|
}
|
|
|
|
func greeterPackageInstallHint() string {
|
|
osInfo, err := distros.GetOSInfo()
|
|
if err != nil {
|
|
return "Install package: dms-greeter"
|
|
}
|
|
config, exists := distros.Registry[osInfo.Distribution.ID]
|
|
if !exists {
|
|
return "Install package: dms-greeter"
|
|
}
|
|
|
|
switch config.Family {
|
|
case distros.FamilyDebian:
|
|
return "Install with 'sudo apt install dms-greeter' (requires DankLinux OBS repo — see https://danklinux.com/docs/dankgreeter/installation#debian)"
|
|
case distros.FamilySUSE:
|
|
return "Install with 'sudo zypper install dms-greeter' (requires DankLinux OBS repo — see https://danklinux.com/docs/dankgreeter/installation#opensuse)"
|
|
case distros.FamilyUbuntu:
|
|
return "Install with 'sudo apt install dms-greeter' (requires ppa:avengemedia/danklinux: sudo add-apt-repository ppa:avengemedia/danklinux)"
|
|
case distros.FamilyFedora:
|
|
return "Install with 'sudo dnf install dms-greeter' (requires COPR: sudo dnf copr enable avengemedia/danklinux)"
|
|
case distros.FamilyArch:
|
|
return "Install from AUR with 'paru -S greetd-dms-greeter-git' or 'yay -S greetd-dms-greeter-git'"
|
|
case distros.FamilyVoid:
|
|
return "Install with 'sudo xbps-install -S dms-greeter' (requires DMS XBPS repo: echo 'repository=https://void.danklinux.com/dms/current' | sudo tee /etc/xbps.d/dms.conf)"
|
|
default:
|
|
return "Install the dms-greeter package for your distribution"
|
|
}
|
|
}
|