Skip to content

micielski/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.

About

TUI for the Transmission daemon

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.5%
  • Nix 0.5%