-
Notifications
You must be signed in to change notification settings - Fork 1
Automating GhostDeck with the CLI
Your fan profiles, scriptable. One exe, seven commands, endless combinations.
Since v1.21 the same GhostDeck.exe that sits in your tray is also a command-line tool. No companion binary, no API keys, no daemon — arguments in, action out:
GhostDeck.exe --profile SilentThat's it. This post shows what's under the hood and what you can build with it. The dry reference (every command, exit codes, the full JSON schema) lives in docs/CLI.md.
| You type | You get |
|---|---|
--profile Silent (or Balanced / Extreme / SuperBattery)
|
profile switch, incl. your assigned fan-curve preset |
--cycle |
next profile |
--fanboost on / off
|
both fans at 100% / back to normal |
--curve "Night quiet" / --curve auto
|
apply a saved curve preset / back to stock fans |
--overlay on / off
|
gaming overlay (app must be running) |
--panic |
the safe-state reset: Fan Boost off, Balanced, fans auto |
--status |
the current state as JSON |
Exit codes are script-friendly: 0 OK, 1 refused/failed, 2 bad usage.
The clever part is who executes the command:
- App running? The command travels over a local named pipe to the live instance and runs through the exact same code paths as the UI — same safety gates (model tier, experimental opt-in), same on-screen toast, same entry in the change history. Your script can't do anything the buttons can't.
- App closed? A one-shot mode loads your settings, applies the same gates, talks to the EC directly and exits. Nothing stays resident.
Either way you need an elevated context (EC access requires admin — same as the app itself). A scheduled task with "run with highest privileges" handles that neatly.
🌙 Quiet nights, automatically. Two Task Scheduler entries and your laptop minds its manners:
- 22:00 →
GhostDeck.exe --profile Silent - 07:00 →
GhostDeck.exe --profile Balanced
🎛️ Stream Deck as a fan console. One System → Open action per key: a key for each profile, one for --fanboost on, and a big red one for --panic. Instant physical fan controls.
🎮 A game wrapper that cleans up after itself:
GhostDeck.exe --profile Extreme
Start-Process -Wait "C:\Games\game.exe"
GhostDeck.exe --profile SilentFull power for the game, silence the moment you quit.
📊 Poor man's watchdog. --status returns JSON, so PowerShell can react to anything:
$s = GhostDeck.exe --status | ConvertFrom-Json
if ($s.cpuTemp -gt 90) { GhostDeck.exe --fanboost on }(For pure alerting, the built-in temperature alert from v1.20 does this without any script — but now you can also act on it your way.)
⌨️ AutoHotkey, for the keyboard people:
^!F11::RunWait "C:\Tools\GhostDeck.exe --curve ""Night quiet""",, "Hide"- Output is English-only on purpose — scripts shouldn't break when you change the UI language.
-
--overlayis the one command that needs the app running (the overlay is its window). - Writes on experimental models still require the in-app opt-in first — the CLI respects every safety decision you made in Settings.
Built something neat with it — a Rainmeter panel, a Home Assistant hook, a macro pad layout? Show it off in Discussions. 👻