corsair-lcd-control

Electron app to control Corsair LCD displays. Monitors system stats (CPU temp, RAM, GPU temp), detects USB devices, and manages preferences.

Prerequisites

  • Node.js >= 18
  • npm >= 9
  • Linux: libusb-1.0-0-dev, build-essential, python3
  • macOS: Xcode Command Line Tools (xcode-select --install)
  • Windows: Build Tools for Visual Studio

Setup

git clone <repo-url>
cd corsair-lcd-control
npm install

postinstall rebuilds native USB modules for Electron.

Development

npm start

Compiles TypeScript to build/, then launches Electron with the compiled output.

Build

npm run build

Compiles TypeScript, then produces platform-specific packages via electron-builder:

Platform Format
Linux .AppImage, .deb
macOS .dmg
Windows .exe (NSIS)

Lint

npm run lint

Runs ESLint with typescript-eslint (recommendedTypeChecked) across all src/ TypeScript files.

Rebuild Native Modules

If native modules fail to load after a Node.js or Electron upgrade:

npm run rebuild

Project Structure

├── src/
│   ├── main.ts          # Electron main process
│   ├── preload.ts       # Context bridge for IPC
│   ├── renderer.ts      # Renderer UI logic
│   ├── index.html       # Main window HTML
│   └── styles.css       # Dark theme styles
├── assets/
│   └── icon.png         # System tray icon
├── build/               # Compiled JS output (gitignored)
├── tsconfig.json        # TypeScript config
├── eslint.config.js     # ESLint config
└── package.json

Capabilities

  • USB — enumerates and connects to devices via usb
  • System Tray — background process with context menu (Show/Hide/Quit)
  • Preferences — persisted via electron-store (JSON)
  • File Pickers — native OS dialogs via Electron's dialog API
  • CPU Temperaturesysteminformation.cpuTemperature()
  • RAM Usagesysteminformation.mem()
  • GPU Temperaturesysteminformation.graphics()
Description
No description provided
Readme 239 KiB
Languages
TypeScript 69.4%
HTML 11.3%
CSS 10.2%
JavaScript 9.1%