![]()
一个本地优先的桌面邮件客户端,让收件箱更安静、更清晰,也更可控。
Pebble 是一个使用 Rust、Tauri 和 React 构建的桌面邮件客户端。它默认把邮件数据、搜索索引、附件、规则和应用设置保存在本机。
Pebble 的设计目标很直接:
Pebble 目前支持 Gmail、IMAP、POP3,以及实验性的 Outlook 账户。
T 翻译选中文字,Ctrl+Shift+T 切换双语对照)。mailto: 协议,可从外部应用唤起写信。
收件箱 |
看板 |
深色模式 |
设置 |
| 层级 | 技术 |
|---|---|
| 桌面框架 | Tauri 2 |
| 后端 | Rust |
| 前端 | React 19、TypeScript |
| 状态管理 | Zustand、TanStack Query |
| 数据库 | SQLite / rusqlite |
| 搜索 | Tantivy |
| 样式 | Tailwind CSS 和应用 CSS |
| 国际化 | i18next |
你可以从 发布版本 页面下载预构建的桌面安装包。
Arch Linux 用户可以通过 AUR 安装 pebble-bin:
yay -S pebble-bin
# 或者
paru -S pebble-bin
git clone https://github.com/QingJ01/Pebble.git
cd Pebble
pnpm install
cp .env.example .env
pnpm dev
pnpm dev 会启动 Vite 前端开发服务,并运行 Tauri 桌面应用。
pnpm build
pnpm build:windows
pnpm build:macos
pnpm build:linux
桌面端构建产物会输出到 target/release/ 和 target/release/bundle/。
macOS 构建产物默认不签名,除非你自行配置签名流程。
将未签名的 macOS 构建复制到 /Applications 后,请先执行下面的命令再打开应用:
sudo xattr -cr /Applications/Pebble.app
Pebble 可以通过 OAuth 连接 Gmail 和 Outlook。IMAP 账户使用应用内配置的 IMAP/SMTP 凭据。
复制 .env.example 为 .env,然后填写你需要的提供商配置。
| 变量 | 说明 |
|---|---|
GOOGLE_CLIENT_ID |
Google OAuth 客户端 ID,推荐使用 Desktop app 类型。 |
GOOGLE_CLIENT_SECRET |
可选。若 Google 登录时报 client_secret is missing,再填写该项。 |
MICROSOFT_CLIENT_ID |
Microsoft public/native app 客户端 ID。 |
MICROSOFT_CLIENT_SECRET |
可选。public/native Microsoft 应用通常应留空。 |
| 命令 | 用途 |
|---|---|
pnpm dev |
以开发模式运行 Tauri 桌面应用。 |
pnpm dev:frontend |
只启动 Vite 前端开发服务。 |
pnpm test |
使用 Vitest 运行前端测试。 |
pnpm build:frontend |
类型检查并构建前端。 |
pnpm build |
为当前平台构建桌面应用。 |
pnpm build:windows |
构建 Windows NSIS 安装包。 |
pnpm build:macos |
构建未签名的 macOS .app 和 .dmg 包。 |
pnpm build:linux |
构建 Linux .AppImage、.deb 和 .rpm 包。 |
cargo test -p pebble-mail |
运行邮件模块测试。 |
cargo check |
检查 Rust 工作区。 |
Pebble/
|-- src/ React 前端
| |-- components/ 通用 UI 组件
| |-- features/ 收件箱、写信、搜索、看板、设置等功能
| |-- hooks/ React hooks 和查询工具
| |-- lib/ IPC API、i18n、通用工具
| `-- stores/ Zustand 状态管理
|-- src-tauri/ Tauri 应用和 IPC 命令
|-- crates/ Rust 工作区
| |-- pebble-core/ 共享类型和错误定义
| |-- pebble-store/ SQLite 持久化
| |-- pebble-mail/ 邮件提供商和同步逻辑
| |-- pebble-search/ Tantivy 搜索索引
| |-- pebble-crypto/ 凭据加密
| |-- pebble-oauth/ OAuth 2.0 和 PKCE
| |-- pebble-rules/ 规则引擎
| |-- pebble-translate/ 翻译提供商
| `-- pebble-privacy/ HTML 清理和追踪保护
|-- tests/ 前端测试
`-- site/ 静态项目站点和截图
| 快捷键 | 操作 |
|---|---|
J / K |
在邮件列表中上下移动 |
Enter |
打开选中的邮件 |
E |
归档 |
S |
切换星标 |
R |
回复 |
A |
回复全部 |
F |
转发 |
C |
写新邮件 |
/ |
聚焦搜索 |
T |
翻译选中文字 |
Ctrl+Shift+T |
切换双语对照 |
Esc |
关闭、取消或返回 |
快捷键可以在设置中查看和自定义。
想要自托管的网页版?Pebble Web 提供与桌面版相同的功能,通过 Docker 部署,任何浏览器即可访问。
curl -fsSL https://raw.githubusercontent.com/QingJ01/Pebble-Web/main/docker-compose.yml -o docker-compose.yml && docker compose up -d
Pebble Web 共享相同的 Rust 核心代码和 React 前端。部署到你自己的服务器,随时随地访问邮件。
Pebble 正在持续开发中。它可以用于日常测试,但邮件客户端会处理敏感数据,不同邮件服务商的行为也存在差异。测试新版本时,请为重要邮件保留备份,并在服务商网页端核对关键操作。
欢迎提交 issue 和 pull request。
代码改动请尽量保持聚焦;涉及行为变化时,请补充相应测试。提交前建议运行相关检查:
pnpm test
pnpm build:frontend
cargo check
Pebble 使用 GNU Affero General Public License v3.0 许可证。
由 QingJ 构建。
友情链接:LINUX DO
$ claude mcp add Pebble \
-- python -m otcore.mcp_server <graph>