GithubHelp home page GithubHelp logo

localsend / localsend Goto Github PK

View Code? Open in Web Editor NEW
35.0K 146.0 1.8K 6.35 MB

An open-source cross-platform alternative to AirDrop

Home Page: https://localsend.org

License: MIT License

Kotlin 0.01% Swift 0.16% Objective-C 0.01% Dart 96.76% CMake 0.82% C++ 1.09% C 0.06% HTML 0.20% Ruby 0.13% Shell 0.19% PowerShell 0.26% JavaScript 0.10% Inno Setup 0.21%
flutter file-sharing dart flutter-apps

localsend's Introduction

LocalSend

CI status

HomepageDiscordGitHubCodeberg

中文

LocalSend is 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.

About

LocalSend is a cross-platform app that enables secure communication between devices using a REST API and HTTPS encryption. Unlike other messaging apps that rely on external servers, LocalSend doesn't require an internet connection or third-party servers, making it a fast and reliable solution for local communication.

Screenshots

iPhone screenshot PC screenshot

Download

It is recommended to download the app either from an app store or from a package manager because the app does not have an auto-update.

Windows macOS Linux Android iOS Fire OS
Winget App Store Flathub Play Store App Store Amazon
Scoop Homebrew AUR F-Droid
Chocolatey DMG Installer Nixpkgs APK
MSIX Installer TAR
EXE Installer DEB
Portable ZIP AppImage

Read more about distribution channels.

Setup

In most cases, LocalSend should work out of the box. However, if you are having trouble sending or receiving files, you may need to configure your firewall to allow LocalSend to communicate over your local network.

Traffic Type Protocol Port Action
Incoming TCP, UDP 53317 Allow
Outgoing TCP, UDP Any Allow

Also make sure to disable AP isolation on your router. It should be usually disabled by default but some routers may have it enabled (especially guest networks).

Portable Mode

(Introduced in v1.13.0)

Create a file named settings.json located in the same directory as the executable. This file can be empty. The app will use this file to store settings instead of the default location.

How It Works

LocalSend uses a secure communication protocol that allows devices to communicate with each other using a REST API. All data is sent securely over HTTPS, and the TLS/SSL certificate is generated on the fly on each device, ensuring maximum security.

For more information on the LocalSend Protocol, see the documentation.

Getting Started

To compile LocalSend from the source code, follow these steps:

  1. Install Flutter directly or using fvm (see version required)
  2. Clone the LocalSend repository
  3. Run cd app to enter the app directory
  4. Run flutter pub get to download dependencies
  5. Run flutter run to start the app

Note

LocalSend currently requires an older Flutter version (specified in .fvm/fvm_config.json) and thus build issues may be caused by a mismatch between the required and the (system-wide) installed Flutter version.
To make development more consistent, LocalSend uses fvm to manage the project Flutter version. After installing fvm, run fvm flutter instead of flutter.

Contributing

We welcome contributions from anyone interested in helping improve LocalSend. If you'd like to contribute, there are a few ways to get involved:

Translation

You can help translate this app to other languages!

  1. Fork this repository
  2. Choose one
    • Add missing translations in existing languages: Only update _missing_translations_<locale>.json in app/assets/i18n
    • Fix existing translations: Update strings_<locale>.i18n.json in app/assets/i18n
    • Add new languages: Create a new file; see also: locale codes.
  3. Optional: Re-run this app
    1. Run cd app to enter the app directory.
    2. Make sure you have run this app once.
    3. Update translations via flutter pub run slang
    4. Run the app via flutter run
    5. Open a pull request

Take note: Fields decorated with @ are not meant to be translated; they are not used in the app in any way, being merely informative text about the file or to give context to the translator.

Bug Fixes and Improvements

  • Bug Fixes: If you find a bug, please create a pull request with a clear description of the issue and how to fix it.
  • Improvements: Have an idea for how to improve LocalSend? Please create an issue first to discuss why the improvement is needed.

For more information, see the contributing guide.

Building

These commands are intended for maintainers only.

Android

Traditional APK

flutter build apk

AppBundle for Google Play

flutter build appbundle

iOS

flutter build ipa

macOS

flutter build macos

Windows

Traditional

flutter build windows

Local MSIX App

flutter pub run msix:create

Store ready

flutter pub run msix:create --store

Linux

Traditional

flutter build linux

AppImage

appimage-builder --recipe AppImageBuilder.yml

Snap

Feel free to open a pull request. There is a snap branch to play with.

Contributors

Localsend Contributors

localsend's People

Contributors

amereyeu avatar beholdenkey avatar bryanjames16 avatar dependabot[bot] avatar esaracho avatar faea726 avatar farshad991 avatar francesco146 avatar gidano avatar graphemecluster avatar jesse205 avatar mertssmnoglu avatar nebojsatomic avatar neo1102 avatar nidexingg avatar nixuge avatar nkh0472 avatar pr0gger1 avatar radk6 avatar raygicefl avatar rishiasheth avatar selasekay avatar sergd88 avatar shafayetahmad avatar shlomocode avatar sitiom avatar soya-daizu avatar thegb0077 avatar tienisto avatar watchakorn-18k avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

localsend's Issues

LocalSend exits unexpectedly after minimized to the tray

LocalSend: 1.6.0
OS: Windows 10 22H2 (19045.2486)

Steps to reproduce:

  1. Launch LocalSend and change the settings to allow minimizing to the tray upon close
  2. Close LocalSend
  3. Observe that the LocalSend icon stays in the tray
  4. Wait for 30~60 seconds
  5. Observe icons from the tray

Expected result:
LocalSend's icon should remain in the tray and the app should function normally.

Actual result:
LocalSend's icon disappears from the tray and the Windows machine could not be found from LocalSend from other devices.

Other factors (may be irrelevant)

  • Chrome is running
  • The machine has a multi-monitor setup
  • LocalSend is set to launch at Windows startup

[CJK fonts] mixed font-family when displayed as ZH_CN

When displayed in Windows with ZH_CN, font-family is mixed with Simplified Chinese, Traditional Chinese and Japanese fonts. Which makes it very disjointed to read.

It may be a default fallback font problem. A specified font-family can avoid this problem. Commanly suggested font for ZH_CN is "微软雅黑 UI" (aka. "Microsoft YaHei UI")

example

message history

Can I check message history, like sms, maybe it will be more convenient when send several texts.

Can not discover win PC in iOS

Can not discover win PC in iOS, but can be discovered by win PC.

20230129-201405

Snipaste_2023-01-29_20-12-47

My device model: iPhone 12 P M
iOS version: 16.0
LocalSend version:1.6.2(23)

PC: Win 11 22H2
LocalSend version:1.6.2(23)

Detect or fix firewall issues

Dear developer,

I tried this nice tool, and I find the Linux version cannot be found by other devices I have.

I tried to input the IP, but not work.

Then I realize it is the firewall issue. I open the port in firewall settings, and it works like a charm.

Is it possible to let LocalSend open the port automatically (perhaps difficult because root privilege is needed), or at least check the availability of the port and suggest the user what to do?

Cheers,
Yu

Release on AUR

Hi there!

Found this app from "trending" - really like this so far, i think i will use it!

I would love to have it nicely installed with auto-updates so i can follow how you guys are going

Ekhm, I use Arch btw - and recently i've been uploading my own Dart app to AUR - the process is very simple: you create the account on AUR, make a PKGBUILD file with some fields, and then commit it to your app repo - to update, just make a new PKGBUILD and commit-push again 👍

Here's the script that generates it for me:

https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper/blob/master/scripts/gen-pkgbuild.bash

It just downlaods the binary from gh releases

Here i use it in a gh action:

https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper/blob/3a0d48e8555ab0c20c8da12424d43bb7888f4516/.github/workflows/new-release.yml#L72-L75

Of course, it's simpler for me because it's a single binary, but you can also look at how @KRTirtho does it in https://github.com/KRTirtho/spotube - they have a really great setup with all the releases 👍

Support AndroidTV

all button can not click with Remote control center button AndroidTV
just like enter button

Suggestions

Can text be transferred without file?It will be easier to transfer.
And the display of historical records will also be more convenient,you can find some examples in the project "LANDrop"

iPadOS & Android 13 互传失败

AppStore 与 PlayStore 下载,均为20230128下载安装。

在传输文件或者图片时:
1 接收端如果不开启自动保存
2 接收端页面没有任何提示
3 发送端一直是等待响应中
4 接收端开启自动保存
5 可收到文件

在发送文本消息时:
1 接收端不开启自动保存
2 可收到信息

权限都给到了 不确定哪里问题
Android 与iPad 无论谁做接收端 都有此问题

Add all platform binaries to GitHub Releases

Hi,

Can you please consider adding other platforms to the GitHub releases page? I don't like using my platform's app store and try to avoid it whenever possible. Having Windows and macOS binary releases, alongside Linux AppImage and Android APK builds would be much appreciated.

Thanks in advance for your help!

Favorites

Allow setting favorites to avoid discovering.

Each favorite should be bound to a LAN network.

Geolocation permission may be needed to implement this feature.

Appimage Failed to load module "xapp-gtk3-module"

Gtk-Message: 09:26:26.776: Failed to load module "xapp-gtk3-module"
[FATAL:flutter/shell/gpu/gpu_surface_gl_delegate.cc(57)] Check failed: gl_version_string. The GL proc resolver's glGetString(GL_VERSION) failed
Aborted

In reading it seems this is an error that can be ignored - BUT - localsend errors out with 'Aborted'
Please fix your program.

i18n support

Hi, is it possible to add Chinese translation. I can help with it.

Localsend & VPN

Hi
I have a question: if I want to use this app with VPN connection. VPN must be disabled. Is that so?

Can't find the laptop in the same local network

I have had 4 devices test.
1 PC, 1 Thinkpad laptop, 2 Pixel phones
The PC and 2 phones can find each others but the PC and phones can't find the Thinkpad.
However the Thinkpad is able to find the PC and the phones. Test and files can be sent to the PC.

remark:

  1. all are in the same local network/WiFi;
  2. all app with server started;
  3. all with default port

Thank you for your nice work.

Unable to discover local devices when using Localsend on Chromebook

Hi! I just found your app and it's awesome. I have a Chromebook and an Android phone, yet sometimes Nearby Share just won't work so I will use some other apps to transfer files between my devices, and your app is a great fit.

However, it seems that when I use the Android version of Localsend on my Chromebook, it won't find my Android phone, even though they are connected to the same local network. But if I manually enter my Android phone's IP address, it works and I can send files from Chrome OS to my phone. Also, the Localsend App on my phone is able to discover my Chromebook.

I suspect the way Android apps work on Chrome OS is causing this issue. Basically, Chrome OS runs Android Apps in a seperated container, along with its seperated network interfaces. From the documentation of Localsend's protocol, the discovery is implemented by sending request to all local IP addresses, yet the App on Chrome OS has a different subnet compared to my Android phone. (But this doesn't explain why my phone can discover my Chromebook. Perhaps some Chrome OS magic?)

Here is a screenshot of Localsend running on Chrome OS.
(It shows a subnet of 100.115.92.0/24, yet my local network has a subnet of 10.0.0.0/24)
image

Since this is a technical limitation of Chrome OS, currently I don't have any real practical solutions. One possible way is to include a network subnet setting panel, which can override the default subnet provided by system API, and send the discover requests to that subnet.

Hope this feedback helps.

[macOS] Unhandled Exception: ProcessException: Too many open files when click SendTab/File

Steps to reproduce:

  1. clone this repo
  2. flutter pub get & flutter pub run build_runner build
  3. flutter run on macos
  4. click SendTab/File

Stacktrace:

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: ProcessException: Too many open files
  Command: which osascript
#0      _ProcessImpl._start (dart:io-patch/process_patch.dart:401:33)
#1      Process.start (dart:io-patch/process_patch.dart:38:20)
#2      _runNonInteractiveProcess (dart:io-patch/process_patch.dart:578:18)
#3      Process.run (dart:io-patch/process_patch.dart:49:12)
#4      runExecutableWithArguments (package:file_picker/src/utils.dart:49:39)
#5      isExecutableOnPath (package:file_picker/src/utils.dart:58:22)
#6      FilePickerMacOS.pickFiles (package:file_picker/src/file_picker_macos.dart:18:37)
#7      FilePickerOption.select (package:localsend_app/util/file_picker.dart:35:50)
#8      _SendTabState.build.<anonymous closure>.<anonymous closure> (package:localsend_app/pages/tabs/send_tab.dart:94:51)
#9      _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1072:21)
#10     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:253:24)
#11     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:627:11)
#12     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:306:5)
#13     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:239:7)
#14     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:615:9)
#15     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:98:12)
#16     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:143:9)
#17     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:617:13)
#18     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:141:18)
#19     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:127:7)
#20     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:460:19)
#21     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:440:22)
#22     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:337:11)
#23     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:395:7)
#24     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:357:5)
#25     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:314:7)
#26     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:295:7)
#27     _invoke1 (dart:ui/hooks.dart:167:13)
#28     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:341:7)
#29     _dispatchPointerDataPacket (dart:ui/hooks.dart:94:31)

App interface crash issue in Chinese language

Test device:Windows 11 / Android 12 (OneUI)
The file transfer confirmation screen crashes when using the Simplified Chinese interface, but there is no problem with English
(English interface is normal)
(Android app crash screen, window is the same as this)

Add launch on startup option

Add option to automatically start this app on startup.
These 2 options are needed to play well with #17

  • Launch on Startup / Login
  • Start hidden in system tray

Nothing happens when launching AppImage version of Localsend

As a workaround of issue #29 , I tried to use Chrome OS's Linux container and run Localsend's AppImage version, to see if port mapping can make Localsend correctly discover local devices. Yet it seems when I launch it, nothing happens. htop shows the process has been started, but there is no UI, no messages, no stdout printing. It would be great if you can let me know how can I diagnose this problem or enable some verbose options to see what's going on.

image
image

Chrome Plugin

Would it be possible to have localsend as an Chrome Browser Plugin?

It seems that the cache clearing mechanism does not work in iOS

After sending file(s) in iOS, the storage used by LocalSend becomes larger despite starting the app multiple times. It seems that the cache clearing mechanism does not work in iOS. But it works perfectly on Android.

My device model: iPhone 13
iOS version: 16.3
LocalSend version:1.6.2

Thank you for your nice work, and excuse me that my English is poor.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.