Files
2026-11-01 22:01:32 -05:00

49 lines
2.4 KiB
Markdown

# Wine and Proton verification
Cthulhu selects a loader from the application's Wine environment and executable.
It bypasses a recognized Protontricks runtime proxy and searches the Proton
installation for a usable loader. For processes advertising
`PRESSURE_VESSEL_RUNTIME`, it stages the complete helper set under
`$XDG_STATE_HOME/cthulhu/wine-access/helper` (default `~/.local/state`). Sets are
content-addressed and verified before use; running sets are never overwritten.
The helper keeps the reader's D-Bus address and receives the application's
display, authentication and Wine synchronization settings.
The active profile can contain:
```toml
[profiles.default.wine]
controller-only = false
excluded-hook-programs = ["ExampleGame.exe"]
```
Use your actual active profile name in place of `default`. Exclusions are
case-insensitive executable basenames, without paths. These settings are read
when the Wine manager starts; restart Cthulhu after editing them. They are not
live application-profile switches. The helper must support
`--exclude-hook-program` and `--no-dialog-reader`.
An excluded program appearing in a prefix switches that prefix's helper to
controller-only mode. That mode remains until the prefix is retired, even if
the excluded program exits while a launcher remains. `controller-only = true`
or a nonempty `WINE_ACCESS_NO_DIALOG_READER` other than `0` requests it globally.
Run `go test ./internal/wine ./internal/config -count=1` for loader selection,
staging, environment forwarding, exclusion handling and settings persistence.
Fixtures do not establish compatibility with a real Proton runtime or audible
Wine output.
For live acceptance:
1. Quit Cthulhu with Cthulhu+Q. Press Ctrl+Escape, then Shift+G to rebuild and
launch it. These are separate key presses.
2. Open an ordinary Wine editor. Verify focused controls, typing, selection and
menus are spoken, Braille follows focus, and keyboard navigation is intact.
3. Launch a test Proton application. Verify its supported accessibility output
reaches the reader and closing it does not leave an unnecessary helper.
4. With an intentionally excluded test game, verify its controller speech still
arrives without dialog-reader interference. Check an ordinary editor in a
separate prefix still has normal dialog reading.
5. Report the exact application, prefix relationship, speech, Braille and focus
behavior if a result differs. Redact private paths and text from debug logs.