id = "rtorrent" name = "rTorrent" homepage = "https://github.com/rakshasa/rtorrent" description = "A ncurses-based command line torrent client for high performance." executables = ["rtorrent"] platforms = ["macos", "linux"] [dotfiles] # src/setup.cc walks a three-step search and stops at the first file that # exists: # # $XDG_CONFIG_HOME/rtorrent/rtorrent.rc (only when the variable is absolute) # $HOME/.config/rtorrent/rtorrent.rc # $HOME/.rtorrent.rc # # The first two are one location — $XDG_CONFIG_HOME with ~/.config as the # fallback — which is what [configHome] means. The third is the pre-XDG spelling # and is still what most existing setups use; rtorrent(1) refers to it directly # under -n, "Don't load ~/.rtorrent.rc on startup". Both are listed and a # consumer skips whichever is not on disk. paths = [ "[configHome]/rtorrent/rtorrent.rc", "~/.rtorrent.rc", ] exclude = [] # No credential file. Tracker passkeys live inside .torrent files in the session # directory, which is not synced. secret = [] # Absolute paths and a listening port, all decided by the machine rTorrent runs # on. doc/rtorrent.rc-example writes the modern command names — # `session.path.set = (cat, (cfg.session))`, `directory.default.set = (cat, # (cfg.download))`, `network.listen.port.range.set = 50000-50000` and # `network.scgi.open_local = (cat,(session.path),rtorrent.sock)` — while # rtorrent(1) documents the short forms the same three options had before 0.9: # "session = directory", "directory = directory", "port_range = a-b". Both # spellings are listed because a given file uses one or the other. # # The legacy prefixes carry the trailing space on purpose. A prefix is a plain # string match against the line, so a bare "session" would also swallow # "session_on_completion" and "session.on_completion.set", which are # preferences rather than paths; "session " stops at the assignment the man page # writes. # # Everything else in the file — throttle limits, ratio rules, the interface # layout — is the user's setup and travels. [[dotfiles.machine_lines]] file = ["[configHome]/rtorrent/rtorrent.rc", "~/.rtorrent.rc"] scope = "backup" match = { prefix = [ "session.path.set", "directory.default.set", "network.listen.port.range.set", "network.scgi.open_local", "session ", "directory ", "port_range ", ] } [commands] format = 1 label = "Start rTorrent" description = "Start rTorrent with torrent files or URLs, a download directory and session directory. The -o/-O setting overrides are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false } [[commands.source]] id = "man" kind = "manual" url = "https://manpages.debian.org/bookworm/rtorrent/rtorrent.1.en.html" revision = "0.9.8-1" evidence = """ rtorrent [ -h ] [ -n ] [ -o key1=opt1,... ] [ -O key=opt ] [ URL | FILE ... ] -b a.b.c.d Bind listening socket and outgoing connections to this network interface address. -d directory Set the default download directory. Defaults to "./". -i a.b.c.d Set the address reported to the tracker. -n Don't load ~/.rtorrent.rc on startup. -p a-b Try to open a listening port in the range a up to and including b. -s directory Session management will be enabled and the torrent files for all open downloads will be stored in this directory. """ [[commands.field]] id = "sources" label = "Torrent files or URLs" type = "string" position = 0 multiple = true min = 0 sources = ["man"] [[commands.field]] id = "directory" label = "Download directory" type = "path" option = ["-d"] path = { kind = "directory", role = "output" } sources = ["man"] [[commands.field]] id = "session" label = "Session directory" description = "Stores torrent files for all open downloads so they resume on restart." type = "path" option = ["-s"] path = { kind = "directory", role = "output" } sources = ["man"] [[commands.field]] id = "port_range" label = "Listening port range" description = "For example 6881-6889." type = "string" option = ["-p"] sources = ["man"] [[commands.field]] id = "bind" label = "Bind address" type = "string" option = ["-b"] sources = ["man"] [[commands.field]] id = "report_ip" label = "Address reported to tracker" type = "string" option = ["-i"] sources = ["man"] [[commands.field]] id = "no_rc" label = "Skip ~/.rtorrent.rc" type = "boolean" option = ["-n"] sources = ["man"] [[commands.task]] id = "download" label = "Download torrents" fields = ["sources", "directory", "session", "port_range"] required = ["sources"] [[commands.task]] id = "clean" label = "Start without rc file" set = { no_rc = [true] } lock = ["no_rc"] fields = ["sources", "directory", "no_rc"] [[commands.group]] id = "basic" label = "Basic" fields = ["sources", "directory", "session", "port_range"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["bind", "report_ip", "no_rc"]