Skip to content
/ KGet Public

A modern, lightweight wget clone written in Rust for fast and reliable file downloads from the command line.

License

Notifications You must be signed in to change notification settings

davimf721/KGet

image

KGet! v1.5.3 (Latest Release)

A modern, lightweight, and versatile downloader written in Rust for fast and reliable file downloads via command line (CLI) and graphical user interface (GUI).

English | PortuguΓͺs | EspaΓ±ol

Screenshots

  • GUI:
  • Torrent on localhost:9091/transmission/web/:
  • CLI:
  • Interactive:

How It Works (Summary)

  1. Progress Bar (CLI): Shows speed, ETA, and transferred bytes.
  2. Smart File Naming:
    • Uses the filename from the URL.
    • Defaults to index.html if the URL ends with /.
  3. Error Handling: Exits with code 1 on HTTP errors (e.g., 404).
  4. Space Check: Verifies available disk space.
  5. Automatic Retry: Retries download on network failure.
  6. ISO Smart Detection: Detects .iso files to ensure raw binary transfer and prevent corruption.
  7. Integrity Check: Optional SHA256 verification for disk images after download.
  8. Memory Efficient: Parallel downloads use streaming buffers to maintain a low RAM footprint regardless of file size.
  9. Disk Optimization: Uses buffered I/O to prevent high disk active time and system freezes during fast transfers.
  10. Advanced Download Mode (HTTP/HTTPS): Downloads in parallel chunks, supports resume.
  11. Proxy Support: HTTP, HTTPS, SOCKS5 with authentication.
  12. Optimization Features: Compression (for cache), file caching, speed limiting.
  13. Torrent Downloads (Magnet Links):
    • Default: opens the magnet link using your system's default BitTorrent client (qBittorrent/Transmission/etc).
    • Optional (feature): can download via Transmission RPC (torrent-transmission feature).
  14. FTP/SFTP Downloads: Connects to FTP/SFTP servers to transfer files.

Features

See the full list of features and recent changes in the CHANGELOG.

KGet now is a Library too!

If you want to use KGet as a library you can click here.

Optional Cargo features

GUI (gui)

Build/run with GUI support:

cargo build --features gui
cargo run --features gui -- --gui

Transmission RPC torrent backend (torrent-transmission)

If you want KGet to add magnet links to a Transmission daemon (RPC), build with:

cargo build --features torrent-transmission
# or with GUI:
cargo build --features "gui torrent-transmission"

Select the backend at runtime:

  • Default (no env var): uses the system torrent client (xdg-open/open/start)
  • Transmission RPC:
# Linux/macOS
export KGET_TORRENT_BACKEND=transmission

# Windows PowerShell (current session)
$env:KGET_TORRENT_BACKEND="transmission"

Transmission settings (env vars):

  • KGET_TRANSMISSION_HOST (default: localhost)
  • KGET_TRANSMISSION_PORT (default: 9091)
  • KGET_TRANSMISSION_RPC_PATH (default: /transmission/rpc)
  • KGET_TRANSMISSION_WEB_PATH (default: /transmission/web/)
  • Optional auth: KGET_TRANSMISSION_USER, KGET_TRANSMISSION_PASS

Compatibility:

  • You can also use KGET_TRANSMISSION_URL and KGET_TRANSMISSION_WEB (full URLs).

Installation

Option 1: Compile from source

You will need Rust installed. If you don't have it, install it from rustup.rs.

Install some dependencies: For Debian/Ubuntu based systems:

sudo apt update
sudo apt install -y libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev pkg-config

For Fedora:

sudo dnf install -y libxcb-devel libxkbcommon-devel openssl-devel pkg-config

Clone the repository and compile the project:

git clone https://github.com/davimf721/KGet.git
cd KGet
cargo build --release

The executable will be in target/release/kget. You can copy it to a directory in your PATH:

sudo cp target/release/kget /usr/local/bin/

Option 2: Install via Cargo

You can install the published binary from crates.io (the GUI and Transmission backend are opt-in via features):

# Install the binary without GUI (default)
cargo install Kget

# Install with GUI support
cargo install Kget --features gui

# Install with Transmission RPC backend (optional)
cargo install Kget --features torrent-transmission

# Install with both
cargo install Kget --features "gui torrent-transmission"

If you encounter issues with the GUI when installing via cargo install, compiling from source is more reliable.

Option 3: Download Pre-compiled Binaries

Check the Releases section for the latest binaries for your OS.

Linux/macOS:

chmod +x ksget  # Make executable
./kelpsget [URL]    # Run directly

Windows:

Run the .exe file directly.

Usage

Command Line (CLI)

kget [OPTIONS] <URL>

Examples:

  • HTTP/HTTPS Download:

    kget https://example.com/file.txt
  • Rename Output File:

    kget -O new_name.txt https://example.com/file.txt
    kget -O ~/MyDownloads/ https://example.com/video.mp4 # Saves as ~/MyDownloads/video.mp4
  • FTP Download:

    kget ftp://user:[email protected]/archive.zip
    kget --ftp ftp://ftp.example.com/pub/file.txt
  • SFTP Download: (Requires SSH key setup or password if the server allows it)

    kget sftp://[email protected]/path/file.dat
    kget --sftp sftp://[email protected]/path/file.dat -O local.dat
  • Torrent Download (Magnet Link): (Requires transmission-daemon configured and running)

    kget "magnet:?xt=urn:btih:YOUR_HASH_HERE&dn=TorrentName"
    kget --torrent "magnet:?xt=urn:btih:YOUR_HASH_HERE" -O ~/MyTorrents/

    KelpsGet will add the torrent to Transmission and attempt to open the web interface (http://localhost:9091) for management.

  • Silent Mode:

    kget -q https://example.com/file.txt
  • Advanced Download Mode (HTTP/HTTPS):

    kget -a https://example.com/large_file.zip
    • ISO Download with Verification: KGet will automatically detect the ISO and ask if you want to verify the SHA256 hash once finished.
  • Use Proxy:

    kget -p http://proxy:8080 https://example.com/file.txt
  • Proxy with Authentication:

    kget -p http://proxy:8080 --proxy-user user --proxy-pass pass https://example.com/file.txt
  • Speed Limit:

    kget -l 1048576 https://example.com/file.txt  # Limit to 1MB/s
  • Disable Compression (KGet-specific, not HTTP):

    kget --no-compress https://example.com/file.txt
  • Disable Cache (KGet-specific):

    kget --no-cache https://example.com/file.txt

πŸ”— Important Links

You can see posts about the project in others communities:

Contributing

Want to contribute? Check out our contribution guide!

Found a bug or want to add a feature? Open an issue or send a PR!

πŸš€ Download files effortlessly with the speed and reliability of Rust. πŸš€

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A modern, lightweight wget clone written in Rust for fast and reliable file downloads from the command line.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published