Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
release-bundle:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7

- uses: dtolnay/rust-toolchain@stable
with:
Expand All @@ -30,7 +30,7 @@ jobs:
shell: pwsh
run: .\scripts\build.ps1 release

- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v7
with:
name: GameModeExecutor-zip
path: dist/*.zip
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ small icon in the notification area.

## Documentation

| | |
| Page | What it is for |
| --- | --- |
| [Getting started](docs/getting-started.md) | Running in five minutes. Start here. |
| [Recipes](docs/recipes/) | Worked examples, one folder each with a ready-made `config.toml` — including fan profiles with FanControl, which needs one extra step because it requires administrator rights. |
Expand Down
2 changes: 1 addition & 1 deletion docs/design/06-notification-icon.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ be built**, not only when `WM_SETTINGCHANGE` arrives — because that message is
not guaranteed. A tool that switches light and dark on a schedule may write the
registry and broadcast nothing. Demonstrated on 2026-09-15:

| | |
| Case | What the log showed |
| --- | --- |
| registry written directly, no broadcast | **0 log lines** — the watcher hears nothing |
| menu then opened | `icon refreshed theme=Light` — the drift is caught |
Expand Down
2 changes: 1 addition & 1 deletion docs/design/08-distribution.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ Per-user only — in Inno Setup that is `PrivilegesRequired=lowest` and

Ruled out, so they are not reconsidered from scratch:

| | |
| Ruled out | Why |
| --- | --- |
| **NSIS** | The same ground as Inno Setup with a harsher syntax. Dropped by preference. |
| **WiX** | The sane way to author an MSI, but a third party, and WiX v6+ carries an Open Source Maintenance Fee — free at zero revenue, a live question for commercial reuse. If MSI wins, it wins with the SDK. |
Expand Down
2 changes: 1 addition & 1 deletion docs/design/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Work is organised in numbered **lots**. A lot is a deliverable with a stated
"done when", taken in order, closed when it is verified against a real game
session rather than when the code compiles. Each has its own page.

| Lot | | Status |
| Lot | Page | Status |
| --- | --- | --- |
| — | [Detection: why the Game Bar presence writer](00-detection.md) | the foundation |
| 1 | [A console watcher that is correct and boring](01-console-watcher.md) | done |
Expand Down
6 changes: 3 additions & 3 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ That is all this program does. Here is how to get there in about five minutes.
It ships as the same program twice. They differ in one way: one has a black
console window, the other has none.

| | |
| Executable | Role |
| --- | --- |
| **`gamemode-executorw.exe`** | The one that works. It starts by itself when you log on and never shows anything — no window, no icon. You never launch it yourself. |
| **`gamemode-executor.exe`** | The one you talk to. Open it in a terminal to set things up, test, or check. It answers, then it is done. It does not keep watching. |
Expand Down Expand Up @@ -109,7 +109,7 @@ one per job, each with a `config.toml` you can copy straight over.
Once it is running you get a small controller in the notification area, beside
the clock. It is the only thing this program ever puts on screen.

| | |
| Icon | Meaning |
| --- | --- |
| **grey controller** | running, no game. What you will see almost all the time. |
| **green controller** | a game is detected |
Expand All @@ -126,7 +126,7 @@ arrow next to the clock, and drag it onto the taskbar to keep it there.

**Right-click it** for a short menu:

| | |
| Entry | What it does |
| --- | --- |
| **Edit configuration** | opens your `config.toml` in whatever you use for text files — Notepad if `.toml` is not associated with anything |
| **Open log** | opens the log the same way |
Expand Down
2 changes: 1 addition & 1 deletion docs/how-it-works.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ leaves your profile alone, and so does the next logon.

## Where things are

| | |
| What | Where |
| --- | --- |
| The program | wherever you put it. `%LOCALAPPDATA%\Programs\GameModeExecutor` is the Windows convention for a per-user install, and it stays writable, which `C:\Program Files` would not |
| Configuration | `config.toml` next to the executable if there is one, otherwise `%APPDATA%\GameModeExecutor\config.toml` |
Expand Down
7 changes: 4 additions & 3 deletions docs/recipes/fancontrol-fan-profiles/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ like — the configuration file never has to know.

In this folder:

| File | |
| File | What it is |
| --- | --- |
| [`config.toml`](config.toml) | the complete configuration, ready to copy — the same for everyone |
| [`install-tasks.ps1`](install-tasks.ps1) | registers both tasks for you, asking which configuration plays which role |
Expand Down Expand Up @@ -151,8 +151,9 @@ skip the questions, or if it cannot find FanControl, say so:
```

A name given this way that is not saved is refused too, with nothing
registered. At the end it prints the commands to test what it registered. Run it again any time you rename a configuration: the tasks are
simply re-registered.
registered. At the end it prints the commands to test what it registered.
Run it again any time you rename a configuration: the tasks are simply
re-registered.

### Or by hand: import the templates

Expand Down
4 changes: 2 additions & 2 deletions docs/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ the previous one has been waited for; `parallel` starts them all at once and
then waits. A command that fails to start is logged and never prevents the
others: an event is a set of independent side effects, not a pipeline.

| Field | Default | |
| Field | Default | Meaning |
| --- | --- | --- |
| `name` | the program | the label used in the log |
| `program` | required | path or name of the executable |
Expand Down Expand Up @@ -183,7 +183,7 @@ syntax — `RUST_LOG=game=debug` for the detection lines alone.

## Files the watcher keeps

| | Where | |
| File | Where | Nature |
| --- | --- | --- |
| Configuration | next to the executable, or `%APPDATA%\GameModeExecutor\config.toml` | yours; roams with the profile |
| Log | `%LOCALAPPDATA%\GameModeExecutor\logs\` | disposable |
Expand Down