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 <david@hey.com>
This commit is contained in:
Jarek 2025-08-22 15:40:33 +02:00 committed by GitHub
parent 53217c4c83
commit 4a1888af8f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 8 deletions

View File

@ -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

View File

@ -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