/vincenzo

A BitTorrent client with vim-like keybindings and a terminal based UI.

Primary LanguageRustMIT LicenseMIT

Vincenzo

Vincenzo is a BitTorrent client with vim-like keybindings and a terminal based UI. Torrents can be downloaded using the CLI or UI.

image

Features

  • Terminal based UI
  • Vim-like keybindings
  • Multi-platform
  • Magnet links support
  • UDP connections with trackers, TCP connections with peers
  • Multithreaded. One OS thread specific for I/O

How to use

An example on how to download a torrent using the CLI. Please use the "--help" flag to read the descriptions of the CLI flags.

cargo run -- -d "/tmp/btr" -m "<insert magnet link here>" -q

Or

vcz -d "/tmp/btr" -m "<insert magnet link here>" -q

Configuration File

During the first startup, a default configuration file is created. The configuration file is located at the default config folder of your OS. At the moment, the only configuration option is: download_dir Linux: ~/.config/vincenzo/config.toml Windows: C:\Users\Alice\AppData\Roaming\Vincenzo\config.toml macOS: /Users/Alice/Library/Application Support/Vincenzo/config.toml

Supported BEPs

  • BEP 0003 - The BitTorrent Protocol Specification
  • BEP 0009 - Extension for Peers to Send Metadata Files
  • BEP 0010 - Extension Protocol
  • BEP 0015 - UDP Tracker Protocol
  • BEP 0023 - Tracker Returns Compact Peer Lists

Roadmap

[x] - Initial version of UI.
[x] - Download pipelining.
[x] - Endgame mode.
[x] - Pause and resume torrents.
[ ] - Use a buffered I/O strategy to reduce the number of writes on disk.
[ ] - Choking algorithm.
[ ] - Anti-snubbing.
[ ] - Resume torrent download from a file.
[ ] - Change piece selection strategy.
[ ] - Select files to download.
[ ] - Support streaming of videos/music on MPV.
[ ] - ...

Tests

This program is well-tested and I'm always improving the tests.