All Projects β†’ ImVexed β†’ Muon

ImVexed / Muon

Licence: mit
GPU based Electron on a diet

Programming Languages

go
31211 projects - #10 most used programming language
c
50402 projects - #5 most used programming language
objective c
16641 projects - #2 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to Muon

Crypter
πŸ”“βœ¨πŸ”’ An innovative, convenient and secure encryption app
Stars: ✭ 382 (-81.53%)
Mutual labels:  cross-platform, desktop
Waveboxapp
Wavebox Classic has been updated to Wavebox 10. Learn more Wavebox.io
Stars: ✭ 1,198 (-42.07%)
Mutual labels:  cross-platform, desktop
Brisk
✨Cross-platform set of tools for building native UIs with Reason/OCaml
Stars: ✭ 518 (-74.95%)
Mutual labels:  cross-platform, desktop
Wxwidgets
wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.
Stars: ✭ 3,994 (+93.13%)
Mutual labels:  cross-platform, desktop
Corona
Solar2D Game Engine main repository (ex Corona SDK)
Stars: ✭ 1,679 (-18.81%)
Mutual labels:  cross-platform, desktop
Ironahk
Cross platform .NET rewrite of the popular AutoHotkey scripting language for desktop automation.
Stars: ✭ 368 (-82.21%)
Mutual labels:  cross-platform, desktop
Revery
⚑ Native, high-performance, cross-platform desktop apps - built with Reason!
Stars: ✭ 7,812 (+277.76%)
Mutual labels:  cross-platform, desktop
Orion
Cross platform Twitch.tv client
Stars: ✭ 298 (-85.59%)
Mutual labels:  cross-platform, desktop
Xut.js
ζ‰Ήι‡η”ŸζˆεΊ”η”¨εΉ³ε° http://t.cn/RazBbL0
Stars: ✭ 105 (-94.92%)
Mutual labels:  cross-platform, desktop
Enime
Desktop application for anime fans :D
Stars: ✭ 104 (-94.97%)
Mutual labels:  cross-platform, desktop
Rednotebook
RedNotebook is a cross-platform journal
Stars: ✭ 336 (-83.75%)
Mutual labels:  cross-platform, desktop
Chirp
🐦 A cross platform twitter application
Stars: ✭ 129 (-93.76%)
Mutual labels:  cross-platform, desktop
Negibox
All in one downloader 全能下载器
Stars: ✭ 335 (-83.8%)
Mutual labels:  cross-platform, desktop
Kahla.app
Kahla is a cross-platform business messaging app.
Stars: ✭ 370 (-82.11%)
Mutual labels:  cross-platform, desktop
Thermal
One stop to manage all git repository
Stars: ✭ 321 (-84.48%)
Mutual labels:  cross-platform, desktop
Nodegui
A library for building cross-platform native desktop applications with Node.js and CSS πŸš€. React NodeGui : https://react.nodegui.org and Vue NodeGui: https://vue.nodegui.org
Stars: ✭ 7,324 (+254.16%)
Mutual labels:  cross-platform, desktop
Youi
Next generation user interface and application development in Scala and Scala.js for web, mobile, and desktop.
Stars: ✭ 186 (-91.01%)
Mutual labels:  cross-platform, desktop
Chromely
Build HTML Desktop Apps on .NET/.NET Core/.NET 5 using native GUI, HTML5, JavaScript, CSS
Stars: ✭ 2,728 (+31.91%)
Mutual labels:  cross-platform, desktop
Nodegui Starter
A starter repo for NodeGui projects
Stars: ✭ 93 (-95.5%)
Mutual labels:  cross-platform, desktop
Imagine
πŸ–ΌοΈ PNG/JPEG optimization app for macOS, Windows and Linux.
Stars: ✭ 1,859 (-10.11%)
Mutual labels:  cross-platform, desktop

gnet

GitHub code size in bytes


Muon is a lightweight alternative to Electron written in Golang in about ~300 LoC, using Ultralight instead of Chromium. Ultralight is a cross-platform WebKit rewrite using the GPU to target embedded desktop applications that resulted in a fast, lightweight, and low-memory HTML UI solution that blends the power of Chromium with the small footprint of Native UI.

Features

  • Full JS to Go interop
  • GPU based rendering
  • Cross-platform
  • Hot-reloading
  • Superior disk size + memory & cpu usage

Comparison with a "Hello, World!" React App

Muon Electron
CPU 0.0% 1.2%
MEM 26.0 MB 201.7 MB
DISK 42 MB 136 MB

Example

From examples/create-react-app/main.go:

package main

import (
  "github.com/ImVexed/muon"

  "cra-go/webfiles"
  "net/http"
)

func main() {
  // Any static asset packer of your liking (ex. fileb0x)
  fileHandler := http.FileServer(webfiles.HTTP)

  cfg := &muon.Config{
    Title:      "Hello, World!",
    Height:     500,
    Width:      500,
    Titled:     true,
    Resizeable: true,
  }

  m := muon.New(cfg, fileHandler)

  // Expose our `add` function to the JS runtime
  m.Bind("add", add)

  // Show the Window and start the Runtime
  if err := m.Start(); err != nil {
    panic(err)
  }
}

// Muon automatically handles interop to and from the JS runtime
func add(a float64, b float64) float64 {
  return a + b
}

FAQ

Q: How are JS types translated to Go types?

  • JS: Boolean Go: bool
  • JS: Number Go: float64
  • JS: String Go: string
  • JS: Object Go: struct via JSON

Q: How do I setup Ultralight?

Q: Is there perfect Chrome or Firefox feature parity?

Q: How do I get rid of the Console on Windows?

  • Add -ldflags -H=windowsgui to either your go build or go run to get rid of the window.

Q: I get exit status 3221225781

  • Your program likely can't find the Ultralight libraries. Ensure they're either installed on the system, or, in the same folder as your program. Currently, Muon uses the 1.1 Ultralight pre-release that hasn't yet propagated to their main site and can only be downloaded from the Ultralight github repo.

Q: I get libWebCore.so: cannot open shared object file

  • If you're attempting to load the libraries out of the same directory as your program add -ldflags "-r ." to your go build to set rpath to the local directory for library resolution.

Q: I get symbol not found: ulCreateSettings

  • This likely means you're not using the 1.1 Ultralight pre-release which can be downloaded only from their GitHub Repo for now

Q: How do I compile for x86?

  • Currently, Ultralight only supports Windows for x86. Ensure you have a 32-bit gcc in your path, and ensure you have CGO_ENABLED=1 and GOARCH=386 environment variables set.

Licensing

While muon itself is MIT licensed, Ultralight is not.

Ultralight is free for non-commercial use, educational use, 
and also free for commercial use by small indie developers making
less than US$100,000 a year. You can find full terms in the SDK. 
Pricing plans for larger commercial projects will be announced later.

Their specific license terms can be found here.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].