Neofetch style snapshot and sys update wrapper for the Arch linux package manager
---
## Installation
#### AUR
```
yay -S pacfetch # build from source
yay -S pacfetch-bin # or prebuilt binary
```
#### Cargo
```
cargo install pacfetch
```
#### Build from source
```
git clone https://github.com/camtisocial/pacfetch
cd pacfetch
sudo make install
```
## Usage
Run `pacfetch -Syu` to sync and upgrade, or just `pacfetch` to see stats synced to a temp database [(no risk of partial upgrades)](https://wiki.archlinux.org/title/Pacman#Upgrading_packages)
| Flag | Description |
|------|-------------|
| `no args` | Show stats with sync to temp databases |
| `-Syu` | Sync databases, display stats, then upgrade |
| `-Sy` | Sync package databases, then display stats |
| `-Su` | Display stats, then upgrade packages |
| `--yay` | Full system + AUR upgrade via yay |
| `--paru` | Full system + AUR upgrade via paru |
| `--ascii ` | Custom ASCII art file, built-in name, or `NONE` to disable |
| `--color ` | Override ASCII art color (name, hex `#RRGGBB`, or `none`) |
| `--image ` | Use an image instead of ASCII art |
| `--json` | Output stats as JSON |
| `--local` | Use local cached database |
| `-d, --debug` | Show verbose output and execution times per function |
| `-h, --help` | Print help |
| `-V, --version` | Print version |
### Configuration & Logs
- User config is automatically created on first run at `~/.config/pacfetch/pacfetch.toml`
- Error logs are written to `~/.cache/pacfetch/pacfetch.log`
## Demo
## Customization
Config is created on first run at `~/.config/pacfetch/pacfetch.toml`
### Stats
Choose which stats to display and in what order. Insert `"newline"` for blank line spacing.
```toml
[display]
stats = [
"title.header",
"installed",
"upgradable",
"last_update",
"newline",
"download_size",
"installed_size",
"net_upgrade_size",
"disk",
"orphaned_packages",
"cache_size",
"mirror_url",
"mirror_health",
"colors",
]
```
Available stats: `installed` · `upgradable` · `last_update` · `download_size` · `installed_size` · `net_upgrade_size` ·
`orphaned_packages` · `cache_size` · `disk` · `mirror_url` · `mirror_health` · `colors` · `colors_dark` · `colors_light` ·
`newline`
### ASCII Art
```toml
[display]
ascii = "PACMAN_DEFAULT" # "PACMAN_DEFAULT", "PACMAN_SMALL", "NONE", or a file path
ascii_color = "yellow"
```
### Image
Set an image path to render a logo alongside stats. Image takes precedence over ASCII art. Protocol (kitty, sixel, iterm)
is auto-detected.
```toml
[display]
image = "~/.config/pacfetch/logo.png"
```
### Titles
Define named titles under `[display.titles.{name}]` and reference them in the stats array as `"title.{name}"`. You can
create as many as you want.
```toml
# example embedded title
[display.titles.header]
text = "default"
text_color = "bright_yellow"
line_color = "none"
style = "embedded"
width = "content"
line = "─"
left_cap = "╭"
right_cap = "╮"
padding = 2
# footer
[display.titles.footer]
text = ""
style = "embedded"
width = "content"
line = "─"
left_cap = "╰"
right_cap = "╯"
```
| Option | Values | Default |
|--------|--------|---------|
| `text` | `"default"` · `"pacman_ver"` · `"pacfetch_ver"` · `""` · custom string | `""` |
| `text_color` | color name, hex, `"none"` | `"bright_yellow"` |
| `line_color` | color name, hex, `"none"` | `"none"` |
| `style` | `"stacked"` · `"embedded"` | `"stacked"` |
| `width` | `"title"` · `"content"` · integer | `"title"` |
| `align` | `"left"` · `"center"` · `"right"` | left for stacked, center for embedded |
| `line` | string | `"-"` |
| `left_cap` / `right_cap` | string | `""` |
| `padding` | integer | `0` |
### Colors
All color values support named colors, hex (`#RRGGBB`), or `"none"` for terminal default.
```toml
# global stat colors
[display.colors]
label = "bright_yellow"
stat = "none"
# per-stat override (takes precedence over global)
[display.colors.installed]
label = "bright_green"
stat = "white"
```
### Labels
Override the display text for any stat label.
```toml
[display.labels]
installed = "Pkgs"
cache_size = "Cache"
disk = "Storage (/)"
```
### Glyph
Customize the separator between labels and values.
```toml
[display.glyph]
glyph = ": "
color = "none"
```
### Color Palette
Configure the appearance of the `colors` / `colors_dark` / `colors_light` stats.
```toml
[display.palette]
style = "blocks" # "blocks", "dots", "ghosts", or any custom character
spacing = 0 # spaces between each color element
```
### Disk
```toml
[disk]
path = "/"
```
### Cache
```toml
[cache]
ttl_minutes = 15 # set to 0 to always sync fresh
```
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)