| Crates.io | Kget |
| lib.rs | Kget |
| version | 1.5.0 |
| created_at | 2025-05-27 03:22:17.132375+00 |
| updated_at | 2025-05-27 03:22:17.132375+00 |
| description | A powerful and versatile download manager and library |
| homepage | |
| repository | https://github.com/davimf721/KGet |
| max_upload_size | |
| id | 1690567 |
| size | 347,866 |
A modern, lightweight, and versatile downloader written in Rust for fast and reliable file downloads via command line (CLI) and graphical user interface (GUI).
localhost:9091/transmission/web/:
index.html if the URL ends with /.transmission-daemon for download.See the full list of features and recent changes in the CHANGELOG.
If you want to use KGet as a crate you can click here.
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/
cargo install kelpsget
If you encounter issues with the GUI when installing via cargo install, compiling from source is more reliable.
Check the Releases section for the latest binaries for your OS.
chmod +x kelpsget # Make executable
./kelpsget [URL] # Run directly
Run the .exe file directly.
KGet uses the transmission-daemon to manage torrent downloads.
1. Install Transmission Daemon:
sudo apt update
sudo apt install transmission-daemon
sudo dnf install transmission-daemon
sudo pacman -S transmission-cli
2. Stop the Daemon for Configuration:
sudo systemctl stop transmission-daemon
3. Configure Transmission:
Edit the settings.json file. Common locations:
/var/lib/transmission-daemon/info/settings.json (Debian/Ubuntu, if installed as a service)/var/lib/transmission/.config/transmission-daemon/settings.json (Another common path, check your system)~/.config/transmission-daemon/settings.json (if run as a user)Use sudo nano /var/lib/transmission-daemon/info/settings.json (or the correct path for your system).
Find and modify these lines:
{
// ...
"rpc-authentication-required": true,
"rpc-enabled": true,
"rpc-password": "transmission", // This is the value KGet uses by default to connect to Transmission (recommended)
"rpc-port": 9091,
"rpc-username": "transmission", // Username KGet uses to connect to Transmission
"rpc-whitelist-enabled": false, // For local access. For remote access, configure IPs.
"download-dir": "/var/lib/transmission-daemon/downloads", // Transmission's default download directory
// ...
}
Important: After saving and starting transmission-daemon, it will replace the plain text rpc-password with a hashed version.
4. (Optional) Adjust Daemon User Permissions:
If transmission-daemon runs as a specific user (e.g., debian-transmission or transmission), ensure this user has write permissions in the download directories you intend to use with KelpsGet or Transmission itself. You can add your user to the Transmission daemon's group:
sudo usermod -a -G debian-transmission your_linux_user # For Debian/Ubuntu
# Check the Transmission group/user name on your system
5. Start the Transmission Daemon:
sudo systemctl start transmission-daemon
# Check status:
sudo systemctl status transmission-daemon
Access http://localhost:9091 in your browser. You should see the Transmission web interface and be prompted to log in with the rpc-username and rpc-password you configured.
kelpsget [OPTIONS] <URL>
Examples:
HTTP/HTTPS Download:
kelpsget https://example.com/file.txt
Rename Output File:
kelpsget -O new_name.txt https://example.com/file.txt
kelpsget -O ~/MyDownloads/ https://example.com/video.mp4 # Saves as ~/MyDownloads/video.mp4
FTP Download:
kelpsget ftp://user:password@ftp.example.com/archive.zip
kelpsget --ftp ftp://ftp.example.com/pub/file.txt
SFTP Download: (Requires SSH key setup or password if the server allows it)
kelpsget sftp://user@sftp.example.com/path/file.dat
kelpsget --sftp sftp://user@sftp.example.com/path/file.dat -O local.dat
Torrent Download (Magnet Link):
(Requires transmission-daemon configured and running)
kelpsget "magnet:?xt=urn:btih:YOUR_HASH_HERE&dn=TorrentName"
kelpsget --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:
kelpsget -q https://example.com/file.txt
Advanced Download Mode (HTTP/HTTPS):
kelpsget -a https://example.com/large_file.zip
Use Proxy:
kelpsget -p http://proxy:8080 https://example.com/file.txt
Proxy with Authentication:
kelpsget -p http://proxy:8080 --proxy-user user --proxy-pass pass https://example.com/file.txt
Speed Limit:
kelpsget -l 1048576 https://example.com/file.txt # Limit to 1MB/s
Disable Compression (KelpsGet-specific, not HTTP):
kelpsget --no-compress https://example.com/file.txt
Disable Cache (KelpsGet-specific):
kelpsget --no-cache https://example.com/file.txt
To start the GUI:
kelpsget --gui
The GUI allows you to enter the URL, output path, and start downloads. Status and progress are displayed in the interface.
KelpsGet uses a configuration file at:
%APPDATA%\kelpsget\config.json~/.config/kelpsget/config.jsonExample config.json for KelpsGet:
{
"proxy": {
"enabled": false,
"url": null,
"username": null,
"password": null,
"proxy_type": "Http"
},
"optimization": {
"compression": true, // Compression for KelpsGet cache
"compression_level": 6,
"cache_enabled": true,
"cache_dir": "~/.cache/kelpsget", // Expand ~ manually or use absolute path
"speed_limit": null,
"max_connections": 4
},
"torrent": {
"enabled": true,
"transmission_url": "http://localhost:9091/transmission/rpc",
"username": "transmission", // User configured in Transmission's settings.json
"password": "transmission", // Password configured in Transmission's settings.json
"max_peers": 50,
"max_seeds": 50,
"port": null,
"dht_enabled": true,
"default_download_dir": null // Default directory for torrent downloads via KelpsGet
},
"ftp": {
"default_port": 21,
"passive_mode": true
},
"sftp": {
"default_port": 22,
"key_path": null // Path to private SSH key, e.g., "~/.ssh/id_rsa"
}
}
Note on cache_dir and key_path: If using ~, ensure your program correctly expands the tilde to the user's home directory, or use absolute paths.
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. 🚀
This project is licensed under the MIT License - see the LICENSE file for details.