Skip to content
WM KeyboardWM Keyboard
Accessibility

Send files

Send a file to anyone as an encrypted link that expires, or straight to a phone next to you, and receive both kinds without leaving the app you are typing in.

The Send files tool moves a file out of the keyboard in two ways. Link encrypts the file on your phone, uploads it to a Send server (the maintained fork of Firefox Send) and gives you a link with an expiry, a download limit and an optional password. Nearby hands the file to a phone or computer next to you over Wi-Fi, with no server at all. It receives both kinds too: a Send link in a chat gets a chip that downloads and decrypts the file, and a device nearby can send a file to you.

Screenshot pending
The tray: the TO row of destinations, the four sources, and the pile waiting in the trough with the Send circle.

The panel is a tray. Along the top, under TO, one row of cards names every place a file can go: Link (the Send server, with its host and the largest upload it takes), each phone or computer the Nearby engine knows, Browser (a page any browser on this Wi-Fi can open), Direct (a Wi-Fi this phone opens for another phone), Scan code where the build has a scanner, and a last Nearby card that opens the radar. The card you tap is filled and ringed; it is where the Send circle sends. Under the cards sit the four sources, Files, Gallery, Clipboard and Field, and the rest of the panel is the trough the files land in.

The header has History, which lists every link this phone made and every file it received, Receive, which takes a pasted Send link, and the tool’s settings.

  1. Pick what to send: Files opens the keyboard’s file manager (Android’s document picker in the Play Store build), Gallery opens the Gallery tool to pick photos and videos, Clipboard takes what you copied (a file, a picture, or text saved as a file), and Field saves the text in the field you are typing in. Each file drops into the trough as a tile; the tiles fan into a pile, and a tap on the pile spreads them out so one can be removed.
  2. With Link chosen, the trough shows how much of the server’s cap the pile takes and three chips for the link’s limits: how long it lives, how many downloads it allows and a password. Each chip picks in place; the choices are what the chosen server allows. Generate, in the password box, makes a twelve-character one you can read out.
  3. Press the Send circle. The panel turns into the sending face: the Link card sits in the middle of a ring that fills as the file is encrypted and uploaded in one pass, the pile flies into it, and the percent, the bytes sent, the speed and the time left are written under it. Cancel is in the header. When it is done the link is typed into the field, or copied, or shown with its QR code, whichever you chose under After the upload. Hold the circle instead to pick for this one upload.

The file is encrypted before it leaves the phone, with a key that travels only in the link, after the #. The server stores the ciphertext, its size and when it arrived. It never sees the key, the file or even its name, which is encrypted too. Anyone with the link can download the file until it expires or the downloads run out; a password is a second lock the server checks on top.

A finished link is a receipt: the QR code at the left (tap it for a big one), the host over the link’s hash, and chips for when it expires, how many downloads are used and the password, which shows its letters when you tap the lock. Under it one bar holds Insert link (or Copy when no field is open) with Copy, Share and the QR code as round buttons, and Manage opens the download count and Delete from the server. RECENT shows the link before this one, as a door into History, and New in the header starts over.

Paste or type a Send link in any field and a chip appears on the suggestion strip: Receive the file. Copy a link in another app and the same chip is waiting when you come back to the keyboard. Tap it and the panel asks the server about the file, shows its name, size and expiry, warns you when yours is the last download allowed, asks for the password if there is one, and downloads and decrypts it into Downloads › WM Keyboard. A picture can go straight into the chat field from there; anything else opens or shares from the panel.

You can also press Receive in the panel’s header and paste the link into its box.

Two other apps’ devices show up here as well, each as a card in the TO row. LocalSend apps on the same Wi-Fi appear by themselves, with no server and no account, while the panel is on Nearby. PairDrop pages on the same network appear once you turn on PairDrop in the tool’s settings: it is off by default because it meets other devices through a PairDrop server (pairdrop.net unless you enter your own), which sees this phone’s address while the panel is on Nearby. Sending is the same as to any other card. A file coming to you asks first, with Accept and Reject in the tray, and is refused after a minute with no answer. Neither runs with the panel closed, except to finish a transfer already under way.

PairDrop’s files go directly between the devices through WebRTC, a library of about 12 MB that the tray offers to download the first time. The F-Droid build has no such library, so there PairDrop works only with a server that relays files itself. PairDrop’s paired devices and public rooms aren’t supported, only devices on one network.

Screenshot pending
The radar: devices around the pile, the ones in reach on the near ring, the browser page as a node, and the footer with Refresh.

Nearby uses the same engine as the KDE Connect tool, so it reaches phones and computers running WM Keyboard, KDE Connect, GSConnect or Valent on the same Wi-Fi. Every device it knows is a card in the TO row, with Connected in green, Not in reach, or Pair for one it has not met; tap the card and the Send circle sends the pile to that device. Pairing happens once, by comparing the eight-character code the trough shows with the one on the other screen, with Accept and Reject for a device that asks first.

The Nearby card at the end of the row opens the radar: a sweep turning over three rings, the pile in the middle, and the devices placed around it, the ones in reach on the near ring and the rest dim on the far one. The browser page and the direct Wi-Fi join the radar as nodes while they are up. Tap a device to send the pile to it (or to pair, when it is new), tap the middle to go back to the tray, and use Refresh in the footer to look again. A send wears the same sending face as a link, with the device’s card in the ring; Hide in its header puts it away so the tray can be used meanwhile. Files sent to you land in Downloads › WM Keyboard; the transfers either way, under way and finished, are a chip in the trough and in the radar’s footer that opens the list, with Clear finished.

The other device does not need WM Keyboard, or any app. Pick the Browser card and press Start the page (or the Send circle): the phone starts a small web page on its Wi-Fi address, then shows a QR code. Whoever scans it on the same Wi-Fi gets a page in their browser with each file you picked and a Download button beside it. With Accept files on, the page also takes files back: choose or drop them there and they land in Downloads › WM Keyboard on your phone. Files you add or remove in the panel show up on the page within a few seconds.

While the page is up, the trough holds its controls: Show the code, Accept files, Copy for the address, and Stop. When the other device is on a different network, or the Wi-Fi keeps its devices apart (common on guest and office networks), press Use a hotspot. The phone opens a Wi-Fi of its own, the same way the direct link below does, and the code sheet shows two codes: the first joins that Wi-Fi from a phone camera, the second opens the page. A laptop joins by typing the Wi-Fi name and password shown beside the code.

Nothing goes through the internet and no outside server is involved; the page comes straight from your phone. The address carries a random 128-bit token, so a device on the same Wi-Fi that did not get the code finds nothing. The page is plain HTTP, since browsers refuse a certificate a phone made for itself, so use it on networks you trust. It stops when you press Stop or after 10 minutes with nobody on it.

Two phones with WM Keyboard can link directly. On the receiving phone pick the Direct card and press Receive here: the phone opens a Wi-Fi of its own (a Wi-Fi Direct group, or a local hotspot where the phone cannot do that) and shows a QR code. On the sending phone tap the Scan code card Not on F-Droid and point the camera at it. The code carries the Wi-Fi’s name and password, the receiver’s address and a one-time pairing token, so the sender joins the Wi-Fi, finds the receiver and pairs with it in one go; then the files go. Disconnect takes the Wi-Fi down again, unless Keep a direct link up is on.

Android asks for the Nearby devices permission before an app may open or join a Wi-Fi this way (on Android 12 and older, the same thing sits behind the location permission). The tool asks only when you press one of those two buttons, reads no position, and needs nothing at all for devices that are already on the same Wi-Fi.

With Show in other apps’ share sheets on, Send with WM Keyboard appears beside the apps you share to. Share a file from anywhere, pick the limits and a password, and the link is copied for you, with its QR code on the card. Nearby works from there too, to a paired device in reach. A share that names a file inside WM Keyboard’s own storage is ignored, so another app cannot use it to upload the keyboard’s private files.

The Link card names the instance uploads go to and the largest upload it takes. Tap it again while it is chosen, or hold it, for the list: the servers from the community list with their size, time and download limits, each with a dot that says whether it is answering, and Add your own for a server you run or trust. The default is the one the maintainer of Send runs. Every public instance is run by volunteers with no promises; what they see of your file is its size and its arrival time, nothing else.

If the pile is too big for the chosen server, the trough says so in red and offers the instances with room for it.

WM Keyboard  Tools  Send files

Send files is the Send files bundle on Extensions. Switch the bundle off and the tool, the link detection and the history screen leave together; the history stays on the phone.

SettingWhat it does
InstanceThe server uploads go to, and the list of your own.
Link expires afterThe default life of a new link: 5 minutes to 7 days, capped by the server.
Downloads allowedThe default download count of a new link.
PasswordOff, ask on every upload, or generate one every time.
After the uploadInsert the link, copy it, show it, or ask.
Offer to receive linksThe strip chip for a Send link typed, pasted or copied.
Open after downloadA single received file opens as soon as it is saved.
Send to devices nearbyThe device cards, the radar, the direct link and the browser page; off, one card in the TO row leads here.
Keep a direct link upStay on the other phone’s Wi-Fi after a transfer.
Show in other apps’ share sheetsThe Send with WM Keyboard entry.
Keep a historyThe links you made and the files you received, for the History sheet and screen.

Data saving has a row for this tool: a whole file over mobile data asks first, like a download.

The link is the key. The server you upload to receives only ciphertext; the server a link points at learns that you fetched it, which is unavoidable, and nothing about you beyond your address. Links you made are kept on the phone, with the owner token that can delete them, in a folder that is left out of every backup. Nothing about any of this goes to the developer. The network activity log lists every request the tool makes under Send files.