diff --git a/README.md b/README.md index c2f97ed..b7efbce 100644 --- a/README.md +++ b/README.md @@ -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=' -``` - ## 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 +``` \ No newline at end of file diff --git a/docs/wayland.md b/docs/wayland.md new file mode 100644 index 0000000..8b46518 --- /dev/null +++ b/docs/wayland.md @@ -0,0 +1,19 @@ +# Wine on KDE Plasma Wayland + +ArrowVortex’s **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 Wine’s 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 +```