Document wayland issue

This commit is contained in:
pleb 2026-05-12 10:56:41 -07:00
parent c5acd887a0
commit 0773d78621
2 changed files with 51 additions and 16 deletions

View File

@ -13,29 +13,45 @@ nix build .
./result/bin/arrowvortex
```
## Run directly from Git
This flake lives at [https://git.plebsaber.stream/arrowvortex-wine](https://git.plebsaber.stream/arrowvortex-wine). Use a `git+https` flake reference (not the `github:` shorthand):
Run directly from Git
```bash
nix run git+https://git.plebsaber.stream/arrowvortex-wine
```
Optional: install into your user profile:
```bash
nix profile install git+https://git.plebsaber.stream/arrowvortex-wine
```
Pin a branch or revision for reproducibility:
```bash
nix run 'git+https://git.plebsaber.stream/arrowvortex-wine?ref=main'
nix run 'git+https://git.plebsaber.stream/arrowvortex-wine?rev=<commit-sha>'
```
## Requirements
- Nix with flakes enabled (`experimental-features = nix-command flakes`).
Wine and GUI dependencies come from nixpkgs; you need a working display (X11 or Wayland) for the editor window.
## Debugging
Replace `-all` with focused Wine channels around dialogs, shell integration, and file APIs:
```nix
--set WINEDEBUG "+timestamp,+pid,+tid,+seh,+dialog,+commdlg,+shell,+ole,+file,+loaddll"
```
Most useful pieces:
- `+commdlg`: common file dialog activity, likely the key one for `File > Open`.
- `+dialog`: generic dialog/window creation.
- `+shell`: shell folder / file picker integration.
- `+ole`: COM/OLE calls, often involved in modern shell dialogs.
- `+file`: filesystem open/stat failures after a path is chosen or dialog initializes.
- `+seh`: exceptions that might be swallowed by the app.
- `+loaddll`: missing DLL clues.
- `+timestamp,+pid,+tid`: makes logs easier to follow.
Run it from a terminal and capture stderr, for example:
```bash
WINEDEBUG="+timestamp,+pid,+tid,+seh,+dialog,+commdlg,+shell,+ole,+file,+loaddll" arrowvortex 2>&1 | tee /tmp/arrowvortex-wine.log
```
If that is too noisy, start with:
```bash
WINEDEBUG=+x11drv,+wayland,+commdlg
```

19
docs/wayland.md Normal file
View File

@ -0,0 +1,19 @@
# Wine on KDE Plasma Wayland
ArrowVortexs **File → Open** dialog does not appear when the Windows build is run under Wine on KDE Plasma with a Wayland session. `WINEDEBUG` traces on `commdlg` showed `GetOpenFileNameW` being entered with plausible flags and `COMDLG32_SetCommDlgExtendedError(0)` cleared, but no usable dialog followed—consistent with Wines graphics stack (notably **winewayland**) failing to host the legacy common-file-dialog UI on this compositor. We tried **unsetting `WAYLAND_DISPLAY`** in the launcher so Wine would prefer Xwayland; that did not fix it for us. We searched **nixpkgs** for similar Wine workarounds and found no comparable pattern (only unrelated apps, e.g. Qt wrappers forcing X11). In the package we then added a **one-shot `wine reg add`** to set `HKCU\Software\Wine\Drivers``Graphics` = `x11` (pin **winex11.drv**), plus `WINEDLLOVERRIDES` to skip Mono/Gecko prompts, and stepped the Wine build through **`wineWow64Packages.stagingFull`** and **`unstableFull`**. None of that produced a reliable File → Open on Plasma Wayland here, so this path is abandoned for now; anyone retrying later should use a **fresh `WINEPREFIX`** after changing Wine version or registry forcing, and may want to log with `WINEDEBUG=+x11drv,+wayland,+commdlg` to see which driver actually loads.
```
0024:trace:ole:CoRegisterInitializeSpy 00007FFFFE276FD0, 00007FFFFE276FE0
0024:trace:ole:CoInitializeEx 0000000000000000, 0x2
0024:trace:ole:CoInitializeEx Initializing the COM libraries
0024:trace:ole:apartment_construct creating new apartment, model 2
0024:trace:ole:apartment_construct Created apartment on OXID 2000000024
0024:trace:ole:apartment_get_or_create Created main-threaded apartment with OXID 2000000024
0024:trace:commdlg:GetOpenFileNameW flags 0x00001000
0024:trace:commdlg:COMDLG32_SetCommDlgExtendedError (00000000)
0024:trace:shell:SHFree 0000000000000000
0024:trace:shell:SHFree 0000000000000000
0024:trace:shell:SHFree 0000000000000000
0024:trace:shell:SHFree 0000000000000000
0024:trace:shell:SHFree 0000000000000000
```