本项目当前正处于史诗级屎山构建阶段, 建议您保持安全距离观赏.
This project is currently in the process of building an epic-level shit mountain. It is recommended to observe from a safe distance.
Go to the release page to download the corresponding installation package. Supports Windows (x64/x86), Linux (x64/arm64) and macOS 10.15+ (intel/apple).
- Based on Rust and Tauri2 frameworks.
- Concise and modern user interface, built with Svelte 5 and Tailwind CSS 4.
- Talks the rynk protocol over USB serial, BLE, and Web Serial.
- Support for Windows, macOS, and Linux.
Make sure you have Rust, NodeJS and Python installed on your system.
- Clone the repository:
git clone https://github.com/liyang8246/rmk-gui.git cd rmk-gui - Install dependencies:
pnpm install rustup target add wasm32-unknown-unknown cargo install wasm-pack
- Build the protocol client:
pnpm build:wasm
src/rynk/wasm/is a build artifact and is not checked in, so this step is required before anything else runs. It compilesrynk-wasmfrom a sibling../rmkcheckout when one exists, otherwise it clonesrmk-rs/rmk; setRMK_REPOto point somewhere else. - Start the development server:
pnpm dev:web # browser only pnpm dev:tauri # desktop app — runs dev:web itself, don't start both
- Build the application:
pnpm build:web pnpm build:tauri # runs build:web itself
pnpm test # unit tests — no device and no wasm build needed
pnpm test:qemu # end-to-end against the riscv fixture firmware
pnpm check # svelte-check
CI=true pnpm lintpnpm test:qemu builds and runs qemu/ itself, so there is nothing to start by
hand. It needs qemu-system-riscv32 (brew install qemu, or
apt install qemu-system-misc on Debian/Ubuntu), the
riscv32imac-unknown-none-elf target, and step 3 to have run. It picks a free
TCP port per run; a manual pnpm qemu defaults to 7965 and takes
RMK_QEMU_PORT. Don't point both at one port — the fixture's serial port serves
one client at a time.
The fixture firmware resolves rmk the same way step 3 does (RMK_REPO, then a
sibling ../rmk), so the firmware and the wasm client stay on one revision.
With neither, cargo falls back to the main branch and the two can drift onto
different protocol commits.
CI=true matters for linting: the eslint config detects editors and relaxes
some rules, so a bare pnpm lint is more permissive than CI.
Too many to write
RMK-GUI was based on or inspired by these projects and so on:
- Tauri A framework for building tiny, fast binaries for all major desktop and mobile platforms.
- Svelte A UI framework that compiles components to small, surgical JavaScript.
- Ark UI A headless, accessible component library for building design systems.
- Tailwind CSS A utility-first CSS framework.
- Vial-gui An open-source cross-platform (Windows, Linux and Mac) GUI and a QMK fork for configuring your keyboard in real time.
- RMK Rust keyboard firmware library with layers, macros, real-time keymap editing, wireless(BLE) and split support.
RMK-GUI is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.