Skip to content

Repository files navigation

Gear Hub

An offline, unified control panel for supported gaming peripherals — mice, keyboards, and more. Talks directly to the hardware over HID — no cloud, no account, no drivers to install.

Current version: 0.5.19

Tech stack

Layer Technology
Runtime Electron 33 (main process, HID + IPC)
UI React 18
State Zustand
Styling Tailwind CSS v4 (@theme tokens + utilities)
Build Vite 6 + TypeScript 5
Hardware node-hid via per-device drivers

Supported devices

Device Type Driver
Razer Viper Mini Mouse electron/devices/razer-viper-mini.cjs
Razer Cobra Mouse electron/devices/razer-cobra.cjs
Razer Huntsman Mini Keyboard electron/devices/razer-huntsman-mini.cjs
Redragon K617 Fizz Pro Keyboard electron/devices/redragon-k617.cjs
Aula F75 Max Keyboard electron/devices/aula-f75-max.cjs
Logitech G304 Lightspeed Mouse electron/devices/logitech-g304.cjs
Logitech G502 X Mouse electron/devices/logitech-g502x.cjs
Logitech G402 Hyperion Fury Mouse electron/devices/logitech-g402.cjs
Kreo Chimera V2 Mouse electron/devices/kreo-chimera.cjs
Redragon K552 Kumara Keyboard electron/devices/redragon-k552.cjs
Xbox 360 Controller (wired / wireless) Gamepad electron/devices/xbox-360.cjs

More devices — including other peripheral types — can be added through electron/supported-devices.json + a driver module.

Features

  • Dashboard — the home page: every connected device as a display card (product artwork, or the live gamepad for controllers), with a one-click "Open" to jump into its Overview.
  • Devices — a catalog of every supported peripheral, grouped into Keyboards, Mice, and Controllers, with live connection state and one-click navigation.
  • Overview — product artwork on a radial stage with live stats (DPI, polling rate, lighting, firmware).
  • Overview (controller) — a live animated controller HUD: the on-screen gamepad mirrors the physical one in real time (sticks, triggers, D-pad, A/B/X/Y, bumpers), exactly like a web gamepad tester. Live left/right stick axes, trigger and button readouts sit alongside the visual.
  • Performance (mouse) — single DPI slider (per-model range, e.g. 200–12000 G304 / 100–25600 G502 X) with 400 / 800 / 1600 / 3200 presets, polling-rate selector, and sensor options. Controls are shown only when the device model supports them (e.g. lift-off distance, motion sync).
  • Performance (keyboard) — debounce time.
  • Lighting — logo lighting (mouse) and RGB effects (keyboard): effect, colour, speed and brightness. Hidden for devices without controllable lighting (e.g. G304 / G502 X / G402).
  • Profiles — named onboard profiles (Viper Mini): capture the current DPI / polling / lighting settings, rename or delete them, and apply a profile to the device's onboard memory so it survives a replug.
  • Keybinds — planned for a future update (shown in-app as roadmap).
  • Settings — app info (version, license), update status with download / restart-to-install, GitHub and website links, and a one-click report-a-bug button.
  • Offline saves — settings are written to the device over HID and persisted as profiles; unsupported actions are reported with "awaiting driver support" notes.

Design

Premium dark interface with a cyan accent system, inspired by professional hardware software (Logitech G Hub / Razer Synapse):

  • Deep obsidian palette on #0f1115 (--bg-main) with --bg-surface panels/sidebar, #20232a elevated containers, and minimal --border-subtle structure.
  • Cyan accent (--accent-primary #00b8fc) reserved for interaction: primary buttons, active toggles, slider fill/thumbs, selected devices and nav — each with a soft glow on active/selected states.
  • Semantic status colors: --success green (connected), --warning amber (battery), --error red (errors/delete).
  • Plus Jakarta Sans for headings, Inter for UI/body text, JetBrains Mono for labels, values and overlines. All fonts are self-hosted for offline operation.
  • Device photo on the overview stage; single save bar with a cyan Save changes button.

Getting started

Requirements: Node.js 18+, npm.

npm install
npm run dev        # Vite dev server with an in-browser mock backend
npm run build      # production bundle into dist/
npm run typecheck  # tsc --noEmit

Running against real hardware

npm run start      # build + launch Electron (real HID via node-hid)
npm run start:nobuild

Building the release

npm run dist       # NSIS installer into release/
npm run dist:dir   # unpacked build into release/win-unpacked
npm run release    # build + publish installer as a GitHub Release (needs GH_TOKEN)

The installer is written to release/Gear-Hub-Setup-<version>.exe. npm run release publishes it (plus latest.yml + .blockmap) as a GitHub Release tagged v<version>, so installed users update in-app automatically.

Project layout

electron/          Main process, HID layer, device drivers, IPC handlers
src/               React renderer
  components/      Sidebar, header, save bar, controls, device visual
  pages/           Dashboard, Overview, Performance, Lighting, Keybinds, Profiles, Settings
  dev/mock.ts      In-browser mock backend used by `npm run dev`
public/            Product images and logo
dist/              Production build output (generated)
release/           Packaged executables (generated)

Notes

  • In dev mode the mock backend (src/dev/mock.ts) lets you explore the UI without hardware.
  • The app only lists devices it controls; other HID devices are ignored in the device picker.
  • See PATCH_NOTES.md for the change history.

About

An offline, unified control panel for supported gaming mice and keyboards.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages