2.4 KiB
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:
[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:
- Quit Cthulhu with Cthulhu+Q. Press Ctrl+Escape, then Shift+G to rebuild and launch it. These are separate key presses.
- Open an ordinary Wine editor. Verify focused controls, typing, selection and menus are spoken, Braille follows focus, and keyboard navigation is intact.
- Launch a test Proton application. Verify its supported accessibility output reaches the reader and closing it does not leave an unnecessary helper.
- 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.
- Report the exact application, prefix relationship, speech, Braille and focus behavior if a result differs. Redact private paths and text from debug logs.