Skip to content
Open
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
64 changes: 64 additions & 0 deletions Reviews/bottles-libadwaita-1.9-proceed-button.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Bottles: Invisible Proceed Button on libadwaita 1.9+

## Issue

When installing a program that requires local resources (e.g. `url: local` in the installer YAML), the "Proceed" button in the installer dialog is invisible. Users can select the local file, but cannot continue with the installation because the button never appears.

This affects Bottles 63.2 (native/AUR build) running on systems with libadwaita 1.9.0 or later. The Flatpak version is unaffected because it bundles an older libadwaita.

## Root Cause

In `bottles/frontend/ui/dialog-installer.blp`, the `btn_proceed` widget is a bare `GtkButton` placed as a direct child of `Adw.PreferencesPage`:

```
Adw.PreferencesPage {
Adw.PreferencesGroup group_resources { ... }

Button btn_proceed { ... } // <-- not rendered by libadwaita 1.9+
}
```

`AdwPreferencesPage` expects all children to be `AdwPreferencesGroup` widgets. In libadwaita < 1.9, bare widgets were still rendered. In 1.9+, non-group children are silently dropped.

## Fix

Wrap `btn_proceed` in an `Adw.PreferencesGroup`:

```diff
- Button btn_proceed {
- label: _("Proceed");
- sensitive: false;
- visible: false;
- halign: center;
- valign: center;
-
- styles [
- "pill",
- "suggested-action",
- ]
- }
+ Adw.PreferencesGroup {
+ Button btn_proceed {
+ label: _("Proceed");
+ sensitive: false;
+ visible: false;
+ halign: center;
+ valign: center;
+
+ styles [
+ "pill",
+ "suggested-action",
+ ]
+ }
+ }
```

## Affected Versions

- **Bottles**: 63.2
- **libadwaita**: 1.9.0+ (confirmed on CachyOS with `libadwaita 1:1.9.0-1.1`)
- **Not affected**: Flatpak builds (bundle older libadwaita)

## Status

Patched locally. Should be reported upstream at [bottlesdevs/Bottles](https://github.com/bottlesdevs/Bottles).
39 changes: 39 additions & 0 deletions Reviews/pkhex.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# PKHeX
Review for the PKHeX installer.

Maintainer: @Azevedo

**Is the program properly opened?**
Grade: Gold
Additional notes: Opens successfully with .NET Desktop Runtime 10 installed.

**Is it showing alerts or other warnings?**
Grade: Gold
Additional notes: No alerts or warnings after applying the DPI workaround.

**Does it show graphical glitches?**
Grade: Silver
Additional notes: The window is not resizable and renders small (though usable). Pokemon tooltip popups are inconsistent — sometimes showing, sometimes not, sometimes disappearing too quickly.

**Does it require some tweaking in order to work properly? (Out of normal software configuration)**
Grade: Silver
Additional notes: Requires a Windows AppCompatFlags registry key (`DPIUNAWARE`) to prevent a .NET WinForms DPI awareness crash when opening file dialogs. This is applied automatically by the installer. A Wine runner with .NET DPI fixes (e.g. Wine 11+) is recommended over older runners like soda-9.0.

**Did it crash during tests execution?**
Grade: Gold
Additional notes: No crashes after the DPI workaround is applied. Without it, the app crashes on any file dialog (open/save) with `Failed to get thread's DpiAwareness context`.

**Is it usable?**
Grade: Silver
Additional notes: Core functionality works — opening, editing, and saving Pokemon save files all function correctly. The UI quirks (non-resizable window, inconsistent tooltips) are cosmetic and do not block usage.

**Final grade? (the lower evaluation from previous questions)**
Grade: Silver
Additional notes: Fully functional for its primary purpose. The DPI workaround is automated in the installer. Remaining issues are cosmetic (window size, tooltip rendering).

**Additional notes**
- PKHeX binaries are available from https://projectpokemon.org/home/files/file/1-pkhex/
- The installer uses `url: local` since there is no stable direct download link.
- PKHeX requires .NET Desktop Runtime 10. The installer downloads it from Microsoft's CDN.
- Wine 11+ is recommended as the runner. Older runners (e.g. soda-9.0) may have additional issues.
- **DPI workaround**: Wine does not implement `SetThreadDpiAwarenessContext`, which .NET 10 WinForms calls when opening file dialogs. The installer sets the `DPIUNAWARE` AppCompatFlags registry key to prevent this crash.
39 changes: 39 additions & 0 deletions Software/pkhex.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
Name: pkhex
Description: A Pokémon core series save editor. After installation, add environment variable DOTNET_SYSTEM_GLOBALIZATION_USENLS=true in bottle settings to fix search functionality.
Grade: Silver
Arch: win64

Dependencies:
- courie32
- arial32

Executable:
name: PKHeX
icon: pkhex.ico
file: PKHeX.exe
path: PKHeX/PKHeX.exe
arguments: ""

Steps:
- action: install_exe
file_name: windowsdesktop-runtime-10.0.5-win-x64.exe
url: https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/10.0.5/windowsdesktop-runtime-10.0.5-win-x64.exe
file_checksum: false
arguments: /install /quiet /norestart
- action: run_script
script: |
mkdir -p drive_c/PKHeX
- action: install_exe
file_name: PKHeX.exe
url: local
file_checksum: false
arguments: ""
- action: run_script
script: |
PKHEX_SRC=$(find ~ -maxdepth 5 -name "PKHeX.exe" -not -path "*/bottles/*" -not -path "*/.net/*" -type f 2>/dev/null | head -1)
if [ -n "$PKHEX_SRC" ]; then
cp "$PKHEX_SRC" drive_c/PKHeX/
fi
- action: run_script
script: |
wine reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\PKHeX\PKHeX.exe" /t REG_SZ /d "~ DPIUNAWARE" /f
Binary file added data/pkhex/pkhex.ico
Binary file not shown.
8 changes: 8 additions & 0 deletions index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -290,3 +290,11 @@ roon:
Category: Software
Icon: roon.png
Event: RoonInstaller64.exe

pkhex:
Arch: win64
Name: PKHeX
Description: A Pokémon core series save editor.
Grade: Silver
Category: Software
Icon: pkhex.ico