FFFF
Skip to content

sireliah/dragit

Repository files navigation

Dragit - intuitive file sharing application

Dragit

Application for intuitive file sharing between devices.

Build Status Dependency Status License

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.

Contents

Preview

Dragit screenshot

How to install

Using Flatpak

If you don't know how to use Flatpak yet, please follow the setup guide.

Then install Dragit as follows:

flatpak install com.sireliah.Dragit

Download recent release

Alternatively 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).

How to use

  1. 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!

  1. Wait for the two dragit instances to discover each other. You should see new drop zone area with IP address of the host.
  2. Drag a file and drop it on the drop zone.
  3. In the other window you will be asked whether you would like to accept the file. Probably you'd like to answer "Yes".
  4. File will be transfered and saved in the Downloads directory (which is customizable).
  5. Done!

demo

Development

How to build on Linux

cargo run

How to build on Windows

Dragit works best on x86_64-pc-windows-msvc target. Detailed build instruction will be added in the future.

Windows requirements

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.

Performance

Please build in the release mode to get the best performance (roughly 16-20x faster).

$ cargo build --release

$ ./target/release/dragit

Bluetooth support

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.

TODOs

Features

  • 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

Maintenance

  • 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

Done

  • 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

About

Application for intuitive file sharing between devices.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

0