Compare commits

..

90 Commits
v0.5 ... master

Author SHA1 Message Date
Eric Lay 6612619a46 aur updater updated 2023-11-21 18:15:30 -06:00
Eric Lay 7a54204516 updating updater 2023-11-21 06:45:36 -06:00
Eric Lay 1012970b6b updated updater 2023-11-20 21:50:24 -06:00
Eric Lay 24b86bb679 added Updater feature/refactor 2023-11-20 21:06:47 -06:00
Eric Lay f2cd1219e8 update README 2023-11-20 18:19:27 -06:00
Eric Lay f0e110187f update screenshot 2023-11-20 18:15:59 -06:00
Eric Lay 2363392cb4 update README 2023-11-19 15:12:31 -06:00
Eric Lay 42f1fc9a96 update README 2023-11-19 15:11:37 -06:00
Eric Lay b6af4c3c68 update README 2023-11-19 15:06:15 -06:00
Eric Lay 4bbe05cff7 update README 2023-11-19 15:05:19 -06:00
Eric Lay e1a301eaeb update README 2023-11-19 15:03:22 -06:00
Eric Lay de87777fa1 Restructre and new keybinds 2023-11-19 13:13:20 -06:00
ericlay 5dab69ec94 updated PKGBUILD 2023-03-30 08:40:21 -05:00
ericlay ad26ce2b17 updated result scoring for better matching with descriptions 2023-03-30 08:32:52 -05:00
ericlay 864c9b7430 updating PKGBUILD 2023-03-29 12:01:56 -05:00
Eric Lay 997ea2bd66
Merge pull request #7 from ericlay/dev
VERSION 1.0 🥳
2023-03-29 15:22:52 -05:00
Eric Lay 3a710a3e13
Merge pull request #6 from ericlay/dev
merging
2023-03-29 15:11:27 -05:00
ericlay 81aff500e1 VERSION 1.0 🥳 2023-03-29 10:20:03 -05:00
ericlay 1ba2367452 some refactoring and updating PKGBUILD/README 2023-03-29 10:04:06 -05:00
ericlay 043cdade9e added installed markers to Aur search index 2023-03-27 13:56:01 -05:00
ericlay 7bb851a216 refactoring to work better with descriptions 2023-03-27 08:34:44 -05:00
ericlay 7749aa9fe9 stripped descriptions from passing to package manager 2023-03-26 14:29:16 -05:00
ericlay 20a1da6d98 added descriptions to AUR searchable index 2023-03-26 14:18:43 -05:00
ericlay 3dcbf20e37 added color to warning 2023-03-25 15:31:25 -05:00
ericlay d3e0a02b6a added descriptions to searchable index 2023-03-25 15:18:03 -05:00
Eric Lay b5357d7fb4 change base to gawk function 2023-03-05 16:48:36 -06:00
Eric Lay f54e900c47 setting up dev branch 2023-02-25 12:22:45 -06:00
Eric Lay a58b3b09e2
Update README.md 2021-07-27 15:04:54 -05:00
airclay 89872410e8 version number 2021-07-27 14:21:40 -05:00
airclay ae291bb2db paru support 2021-07-27 14:18:36 -05:00
Eric Lay d81662a531
Update readme 2021-07-16 18:54:33 -05:00
airclay e94c764be2 updated PKGBUILD 2021-07-16 16:36:24 -05:00
airclay 72cf8cfcfb added fish shell adapt command 2021-07-16 16:13:13 -05:00
Eric Lay 6f6538307b updated readme 2020-09-14 20:57:25 -05:00
Eric Lay 9e69541486 refactored structure and added keybinds 2020-09-14 20:51:42 -05:00
Eric Lay aef68257a1 added ctrl+p keybind to view aur pkgbuild 2020-09-14 19:08:21 -05:00
Eric Lay 30be62e749 v0.9.3 2020-07-30 14:05:58 -05:00
Eric Lay 4c2ef82cee v0.9.3 2020-07-30 14:00:59 -05:00
Eric Lay 6cbb1bec9d add armv7h arch 2020-07-30 13:51:50 -05:00
Eric Lay 53cdfcd930 v0.9.2 2020-07-30 06:35:46 -05:00
Eric Lay 4ab5221dcb hyphenated package solution 2020-07-30 06:32:17 -05:00
Eric Lay bbead99aa6 update 2020-07-29 21:42:34 -05:00
Eric Lay e31d46b2fa update 2020-07-29 21:41:10 -05:00
Eric Lay 5f6e90026e update 2020-07-29 21:35:36 -05:00
Eric Lay 81fb944819 hyphenated pkg issue 2020-07-29 21:22:28 -05:00
Eric Lay 219a6fe392 fixed hyphenated pkg issue 2020-07-29 16:37:41 -05:00
Eric Lay d2c5aba037 updated info panel 2020-07-17 20:34:40 -05:00
Eric Lay 674052ece5 updated readme 2020-06-28 23:17:39 -05:00
Eric Lay c92b5bd81a updated readme 2020-06-28 23:15:23 -05:00
Eric Lay 231bc89130 updated readme 2020-06-28 23:12:14 -05:00
Eric Lay 425bd64f17 updated readme 2020-06-28 23:10:23 -05:00
Eric Lay 0d0b111c00 updated readme 2020-06-28 23:09:02 -05:00
Eric Lay e8f77aca59 fixed comment 2020-06-28 22:38:18 -05:00
Eric Lay 3050f4ed97 date check for aur pkg list 2020-06-28 22:36:01 -05:00
Eric Lay a82ec5b997 Revert "v0.9.1"
This reverts commit 22f814d880
2020-06-29 03:21:28 +00:00
Eric Lay 03a6798a22 date check for aur pkg list 2020-06-28 22:13:08 -05:00
Eric Lay a38d06030c small update 2020-06-28 22:03:09 -05:00
Eric Lay 22f814d880 v0.9.1 2020-06-28 10:38:38 -05:00
Eric Lay c8c65bf7c2 v0.9.1 2020-06-28 10:36:03 -05:00
Eric Lay 564a7b4c7f v0.9 2020-06-28 10:01:37 -05:00
Eric Lay 13afb57293 v0.9 2020-06-28 09:57:35 -05:00
Eric Lay a4cb11a268 fixed installed annotation issue 2020-06-28 09:19:54 -05:00
Eric Lay a0dfd9146c merged remove from official and AUR repo functions 2020-06-28 08:54:12 -05:00
Eric Lay afb0986c54 fixed -la issue 2020-06-27 20:52:30 -05:00
Eric Lay cfc557bed3 work in progress 2020-06-27 17:16:04 -05:00
Eric Lay e7c65c4366 work in progress 2020-06-27 16:00:26 -05:00
Eric Lay 5322dd0382 work in progress 2020-06-27 15:59:20 -05:00
Eric Lay f3a41e035d Merge https://gitlab.com/airclay/fuzzy-pkg-finder 2020-06-26 19:31:00 -05:00
Eric Lay 2396162abd work in progress 2020-06-26 19:28:37 -05:00
Eric Lay 89e9e70cb7 work in progress 2020-06-26 19:25:42 -05:00
Eric Lay 6d6afa7279
Merge pull request #1 from yochananmarqos/patch-1
Improve PKGBUILD
2020-06-26 14:37:21 -05:00
Eric Lay 10ceaf81cc readme/usage 2020-06-24 19:01:12 -05:00
Eric Lay 1e11f765f8 update pkgbuild 2020-06-24 18:22:06 -05:00
Eric Lay 9988bd2e95 added features 2020-06-24 18:20:28 -05:00
Mark Wagie 413abb5344
Improve PKGBUILD
You forgot wget. ;)
2020-06-24 08:43:30 -06:00
Eric Lay 2301a58d7e aesthetic work 2020-06-23 16:58:50 -05:00
Eric Lay c6c93824b1 aesthetic work 2020-06-23 16:54:00 -05:00
Eric Lay 23f79776eb fancy readable comments 2020-06-23 15:22:31 -05:00
Eric Lay 500a04b9da update pkgbuild 2020-06-23 15:15:30 -05:00
Eric Lay e4103280ae v0.6 2020-06-23 15:13:45 -05:00
Eric Lay fe67c6edf2 update pkgbuild 2020-06-23 15:01:16 -05:00
Eric Lay 426b82bf78 work in progress 2020-06-23 14:58:21 -05:00
Eric Lay bf0b269cd8 Update fpf 2020-06-22 23:10:20 +00:00
Eric Lay 99672061c3 work in progress 2020-06-22 17:33:55 -05:00
Eric Lay 1bfac3f726 work in progress 2020-06-22 16:39:16 -05:00
Eric Lay 0652254a0a work in progress 2020-06-22 16:04:34 -05:00
Eric Lay 534c96ccf4 work in progress 2020-06-22 14:43:06 -05:00
Eric Lay 2f58f64fac work in progress 2020-06-21 16:31:25 -05:00
Eric Lay ad658b1604 work in progress 2020-06-21 15:59:33 -05:00
Eric Lay d553cc5757 updated readme 2020-06-15 15:03:11 -05:00
4 changed files with 414 additions and 56 deletions

View File

@ -1,21 +1,25 @@
# Maintainer: Eric Lay <ericlaytm@gmail.com> # Maintainer: Eric Lay <ericlaytm@gmail.com>
# Contributor: Yochananmarqos
pkgname=fuzzy-pkg-finder pkgname=fuzzy-pkg-finder
pkgver=0.5 pkgver=1.2
pkgrel=1 pkgrel=1
pkgdesc="Simple cli command for using fzf to search and install packages" pkgdesc="Simple cli command for using fzf to search and install packages"
arch=(any) arch=('x86_64' 'aarch64' 'armv7h')
url="https://github.com/ericlay/$pkgname" url="https://github.com/ericlay/$pkgname"
license=('GPL') license=('GPL3')
depends=('pacman' depends=('pacman'
'yay' 'fzf'
'fzf') 'expac'
'curl'
'gzip'
'jq')
makedepends=('git') makedepends=('git')
source=("git+https://gitlab.com/airclay/fuzzy-pkg-finder.git#tag=v$pkgver") optdepends=('yay: AUR helper'
'paru: AUR helper')
source=("git+https://github.com/ericlay/fuzzy-pkg-finder.git#tag=v$pkgver")
md5sums=('SKIP') md5sums=('SKIP')
package() { package() {
cd "$srcdir" cd "$srcdir/$pkgname"
install -dm755 $pkgdir/usr/bin install -Dm755 fpf -t "$pkgdir/usr/bin"
cp -r $srcdir/$pkgname/fpf $pkgdir/usr/bin/
chmod a+x $pkgdir/usr/bin/*
} }

View File

@ -1,15 +1,34 @@
# fuzzy-pkg-finder <div align="right">
<img src="https://img.shields.io/static/v1?label=Language&message=shell&color=%235BB97E&style=flat-square"/>
<img src="https://img.shields.io/github/license/ericlay/fuzzy-pkg-finder?color=%235BB97E&label=LIC&style=flat-square"/>
</div>
<div align="center"><h1>📦<br>Fuzzy-pkg-finder</h1></div>
**Simple cli command for using fzf to search and install packages.**\ **Simple cli utility using fzf to search and install/list/remove packages.**\
\ \
Leverages the power of fzf to search package names and presents complete package information in preview pane. \ ![Screenshot](https://raw.githubusercontent.com/ericlay/fuzzy-pkg-finder/master/fpf.png) \
On selection will hand off to Pacman or Yay to complete transaction. \ \
Includes fpf systemd timer to keep files database up to date automagically. Leverages the power of fzf to search package names and descriptions then presents complete package information in preview pane. \
On selection will hand off to Pacman or Paru/Yay to complete transaction. \
\ \
*For use with Pacman or Yay package managers only.*\ *For use with Pacman/Yay/Paru package managers only.*\
*Entirely inspired by command found at https://wiki.archlinux.org/index.php/Fzf* \
\ \
Installation: There are countless fzf package manager wrappers out there, some much more built out that this. \
What separates Fuzzy-pkg-finder?
- It's mine and it works the way I like it to
- It works as a simple script to wrap pacman/yay/paru, no need to rebuild the wheel
- Searches both package names and descriptions for keyword
- Hide preview window to see only packages and descriptions
- Shows files list and/or missing files for official repo or installed AUR packages
- Toggle between package info view and PKGBUILD view on AUR package preview
- Update feature shows package information and link to recent commits \
\
\
Installation: \
For Arch and arch-based distros, it is available in the AUR. \
Use: `paru -S fuzzy-pkg-finder` or `yay -S fuzzy-pkg-finder` \
\
Manual build and install:
``` ```
git clone https://github.com/ericlay/fuzzy-pkg-finder git clone https://github.com/ericlay/fuzzy-pkg-finder
cd fuzzy-pkg-finder cd fuzzy-pkg-finder
@ -18,10 +37,46 @@ makepkg -sric
\ \
Usage: Usage:
``` ```
Syntax: fpf -[y|h] Syntax: fpf [-a| --aur] [-l| --list-installed] [-la| --list-aur-installed]
[R| --remove] [-o| --orphans] [-U | --update] [-h | --help]
Defaults to Pacman if no options passed Defaults to Pacman if no options passed
options: Searching for a package:
-y Search and install with Yay ex: fpf [pkg name] for official repo search
-h Print this help screen ex: fpf -a [pkg name] for aur search
Options:
-a, --aur
Search/List and install from AUR with Yay
-l, --list-installed
Search/List installed packages from official repo
-la, --list-aur-installed
Search/List installed packages from AUR
-R, -remove
Search/List installed packages for removal
-o, --orphans
Search/List orphaned packages for removal
-U, --update
Shows packages with updates available
-h, --help
Print this help screen
```
\
Keybinds:
```
'ctrl + /' Toggle the preview window
'ctrl + h' Show help in the preview window
'ctrl + k' Show the keybinds in the preview window
'ctrl + n' Move to the next selected item
'ctrl + b' Back to previoius selected item
When browsing AUR or installed Aur pkgs:
'ctrl + p' Preview the highlighted pkgbuild file
'ctrl + x' Return to the highlighted pkg info
``` ```

367
fpf
View File

@ -1,45 +1,344 @@
#!/usr/bin/bash #!/usr/bin/bash
### Set up package lists
pacman -Slq > /tmp/packages &
### Help ### Help
Help() { Help() {
echo helpF="/tmp/fpf-help"
echo "Use fzf to search and install with Pacman and Yay" { printf "\n%s\n" "Use fzf to search and install with Pacman or Yay/Paru"
echo "Defaults to Pacman if no options passed" printf "\n%s\n\t%s\n\t\t%s\n" "SYNTAX" \
echo "fpf [-a| --aur] [-l| --list-installed] [-la| --list-aur-installed]" "[R| --remove] [-o| --orphans] [-h | --help]"
echo "Syntax: fpf -[y|h]" printf "\n%s\n\t%s\n\t\t%s\n\n\t%s\n\t\t%s\n" "EXAMPLE" "For official repo search:" \
echo "fpf [pkg name]" "For AUR search:" "fpf -a [pkg name]"
echo "options:" printf "\n%s\n" "OPTIONS"
echo printf "\t%s\n\\t\t%s\n\n" "-l, --list-installed" "Search/List installed packages from official repo"
echo "y Search and install with Yay" printf "\t%s\n\\t\t%s\n\n" "-la, --list-aur-installed" "Search/List installed packages from AUR"
echo printf "\t%s\n\\t\t%s\n\n" "-a, --aur" "Search/List and install from AUR with Yay"
echo "h Print this help screen." printf "\t%s\n\\t\t%s\n\n" "-R, -remove" "Search/List installed packages for removal"
echo printf "\t%s\n\\t\t%s\n\n" "-o, --orphans" "Search/List orphaned packages for removal"
echo printf "\t%s\n\\t\t%s\n\n" "-U, --update" "Show packages with updates available"
printf "\t%s\n\\t\t%s\n\n" "-h, --help" "Print this help screen"; } > "$helpF"
} }
### MAIN KBINDS() {
while getopts ":yh" option; do kbindF="/tmp/fpf-kbinds"
case $option in { printf "\n%s\n\n %s\n" "Keybinds:" "GLOBAL"
printf "\t%s\t%s\n" "'ctrl + h'" "Show help in the preview window"
printf "\t%s\t%s\n" "'ctrl + k'" "Show the keybinds in the preview window"
printf "\t%s\t%s\n" "'ctrl + /'" "Toggle the preview window"
printf "\t%s\t%s\n" "'ctrl + n'" "Move to the next selected item"
printf "\t%s\t%s\n" "'ctrl + b'" "Back to previoius selected item"
printf "\n %s\n" "AUR"
printf "\t%s\t%s\n" "'ctrl + p'" "Preview the highlighted pkgbuild file"
printf "\t%s\t%s\n" "'ctrl + x'" "Return to the highlighted pkg info"; } > "$kbindF"
}
y) # Check things are up to date
wget -P /tmp/aur/ https://aur.archlinux.org/packages.gz >/dev/null 2>&1 && gunzip -f /tmp/aur/packages.gz && cat /tmp/aur/packages >> /tmp/packages UpdateInfos() {
yay -Qq > /tmp/local_packages [ -f /var/lib/pacman/sync/core.files ] || { printf "Syncing files database"; sudo pacman -Fy; }
cat /tmp/packages /tmp/local_packages | sort | uniq > /tmp/all_packages d1=$(stat -c %y /var/lib/pacman/sync/core.files)
cat /tmp/packages | awk '{print $2($4=="" ? "" : " *")}'| fzf -e -m --preview 'cat <(yay -Si {1}) <(yay -Fl {1} | awk "{print \$2}")' --layout=reverse | xargs -ro -n1 yay -S d2=$(stat -c %y /var/lib/pacman/sync/core.db)
exit;; d1="${d1:0:10}"
d2="${d2:0:10}"
[[ "${d2///-/}" > "${d1//-/}" ]] && { printf "Files database is out of date\nSyncing now..."; sudo pacman -Fy; }
}
h) Help UpdateAurInfos() {
exit;; [[ ! -d /tmp/aur ]] && mkdir -p /tmp/aur
zcat <(curl https://aur.archlinux.org/packages-meta-ext-v1.json.gz) |
jq --compact-output '.[] |
{ Name, Description } ' |
awk -F'"' '{ printf "%-20s\t%s\n", $4, $8}' > /tmp/aur/fpf-packages-meta
while IFS= read -r pkgName; do
grep -w "^$pkgName " /tmp/aur/fpf-packages-meta >> /tmp/aur/fpf-installed
done < <(pacman -Qqm)
sort <(comm -23 <(cat /tmp/aur/fpf-packages-meta | sort) <( cat /tmp/aur/fpf-installed | sort)) \
<(comm -12 <( cat /tmp/aur/fpf-packages-meta | sort) <(cat /tmp/aur/fpf-installed | sort) |
awk -F"\t" '{print $1" \033[32m*\033[0m ", $2}') -o /tmp/aur/fpf-packages-meta
}
\?) echo "Error: Invalid option" AurFD() {
exit;; [ -f /tmp/aur/packages-meta ] ||
printf "Syncing AUR package information..." && UpdateAurInfos
d1=$(stat -c %y /tmp/aur/fpf-packages-meta)
d1="${d1:0:10}"
d2=$(date -I'date')
[[ "${d2///-/}" > "${d1//-/}" ]] && {
printf "Syncing AUR package information..."; UpdateAurInfos; }
}
esac # Check AUR helper
done AHELPR=""
AHELPRUPDATE=""
if [[ -z "$AHELPR" ]]
then
if [[ -f /usr/bin/paru ]]
then
AHELPR="paru"
AHELPRUPDATE="paru -Sua"
elif [[ -f /usr/bin/yay ]]
then
AHELPR="yay"
AHELPRUPDATE="yay -a"
else
printf "Suitable AUR Helper not found.\nPlease install \"paru\" or \"yay\" to continue."
exit 1
fi
fi
pacman -Qq > /tmp/local_packages # Create the helper files
cat /tmp/packages /tmp/local_packages | sort | uniq > /tmp/all_packages Help
cat /tmp/all_packages | awk '{print $2($4=="" ? "" : " *")}'| fzf -e -m --preview 'cat <(pacman -Si {1}) <(pacman -Fl {1} | awk "{print \$2}")' --layout=reverse | xargs -ro -n1 sudo pacman -S KBINDS
### Official Repo
# Get Official package list, sort, mark installed, preview infos and finally hand off to pacman for install
Official() {
printf "Setting things up..."
sort <(comm -23 <(expac -S '%-20n\t%d' | sort) <(expac '%-20n\t%d' | sort)) <(comm -12 <(expac -S '%-20n\t%d' | sort) \
<(expac '%-20n\t%d' | sort) | awk -F"\t" '{print $1"\033[32m*\033[0m ", $2}') &>/dev/null > /tmp/fpf-packages
fzf -q "$1" -e -m \
--preview='cat <(pacman -Si {1}) <(pacman -Fl {1} | awk "{print \$2}")' \
--preview-window=55%:wrap:border-sharp \
--layout=reverse \
--marker='>>' \
--header="$(echo -e '\n Select packages to install\n (use TAB to toggle selection)\n\n')" \
--info=hidden \
--ansi \
--margin="2%,1%,2%,1%" \
--cycle \
--tiebreak=begin,chunk,length \
--bind 'focus:transform-preview-label:echo ⌇ {1} ⌇' \
--bind=ctrl-k:preview:"cat /tmp/fpf-kbinds" \
--bind=ctrl-h:preview:"cat /tmp/fpf-help" \
--bind 'ctrl-/:change-preview-window(hidden|)' \
--bind ctrl-n:next-selected,ctrl-b:prev-selected < /tmp/fpf-packages |
awk '{print $1}' |
sed -e 's/\*$//' |
xargs -ro sudo pacman -S
}
# List installed pkgs
Installed() {
expac '%-20n\t%d' |
fzf -q "$1" -e -m \
--preview='cat <(pacman -Qik {1}) <(echo "") <(pacman -Fl {1} | awk "{print \$2}")' \
--preview-window=65%:wrap \
--layout=reverse \
--marker='>>' \
--header="$(echo -e '\n Select packages to print info\n (use TAB to toggle selection)\n\n')" \
--info=hidden \
--ansi \
--margin="2%,1%,2%,1%" \
--cycle \
--bind 'focus:transform-preview-label:echo ⌇ {1} ⌇' \
--bind=ctrl-k:preview:"cat /tmp/fpf-kbinds" \
--bind=ctrl-h:preview:"cat /tmp/fpf-help" \
--bind 'ctrl-/:change-preview-window(hidden|)' \
--bind ctrl-n:next-selected,ctrl-b:prev-selected |
awk '{print $1}' |
xargs -ro pacman -Qik
}
# Remove installed pkgs
Remove() {
expac '%-20n\t%d' |
fzf -q "$1" -e -m \
--preview='cat <(pacman -Si {1} 2>/dev/null || yay -Qi {1} 2>/dev/null || paru -Qi {1}) <(pacman -Ql {1} | awk "{print \$2}")' \
--preview-window=65%:wrap \
--layout=reverse \
--marker='>>' \
--header="$(echo -e '\n Select packages to remove\n (use TAB to toggle selection)\n\n')" \
--info=hidden \
--ansi \
--margin="2%,1%,2%,1%" \
--cycle \
--bind 'focus:transform-preview-label:echo ⌇ {1} ⌇' \
--bind=ctrl-k:preview:"cat /tmp/fpf-kbinds" \
--bind=ctrl-h:preview:"cat /tmp/fpf-help" \
--bind 'ctrl-/:change-preview-window(hidden|)' \
--bind ctrl-n:next-selected,ctrl-b:prev-selected |
awk '{print $1}' |
xargs -ro sudo pacman -Rsn
}
# Update installed pkgs
Update() (
viewUpdates() {
fzf --preview='cat <(pacman -Si {1}) <(pacman -Fl {1} | awk "{print \$2}")' \
--preview-window=65%:wrap \
--layout=reverse \
--marker='>>' \
--header="$(echo -e '\nPackages with updates available:\n\n')" \
--info=hidden \
--ansi \
--margin="2%,1%,2%,1%" \
--cycle \
--bind 'focus:transform-preview-label:echo \
⌇ Commit History: https://gitlab.archlinux.org/archlinux/packaging/packages/{1}/-/commits/main ⌇' \
--bind=ctrl-k:preview:"cat /tmp/fpf-kbinds" \
--bind=ctrl-h:preview:"cat /tmp/fpf-help" \
--bind 'ctrl-/:change-preview-window(hidden|)' \
--bind ctrl-n:next-selected,ctrl-b:prev-selected < /tmp/fpf-updates > /dev/null
[[ "$(printf '\nWould you like to update? [y/N]> ' >&2; read; echo $REPLY)" == [Nn]* ]] \
&& printf "\nPlease update soon :(\n" || sudo pacman -Syu
}
checkupdates > "/tmp/fpf-updates"
[ -s "/tmp/fpf-updates" ] && viewUpdates ||
printf "\nThere are no available updates :)\n"
)
### AUR
# Get AUR package database, remove unwanted lines, sort, mark installed, preview infos and finally hand off to yay for install
Aur() {
AurFD
fzf -q "$1" -e -m \
--preview='cat <(yay -Si {1} 2>/dev/null || paru -Si {1}) <(pacman -Ql {1} 2>/dev/null | awk "{print \$2}")' \
--preview-window=55%:wrap:border-sharp \
--layout=reverse \
--marker='>>' \
--header="$(echo -e ' Select packages to install\n (use TAB to toggle selection)\n')" \
--info=hidden \
--ansi \
--margin="2%,1%,2%,1%" \
--cycle \
--tiebreak=begin,chunk,length \
--bind 'focus:transform-preview-label:echo ⌇ {1} ⌇' \
--bind=ctrl-k:preview:"cat /tmp/fpf-kbinds" \
--bind=ctrl-h:preview:"cat /tmp/fpf-help" \
--bind ctrl-n:next-selected,ctrl-b:prev-selected \
--bind 'ctrl-/:change-preview-window(hidden|)' \
--bind=ctrl-p:preview:'curl --silent https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD\?h={1}' \
--bind=ctrl-x:preview:'cat <(yay -Si {1} 2>/dev/null || paru -Si {1}) <(pacman -Ql {1} 2>/dev/null | awk "{print \$2}")' \
< /tmp/aur/fpf-packages-meta |
awk '{print $1}' |
sed -e 's/\*$//' |
xargs -ro $AHELPR -S
}
# List installed pkgs only from AUR
AurInstalled() {
AurFD
while IFS= read -r pkgName; do
grep -w "^$pkgName " /tmp/aur/fpf-packages-meta >> /tmp/aur/fpf-installed
done < <(pacman -Qqm)
fzf -q "$1" -e -m \
--preview 'cat <(pacman -Qik {1}) <(echo "") <(pacman -Ql {1} | awk "{print \$2}")' \
--preview-window=65%:wrap \
--layout=reverse \
--marker='>>' \
--header="$(echo -e ' Select packages to print info\n (use TAB to toggle selection)\n')" \
--info=hidden \
--ansi \
--margin="2%,1%,2%,1%" \
--cycle \
--bind 'focus:transform-preview-label:echo ⌇ {1} ⌇' \
--bind=ctrl-k:preview:"cat /tmp/fpf-kbinds" \
--bind=ctrl-h:preview:"cat /tmp/fpf-help" \
--bind 'ctrl-/:change-preview-window(hidden|)' \
--bind ctrl-n:next-selected,ctrl-b:prev-selected \
--bind=ctrl-p:preview:'curl --silent https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD\?h={1}' \
--bind=ctrl-x:preview:'cat <(pacman -Si {1} 2>/dev/null || yay -Qi {1} 2>/dev/null ||
paru -Qi {1}) <(pacman -Ql {1} | awk "{print \$2}")' \
< /tmp/aur/fpf-installed |
awk '{print $1}' |
xargs -ro pacman -Qik
}
# Update AUR installed pkgs
UpdateAURpkgs() (
viewAURUpdates() {
fzf --preview='cat <(yay -Si {1} 2>/dev/null || paru -Si {1}) <(pacman -Ql {1} 2>/dev/null | awk "{print \$2}")' \
--preview-window=65%:wrap \
--layout=reverse \
--marker='>>' \
--header="$(echo -e '\nPackages with updates available:\n\n')" \
--info=hidden \
--ansi \
--margin="2%,1%,2%,1%" \
--cycle \
--bind 'focus:transform-preview-label:echo ⌇ {1} ⌇' \
--bind=ctrl-k:preview:"cat /tmp/fpf-kbinds" \
--bind=ctrl-h:preview:"cat /tmp/fpf-help" \
--bind 'ctrl-/:change-preview-window(hidden|)' \
--bind=ctrl-p:preview:'curl --silent https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD\?h={1}' \
--bind=ctrl-x:preview:'cat <(pacman -Si {1} 2>/dev/null || yay -Qi {1} 2>/dev/null ||
paru -Qi {1}) <(pacman -Ql {1} | awk "{print \$2}")' < "/tmp/aur/fpf-updates" > /dev/null
[[ "$(printf '\nWould you like to update? [y/N]> ' >&2; read; echo $REPLY)" == [Nn]* ]] \
&& printf "\nPlease update soon :(\n" || $AHELPRUPDATE
rm /tmp/aur/fpf-updates
}
while true; do printf "Reading updates" & eval "$(yay -a > /tmp/aur/fpf-yay & sleep ${1:-3})"; break; done
touch "/tmp/aur/fpf-updates"; grep '^[0-9]' "/tmp/aur/fpf-yay" | cut -c 8- > "/tmp/aur/fpf-updates"
[ -s "/tmp/aur/fpf-updates" ] && viewAURUpdates ||
printf "\nThere are no available updates :)\n"
)
### ORPHANS
# List orphaned packages and remove selected
Orphans() {
[ -f /tmp/fpf-orphans ] ||
while IFS= read -r pkgName; do
expac '%-20n\t%d' "$pkgName" >> /tmp/fpf-orphans
done < <(pacman -Qtdq)
fzf -q "$1" -e -m \
--preview='cat <(pacman -Qik {1} 2>/dev/null || yay -Qi {1} 2>/dev/null ||
paru -Qi {1}) <(pacman -Ql {1} | awk "{print \$2}")' \
--preview-window=65%:wrap \
--layout=reverse \
--marker='>>' \
--header="$(echo -e ' Select packages to remove\n (use TAB to toggle selection)\n')" \
--info=hidden \
--ansi \
--margin="2%,1%,2%,1%" \
--cycle \
--bind 'focus:transform-preview-label:echo ⌇ {1} ⌇' \
--bind=ctrl-k:preview:"cat /tmp/fpf-kbinds" \
--bind=ctrl-h:preview:"cat /tmp/fpf-help" \
--bind ctrl-n:next-selected,ctrl-b:prev-selected \
--bind 'ctrl-/:change-preview-window(hidden|)' \
< /tmp/fpf-orphans |
awk '{print $1}' |
xargs -ro sudo pacman -Rsn
}
### MAIN
# Update the files database
UpdateInfos
# Test for AUR option, if not run with pacman
if [[ ! "$1" =~ ^- ]]; then
Official "$1"
else
for opt in "$@"; do
case $opt in
-a|--aur)
Aur "$2"
;;
-l|--list-installed)
Installed "$2"
;;
-la|--list-aur-installed)
AurInstalled "$2"
;;
-o|--orphans)
Orphans "$2"
;;
-R|--remove)
Remove "$2"
;;
-U|--update)
Update
;;
-Ua|--update-aur)
UpdateAURpkgs "$2"
;;
-h|--help)
Help
cat "/tmp/fpf-help"
;;
-*)
Help
sed -i "2s/.*/Invalid Usage/" /tmp/fpf-help
head -n 13 "/tmp/fpf-help"
;;
esac
done
fi

BIN
fpf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB