fsprojects / Interstellar

Cross-platform desktop apps in F# using web tech - https://www.nuget.org/packages/Interstellar.Core/
https://fsprojects.github.io/Interstellar/
MIT License
43 stars 13 forks source link
browser cefsharp chromium dotnet-core dotnet-framework fsharp interstellar webkit

Interstellar

CI (macOS) CI (Windows)

NOTE: This API is not yet guarenteed to be stable or backward-compatible until v1.0, so breaking changes may occur at any time.

Interstellar is an F# library providing a standard, mixed-paradigm API for accessing browser controls on various platforms. Currently, there are 3 combinations platform and browser hosts available. See Examples for a simple sample application. See https://github.com/jwosty/InterstellarFableHelloWorld for an example of combining Interstellar with Fable, achieving a cross-platform desktop app built completely in F#.

Project breakdown

This project is composed of several NuGet packages. Let's break them down and describe their purposes:

I intend to create a Windows package that uses the built-in Windows browser control (likely Edge with Chromium), as well as a macOS package that uses CEF (however this is a bigger undertaking as non of the CEF .NET bindings work on macOS yet). Contributions for either of these are welcome, as well as any other possible targets! Linux would be nice to support, but I don't have GTK experience (or whatever you'd use to wrap a browser control).

Building

dotnet tool restore
dotnet paket restore
dotnet fake build

Creating the NuGet package

After building, run:

dotnet fake build -t Pack

The resuling *.nupkg files will end up in ./artifacts/

Building docs

dotnet fake build -t BuildDocs
// to actually release docs, assuming you have push priveleges to the repo:
dotnet fake biuld -t ReleaseDocs

FAKE build error: "Unsupported log file format"

Sometimes, dotnet fake build will start failing with messages similar to:

NotSupportedException: Unsupported log file format. Latest supported version is 9, the log file has version 14.

Fix this by running:

bash git clean -xdf rm build.fsx.lock

You may also have to run:

bash dotnet tool uninstall fake-cli dotnet tool install fake-cli

The build should succeed again now. You can commit the changes.

Maintainer(s)

The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)