My friends and I exclusively use Windows laptops. We noticed a recurring frustration: whenever we needed to share files between our PCs, the process was clumsy. We either had to:
- Transfer the file to a mobile phone first, then send it to the other PC.
- Use WhatsApp or Email, which requires an active Internet connection (not always available) and compresses our images.
When we saw the Huawei Air Gesture file transfer technology, we realized this was the missing link. We decided to build a native Windows application that allows us to grab files physically from the air and "drop" them onto another computer—no Internet required, no cables, no USB drives.
MyDrop uses your laptop's webcam to track hand movements and creates a local peer-to-peer network for file transfer.
- Select: Highlight any file(s) or folder in File Explorer.
- Activate: Press
Ctrl+Alt+Mto open the camera (Green Border appears). - Grab: Make a Fist gesture at the camera. The app intelligently "copies" the selected files (zipping them automatically if it's a folder).
- Drop: Open your hand (✋) at the camera. The app broadcasts the file to the local network and locks the transfer.
- Notification: The receiver sees a system notification: "User X sends [Filename]. Press Win+Alt+M to Download."
- Accept: The receiver presses
Win+Alt+M. - Download: The file is instantly transferred via TCP and saved to the
Downloads/MyDrop/folder.
The project is modularized to separate UI, Network Logic, and AI processing.
main.py- Purpose: The launchpad of the application.
- Function: It redirects all console output to a log file (
MyDrop_Debug.log) so errors can be tracked even in the compiled EXE. It initializes the system tray application.
-
tray_icon.py -
Purpose: The central controller ("The Brain").
-
Function: Manages the application state (Idle, Sender, Receiver). It handles notifications, connects the network signals to the UI, and decides what happens when a gesture is detected.
-
overlay.py -
Purpose: Visual feedback.
-
Function: Draws a transparent colored border around the screen to tell the user the current status (Green = Ready, Cyan = Grabbed, Red = Error, Blue = Downloading).
-
gesture_engine.py -
Purpose: The eye of the system.
-
Function: Uses MediaPipe and OpenCV to track hand landmarks. It calculates geometry to distinguish between an "Open Palm" and a "Closed Fist" and emits signals only when the state changes.
-
file_grabber.py -
Purpose: Smart file handling.
-
Function: Interacts with the Windows Clipboard. If a user grabs a folder or multiple files, this module automatically compresses them into a temporary ZIP file so they can be sent as a single object.
-
input_listener.py -
Purpose: Global keyboard control.
-
Function: Uses
pynputto listen for hotkeys (Ctrl+Alt+M,Win+Alt+M) even when the application is minimized or running in the background.
-
discovery.py(UDP) -
Purpose: Finding devices.
-
Function: Broadcasts "Announce" packets over the local Wi-Fi. It allows the Receiver to know who is sending a file and what the file is called before accepting it.
-
transfer.py(TCP) -
Purpose: Moving the data.
-
Function: Establishes a direct, high-speed socket connection between the two laptops. It handles the raw byte transfer and ensures the file is saved correctly in the
Downloadsfolder.
- Language: Python 3.12
- GUI: PyQt6 (System Tray & Overlay)
- Computer Vision: OpenCV, Google MediaPipe
- Networking: Python
socket(TCP/UDP) - System Automation:
pyautogui,pywin32,pynput - Packaging: PyInstaller
- Download
MyDrop.exefrom the Releases tab. - Run the application on both laptops.
- Make sure both laptops are connected to the same Wi-Fi network.
-
Clone the repository:
git clone https://github.com/MythreshMukkara/MyDrop.git cd MyDrop -
Install dependencies:
pip install -r requirements.txt
-
Run the app:
python main.py
- Add encryption for secure file transfer.
- Add a "History" tab to see previously sent files.
- Cross-platform support (Mac/Linux).