Send files from one computer to another! A graphical interface for magic-wormhole https://magic-wormhole.readthedocs.io
Go to file
2020-09-20 23:34:14 +02:00
.gitignore Skip .spec file again 2020-07-24 01:48:30 +02:00
.travis.yml Use correct ordering and slashes 2020-07-24 01:53:17 +02:00
dropship.css Remove tabs lol 2020-09-15 11:58:10 +02:00
dropship.glade fine tune sending interface 2020-08-05 09:46:12 +02:00
dropship.py Use trio guest mode 2020-09-20 16:27:00 +02:00
README.md Document async wrangling 2020-09-20 16:33:53 +02:00
requirements.txt Add trio-gtk and bump dependent dependencies 2020-09-20 23:34:14 +02:00

dropship

Build Status

Lets try magic wormhole with a nice graphical interface.

Screen cast of dropship interface

(click for video)

what is what:

  • dropship.py, run this with python3.
  • dropship.glade, UI file, edit with glade.
  • dropship.css, additional styling for UI.

install:

sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0

pip install -r requirments.txt

run:

python3 dropship.py

development notes:

How we handle asynchronous actions

We use the Trio guest mode instead of relying on threads because those are hard to manage. Running two loops (Gtk and Trio) has disadvantages but overall, it offers a very clear way of organising and executing asynchronous operations.

In practice, this means you need to arrange the following:

  1. Wire up your usual hook (self.drop_box.connect("drag-data-received", self.on_drop))
  2. In your hook function, call your asynchronous function via the self.nursery.start_soon API
  3. Define your asynchronous function with async def and use the await keyword as usual

operations:

github mirror:

Add the following to the bottom of your .git/config.

[remote "all"]
  url = ssh://gitea@vvvvvvaria.org:12345/rra/dropship.git
  url = git@github.com:decentral1se/dropship.git

The git push -u all main will setup git push to automatically push to both remotes.

make a release:

git tag 0.0.1dev$whatever && git push

The Travis CI configuration will run a build and publish binaries here.