DEV Community

Cover image for Send Files to Linux With a Drag-and-Drop Widget
Leonard Liao
Leonard Liao

Posted on

Send Files to Linux With a Drag-and-Drop Widget

KiwiDrop lets you drop a file onto a floating desktop widget and send it to a paired device on the local network. It supports Windows, Linux, and Android, and is currently a test version.

For a Windows workstation and a KiwiPi 5 running Ubuntu 24.04, that might mean sending a build archive without opening a transfer window each time. The example below uses camera-app-linux-arm64.tar.gz, containing an application built for ARM64 Linux.

drop a file onto a floating desktop widget

The Windows-to-Linux file sharing guide illustrates the desktop interface. The steps below cover installation, pairing, and checking the archive on the board.

Check the Linux image first

The Linux packages support x86_64 and ARM64, with Python 3.11–3.13, pip, and glibc 2.34 or newer. SSH is also required for installation and remote management; the floating widget needs a graphical desktop.

But the ARM64 graphical app has a higher requirement: glibc 2.39. That's easy to miss if you check only the processor architecture and see that your board is ARM64.

On the board, check the architecture, Python version, and glibc version:

uname -m
python3 --version
getconf GNU_LIBC_VERSION
Enter fullscreen mode Exit fullscreen mode

The README lists Ubuntu 24.04 and Debian 13 as meeting the dependencies on both architectures, although full Debian integration testing is still pending. Debian 12 meets the x86_64 requirements, but its ARM64 desktop falls short of the graphical app's glibc requirement. Check the image, not just the board name.

On Windows, download the appropriate ZIP from the KiwiDrop installation and downloads page, extract the whole package, and run Install-KiwiDrop.cmd. Windows needs x64 Windows 10 version 1809 or newer, or Windows 11, with standard 64-bit Python 3.12 or 3.13; the ZIP includes a Python installer if needed.

Install the receiver and pair it

In the PC application, open Devices → Linux device installation / invitation. Connect to the board over SSH, verify its host fingerprint against a trusted source, and choose the graphical application or headless service. The latter is useful for a board sitting on the network without a display.

Enable pairing on the recipient, then find it from the sending device or enter its local IP address. Enter the recipient's four-digit code on the sender. The pairing window lasts two minutes, and KiwiDrop saves the pairing for later transfers.

With the desktop app running, select the board as the recipient and drop your archive onto the floating widget. The receiver can accept or decline the file and choose its destination.

For a board without a monitor, open Devices → Manage Linux device on the PC and connect over verified SSH. That dialog lets you view the transfer queue, accept or decline incoming files, choose a folder on Linux, and pause, resume, or cancel transfers.

KiwiDrop still needs to be running on the board; the management dialog can start its headless service. Automatic acceptance from trusted devices is optional, so you can keep manual approval and handle it from Windows.

The repository's 0.8.2 screenshots show the actual application widgets with example device names and transfer data. They illustrate the controls; they aren't a throughput benchmark.

Check the file on the board

Choose the receiving folder before sending a large archive. Desktop settings put this under Settings → Received files folder → Choose folder, while remote Linux management lets you select a destination on the board. The default is Downloads / KiwiDrop; use the actual selected path in the commands below.

Also check free space on that filesystem, including room for the extracted files. If you've selected the default folder, this checks the filesystem containing it:

df -h "$HOME/Downloads/KiwiDrop"
Enter fullscreen mode Exit fullscreen mode

For a build you're about to test, compare its SHA-256 hash at both ends. In PowerShell, from the directory containing the original archive:

Get-FileHash .\camera-app-linux-arm64.tar.gz -Algorithm SHA256
Enter fullscreen mode Exit fullscreen mode

Then, in a terminal or SSH session on Linux:

sha256sum "$HOME/Downloads/KiwiDrop/camera-app-linux-arm64.tar.gz"
Enter fullscreen mode Exit fullscreen mode

Compare the hexadecimal hashes, ignoring letter case. Matching hashes give you a content check against the original archive; they don't establish who created the build or whether it's safe to execute.

And transferring the archive doesn't resolve its runtime dependencies. An ARM64 binary may still need libraries absent from the board's image, and a copied model may need a particular inference runtime. Keep those failures separate from a failed transfer.

Keep scripted deployment separate

For a repeatable deployment job, I'd keep using SSH with SCP, rsync, or an existing deployment script. KiwiDrop fits the manual step: choose a paired device, send a file, and handle the incoming request without moving to the receiving machine.

The Standard package contains the app for everyday use. Full packages include installers for updating other devices without internet access; Standard can download them later from Settings. The README describes verification of signed update manifests and package checksums before installation.

KiwiDrop is still a test version. If the workflow fails, include the app version, operating systems, desktop or headless mode, and exact error message in your report. Include the steps needed to reproduce the failure.

Top comments (0)