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, 中文输入法, 兼容层, 可视化界面, 开源项目, 搜狗拼音, 搜狗输入法, 数据擦除, 网络流量审计, 输入法后端, 输入法框架, 通知系统