diff --git a/core/cmd/dms/commands_features.go b/core/cmd/dms/commands_features.go index 7ec21080d..05a168277 100644 --- a/core/cmd/dms/commands_features.go +++ b/core/cmd/dms/commands_features.go @@ -128,20 +128,14 @@ func updateArchLinux() error { var packageName string var isAUR bool - // AUR names first: pacman -Q matches provides, and dux-shell-git provides dms-shell. + // AUR name first: pacman -Q matches provides, and dux-shell-git provides dux-shell. if isArchPackageInstalled("dux-shell-git") { packageName = "dux-shell-git" isAUR = true - } else if isArchPackageInstalled("dms-shell-git") { - packageName = "dms-shell-git" - isAUR = true - } else if isArchPackageInstalled("dms-shell-bin") { - packageName = "dms-shell-bin" - isAUR = true - } else if isArchPackageInstalled("dms-shell") { - packageName = "dms-shell" + } else if isArchPackageInstalled("dux-shell") { + packageName = "dux-shell" } else { - fmt.Println("Info: No dms-shell package found.") + fmt.Println("Info: No dux-shell package found.") fmt.Println("Info: Falling back to git-based update method...") return updateOtherDistros() } diff --git a/core/internal/distros/arch.go b/core/internal/distros/arch.go index b53510c7a..baf384504 100644 --- a/core/internal/distros/arch.go +++ b/core/internal/distros/arch.go @@ -1,7 +1,6 @@ package distros import ( - "cmp" "context" "fmt" "os" @@ -165,31 +164,8 @@ func (a *ArchDistribution) detectDMSGreeter() deps.Dependency { return dep } -// AUR packages renamed for Dux; installs from before the rename keep the old name. -var legacyAURNames = map[string]string{ - "dux-shell-git": "dms-shell-git", - "dux-greeter-bin": "greetd-dms-greeter-bin", - "dux-greeter-git": "greetd-dms-greeter-git", - "dux-search-bin": "dsearch-bin", - "dux-search-git": "dsearch-git", - "dux-calendar-bin": "dankcalendar-bin", - "dux-calendar-git": "dankcalendar-git", -} - func (a *ArchDistribution) packageInstalled(pkg string) bool { - return a.installedName(pkg) != "" -} - -// installedName returns the name pkg is installed under, which may be its pre-rename name. -func (a *ArchDistribution) installedName(pkg string) string { - if exec.Command("pacman", "-Q", pkg).Run() == nil { - return pkg - } - legacy, ok := legacyAURNames[pkg] - if ok && exec.Command("pacman", "-Q", legacy).Run() == nil { - return legacy - } - return "" + return exec.Command("pacman", "-Q", pkg).Run() == nil } // parseSRCINFODeps reads a .SRCINFO file and returns runtime dep and makedep package @@ -292,7 +268,7 @@ func (a *ArchDistribution) getMangoMapping(variant deps.PackageVariant) PackageM if variant == deps.VariantGit { return PackageMapping{Name: "mangowm-git", Repository: RepoTypeAUR} } - return PackageMapping{Name: "mangowm", Repository: RepoTypeAUR} + return PackageMapping{Name: "mangowm", Repository: RepoTypeSystem} } func (a *ArchDistribution) getMatugenMapping(variant deps.PackageVariant) PackageMapping { @@ -331,7 +307,7 @@ func (a *ArchDistribution) getDMSMapping(variant deps.PackageVariant) PackageMap if forceDMSGit || variant == deps.VariantGit { return PackageMapping{Name: "dux-shell-git", Repository: RepoTypeAUR} } - return PackageMapping{Name: "dms-shell", Repository: RepoTypeSystem} + return PackageMapping{Name: "dux-shell", Repository: RepoTypeSystem} } func (a *ArchDistribution) detectXwaylandSatellite() deps.Dependency { @@ -418,7 +394,7 @@ func (a *ArchDistribution) InstallPackages(ctx context.Context, dependencies []d systemPkgs, aurPkgs, manualPkgs, variantMap := a.categorizePackages(dependencies, wm, reinstallFlags, skipFlags) - if slices.Contains(aurPkgs, "quickshell-git") && slices.Contains(systemPkgs, "dms-shell") { + if slices.Contains(aurPkgs, "quickshell-git") && slices.Contains(systemPkgs, "dux-shell") { if err := a.preinstallQuickshellGit(ctx, sudoPassword, progressChan); err != nil { return fmt.Errorf("failed to preinstall quickshell-git: %w", err) } @@ -588,7 +564,7 @@ func (a *ArchDistribution) preinstallQuickshellGit(ctx context.Context, sudoPass Progress: 0.18, Step: "Building quickshell-git before system packages...", IsComplete: false, - CommandInfo: "Installing quickshell-git ahead of dms-shell to avoid conflict", + CommandInfo: "Installing quickshell-git ahead of dux-shell to avoid conflict", } return a.installSingleAURPackage(ctx, "quickshell-git", sudoPassword, progressChan, 0.18, 0.32) } @@ -609,7 +585,7 @@ func (a *ArchDistribution) SwapVariants(ctx context.Context, swaps []VariantSwap } if swap.To.Repository == RepoTypeAUR { - from := cmp.Or(a.installedName(swap.From.Name), swap.From.Name) + from := swap.From.Name if err := a.installSingleAURPackageInternal(ctx, swap.To.Name, from, sudoPassword, progressChan, 0.40, 0.85, make(map[string]bool)); err != nil { return err } @@ -631,11 +607,7 @@ func (a *ArchDistribution) installSystemPackages(ctx context.Context, packages [ a.log(fmt.Sprintf("Installing system packages: %s", strings.Join(packages, ", "))) - args := []string{"pacman", "-S", "--needed", "--noconfirm"} - if slices.Contains(packages, "dms-shell") { - args = append(args, "--assume-installed", "dms-shell-compositor=1") - } - args = append(args, packages...) + args := append([]string{"pacman", "-S", "--needed", "--noconfirm"}, packages...) progressChan <- InstallProgressMsg{ Phase: PhaseSystemPackages, @@ -806,15 +778,16 @@ func (a *ArchDistribution) installSingleAURPackageInternal(ctx context.Context, if pkg == "dux-shell-git" { srcinfoPath := filepath.Join(packageDir, ".SRCINFO") - depsToRemove := []string{ - "depends = quickshell", - "depends = dgop", + // extra ships dgop only as dux-gop (provides dgop), which makepkg resolves but pacman -Si does not + srcinfoEdits := []string{ + "/depends = quickshell/d", + `s/^\(\s*depends = \)dgop$/\1dux-gop/`, } - for _, dep := range depsToRemove { - sedCmd := exec.CommandContext(ctx, "sed", "-i", fmt.Sprintf("/%s/d", dep), srcinfoPath) + for _, edit := range srcinfoEdits { + sedCmd := exec.CommandContext(ctx, "sed", "-i", edit, srcinfoPath) if err := sedCmd.Run(); err != nil { - return fmt.Errorf("failed to remove dependency %s from .SRCINFO for %s: %w", dep, pkg, err) + return fmt.Errorf("failed to patch .SRCINFO for %s: %w", pkg, err) } } } diff --git a/core/internal/server/sysupdate/shell.go b/core/internal/server/sysupdate/shell.go index eaaa2e213..f710f162c 100644 --- a/core/internal/server/sysupdate/shell.go +++ b/core/internal/server/sysupdate/shell.go @@ -17,8 +17,7 @@ const ownerQueryTimeout = 10 * time.Second var dmsPackageNames = map[string]bool{ "dms": true, "dms-git": true, - "dms-shell": true, "dms-shell-git": true, "dms-shell-bin": true, - "dux-shell-git": true, + "dux-shell": true, "dux-shell-git": true, } // Arch/Debian/SUSE: 1.7.0+git4915.56234761; Fedora COPR: 0.0.git.4915.56234761 @@ -115,7 +114,7 @@ func packageOwner(ctx context.Context, path string) (InstallMethod, string, stri switch { case commandExists("pacman"): - // "/usr/bin/dms is owned by dms-shell-git 1.7.0+git4915-1" + // "/usr/bin/dms is owned by dux-shell-git 2.0.0+git4915-1" out := runOutput(ctx, "pacman", "-Qo", path) fields := strings.Fields(out) if len(fields) < 2 { diff --git a/core/internal/server/sysupdate/shell_test.go b/core/internal/server/sysupdate/shell_test.go index b7813d00b..7ce5b3446 100644 --- a/core/internal/server/sysupdate/shell_test.go +++ b/core/internal/server/sysupdate/shell_test.go @@ -85,11 +85,11 @@ func TestDetectChannel(t *testing.T) { } func TestFindShellPackagePrefersOwner(t *testing.T) { - pkgs := []Package{{Name: "dms-shell"}, {Name: "dms-shell-git"}, {Name: "firefox"}} - if got := findShellPackage(pkgs, "dms-shell-git"); got == nil || got.Name != "dms-shell-git" { + pkgs := []Package{{Name: "dux-shell"}, {Name: "dux-shell-git"}, {Name: "firefox"}} + if got := findShellPackage(pkgs, "dux-shell-git"); got == nil || got.Name != "dux-shell-git" { t.Errorf("owner match = %v", got) } - if got := findShellPackage(pkgs, ""); got == nil || got.Name != "dms-shell" { + if got := findShellPackage(pkgs, ""); got == nil || got.Name != "dux-shell" { t.Errorf("fallback = %v", got) } if got := findShellPackage([]Package{{Name: "firefox"}}, "dms"); got != nil { diff --git a/core/internal/tui/views_install.go b/core/internal/tui/views_install.go index f862e78bc..9a03416be 100644 --- a/core/internal/tui/views_install.go +++ b/core/internal/tui/views_install.go @@ -125,7 +125,7 @@ func dmsPackageName(distroID string, dependencies []deps.Dependency) string { if isGit { return "dux-shell-git" } - return "dms-shell" + return "dux-shell" case distros.FamilyFedora, distros.FamilyUbuntu, distros.FamilyDebian, distros.FamilySUSE, distros.FamilyVoid: if isGit { return "dms-git" diff --git a/quickshell/Modules/Lock/Lock.qml b/quickshell/Modules/Lock/Lock.qml index ddff32209..b54ddce3e 100644 --- a/quickshell/Modules/Lock/Lock.qml +++ b/quickshell/Modules/Lock/Lock.qml @@ -284,7 +284,7 @@ Scope { Pam { id: sharedPam - lockSecured: root.shouldLock + lockSecured: root.shouldLock && sessionLock.secure buffer: root.sharedPasswordBuffer onUnlockRequested: root.unlock() } diff --git a/quickshell/Modules/Lock/LockScreenContent.qml b/quickshell/Modules/Lock/LockScreenContent.qml index 38fb99392..147b62583 100644 --- a/quickshell/Modules/Lock/LockScreenContent.qml +++ b/quickshell/Modules/Lock/LockScreenContent.qml @@ -73,7 +73,6 @@ FocusScope { Component.onCompleted: { WeatherService.addRef(); - UserInfoService.getUserInfo(); lockerReadyArmed = true; }