yayfzf is a fullscreen interactive package manager for Arch Linux systems.
It uses yay for package operations and fzf for searching, selecting, installing, removing, and updating packages.
- Interactive menu for Arch Linux package management
- Package search using
yay - Package selection using
fzf - Install, remove, and update packages
- Inline package information preview
- Multi-select support
- Toggleable package preview window
- Built-in color themes
- Interactive theme selector
- Configurable layout, border, prompt, preview window, and sort order
- XDG-compliant configuration file support
- Bash and Zsh completion support
bashyayfzfawksedtrtput
yay -S yayfzfClone the repository and make the script executable:
git clone https://github.com/connerwill/yayfzf.git
cd yayfzf
chmod +x bin/yayfzfOptionally, install the executable, documentation, man page, license, and shell completions:
sudo install -Dm755 "bin/yayfzf" "/usr/local/bin/yayfzf"
sudo install -Dm644 "docs/README.md" "/usr/share/doc/yayfzf/README.md"
sudo install -Dm644 "docs/yayfzf.1" "/usr/share/man/man1/yayfzf.1"
sudo install -Dm644 "LICENSE" "/usr/share/licenses/yayfzf/LICENSE"
sudo install -Dm644 "completion/_yayfzf" "/usr/share/zsh/site-functions/_yayfzf"
sudo install -Dm644 "completion/yayfzf_completion.sh" "/usr/share/bash-completion/completions/yayfzf"Launch the interactive interface:
yayfzfStart with an initial package search query:
yayfzf fzf| Option | Description |
|---|---|
--sort-by [sort option] |
Set package search sort order |
--no-preview |
Disable package preview window |
-t, --theme [theme] |
Set built-in theme |
-l, --list-themes |
Show list of built-in themes |
--preview-themes |
Interactively preview and select a built-in theme |
-i, --init-config |
Install example configuration file |
-s, --show-config |
Show example configuration file content |
-k, --keybindings |
Show keybindings and exit |
-v, --verbose |
Show verbose output |
-h |
Show short help |
--help |
Show full help |
--help-man |
Show man page help |
-V, --version |
Show version |
Run yayfzf with no search query:
yayfzfSearch for fzf:
yayfzf fzfSearch packages sorted by votes:
yayfzf --sort-by votesStart with the dracula theme:
yayfzf --theme draculaShow all built-in themes:
yayfzf --list-themesOpen the interactive theme selector:
yayfzf --preview-themesStart with the package preview window disabled:
yayfzf --no-previewInstall an example configuration file:
yayfzf --init-configShow the short help menu:
yayfzf -h| Key | Action |
|---|---|
| ↑ | Move up |
| ↓ | Move down |
| PGUP | Move up one page |
| PGDN | Move down one page |
| HOME | Move to first |
| END | Move to last |
| ENTER | Perform action on selection |
| TAB | Select item |
| Shift+TAB | Unselect item |
| CTRL+a | Select all items |
| CTRL+d | Deselect all items |
| CTRL+i | Install selected packages |
| CTRL+r | Remove selected package |
| CTRL+u | Update all packages |
| CTRL+l | Clear query, screen, and selection |
| CTRL+Backspace | Clear query |
| CTRL+/ | Cycle preview window position and size |
| CTRL+v | Toggle package preview window |
| ? | Show keybindings |
| CTRL+c | Exit yayfzf |
| CTRL+w | Exit yayfzf |
| ESC | Exit yayfzf |
yayfzf looks for configuration files in this order and uses the first file found:
$XDG_CONFIG_HOME/yayfzf/yayfzf.conf$HOME/.config/yayfzf/yayfzf.conf$HOME/.yayfzf.conf
Install an example configuration file:
yayfzf --init-configShow the current example configuration:
yayfzf --show-config| Option | Description | Default | Values |
|---|---|---|---|
THEME |
Built-in color theme | default |
Show available themes: yayfzf --list-themes |
SORT_BY |
Package search sort order | popularity |
popularity, votes, last_updated |
PREVIEW_WINDOW |
fzf package preview window layout and size | right:60%:wrap |
Any valid fzf --preview-window value |
LAYOUT |
fzf layout | reverse |
default, reverse |
BORDER |
fzf border style | rounded |
Any valid fzf --border value |
YAYFZF_PROMPT |
fzf prompt string | yayfzf> |
Any string |
ENABLE_PREVIEW |
Enable package preview window | true |
true, false |
VERBOSE |
Enable verbose output | false |
true, false |
YAYFZF_PAGER |
Pager used for config/help output | ${PAGER:-less} |
less, bat, more, etc. |
CTRL_C_CLOSE |
Exit when fzf returns an empty selection | true |
true, false |
NO_COLOR |
Disable ANSI color output | false |
true, false |
Example configuration:
# Theme
# Show available themes:
# yayfzf --list-themes
#
# Interactively select a theme:
# yayfzf --preview-themes
THEME="default"
# Package sort order: popularity, votes, last_updated
SORT_BY="popularity"
# Preview window options for fzf
PREVIEW_WINDOW="right:60%:wrap"
# Layout: default, reverse
LAYOUT="reverse"
# Border style
BORDER="rounded"
# Prompt for fzf
YAYFZF_PROMPT="yayfzf> "
# Enable package preview window
ENABLE_PREVIEW=true
# Verbose output
VERBOSE=false
# Pager
YAYFZF_PAGER="${PAGER:-less}"
# Close yayfzf with Ctrl-C / empty fzf selection
CTRL_C_CLOSE=true
# Disable color output
NO_COLOR=false
# Example of custom user theme (Replace 'custom' with theme name)
BUILTIN_THEMES[custom]="
fg:#c0caf5
bg:#1a1b26
hl:#7aa2f7
fg+:#c0caf5
bg+:#24283b
hl+:#7dcfff
info:#7aa2f7
prompt:#7dcfff
pointer:#7dcfff
marker:#9ece6a
spinner:#9ece6a
header:#9ece6a
"Click to expand contributing section
Any contributions you make are appreciated.
If you want to contribute, please fork this repo and create a pull request.
- Fork the project
- Create your feature branch
git checkout -b AmazingNewFeature- Commit your changes
git commit -m 'Description of the amazing feature you added'- Push to the branch
git push origin AmazingNewFeature- Open a pull request.
If you experience bugs or have suggestions, open an issue.
XMR :
86tE67soBqFb5fxNGgC4HLdwZXebP42ewfBwfKyMDKvFbgA7T8p4g4T5BBNA9LNbwaVafup973w41PdvCS7bbj6gTNQpCh1