aria
Friendly aria2c wrapper for your personal downloads.
Quick, simple, enjoyable.
`aria` wraps the JSONRPC server of the great [aria2](https://aria2.github.io/), exposing just enough functionality to be dangerous.
---
## Installation
Build and install the binary and man page to `$(PREFIX)/bin` and `$(PREFIX)/share/man/man1` (defaults to `~/.local`):
```sh
make install
```
To install elsewhere, override `PREFIX`:
```sh
make install PREFIX=/usr/local
```
To remove:
```sh
make uninstall
```
> [!NOTE]
> Make sure `$(PREFIX)/bin` is in your `PATH` to run `aria` from anywhere.
---
## Features
### One command for everything
Add, pause, resume, and remove downloads with a unified API — no more memorising cryptic flags:
```sh
aria add https://example.com/file.iso
aria add uri https://example.com/file.iso
aria add torrent https://example.com/linux.torrent
aria pause 8a4c3f21e09b7d55
aria resume 8a4c3f21e09b7d55
aria remove 8a4c3f21e09b7d55
aria purge
```
Commands without arguments act on all downloads, so you can pause or resume everything at once:
```sh
aria pause
aria resume
```
### Interactive list
Run `aria list` to check the status of all your downloads in a beautifully formatted table,
live-refreshing every second:
```sh
aria list
```
Pick a download with the arrow keys and `enter`, and its **GID** is printed to `stdout`,
ready to be composed with any other tool:
```sh
aria pause "$(aria list)"
```
### Options
Every command supports a couple of well-chosen options, and nothing more:
| Option | Description | Default |
| --- | --- | --- |
| `-d`, `--directory ` | Define the directory to save files. | `~/Downloads/` |
| `--seed` | Enable seeding after torrent download. | |
### Simple configuration
Point *aria* to your `aria2c` server by directly editing the source:
```swift
enum Config {
static let host: String = "127.0.0.1"
static let port: Int = 6800
static let secret: String = "my_secret"
static var endpoint: URL {
URL(string: "http://\(host):\(port)/jsonrpc")!
}
static let directory: String = "~/Downloads/"
}
```