Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env bash
  2. declare by_size
  3. has() {
  4. local verbose=0
  5. if [[ $1 = '-v' ]]; then
  6. verbose=1
  7. shift
  8. fi
  9. for c; do c="${c%% *}"
  10. if ! command -v "$c" &> /dev/null; then
  11. (( "$verbose" > 0 )) && err "$c not found"
  12. return 1
  13. fi
  14. done
  15. }
  16. err() {
  17. printf "\e[31m%s\e[0m\n" "$*" >&2
  18. }
  19. die() {
  20. (( $# > 0 )) && err "$*"
  21. exit 1
  22. }
  23. has -v fzf || die
  24. fzf() {
  25. command fzf -e --multi --no-hscroll --inline-info --cycle --bind='Ctrl-a:toggle-all' "$@"
  26. }
  27. case $1 in
  28. -s|--size) by_size=1; shift;
  29. esac
  30. if (( $# > 0 )); then
  31. sudo pacman -Rcusn "$@"
  32. exit
  33. fi
  34. if (( by_size )); then
  35. mapfile -t pkgs < <(expac -H M '%m\t%n' | sort -hr | fzf --preview='pacman -Si {3}' -q '!^lib ' | cut -f2)
  36. else
  37. mapfile -t pkgs < <(expac '%n' | fzf --preview='pacman -Si {1}' -q '!^lib ' | cut -d' ' -f1)
  38. fi
  39. (( ${#pkgs[@]} > 0 )) && sudo pacman -Rcusn "${pkgs[@]}"