diff --git a/core/internal/distros/arch.go b/core/internal/distros/arch.go index 2a2a66cb..2a5daa7c 100644 --- a/core/internal/distros/arch.go +++ b/core/internal/distros/arch.go @@ -340,7 +340,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 58b58098..399911c6 100644 --- a/core/internal/distros/base.go +++ b/core/internal/distros/base.go @@ -566,12 +566,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 471e2a04..6372e2cc 100644 --- a/core/internal/distros/debian.go +++ b/core/internal/distros/debian.go @@ -309,7 +309,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 4d258265..feb8d541 100644 --- a/core/internal/distros/fedora.go +++ b/core/internal/distros/fedora.go @@ -349,7 +349,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 dd759153..e0a2a9c2 100644 --- a/core/internal/distros/gentoo.go +++ b/core/internal/distros/gentoo.go @@ -407,7 +407,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 c79b9669..3465de99 100644 --- a/core/internal/distros/opensuse.go +++ b/core/internal/distros/opensuse.go @@ -367,7 +367,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 dc10394b..fbb05fb7 100644 --- a/core/internal/distros/ubuntu.go +++ b/core/internal/distros/ubuntu.go @@ -327,7 +327,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)) }