Rust terminal client for Localsend
Find a file
2025-08-16 13:46:17 -07:00
media add readme 2025-08-10 13:35:54 -07:00
src better multicast 2025-08-16 13:46:17 -07:00
.gitignore can receive files and text 2025-07-03 17:00:11 -07:00
.rustfmt.toml add rustfmt config 2025-07-04 12:22:21 -07:00
3P-LICENSE.txt can receive files and text 2025-07-03 17:00:11 -07:00
Cargo.lock release 1.618 2025-08-15 15:59:40 -07:00
Cargo.toml release 1.618 2025-08-15 15:59:40 -07:00
LICENSE.md add license 2025-07-05 15:21:04 -07:00
README.md add thanks to readme 2025-08-10 14:04:33 -07:00
VERSION release 1.618 2025-08-15 15:59:40 -07:00
VERSIONING.md prepare for new release 2025-08-14 18:15:34 -07:00

JocalSend, a TUI LocalSend implementation

LocalSend is, in its words, "a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection." It comes in the form a Flutter/Dart cross-platform GUI application that runs on both mobile and desktop devices. Using it on mobile is very nice, but the desktop experience is a bit lacking in zazz.

JocalSend is an implementation of the LocalSend protocol that uses Ratatui to provide an interactive terminal-based application, and is compatible with the official app.

Install with cargo install jocalsend (requires Rust); tested on Linux, it will probably work on Macs but if you're on a Mac, you probably have AirDrop.

Capabilities and screenshots

As with the official app, JocalSend can be used to send and receive files and text from other LocalSend instances on your local subnetwork. Most of the modes have the following keybindings available:

  • M -> go back to the main screen
  • S -> go to the sending screen, defaulting to sending files
  • R -> go to the receiving screen to approve or deny incoming transfers
  • L -> go to the logging screen where you can adjust the log level
  • ESC -> go back to the previous screen
  • Q -> exit the application

Additionally, when in the sending screen, the following are available

  • TAB -> switch between content selection and peer selection
  • P -> switch to peer selection
  • T -> switch to entering text to send
  • F -> switch to selecting files to send (not available when entering text, use ESC to exit text entry)

In addition to the interactive commands, it will also accept commandline arguments to pre-select a file or pre-populate text to send:

$ jocalsend -h
A terminal implementation of the LocalSend protocol

Usage: jocalsend [OPTIONS]

Options:
  -f, --file <FILE>  File to pre-select for sending
  -t, --text <TEXT>  Text string to send
  -h, --help         Print help
  -V, --version      Print version

Sending Files

JocalSend has a file-picking widget for selecting files to send:

sending a file via selection

but there's no preview available on the receiving side:

receiving a file on the mobile app

Sending text

JocalSend supports entering text directly:

entering text to send

and on the receiving side in the official app, you see

receiving text in the official app

Receiving files

The main screen shows incoming transfer requests:

incoming transfer request in main screen

hit r to enter the "receiving" screen to approve or deny:

incoming transfer request management screen

Receiving text

If the incoming transfer request is plain text, JocalSend will show a preview in both the main screen and in the receiving screen:

receiving text with preview in the main screen

receiving text with preview in the receiving screen

Thanks

  • to the LocalSend developers for the app and protocol
  • to wyli for the initial protocol backend implementation

Built With Ratatui