Skip to content

Latest commit

 

History

History
114 lines (90 loc) · 4.23 KB

File metadata and controls

114 lines (90 loc) · 4.23 KB
RMK GUI

Gui configuration for RMK based on Tauri and Svelte

Warn

本项目当前正处于史诗级屎山构建阶段, 建议您保持安全距离观赏.

This project is currently in the process of building an epic-level shit mountain. It is recommended to observe from a safe distance.

Install

Go to the release page to download the corresponding installation package. Supports Windows (x64/x86), Linux (x64/arm64) and macOS 10.15+ (intel/apple).

Features

  • Based on Rust and Tauri2 frameworks.
  • Concise and modern user interface, built with Svelte 5 and Tailwind CSS 4.
  • Talks the rynk protocol over raw USB (WebUSB in the browser), BLE, and WebHID.
  • Reaches a keyboard through an RMK BLE dongle, and binds the keys that pair the two.
  • Support for Windows, macOS, and Linux.

Development

Make sure you have Rust, NodeJS and Python installed on your system.

  1. Clone the repository:
    git clone https://github.com/liyang8246/rmk-gui.git
    cd rmk-gui
  2. Install dependencies:
    pnpm install
    rustup target add wasm32-unknown-unknown
    cargo install wasm-pack
  3. 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 compiles rynk-wasm from a sibling ../rmk checkout when one exists, otherwise it fetches the rmk revision pinned in the script; set RMK_REPO to point somewhere else.
  4. Start the development server:
    pnpm dev:web     # browser only
    pnpm dev:tauri   # desktop app — runs dev:web itself, don't start both
  5. Build the application:
    pnpm build:web
    pnpm build:tauri  # runs build:web itself

Testing

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 lint

pnpm 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, both fall back to the same pinned rmk revision — bump it in qemu/Cargo.toml, src-tauri/Cargo.toml and scripts/build-rynk-wasm.py together.

CI=true matters for linting: the eslint config detects editors and relaxes some rules, so a bare pnpm lint is more permissive than CI.

Roadmap

Too many to write

Acknowledgement

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.

License

RMK-GUI is licensed under either of

at your option.