Ooui alternatives and similar packages
Based on the "GUI" category.
Alternatively, view Ooui alternatives based on common mentions on social networks and blogs.
-
Avalonia
Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET Foundation community project. -
MaterialDesignInXamlToolkit
Google's Material Design in XAML & WPF, for C# & VB.Net. -
MahApps.Metro
A framework that allows developers to cobble together a better UI for their own WPF applications with minimal effort. -
UWP Community Toolkit
The Windows Community Toolkit is a collection of helpers, extensions, and custom controls. It simplifies and demonstrates common developer tasks building .NET apps with UWP and the Windows App SDK / WinUI 3 for Windows 10 and Windows 11. The toolkit is part of the .NET Foundation. -
Windows UI Library
Windows UI Library: the latest Windows 10 native controls and Fluent styles for your applications -
MaterialSkin
Theming .NET WinForms, C# or VB.Net, to Google's Material Design Principles. -
Eto.Forms
Cross platform GUI framework for desktop and mobile applications in .NET -
DockPanelSuite
DockPanel Suite - The Visual Studio inspired docking library for .NET WinForms -
metroframework-modern-ui
My humble attempt to bring the new Modern UI alias Metro UI of Windows 8 to .NET Windows Forms applications. -
FastColoredTextBox
Fast Colored TextBox for Syntax Highlighting. The text editor component for .NET. -
XWT
A cross-platform UI toolkit for creating desktop applications with .NET and Mono -
AdonisUI
Lightweight UI toolkit for WPF applications offering classic but enhanced windows visuals -
Neutronium
๐ Build .NET desktop applications using HTML, CSS and javascript. -
ScintillaNET
A Windows Forms control, wrapper, and bindings for the Scintilla text editor. -
Ookii.Dialogs.Wpf
Awesome dialogs for Windows Desktop applications built with Microsoft .NET (WPF) -
WinApi
A simple, direct, ultra-thin CLR library for high-performance Win32 Native Interop -
Gtk#
Gtk# is a Mono/.NET binding to the cross platform Gtk+ GUI toolkit and the foundation of most GUI apps built with Mono -
Callisto
A control toolkit for Windows 8 XAML applications. Contains some UI controls to make it easier to create Windows UI style apps for the Windows Store in accordance with Windows UI guidelines. -
Ookii.Dialogs.WinForms
Awesome dialogs for Windows Desktop applications built with Microsoft .NET (WinForms) -
SciterSharp
Create .NET cross-platform desktop apps using not just HTML, but all features of Sciter engine: CSS3, SVG, scripting, AJAX, <video>... Sciter is free for commercial use -
Lara
Lara Web Engine is a lightweight C# framework for web user interface development. -
ObjectListView
git clone of https://objectlistview.svn.sourceforge.net/svnroot/objectlistview/cs/trunk -
Bunifu UI Framework
Social App dark UI built with Bunifu UI Framework Ultimate Bundle
Learn any GitHub repo in 59 seconds
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Ooui or a related project?
README
Ooui Web Framework
Version | Package | Description |
---|---|---|
Ooui | Core library with HTML elements and a server | |
Ooui.AspNetCore | Integration with ASP.NET Core | |
Ooui.Forms | Xamarin.Forms backend using Ooui ([Status](Documentation/OouiFormsStatus.md)) | |
Ooui.Wasm | Package your app into a web assembly |
Ooui (pronounced weee!) is a small cross-platform UI library for .NET that uses web technologies.
It presents a classic object-oriented UI API that controls a dumb browser. With Ooui, you get the full power of your favorite .NET programming language plus the ability to interact with your app using any device.
Try it Online
Head on over to http://ooui.mecha.parts to tryout the samples.
You can also load https://s3.amazonaws.com/praeclarum.org/wasm/index.html to try the WebAssembly mode of Ooui running Xamarin.Forms. (That's Xamarin.Forms running right in your browser!)
Try the Samples Locally
git clone [email protected]:praeclarum/Ooui.git
cd Ooui
dotnet run --project Samples/Samples.csproj
This will open the default starting page for the Samples. Now point your browser at http://localhost:8080/shared-button
You should see a button that tracks the number of times it was clicked. The source code for that button is shown in the example below.
Example App
Here is the complete source code to a fully collaborative button clicking app.
using System;
using Ooui;
class Program
{
static void Main(string[] args)
{
// Create the UI
var button = new Button("Click me!");
// Add some logic to it
var count = 0;
button.Click += (s, e) => {
count++;
button.Text = $"Clicked {count} times";
};
// Publishing makes an object available at a given URL
// The user should be directed to http://localhost:8080/shared-button
UI.Publish ("/shared-button", button);
// Don't exit the app until someone hits return
Console.ReadLine ();
}
}
Make sure to add a reference to Ooui before you start running!
dotnet add package Ooui
dotnet run
With just that code, a web server that serves the HTML and web socket logic necessary for an interactive button will start.
The Many Ways to Ooui
Ooui has been broken up into several packages to increase the variety of ways that it can be used. Here are some combinations to help you decide which way is best for you.
OouiOoui.AspNetCoreOoui.FormsOoui.Wasm
✓Web DOM with the Built-in Web Server
✓✓Web DOM with ASP.NET Core
✓✓✓Xamarin.Forms with ASP.NET Core
✓✓Xamarin.Forms with the built-in web server
✓✓Web DOM with Web Assembly
✓✓✓Xamarin.Forms with Web Assembly
How it works
When the user requests a page, the page will connect to the server using a web socket. This socket is used to keep the server's in-memory model of the UI (the one you work with as a programmer) in sync with the actual UI shown to the user in their browser. This is done using a simple messaging protocol with JSON packets.
When the user clicks or otherwise interacts with the UI, those events are sent back over the web socket so that your code can deal with them.
In the case of web assembly, this same dataflow takes place. However, sockets are not used as all communication is done locally in the browser process.
Contributing
Ooui is open source and I love merging PRs. Please fork away, and please obey the .editorconfig file. :-) Try to file issues for things that you want to work on before you start the work so that there's no duplicated effort. If you just want to help out, check out the issues and dive in!