GitHub - Devolutions/avalonia-extensions: Custom Avalonia Themes developed by Devolutions · GitHub
Skip to content

Devolutions/avalonia-extensions

Repository files navigation

image

avalonia-themes

Custom Avalonia Themes developed by Devolutions

➡️ MacOS Theme

➡️ DevExpress Theme

➡️ 🚧 WinUI Theme

➡️ Linux Theme

➡️ Avalonia Controls

Package Compatibility

Avalonia 12 line. Packages 2026.6.17-avalonia12 and later are on the Avalonia 12 line. The first stable Avalonia 12 release is 2026.6.23, and 2026.6.16 is the last stable release compatible with Avalonia 11.

Maintenance-only fixes for the Avalonia 11 line may still be published as 2026.6.16.x for a limited time. See the Avalonia 11 -> 12 breaking changes for upstream migration guidance.

Sample App

Contributors can use the SampleApp to test, debug and document styles for the various controls under each theme.

Debugging

The SampleApp attaches the Avalonia Dev Tools for inspecting controls (open with F12).

Avalonia Accelerate Controls

We will soon start to add styles for at least some Avalonia Accelerate controls, starting with TreeDataGrid in the DevExpress theme.

To view and test Accelerate-licensed controls in the SampleApp:

  1. Create a .env file in the repository root.
  2. Add your license key: AVALONIA_LICENSE_KEY=your_key_here.
  3. Rebuild the solution.

Note: If the controls don't appear or you see build errors, you may need to force a NuGet restore or invalidate your IDE caches (e.g., File > Invalidate Caches in Rider) to update the conditional package dependencies.

Testing

There is limited visual regression testing available. DemoPagea are compared against baseline screenshots in tests/Devolutions.AvaloniaControls.VisualTests/Screenshots/Baseline. Diffs for failing tests are saved to tests/Devolutions.AvaloniaControls.VisualTests/Screenshots/Test-Diffs.

Limitations

  • Interactive behaviours (e.g. pointerOver, popUpOpen, focus, etc.) are not tested
  • Accelerate controls that depend on a licence (e.g. TreeDataGrid) are not tested

Platform-Specific Baselines

Baselines are maintained separately for each platform (macOS, Windows, Linux) due to rendering differences. When updating baselines, they only update for your current platform.

Usage

  • dotnet test --filter "DisplayName~VisualRegressionTests" - runs all tests
  • dotnet test - runs all tests, plus some little unit tests (worth it for the time saved typing!)
  • dotnet test --filter "DisplayName~DevExpress" - runs tests for all controls implemented in DevExpress
  • dotnet test --filter "DisplayName~Button" - runs tests for Button under each of the themes it's implemented in
  • dotnet test --list-tests - lists all test cases 🆕 Shor hand command & cleaner output:
  • ./devtest (macOS/Linux/Git Bash) or .\devtest (Windows PowerShell/CMD) - runs a script that calls the tests and prints a succinct visual-regression summary at the end. You can also use it with shorthand filter values (for example --filter EditableCombo instead of --filter "DisplayName~EditableCombo").

Updating baseline screenshots when changes are intentional:

  • macOS/Linux: UPDATE_BASELINES=true dotnet test [filters]
  • Windows (PowerShell): $env:UPDATE_BASELINES="true"; dotnet test [filters]; Remove-Item env:UPDATE_BASELINES
  • Windows (Command Prompt): set UPDATE_BASELINES=true && dotnet test [filters] && set UPDATE_BASELINES=

🤍🖤 All tests are run for light & dark mode However to keep things reasonably quick, the dark mode test only runs if the light mode test for the same control has passed. This can lead to missed issues, when both versions have different problems. (If in doubt, update, then delete the new dark baseline shot, and run the test again (light will no longer fail, and you can see what happens in dark))

AI Assistant Instructions

If you're an AI assistant (like GitHub Copilot or Claude Code) working on this repository, comprehensive guidelines are available in .claude/CLAUDE.md.

This includes:

  • Repository structure and architecture
  • Development workflows and commands
  • Coding standards and best practices
  • Version control rules and commit guidelines
  • Custom commands for theme switching and development

About

Custom Avalonia Themes developed by Devolutions

Resources

License

Security policy

Stars

Watchers

Forks

Packages

Contributors

Languages