Skip to content

DS4 Dashboard documentation

DS4 Dashboard is a lightweight Windows utility for monitoring a DualShock 4 controller’s battery level and customizing its lightbar and rumble, over both USB and Bluetooth. It talks to the controller directly over HID, with no dependency on DS4Windows or any other driver.

This site documents how the app is built. For downloads, screenshots, and the story behind the project, see the main repo README or the project website.

What it does

  • Battery monitoring: real-time percentage, charging state, and connection type (USB/Bluetooth), read directly from the controller’s HID input report.
  • Lightbar & rumble control: pick a lightbar color and preview small/large rumble motors at any time, independent of whatever game or app currently has the controller open.
  • System tray integration: a small tray icon renders a live battery gauge (an arc drawn pixel-by-pixel, not a static asset) so battery level is visible without opening the window at all.
  • Launch at login: optionally starts with Windows, optionally minimized straight to the tray.
  • Mouse/stick emulation: optionally translates touchpad drags or right-stick deflection into OS-level mouse movement.
  • Light/dark theme, plus a set of alternate taskbar/tray icon styles.
  • Auto-updates: checks quietly for new versions on startup, then can download and install them from inside the app itself, no separate manual download needed.

Where to go next

DocWhat’s in it
architecture.mdTech stack, folder structure, the Tauri/Rust ↔ React bridge, and how HID communication, the tray gauge, and autostart actually work
features.mdEvery user-facing feature, and the implementation detail behind each one
bugs-and-quirks.mdReal bugs hit and fixed while building this app, with the actual symptom, root cause, and fix for each

Quick map of the codebase

PathContains
src/React frontend: dashboard UI, settings modal, theme context
src-tauri/src/Tauri/Rust backend: window & tray setup, Tauri commands, the polling loop
crates/ds4-hid/Standalone Rust crate with no Tauri dependency: raw HID report parsing for the DS4 (battery, sticks, touchpad, lightbar/rumble output)
.github/workflows/release.ymlBuilds and publishes a new GitHub Release whenever a v* tag is pushed
scripts/release.cjsInteractive helper that bumps the version, commits, tags, and pushes, triggering the release workflow above

See architecture.md for why the code is split this way, and what lives in each piece.

Development notes

Parts of this project were built with AI assistance from Claude Code, used in a supporting role under close direction. Every line it produces, frontend and backend alike, is read and reviewed, and redirected whenever it suggests something that isn’t best practice.