/Chromely

Lightweight Alternative to Electron for .NET/.NET Core HTML5 Desktop Apps

Primary LanguageC#MIT LicenseMIT

Chromely

Chromely is a lightweight alternative to Electron.NET, Electron for .NET/.NET Core developers.

Chromely is a .NET/.NET Core HTML5 Chromium desktop framework. It is focused on building apps based on Xilium.CefGlue, CefSharp implementations of embedded Chromium (Cef) without WinForms or WPF. Chromely uses Windows and Linux native GUI API as "thin" chromium hosts. It can be extended to use WinForms or WPF.

With Chromely you can build Single Page Application (SPA) HTML5 desktop apps with or without Node/npm. Building SPA apps using javascript frameworks like Angular, React, Vue or similar is easy. You can use Visual Studio Code or any IDE you are familiar with as long as Chromely knows the entry html file from the compiled/bundled files. For more info please see - Chromely-Apps.

Options of communicating (IPC) with rendering process are via:

  1. .NET/Javascript integration (CefSharp) - more info @ Expose .NET class to JavaScript.
  2. Generic Message Routing (Xilium.CefGlue) - more info @ Generic Message Routing.
  3. Ajax HTTP/XHR (Xilium.CefGlue, CefSharp) - more info @ Custom Scheme Handling.
  4. Real-time with Websocket (ws) (Xilium.CefGlue) - more info @ Real-time with Websocket.

Roadmap & Help Wanted

If you like Chromely, please give it a star - it helps!

Have a quick question? Wanna chat? Connect on Join the chat at https://gitter.im/chromely_/Lobby

Platforms

Cross-platform - Windows, Linux. Built on CefGlue, CefSharp, NET Standard 2.0, .NET Core 2.0, .NET Framework 4.61 and above.

Chromely.Core Chromely.CefGlue.Winapi Chromely.CefSharp.Winapi Chromely.Unofficial.CefGlue.NetStd

For more info/documentation, please check Chromely wiki.
Chromely + Angular
Chromely + React
Chromely + Vue

Creating a Simple App (Using CefGlue with Winapi host)

For more info see - Getting Started

class Program
{
   static int Main(string[] args)
   {
      string startUrl = "https://google.com";

      ChromelyConfiguration config = ChromelyConfiguration
                                    .Create()
                                    .WithAppArgs(args)
                                    .WithHostSize(1000, 600)
                                    .WithStartUrl(startUrl);

     var factory = WinapiHostFactory.Init();
     using (var window = factory.CreateWindow(() => new CefGlueBrowserHost(config),
           "chromely", constructionParams: new FrameWindowConstructionParams()))
      {
         window.SetSize(config.HostWidth, config.HostHeight);
         window.CenterToScreen();
         window.Show();
         return new EventLoop().Run(window);
     }
  }
}

Run Starter Template (Using dotnet core cli). For more info, please see - dotnet cli demo template install

dotnet new -i "Chromely.CefGlue.Win.Template::*"
dotnet new chromelywin 
dotnet restore
dotnet build
dotnet chromelycef.dll download v65 --cpu=x64 --dest="bin\Debug\netcoreapp2.1"
dotnet run 

Chromely Demos

For more info on demos - Demos

References

Contributing

Contributions are always welcome, via PRs, issues raised, or any other means.

Author

Kola Matthew Oyewumi

License

  • Chromely is MIT - licensed.
  • CefSharp is BSD licensed, so it can be used in both proprietary and free/open source applications. For the full details, see the LICENSE file.
  • CefGlue is licensed under MIT License with portions of code licensed under New BSD License. For more info see.

Credits

Thanks to JetBrains for the OSS license of Resharper Ultimate.

Improved and optimized using:

Resharper logo