mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-28 22:17:48 -04:00
1 parent
8be08999ca
commit
bdc6a5d214
4 files changed
+95
No files matched your search
@@ -53,6 +53,10 @@ func greeterPackageInstallHint() string {
|
||||
return "Install package: dms-greeter"
|
||||
}
|
||||
|
||||
if config.ID == "pika" {
|
||||
return "Install with 'sudo apt install dms-greeter'"
|
||||
}
|
||||
|
||||
switch config.Family {
|
||||
case distros.FamilyDebian:
|
||||
return "Install with 'sudo apt install dms-greeter' (requires DankLinux OBS repo — see " + site.Docs + "/dankgreeter/installation#debian)"
|
||||
|
||||
@@ -70,6 +70,11 @@ func (d *DebianDistribution) DetectDependenciesWithTerminal(ctx context.Context,
|
||||
dependencies = append(dependencies, d.detectXwaylandSatellite())
|
||||
}
|
||||
|
||||
if wm == deps.WindowManagerHyprland && d.isPika() {
|
||||
dependencies = append(dependencies, d.detectHyprlandTools()...)
|
||||
dependencies = append(dependencies, d.detectHyprlandGuiutils())
|
||||
}
|
||||
|
||||
dependencies = append(dependencies, d.detectMatugen())
|
||||
dependencies = append(dependencies, d.detectDanksearch())
|
||||
dependencies = append(dependencies, withGitVariant(d.detectDankCalendar(), d.packageInstalled("dankcalendar-git")))
|
||||
@@ -140,6 +145,9 @@ func (d *DebianDistribution) GetPackageMapping(wm deps.WindowManager) map[string
|
||||
}
|
||||
|
||||
func (d *DebianDistribution) GetPackageMappingWithVariants(wm deps.WindowManager, variants map[string]deps.PackageVariant) map[string]PackageMapping {
|
||||
if d.isPika() {
|
||||
return d.pikaPackageMapping(wm, variants)
|
||||
}
|
||||
packages := map[string]PackageMapping{
|
||||
// Standard APT packages
|
||||
"git": {Name: "git", Repository: RepoTypeSystem},
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package distros
|
||||
|
||||
import (
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/deps"
|
||||
)
|
||||
|
||||
// PikaOS carries the whole DMS stack in its own apt repo, so no OBS repos or backports.
|
||||
func init() {
|
||||
Register("pika", "#FFDE34", FamilyDebian, func(config DistroConfig, logChan chan<- string) Distribution {
|
||||
return NewDebianDistribution(config, logChan)
|
||||
})
|
||||
}
|
||||
|
||||
func (d *DebianDistribution) isPika() bool {
|
||||
return d.config.ID == "pika"
|
||||
}
|
||||
|
||||
func (d *DebianDistribution) pikaPackageMapping(wm deps.WindowManager, variants map[string]deps.PackageVariant) map[string]PackageMapping {
|
||||
system := func(name string) PackageMapping {
|
||||
return PackageMapping{Name: name, Repository: RepoTypeSystem}
|
||||
}
|
||||
packages := map[string]PackageMapping{
|
||||
"git": system("git"),
|
||||
"kitty": system("kitty"),
|
||||
"alacritty": system("alacritty"),
|
||||
"ghostty": system("ghostty"),
|
||||
"xdg-desktop-portal-gtk": system("xdg-desktop-portal-gtk"),
|
||||
"accountsservice": system("accountsservice"),
|
||||
"dms (DankMaterialShell)": variantMapping("dms", variants["dms (DankMaterialShell)"], RepoTypeSystem, ""),
|
||||
"quickshell": variantMapping("quickshell", variants["quickshell"], RepoTypeSystem, ""),
|
||||
"dms-greeter": variantMapping("dms-greeter", variants["dms-greeter"], RepoTypeSystem, ""),
|
||||
"matugen": system("matugen"),
|
||||
"danksearch": system("danksearch"),
|
||||
"dankcalendar": variantMapping("dankcalendar", variants["dankcalendar"], RepoTypeSystem, ""),
|
||||
}
|
||||
|
||||
switch wm {
|
||||
case deps.WindowManagerHyprland:
|
||||
packages["hyprland"] = system("hyprland")
|
||||
packages["hyprctl"] = system("hyprland")
|
||||
packages["jq"] = system("jq")
|
||||
// Debian's hyprland-guiutils breaks the hyprland-qtutils PikaOS's hyprland depends on.
|
||||
packages["hyprland-guiutils"] = system("hyprland-qtutils")
|
||||
case deps.WindowManagerNiri:
|
||||
packages["niri"] = variantMapping("niri", variants["niri"], RepoTypeSystem, "")
|
||||
packages["xwayland-satellite"] = variantMapping("xwayland-satellite", variants["niri"], RepoTypeSystem, "")
|
||||
}
|
||||
|
||||
return packages
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package distros
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/deps"
|
||||
)
|
||||
|
||||
func TestPikaPackageMapping_SystemRepoOnly(t *testing.T) {
|
||||
d := NewDebianDistribution(Registry["pika"], nil)
|
||||
variants := map[string]deps.PackageVariant{
|
||||
"quickshell": deps.VariantGit,
|
||||
"dms (DankMaterialShell)": deps.VariantGit,
|
||||
}
|
||||
for _, wm := range []deps.WindowManager{deps.WindowManagerNiri, deps.WindowManagerHyprland} {
|
||||
packages := d.GetPackageMappingWithVariants(wm, variants)
|
||||
for name, pkg := range packages {
|
||||
if pkg.Repository != RepoTypeSystem {
|
||||
t.Errorf("%v: pika maps %s to %s, want system repo", wm, name, pkg.Repository)
|
||||
}
|
||||
}
|
||||
if packages["dms (DankMaterialShell)"].Name != "dms-git" {
|
||||
t.Errorf("%v: dms git variant = %s, want dms-git", wm, packages["dms (DankMaterialShell)"].Name)
|
||||
}
|
||||
}
|
||||
hypr := d.GetPackageMapping(deps.WindowManagerHyprland)
|
||||
if _, ok := hypr["hyprland"]; !ok {
|
||||
t.Error("pika offers hyprland but maps no package for it")
|
||||
}
|
||||
if hypr["hyprland-guiutils"].Name != "hyprland-qtutils" {
|
||||
t.Errorf("hyprland-guiutils = %s, want hyprland-qtutils", hypr["hyprland-guiutils"].Name)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user