xdqi/rime-winime
GitHub: xdqi/rime-winime
通过 gRPC 和 Wine 将搜狗、QQ 拼音等 Windows IME 引擎作为 Rime 后端运行,实现跨平台商业中文输入法体验。
Stars: 9 | Forks: 0
# rime-winime
使用商业中文输入法(Sogou Pinyin、QQPinyin)作为 [Rime](https://rime.im/) 输入法框架的后端——跨 Linux、macOS (Squirrel) 和 Windows (Weasel) 平台。
## 工作原理
```
┌─────────────────────┐ gRPC ┌─────────────────────┐
│ Rime frontend │◄──────────► │ ime-grpc-host-v2 │
│ + rime-remote │ (proto3) │ (Rust, under Wine) │
│ plugin (v3) │ │ │
│ │ │ Loads Win32 .ime │
│ fcitx5 / ibus / │ │ via Win32 IMM API │
│ Squirrel / Weasel │ └─────────────────────┘
└─────────────────────┘
```
一个 Rime 插件 (`rime-remote`) 通过 gRPC 将击键转发给一个 Rust 服务器 (`ime-grpc-host-v2`),该服务器通过 Win32 IMM API 加载 Windows `.ime` DLL。该服务器在 Linux/macOS 上通过 Wine 运行,或者在 Windows 上原生运行。候选项会传回给 Rime 进行显示。
## 组件
| 组件 | 语言 | 描述 |
|---|---|---|
| **rime-remote** | C++ | librime 插件 (v3)。标准的 Processor/Segmentor/Translator pipeline。 |
| **ime-grpc-host-v2** | Rust | gRPC 服务器。通过 Win32 IMM DDI 加载 `.ime` DLL。支持 32 位和 64 位目标。 |
| **grpc-contract-v2** | Protobuf | 服务定义 (`rime.service.v2`):`ProcessKey`、`GetContext`、`GetCommit` 等。 |
| **rime-grpc-proxy-v2** | C++ | 前代插件 (v2)。单体式 Rime C API 钩子。已被 rime-remote 取代。 |
### 支持的 IME DLL
| IME | 版本 | 架构 |
|---|---|---|
| QQPinyin | 6.6.6304 | 32 位 |
| Sogou Pinyin (10.5b) | 10.5.0.4737 | 32 位 |
| Sogou Pinyin (16.3) | 16.3.0.3318 | 64 位 |
### 支持的 Rime 前端
- **fcitx5-rime** / **ibus-rime** (Linux)
- **Squirrel** (macOS)
- **Weasel** (Windows)
## 项目结构
```
rime-winime/
├── src/
│ ├── rime-remote/ # v3 librime plugin (production)
│ ├── rime-grpc-proxy-v2/ # v2 librime plugin (superseded)
│ ├── ime-grpc-host-v2/ # Rust gRPC server
│ ├── grpc-contract-v2/ # Protobuf service definition
│ ├── reverse/ # Reverse engineering notes and POC scripts
│ └── memories/ # Working notes from development
├── docs/ # Technical documentation
│ ├── LLM_CONTEXT.md # AI assistant context manual
│ ├── ARCHITECTURE.md # System architecture
│ ├── SETUP_AND_USAGE.md # Build, deploy, and run guide
│ ├── DEVELOPMENT_HISTORY.md# Timeline and decisions
│ ├── GRPC_PROTOCOL.md # gRPC protocol reference
│ ├── REVERSE_ENGINEERING.md # Sogou DLL reverse engineering
│ └── WIN32_IMM_INTERNALS.md# Win32 IMM API internals
└── ...
```
## 快速开始
### 前置条件
- Rust stable (≥ 1.78) 及 `i686-pc-windows-gnu` 和/或 `x86_64-pc-windows-gnu` 目标
- CMake ≥ 3.16,C++17 编译器
- gRPC C++ 和 Protobuf
- librime (≥ 1.9)
- Wine (≥ 9.0)
- 一个 Windows `.ime` DLL(见上表)
### 构建
```
# Rust host (32位, 适用于 QQPinyin / Sogou 10.5b)
cd src/ime-grpc-host-v2
cargo build --release --target i686-pc-windows-gnu
# Rust host (64位, 适用于 Sogou 16.3)
cargo build --release --target x86_64-pc-windows-gnu
# Rime plugin
cd src/rime-remote
cmake -B build -DCMAKE_PREFIX_PATH=/path/to/librime
cmake --build build
```
### 运行
```
# 终端 1: 在 Wine 下启动 IME host
WINEPREFIX=~/.wine64 WINEDEBUG=-all \
wine target/x86_64-pc-windows-gnu/release/ime-grpc-host-v2.exe \
--bind 127.0.0.1:50056 --ime-path "C:\\windows\\system32\\SogouPY.ime"
# 终端 2: 部署 Rime schema 并重启你的前端
rime_deployer --build
```
在任何编辑器中输入 `nihao` ——你应该会看到来自 Sogou 的中文候选项。
完整的设置说明(包括 Wine prefix 创建、IME 安装、生产环境的 systemd 部署和故障排除)请参阅 [docs/SETUP_AND_USAGE.md](docs/SETUP_AND_USAGE.md)。
## 文档
| 文档 | 受众 | 描述 |
|---|---|---|
| [LLM_CONTEXT.md](docs/LLM_CONTEXT.md) | AI 助手 | 用于代码生成的精简上下文手册 |
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | 开发者 | 组件设计、数据流、线程模型 |
| [SETUP_AND_USAGE.md](docs/SETUP_AND_USAGE.md) | 运维人员 | 构建、配置、部署、故障排除 |
| [DEVELOPMENT_HISTORY.md](docs/DEVELOPMENT_HISTORY.md) | 所有人 | 10 天时间线、决策、演进 |
| [GRPC_PROTOCOL.md](docs/GRPC_PROTOCOL.md) | 开发者 | Protobuf 消息参考、RPC 语义 |
| [REVERSE_ENGINEERING.md](docs/REVERSE_ENGINEERING.md) | 研究人员 | Win32 IME DLL 内部机制、byte_3554、IDA 分析 |
| [WIN32_IMM_INTERNALS.md](docs/WIN32_IMM_INTERNALS.md) | 开发者 | IMM DDI 生命周期、COMPOSITIONSTRING、Wine 怪癖 |
## 版本历史
| 版本 | 组件 | 架构 | 状态 |
|---|---|---|---|
| v1 | `rime-grpc-proxy` + `ime-grpc-host` | 直接加载 Rime C API | 已放弃 |
| v2 | `rime-grpc-proxy-v2` + `ime-grpc-host-v2` | 单体式 API 钩子 | 已被取代 |
| v3 | `rime-remote` + `ime-grpc-host-v2` | 标准 Rime pipeline | **生产可用** |
## 许可证
[MIT](LICENSE)
标签:Bash脚本, C++, DNS解析, gRPC, gRPC服务端, Python工具, QQ拼音, Rime, Rime插件, Rust, Win32 IMM API, Wine, 中文输入法, 兼容层, 可视化界面, 开源项目, 搜狗拼音, 搜狗输入法, 数据擦除, 网络流量审计, 输入法后端, 输入法框架, 通知系统