This week Steve Sanderson blogged again, this time introducing his latest wizardry WebWindow - a lightweight cross-platform webview library for .NET Core.

He also shared the full source code and provided some great examples on what’s possible:

I’ve spent the last couple of evenings experimenting with this a bit. Whilst it’s ‘super-pre-alpha quality’, it’s pretty damn awesome.

Docker

Using this in conjunction with Docker.DotNet was my first experiment. Rather than bring web content into the project, why not let Docker do the local hosting. So assuming you’ve got Docker already setup on your developer machine, this is something you can play with.

I tried this first with the docker-supermario container by Peng BAI, of Infinite Mario in HTML5 Javascript - the results were very impressive.

Hosted HTML

This time I experimented with the cross-platform aspect to this. Using a hosted website, in this case Solitaire by Mr Doob.

I compiled both a standalone runtime for Windows and Linux using:

Windows

dotnet publish -o publish -c Debug -r win10-x64 /p:PublishSingleFile=true /p:PublishTrimmed=true

Linux

dotnet publish -o publish -c Debug -r linux-x64 /p:PublishSingleFile=true /p:PublishTrimmed=true

The runtime sizes were 27,450KB and 36,744KB respectively.

Then it was time to test them both. Using Windows Terminal and WSL (Ubuntu) here’s what happened:

So what next? Well, anything that’s web related can be now hosted in this simple component. Experimenting further, I just built a new Microsoft Teams client ;)

So, if you’re a dab hand a C++ and want to help Steve advance this project, reach out to him at his repo: https://github.com/SteveSandersonMS/WebWindow

My own fork containing the above samples is here: https://github.com/daltskin/WebWindow