Skip to content

v0.3.0 — Multi-Window & Theme Support

Choose a tag to compare

@Redth Redth released this 23 Feb 00:34
· 24 commits to main since this release

What's New

🪟 Multi-Window Support

  • Application.OpenWindow() and Application.CloseWindow() now work — open and close additional windows at runtime
  • Full window lifecycle: Activated, Deactivated, Destroying events fire correctly
  • Window registry tracks all open windows with proper cleanup on close
  • Follows the same CreateWindow(activationState) pattern as WinUI and macOS backends

🎨 App Theme (Light/Dark Mode) Support

  • Force Light / Force Dark / Follow System — set Application.UserAppTheme to override or follow the desktop theme
  • Application.PlatformAppTheme correctly reports the system theme (Light or Dark) from GTK settings
  • AppThemeBinding / SetAppThemeColor respond to theme changes — UI updates automatically
  • System theme monitoring: if the desktop switches between light and dark, the app detects it and updates
  • Switches both the GTK prefer-dark-theme flag and the actual theme name (e.g. Yaru ↔ Yaru-dark)

🔧 Under the Hood

  • New GtkAppInfoImplementation registers with MAUI Essentials so AppInfo.RequestedTheme returns the correct system theme
  • GtkThemeManager separates system theme detection from app-level overrides (matches the iOS/macOS pattern where PlatformAppTheme always reflects the OS preference)
  • Removed broken variadic g_object_set P/Invoke (doesn't work on ARM64), uses GirCore property setters instead

📄 Sample Pages

  • Multi-Window Page — Open/Close buttons, window count display, secondary window with its own content
  • Theme Page — Force Light/Dark/System buttons, live theme status label, AppThemeBinding color demo