# cyear/nuctool architecture

> Architecture diagram of the GitHub repository cyear/nuctool, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cyear/nuctool
- Repository: https://github.com/cyear/nuctool

## Overview

NUCtool is a Windows Tauri control panel for supported Uniwill/Intel NUC X15 laptops. Users select monitoring, tuning, fan, system, display, keyboard, and lighting controls; the web UI invokes Rust commands that read or change hardware state, with telemetry/status returned to the interface. Rust connects to ACPI/EC and Uniwill WCF/WMI interfaces; supporting capabilities include startup-task management, driver checks, localization, and an OSD. The map reflects README capabilities, but unsampled command bodies and modules limit precise subsystem wiring.

Main entry points: [`src-tauri/src/lib.rs`](https://github.com/cyear/nuctool/blob/main/src-tauri/src/lib.rs) (Tauri runtime), [`src/js/main.js`](https://github.com/cyear/nuctool/blob/main/src/js/main.js) (Control panel), [`src-tauri/src/osd.rs`](https://github.com/cyear/nuctool/blob/main/src-tauri/src/osd.rs) (OSD service), [`src/bootstrap.js`](https://github.com/cyear/nuctool/blob/main/src/bootstrap.js) (Page bootstrap)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_bootstrap["Page bootstrap<br/>[bootstrap.js]"]
  node_main["Control panel<br/>[main.js]"]
  node_i18n["UI localization<br/>[i18n.js]"]
  node_pages["Feature pages"]
  node_osdview["OSD display<br/>[osd.html]"]
end

subgraph group_commands["Control services"]
  node_app["Tauri runtime<br/>[lib.rs]"]
  node_fan["Fan control<br/>[fan_control.rs]"]
  node_config["Fan configuration<br/>[config.rs]"]
  node_osd["OSD service<br/>[osd.rs]"]
end

subgraph group_hardware["Hardware access"]
  node_acpi["ACPI access<br/>[uniwillacpi.rs]"]
  node_wcf["WCF interface<br/>[uniwillwcf.rs]"]
  node_wmi["WMI interface<br/>[uniwillwmi.rs]"]
  node_fnhook["Fn key hooks<br/>[uniwillfnhook.rs]"]
end

subgraph group_support["Runtime support"]
  node_startup["Startup tasks<br/>[task.rs]"]
  node_language["Windows language<br/>[language.rs]"]
  node_gsc["GSC driver check<br/>[gsc-check.js]"]
  node_locale["OSD translations"]
end

node_user(("Laptop user"))
node_wcfdriver{{"Uniwill WCF driver"}}
node_acpidriver{{"ACPI driver"}}
node_windows{{"Windows services"}}

node_user -->|"opens"| node_bootstrap
node_bootstrap -->|"loads pages"| node_pages
node_bootstrap -->|"starts"| node_main
node_main -->|"invokes commands"| node_app
node_main -->|"initializes"| node_i18n
node_main -->|"initializes"| node_gsc
node_app -->|"dispatches control"| node_fan
node_app -->|"loads and saves"| node_config
node_app -->|"reads and writes"| node_acpi
node_app -->|"calls hardware API"| node_wcf
node_app -->|"queries"| node_wmi
node_app -->|"uses key hooks"| node_fnhook
node_fan -->|"reads sensors"| node_acpi
node_fan -->|"reads GPU data"| node_wmi
node_wcf -->|"calls"| node_wcfdriver
node_acpi -->|"device I/O"| node_acpidriver
node_wmi -->|"queries"| node_windows
node_fnhook -->|"registers hooks"| node_windows
node_app -->|"creates and signals"| node_osd
node_osd -->|"updates window"| node_osdview
node_osd -->|"detects language"| node_language
node_osd -->|"loads translations"| node_locale
node_app -->|"manages autostart"| node_startup
node_startup -->|"schedules task"| node_windows
node_gsc -->|"checks driver data"| node_app

click node_bootstrap "https://github.com/cyear/nuctool/blob/main/src/bootstrap.js"
click node_main "https://github.com/cyear/nuctool/blob/main/src/js/main.js"
click node_i18n "https://github.com/cyear/nuctool/blob/main/src/js/i18n.js"
click node_pages "https://github.com/cyear/nuctool/tree/main/src/pages"
click node_osdview "https://github.com/cyear/nuctool/blob/main/src/osd.html"
click node_app "https://github.com/cyear/nuctool/blob/main/src-tauri/src/lib.rs"
click node_fan "https://github.com/cyear/nuctool/blob/main/src-tauri/src/fan_control.rs"
click node_config "https://github.com/cyear/nuctool/blob/main/src-tauri/src/config.rs"
click node_osd "https://github.com/cyear/nuctool/blob/main/src-tauri/src/osd.rs"
click node_acpi "https://github.com/cyear/nuctool/blob/main/src-tauri/src/acpi/uniwillacpi.rs"
click node_wcf "https://github.com/cyear/nuctool/blob/main/src-tauri/src/acpi/uniwillwcf.rs"
click node_wmi "https://github.com/cyear/nuctool/blob/main/src-tauri/src/acpi/uniwillwmi.rs"
click node_fnhook "https://github.com/cyear/nuctool/blob/main/src-tauri/src/acpi/uniwillfnhook.rs"
click node_startup "https://github.com/cyear/nuctool/blob/main/src-tauri/src/win/task.rs"
click node_language "https://github.com/cyear/nuctool/blob/main/src-tauri/src/win/language.rs"
click node_gsc "https://github.com/cyear/nuctool/blob/main/src/js/gsc-check.js"
click node_locale "https://github.com/cyear/nuctool/tree/main/src-tauri/locales"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bootstrap,node_main,node_i18n,node_pages,node_osdview,node_user toneBlue
class node_app,node_fan,node_config,node_osd toneAmber
class node_acpi,node_wcf,node_wmi,node_fnhook toneMint
class node_startup,node_language,node_gsc,node_locale toneRose
class node_wcfdriver,node_acpidriver,node_windows toneIndigo
```

## Components

### Desktop interface

- [Page bootstrap](https://github.com/cyear/nuctool/blob/main/src/bootstrap.js): `src/bootstrap.js`
- [Control panel](https://github.com/cyear/nuctool/blob/main/src/js/main.js): `src/js/main.js`
- [UI localization](https://github.com/cyear/nuctool/blob/main/src/js/i18n.js): `src/js/i18n.js`
- [Feature pages](https://github.com/cyear/nuctool/tree/main/src/pages): `src/pages`
- [OSD display](https://github.com/cyear/nuctool/blob/main/src/osd.html): `src/osd.html`

### Control services

- [Tauri runtime](https://github.com/cyear/nuctool/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Fan control](https://github.com/cyear/nuctool/blob/main/src-tauri/src/fan_control.rs): `src-tauri/src/fan_control.rs`
- [Fan configuration](https://github.com/cyear/nuctool/blob/main/src-tauri/src/config.rs): `src-tauri/src/config.rs`
- [OSD service](https://github.com/cyear/nuctool/blob/main/src-tauri/src/osd.rs): `src-tauri/src/osd.rs`

### Hardware access

- [ACPI access](https://github.com/cyear/nuctool/blob/main/src-tauri/src/acpi/uniwillacpi.rs): `src-tauri/src/acpi/uniwillacpi.rs`
- [WCF interface](https://github.com/cyear/nuctool/blob/main/src-tauri/src/acpi/uniwillwcf.rs): `src-tauri/src/acpi/uniwillwcf.rs`
- [WMI interface](https://github.com/cyear/nuctool/blob/main/src-tauri/src/acpi/uniwillwmi.rs): `src-tauri/src/acpi/uniwillwmi.rs`
- [Fn key hooks](https://github.com/cyear/nuctool/blob/main/src-tauri/src/acpi/uniwillfnhook.rs): `src-tauri/src/acpi/uniwillfnhook.rs`

### Runtime support

- [Startup tasks](https://github.com/cyear/nuctool/blob/main/src-tauri/src/win/task.rs): `src-tauri/src/win/task.rs`
- [Windows language](https://github.com/cyear/nuctool/blob/main/src-tauri/src/win/language.rs): `src-tauri/src/win/language.rs`
- [GSC driver check](https://github.com/cyear/nuctool/blob/main/src/js/gsc-check.js): `src/js/gsc-check.js`
- [OSD translations](https://github.com/cyear/nuctool/tree/main/src-tauri/locales): `src-tauri/locales`

### Other components

- **Laptop user**
- **Uniwill WCF driver**
- **ACPI driver**
- **Windows services**

## Connections

- Laptop user → Page bootstrap: opens
- Page bootstrap → Feature pages: loads pages
- Page bootstrap → Control panel: starts
- Control panel → Tauri runtime: invokes commands
- Control panel → UI localization: initializes
- Control panel → GSC driver check: initializes
- Tauri runtime → Fan control: dispatches control
- Tauri runtime → Fan configuration: loads and saves
- Tauri runtime → ACPI access: reads and writes
- Tauri runtime → WCF interface: calls hardware API
- Tauri runtime → WMI interface: queries
- Tauri runtime → Fn key hooks: uses key hooks
- Fan control → ACPI access: reads sensors
- Fan control → WMI interface: reads GPU data
- WCF interface → Uniwill WCF driver: calls
- ACPI access → ACPI driver: device I/O
- WMI interface → Windows services: queries
- Fn key hooks → Windows services: registers hooks
- Tauri runtime → OSD service: creates and signals
- OSD service → OSD display: updates window
- OSD service → Windows language: detects language
- OSD service → OSD translations: loads translations
- Tauri runtime → Startup tasks: manages autostart
- Startup tasks → Windows services: schedules task
- GSC driver check → Tauri runtime: checks driver data
