From 4a1888af8fde939e8efa8bb03e287310c7200c81 Mon Sep 17 00:00:00 2001 From: Jarek <65668659+jardahrazdera@users.noreply.github.com> Date: Fri, 22 Aug 2025 15:40:33 +0200 Subject: [PATCH] Fix multi-package removal in package uninstaller (#822) * Fix multi-package removal in omarchy-pkg-remove The script already had multi-selection enabled with --multi flag, but wasn't handling multiple selections correctly. When users selected multiple packages with Tab, they wouldn't all get removed. Fixed by using xargs to properly convert newline-separated package names from fzf into individual arguments for yay. Fixes #805 * Add multi-select explainer * Fix multi install like we did for remove --------- Co-authored-by: David Heinemeier Hansson --- bin/omarchy-pkg-install | 9 +++++---- bin/omarchy-pkg-remove | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/bin/omarchy-pkg-install b/bin/omarchy-pkg-install index ef3cff34..fe32b30e 100755 --- a/bin/omarchy-pkg-install +++ b/bin/omarchy-pkg-install @@ -6,7 +6,7 @@ omarchy-ensure-aur-available fzf_args=( --multi --preview 'yay -Sii {1}' - --preview-label='alt-p: toggle description, alt-j/k: scroll, F11: maximize' + --preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize' --preview-label-pos='bottom' --preview-window 'down:65%:wrap' --bind 'alt-p:toggle-preview' @@ -15,10 +15,11 @@ fzf_args=( --color 'pointer:green,marker:green' ) -pkg_name=$(yay -Slq | fzf "${fzf_args[@]}") +pkg_names=$(yay -Slq | fzf "${fzf_args[@]}") -if [[ -n "$pkg_name" ]]; then - yay -Sy --noconfirm "$pkg_name" +if [[ -n "$pkg_names" ]]; then + # Convert newline-separated selections to space-separated for yay + echo "$pkg_names" | tr '\n' ' ' | xargs yay -Sy --noconfirm sudo updatedb omarchy-show-done fi diff --git a/bin/omarchy-pkg-remove b/bin/omarchy-pkg-remove index a8243899..d7a73ce7 100755 --- a/bin/omarchy-pkg-remove +++ b/bin/omarchy-pkg-remove @@ -3,7 +3,7 @@ fzf_args=( --multi --preview 'yay -Qi {1}' - --preview-label='alt-p: toggle description, alt-j/k: scroll, F11: maximize' + --preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize' --preview-label-pos='bottom' --preview-window 'down:65%:wrap' --bind 'alt-p:toggle-preview' @@ -12,10 +12,11 @@ fzf_args=( --color 'pointer:red,marker:red' ) -pkg_name=$(yay -Qqe | fzf "${fzf_args[@]}") +pkg_names=$(yay -Qqe | fzf "${fzf_args[@]}") -if [[ -n "$pkg_name" ]]; then - yay -Rns --noconfirm "$pkg_name" +if [[ -n "$pkg_names" ]]; then + # Convert newline-separated selections to space-separated for yay + echo "$pkg_names" | tr '\n' ' ' | xargs yay -Rns --noconfirm sudo updatedb omarchy-show-done fi