aria

Friendly aria2c wrapper for your personal downloads.
Quick, simple, enjoyable.

License Platform Maintainer

`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/" } ```