Skip to content

lawnvi/whisper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

466 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Whisper

Flutter License Platform

English

面向个人设备的局域网协作工具,用一条端到端加密的本地直连通道,在电脑和手机之间传文本、文件、通知、音频和键鼠输入。 本项目与 OpenAI Whisper 语音识别模型无关。

下载

下载最新版本

解决什么问题

Whisper 解决的是一个很日常但反复出现的问题:自己的电脑、手机、备用机都在身边,却仍然要靠聊天软件、网盘或数据线来搬一点文本、文件或声音。

它不是云盘,也不是公网远程桌面。Whisper 默认工作在可信局域网内,设备之间显式建立点对点连接。适合在自己的设备之间临时传输内容、接收 Android 通知、共享桌面系统音频,或在多台桌面设备之间切换键鼠输入。

截图

文件传输

Whisper 文件传输

音频共享 键鼠共享
Whisper 音频共享 Whisper 键鼠共享

特性

  • 端到端加密:配对后的文本、文件、剪贴板、通知、音频和键鼠控制均通过加密通道传输,并显示设备身份与可信状态。
  • 多设备直连:一台设备可以同时连接多台电脑或手机,连接关系保持显式、可见、可断开。
  • 聊天式传输:文本、剪贴板和文件都在会话里完成;图片可全屏查看,音频可直接播放,视频交给系统播放器打开,并支持多选删除聊天记录。
  • 系统快捷发送:支持 Android 分享菜单、桌面右键入口和全局快捷键,不必先打开会话;桌面草稿可等待可信设备重连,Android 未发出的系统分享会在应用重启时丢弃。
  • 扫码与诊断:二维码同时确认局域网地址和设备身份,连接失败时区分 Wi-Fi、地址、服务、防火墙、身份和版本问题。
  • 传输助手:支持文件夹、全文搜索、收藏文本和默认关闭的剪贴板自动同步。
  • 流式校验与续传:文件接收时同步计算 SHA-256,完成后通常无需重新读取整个文件;断线后可从已确认的位置继续传输。
  • 系统音频共享:把一台设备的系统音频推给一个或多个播放端,支持基础扬声器组和左右声道角色。
  • 键鼠共享:在受信任桌面设备之间共享一套键鼠,通过屏幕排列和边缘穿越切换控制目标。
  • 桌面体验:支持托盘、启动项、关闭到托盘、在文件管理器中定位文件、桌面文件拖出复制、浅色/深色主题和多语言。

最近更新

  • 配对后的控制数据与大文件数据统一使用端到端加密,并在界面中标明可信设备状态。
  • 二维码改为当前页面内的配对弹窗,扫码直接带入地址和设备身份,不再要求额外密码;首次连接仍需双方确认同一组配对码。
  • 图片、视频和音频消息使用对应媒体卡片,图片可全屏查看、音频可直接播放、视频可调用系统播放器,传输状态会原位更新。
  • Android 将局域网监听、文件传输和音频播放合并到一条前台通知,接收完成后会退出“接收中”状态。
  • 长按任意消息可进入多选模式,支持全选和批量删除;批量删除默认保留本地文件。

连接方式

Whisper 优先通过局域网发现设备。两台设备连接同一个网络并同时打开 Whisper 后,通常可以直接在设备列表里看到对方,点击后由接收端确认连接。

如果自动发现不可用,可以打开二维码配对弹窗扫描对方二维码,或手动输入局域网 IP 和服务端口。二维码会同时带入局域网地址和设备身份,不需要输入额外密码。默认服务端口是 10002,也可以在设置里的「服务端口」修改;首次配对仍需要双方核对并确认同一组配对码。

Linux 的自动发现依赖 Avahi;如果网络环境禁用了 mDNS/Bonjour,手动 IP 连接通常更可靠。

开发者快速开始

1. 准备环境

安装 Flutter stable,并确保当前 Flutter SDK 满足 Dart >=3.11.0 <4.0.0

flutter doctor

根据目标平台准备对应工具链:

  • Android:Android Studio / Android SDK
  • macOS / iOS:Xcode
  • Windows:Visual Studio C++ 工具链
  • Linux:Flutter Linux desktop 依赖、Avahi、PulseAudio 或 PipeWire Pulse、GStreamer、libsecret/keybinder/jsoncpp 与可用的系统密钥环

2. 获取依赖并运行

flutter pub get
flutter run

macOS 本地调试建议使用仓库脚本,它会构建、签名并启动调试 App:

sh script/build_and_run.sh

3. 验证

flutter analyze
flutter test

4. 打包与代码生成

macOS 打包 DMG:

sh script/build_and_run.sh package-macos

数据库或本地化变更后需要重新生成代码:

dart run build_runner build --delete-conflicting-outputs
flutter gen-l10n

使用方式

发送文本或文件

打开一个已连接设备的会话,直接输入文本并发送;点击附件按钮选择文件。图片可以点开全屏查看,音频可以在消息中播放,视频和其他文件会交给系统可用应用打开。长按消息并选择「多选」可以批量删除聊天记录;桌面端收到的文件还可以在文件管理器中定位,或从消息里拖出完成复制。

Android 可以直接从系统分享菜单选择 Whisper;桌面端可以使用文件右键入口,或按 macOS Cmd+Option+V、Windows/Linux Ctrl+Alt+V 快速发送当前剪贴板内容。

共享系统音频

在桌面端的设备工具区选择音频共享,选择一个或多个已连接且支持音频播放的设备。多设备播放支持基础同步和声道角色,但不等同于专业音频系统。

共享键鼠

在桌面端打开键鼠共享工作区,排列本机与被控设备的屏幕位置。启用后,鼠标从配置的屏幕边缘穿越到目标设备,键盘输入跟随当前目标。

监听 Android 通知

在 Android 端授予通知监听权限后,可以选择需要监听的 App。Whisper 会按用户选择处理通知内容,适合验证码等短消息场景。

平台状态

平台 当前状态
Android 主要移动端,支持系统分享、二维码配对、媒体预览、统一前台通知、通知监听和音频播放等能力。
macOS 主要桌面验证平台,支持系统服务与全局快捷发送、托盘、文件拖出、音频共享、键鼠共享和打包脚本。
Windows 桌面目标平台,包含窗口、单实例、音频和键鼠相关原生集成。
Linux 桌面目标平台,发现依赖 Avahi,系统声音共享依赖 PulseAudio 或 PipeWire Pulse,消息音频播放依赖 GStreamer,键鼠共享当前以 X11 为主。
iOS 保留 Flutter runner,具体能力受系统限制影响,未测试

边界与安全说明

  • 配对后的业务数据使用基于 X25519 会话密钥和 XChaCha20-Poly1305 的端到端加密;局域网发现与连接元数据仍可见,本地数据库和暂存文件不做静态加密,当前实现也未经独立密码学审计。
  • 当前不做公网中继、Hub 转发或传递信任。
  • 文件、音频、键鼠都需要连接和能力协商,不设计为无提示后台控制入口。
  • 键鼠共享面向本人设备间的近场协作,不是无人值守远程控制方案。
  • Whisper 优先保证局域网内的直接、可控和可恢复,不追求替代专业同步、远控或 MDM 系统。

为什么不是这些工具

  • 不是云盘:Whisper 不以跨公网、多端长期同步为目标,核心是近场设备之间的即时直连。
  • 不是聊天软件:会话只是交互外壳,真正目标是让文件、通知、音频和输入能力在设备间流动。
  • 不是远程桌面:键鼠共享只处理输入,不传屏幕,也不面向无人值守远控。
  • 不是专业音频系统:音频组提供可用的多设备播放和声道角色,但不承诺专业级相位同步。

License

MIT

About

Cross-platform LAN sharing for files, text, clipboard, audio, and desktop keyboard/mouse peripherals.

Topics

Resources

License

Stars

23 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors