Skip to content

intuis/rustmission

Repository files navigation

Rustmission

Performant TUI for Transmission capable of managing hundreds of torrents.
It boasts a rich feature set that surpasses other clients, offering a seamless experience :3

Torrents you see are just samples fabricated by AI.

Features

  • Basic operations: Add, pause, remove or fuzzy filter your torrents.
  • Categories: Categorize your torrents, each with its own default directory.
  • Sorting: Sort your torrents, for example, to get rid of the bulkiest ones.
  • Built-in magnet search: Search for new magnets without leaving your terminal.
  • Asynchronous: UI is always responsive.
  • RSS: Fetch torrents automatically with a cronjob using --fetch-rss

Requirements

  • Transmission daemon running in background and its IP address
  • Nerd Fonts (though you can set alternative set of icons)

Installation

Packaging status

To install Rustmission, ensure you have Rust and Cargo installed on your system, and then run:

cargo install rustmission

or with Nix ( ❤️ @0x61nas ):

nix-shell -p rustmission

or with Brew ( ❤️ @aidanaden ):

brew install intuis/tap/rustmission

Usage

Run rustmission in your terminal to initialize the config and make adjustments as needed. Subsequently, run rustmission again. For a list of keybindings, press ? or F1.

Configuration

Rustmission stores its configuration in a TOML file located at ~/.config/rustmission/config.toml by default. You can modify this file to set the daemon's address.

[general]
# Whether to hide empty columns or not
auto_hide = false

# Possible values: Red, Green, Blue, Yellow, Magenta, Cyan.
# Use prefix "Light" for a brighter color.
# It can also be a hex, e.g. "#3cb371"
accent_color = "LightMagenta"

# If enabled, shows various keybindings throughout the program at the cost of
# a little bit cluttered interface.
beginner_mode = true

# If enabled, hides header row of torrents tab
headers_hide = false

[connection]
url = "http://CHANGE_ME:9091/transmission/rpc" # REQUIRED!

# Refresh timings (in seconds)
torrents_refresh = 5
stats_refresh = 5
free_space_refresh = 10

# If you need username and password to authenticate:
# username = "CHANGE_ME"
# password = "CHANGE_ME"

[torrents_tab]
# Available fields:
# Id, Name, SizeWhenDone, Progress, DownloadRate, UploadRate, DownloadDir,
# Padding, UploadRatio, UploadedEver, AddedDate, ActivityDate, PeersConnected
# SmallStatus, Category, CategoryIcon
headers = ["Name", "SizeWhenDone", "Progress", "Eta", "DownloadRate", "UploadRate"]

[search_tab]
# If you uncomment this, providers won't be automatically added in future
# versions of Rustmission.
# providers = ["Knaben", "Nyaa"]

[icons]
# ...

There's also a self-documenting keymap config located at ~/.config/rustmission/keymap.toml with sane defaults.
You can also define torrent categories at ~/.config/rustmission/categories.toml.

Alternatives

Contributing

If you'd like to contribute make sure you fork this repo and submit a PR!
If you want to implement something major, create an issue first so it can be discussed.