From 6c9b8c590e4610d6dfe820f9bd7bcda05d119a23 Mon Sep 17 00:00:00 2001 From: bbedward Date: Fri, 12 Dec 2025 09:58:12 -0500 Subject: [PATCH] dankinstall: call add-wants for niri/hyprland with dms service --- core/internal/distros/arch.go | 2 +- core/internal/distros/base.go | 14 +++++++++++++- core/internal/distros/debian.go | 2 +- core/internal/distros/fedora.go | 2 +- core/internal/distros/gentoo.go | 2 +- core/internal/distros/opensuse.go | 2 +- core/internal/distros/ubuntu.go | 2 +- 7 files changed, 19 insertions(+), 7 deletions(-) diff --git a/core/internal/distros/arch.go b/core/internal/distros/arch.go index 0f8613ae..7ca57078 100644 --- a/core/internal/distros/arch.go +++ b/core/internal/distros/arch.go @@ -344,7 +344,7 @@ func (a *ArchDistribution) InstallPackages(ctx context.Context, dependencies []d a.log(fmt.Sprintf("Warning: failed to write window manager config: %v", err)) } - if err := a.EnableDMSService(ctx); err != nil { + if err := a.EnableDMSService(ctx, wm); err != nil { a.log(fmt.Sprintf("Warning: failed to enable dms service: %v", err)) } diff --git a/core/internal/distros/base.go b/core/internal/distros/base.go index 80afdb50..84756bcf 100644 --- a/core/internal/distros/base.go +++ b/core/internal/distros/base.go @@ -597,12 +597,24 @@ TERMINAL=%s return nil } -func (b *BaseDistribution) EnableDMSService(ctx context.Context) error { +func (b *BaseDistribution) EnableDMSService(ctx context.Context, wm deps.WindowManager) error { cmd := exec.CommandContext(ctx, "systemctl", "--user", "enable", "--now", "dms") if err := cmd.Run(); err != nil { return fmt.Errorf("failed to enable dms service: %w", err) } b.log("Enabled dms systemd user service") + + switch wm { + case deps.WindowManagerNiri: + if err := exec.CommandContext(ctx, "systemctl", "--user", "add-wants", "niri.service", "dms").Run(); err != nil { + b.log("Warning: failed to add dms as a want for niri.service") + } + case deps.WindowManagerHyprland: + if err := exec.CommandContext(ctx, "systemctl", "--user", "add-wants", "hyprland-session.target", "dms").Run(); err != nil { + b.log("Warning: failed to add dms as a want for hyprland-session.target") + } + } + return nil } diff --git a/core/internal/distros/debian.go b/core/internal/distros/debian.go index aac9774c..2041d573 100644 --- a/core/internal/distros/debian.go +++ b/core/internal/distros/debian.go @@ -312,7 +312,7 @@ func (d *DebianDistribution) InstallPackages(ctx context.Context, dependencies [ d.log(fmt.Sprintf("Warning: failed to write window manager config: %v", err)) } - if err := d.EnableDMSService(ctx); err != nil { + if err := d.EnableDMSService(ctx, wm); err != nil { d.log(fmt.Sprintf("Warning: failed to enable dms service: %v", err)) } diff --git a/core/internal/distros/fedora.go b/core/internal/distros/fedora.go index efdb4ccf..6a5b67b0 100644 --- a/core/internal/distros/fedora.go +++ b/core/internal/distros/fedora.go @@ -353,7 +353,7 @@ func (f *FedoraDistribution) InstallPackages(ctx context.Context, dependencies [ f.log(fmt.Sprintf("Warning: failed to write window manager config: %v", err)) } - if err := f.EnableDMSService(ctx); err != nil { + if err := f.EnableDMSService(ctx, wm); err != nil { f.log(fmt.Sprintf("Warning: failed to enable dms service: %v", err)) } diff --git a/core/internal/distros/gentoo.go b/core/internal/distros/gentoo.go index f5b52925..d334f2c7 100644 --- a/core/internal/distros/gentoo.go +++ b/core/internal/distros/gentoo.go @@ -410,7 +410,7 @@ func (g *GentooDistribution) InstallPackages(ctx context.Context, dependencies [ g.log(fmt.Sprintf("Warning: failed to write window manager config: %v", err)) } - if err := g.EnableDMSService(ctx); err != nil { + if err := g.EnableDMSService(ctx, wm); err != nil { g.log(fmt.Sprintf("Warning: failed to enable dms service: %v", err)) } diff --git a/core/internal/distros/opensuse.go b/core/internal/distros/opensuse.go index 4b720724..3f50f4b8 100644 --- a/core/internal/distros/opensuse.go +++ b/core/internal/distros/opensuse.go @@ -371,7 +371,7 @@ func (o *OpenSUSEDistribution) InstallPackages(ctx context.Context, dependencies o.log(fmt.Sprintf("Warning: failed to write window manager config: %v", err)) } - if err := o.EnableDMSService(ctx); err != nil { + if err := o.EnableDMSService(ctx, wm); err != nil { o.log(fmt.Sprintf("Warning: failed to enable dms service: %v", err)) } diff --git a/core/internal/distros/ubuntu.go b/core/internal/distros/ubuntu.go index 34148ca0..6aa224b8 100644 --- a/core/internal/distros/ubuntu.go +++ b/core/internal/distros/ubuntu.go @@ -331,7 +331,7 @@ func (u *UbuntuDistribution) InstallPackages(ctx context.Context, dependencies [ u.log(fmt.Sprintf("Warning: failed to write window manager config: %v", err)) } - if err := u.EnableDMSService(ctx); err != nil { + if err := u.EnableDMSService(ctx, wm); err != nil { u.log(fmt.Sprintf("Warning: failed to enable dms service: %v", err)) }