https://github.com/krisfur/paclook
A universal interactive package CLI search tool.
https://github.com/krisfur/paclook
cli cpp interactive-search package-installer terminal-based
Last synced: 5 months ago
JSON representation
A universal interactive package CLI search tool.
- Host: GitHub
- URL: https://github.com/krisfur/paclook
- Owner: krisfur
- License: mit
- Created: 2026-01-25T14:14:50.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-01-25T21:30:16.000Z (5 months ago)
- Last Synced: 2026-01-26T06:57:39.951Z (5 months ago)
- Topics: cli, cpp, interactive-search, package-installer, terminal-based
- Language: C++
- Homepage:
- Size: 321 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# paclook
A universal interactive package CLI search tool.

## Supported Providers
- **apk** - Alpine Linux package manager
- **apt** - Debian/Ubuntu package manager
- **brew** - Homebrew (macOS/Linux)
- **dnf** - Fedora/RHEL package manager
- **nix** - Nix/NixOS package manager
- **pacman** - Official Arch Linux repos
- **paru** - AUR helper (official repos + AUR)
- **xbps** - Void Linux package manager
- **yay** - AUR helper (official repos + AUR)
- **zypper** - openSUSE package manager
More providers can be added in a modular manner.
> NOTE: On some systems if you have not used your package manager in a while (or ever) the first search might take some time as your package manager will update its own cache.
## Building from source
```bash
mkdir build && cd build
cmake ..
make -j$(nproc)
```
For static linking (portable binary):
```bash
cmake -DSTATIC_LIBC=ON ..
make -j$(nproc)
```
## Usage
```bash
./paclook # Auto-detect best available provider
./paclook -p pacman # Use specific provider
./paclook -l # List available providers
./paclook -h # Show help
```
## Controls
| Key | Action |
|-----|--------|
| Type | Search for packages |
| Up/Down | Navigate results |
| PgUp/PgDn | Navigate by page |
| Enter | Install selected package |
| Escape | Clear search |
| Ctrl+X | Quit |
## Testing with Docker
First install docker for your specific machine, on Arch:
```bash
sudo pacman -S docker
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
newgrp docker # or logout/login for group to take effect
```
Then run the docker testing scripts to start an interactive session with `paclook` built from source:
```bash
./docker/test.sh alpine # Alpine (apk)
./docker/test.sh arch # Arch Linux (pacman, paru, yay)
./docker/test.sh fedora # Fedora (dnf)
./docker/test.sh homebrew # Linuxbrew (brew)
./docker/test.sh nixos # NixOS (nix)
./docker/test.sh opensuse # openSUSE (zypper)
./docker/test.sh ubuntu # Ubuntu (apt)
./docker/test.sh void # Void Linux (xbps)
```
## Adding New Providers
1. Create `src/providers/yourprovider.hpp` and `.cpp`
2. Inherit from `Provider` base class
3. Implement: `name()`, `is_available()`, `search()`, `install_command()`
4. Register in `app.cpp`: `create_provider()` and `get_available_providers()`