#tui #download #torrent #cli

bin+lib nyaa

A tui tool for browsing and downloading torrents from nyaa.si

14 releases (7 breaking)

0.9.1 Jun 30, 2024
0.8.1 May 2, 2024
0.7.0 Mar 21, 2024
0.2.0 Nov 18, 2023

#1076 in Command line utilities

47 downloads per month

GPL-3.0-or-later

3.5MB
7.5K SLoC

nyaa πŸˆβ€β¬›

A simple TUI for browsing and downloading anime torrents from nyaa.si.


animated

Table of Contents

⚑ Installation

With a package manager

### With cargo
cargo install nyaa

### On Arch Linux (AUR)
yay -S nyaa # or `nyaa-bin` for a pre-compiled binary

### Ubuntu/Debian (.deb file from latest release)
# with `apt`:
sudo apt install ./nyaa-VERSION-x86_64.deb
# or `dpkg`:
sudo dpkg -i ./nyaa-VERSION-x86_64.deb

### Fedora (.rpm file from latest release)
sudo dnf install ./nyaa-VERSION-x86_64.rpm

### With `nix profile`
nix profile install github:Beastwick18/nyaa

### nix (flakes) run without installing
nix run github:Beastwick18/nyaa

Nix (via home-manager)

Add to inputs in flake.nix

nyaa = {
  url = "github:Beastwick18/nyaa";
  inputs.nixpkgs.follows = "nixpkgs";
};

Add to home.nix imports and enable

imports = [
  inputs.nyaa.homeManagerModule
]
programs.nyaa.enable = true;

Check the wiki for more information

Windows/Linux Binaries

Binaries for Linux and Windows are available on the releases page.

From Source

To install from source, you must have git, cargo, and Rust version $\ge$ 1.75 installed.

git clone https://github.com/Beastwick18/nyaa
cd nyaa
cargo install --path .

πŸ“— Wiki

For detailed information on configuration, themes, sources, and download client integration check the Wiki.

⌨️ Keybinds

Like modal text editors such as Vim, there are several modes. Each have their own keybinds, which can be found out by pressing F1 or ? while in that mode. Some of the important ones are:

  • hjkl or arrow keys for general navigation
  • / or i to search
  • Ctrl-s to change sources
  • d to change download client
  • c to change category
  • s to change sort (S for reverse sort)
  • f to change filter
  • t to change theme
  • n, p or l, h for next and previous page
  • q to quit

For a list of all modes and their respective keybinds, check Keybinds on the wiki.

🌐 Proxies

If either nyaa.si or torrentgalaxy is not accessible in your region, try one of the proxies (nyaa proxies, TorrentGalaxy proxies). Once you find one that works, replace the value for base_url in the source config with the working proxy url. For nyaa, I would recommend nyaa.land, as it is very compatible, and usually working. Here's what the config for nyaa.land would look like:

[source.nyaa]
base_url = 'nyaa.land'

If you have your own proxy setup, you use it by adding:

request_proxy = "localhost:8118"

to the top of your config. Replace the value with the IP and port for your proxy.

βš™οΈ Configuration

The location of the config file for linux is:

~/.config/nyaa/config.toml

and on windows is

C:\Users\%USERNAME%\AppData\Roaming\nyaa\config\config.toml

Default Config

theme = "Default"                # the theme to use by default
default_source = "Nyaa"          # the source to use by default
download_client = "qBittorrent"  # the download client to use by default
date_format = "%Y-%m-%d %H:%M"   # date format for results (unset by default)
request_proxy = "localhost:8118" # request proxy for sending requests through (unset by default)
timeout = 30                     # request timeout for sources and clients (measured in seconds)
scroll_padding = 6               # scroll padding for results table
save_config_on_change = true     # save config when changing sources/themes


[source.nyaa]
# ...

[source.torrentgalaxy]
# ...

[client.cmd]
# ...

# ...

theme refers to the theme selected by default when the app is opened. Possible values are Default, Dracula, Gruvbox, or Catppuccin Macchiato. You can also use custom user-defined themes.

default_source refers to the source selected by default once the app is opened. Possible values are Nyaa, TorrentGalaxy, or Sukebei. Each source has its own configuration. Check the wiki for more information on each sources config.

download_client refers to the download client selected by default once the app is opened. Each download client has its own configuration. Check the wiki for more information on each download clients config.

Download Client Integration

πŸ“‹ Clipboard

By default, nyaa uses OSC52 to copy to the clipboard. It's a type of ANSI escape sequence supported by most terminals. The state of support for some popular terminals are:

Terminal OSC52 support
alacritty yes
contour yes
far2l yes
foot yes
gnome terminal (and other VTE-based terminals) not yet
hterm yes
iterm2 yes
kitty yes
konsole not yet
qterminal not yet
rxvt yes
st yes (but needs to be enabled, see here)
terminal.app no, but see workaround
tmux yes
urxvt yes (with a script, see here)
wezterm yes
windows terminal yes
xterm.js (Hyper terminal) yes
zellij yes

Source: vim-oscyank

If your terminal is not supported, you should disable OSC52 by adding

[clipboard]
osc52 = false

to your config.toml. This will make nyaa use an alternative method for copying, such as X11 selections or wl-clipboard. To see more info on clipboards, check the wiki;

🎨 Custom Themes

Check the wiki for how to add User-defined Themes

πŸ—ΊοΈ Planned Features

  • Mouse support
  • Custom user-defined sources
  • Sources other than nyaa
  • User-defined themes
  • Integration with torrent clients
  • RPM Release
  • Nyaa proxies/mirrors support
  • Page navigation
  • Choice between HTML scraper or RSS feed

Dependencies

~22–39MB
~699K SLoC