Application for intuitive file sharing between devices.
Dragit helps you share files between computers in the same network.
- useful when you want to send file from one computer to another
- requires no configuration
- single purpose - does only one thing and nothing more
- works on Linux and Windows machines
The application uses mDNS for automatic device discovery with help of libp2p library. The GUI is implemented in gtk-rs.
Important note: This is software in development phase and you should use it at your own risk.
If you don't know how to use Flatpak yet, please follow the setup guide.
Then install Dragit as follows:
flatpak install com.sireliah.DragitAlternatively you can download the latest release for your OS and unpack it. Currently you can use dragit on 64-bit Linux and Windows (Please check Windows requirements for details).
- Start the application on two machines:
For Linux with Flatpak: run Dragit from installed applications.
For Linux executable:
./dragit
For Windows:
dragit.exe
You can run two dragit instances on the same machine for testing. No problem with that!
- Wait for the two
dragitinstances to discover each other. You should see new drop zone area with IP address of the host. - Drag a file and drop it on the drop zone.
- In the other window you will be asked whether you would like to accept the file. Probably you'd like to answer "Yes".
- File will be transfered and saved in the
Downloads directory(which is customizable). - Done!
cargo run
Dragit works best on x86_64-pc-windows-msvc target. Detailed build instruction will be added in the future.
It might happen that you don't have the vcruntime140_1.dll installed in your system and the application won't start. You can fix that by installing the VC++ 2019 runtime dll.
In the future releases this library will be installed automatically.
Please build in the release mode to get the best performance (roughly 16-20x faster).
$ cargo build --release
$ ./target/release/dragit
Dragit can use Bluetooth OBEX protocol for file transfer through the D-Bus BlueZ interface, which should work on most of the Linux devices. This future needs some work and is disabled now.
- find out how to use text drag&drop API on Windows with Gtk
- show username in the device list
- have list of trusted devices
- add files queue
- re-enable the Bluetooth
- TCP retransmissions - what is wrong?
- fix the outbound memory issue (consumes too much memory on file reading)
- add Windows CI/CD
- add timeout on the Accept/Deny event
- inject_dial_upgrade_error - but why not inbound?
- adjust network timeouts
- show easy to understand instruction on startup
- show details about the host
- choose directory
- show version in the title bar
- crashes when no network interface is available
- implement error events
- TransferCommand::Accept should specify which file should be accepted
- add sender side progress bar
- fix the inbound memory issue
- add logging
- add test for the outbound/inbound