crowngui

Web Technologies based Crossplatform GUI Framework

Pure Nim score 15/100 · tests present · no docs generated

Summary

Latest Version Unknown
License MIT
CI Status Failing
Downloads 0
Last Indexed 2026-07-21 05:24

Installation

nimble install crowngui
choosenim install crowngui
git clone https://github.com/bung87/crowngui

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
crowngui - - - - - - -

Source

Repository https://github.com/bung87/crowngui
Homepage https://github.com/bung87/crowngui
Registry Source nimble_official

README

crowngui Build Status

Web Technologies based Crossplatform GUI Framework

It uses Cocoa/WebKit on macOS, gtk-webkit2 on Linux and webview2 on Windows

crowngui contains managed code only, no native code.

crowngui uses nimpacker for bundling application easier.

Architecture

how bindProcs works?

figure generated via asciiflow

┌─────────────┐         ┌──────────────────────────────┐       ┌─────────────────────────┐
                                                                                    
                      │store hook function in `eps`         │when trigger js function 
                      │hook accept one string param         │internally it use browser│
  bindProcs  ├────────►│and returns string that wraps ├──────►│`postMessage` api send   
                      │nim proc call.                       │json string with scope,  
                      │And generate js function and         │name, argument.          
                      │dispatch to main queue.                                       
└─────────────┘         └──────────────────────────────┘       └────────────┬────────────┘
                                                                            
                                                                            
                        ┌────────────────────────────────────────────────────┐
                        │browser add callback when received message          
                        │it calls Webview's `invokeCb` which implements      │
                        │as `generalExternalInvokeCallback`                  │
                        │it parse argument as json retrieve scope,           │
                        │name, argument,then call the hook stored.           │
                        │                                                    │
                        └────────────────────────────────────────────────────┘

Usage

file: yourexecutable.nim

import crowngui

when isMainModule:
  const   
    cssDark = staticRead"assets/dark.css".strip.unindent.cstring
    cssLight = staticRead"assets/light.css".strip.unindent.cstring

  let app = newApplication( staticRead("assets/demo.html") )
  let theme = if "--light-theme" in commandLineParams(): cssLight else: cssDark
  app.css(theme)
  app.run()
  app.exit()

Your project .nimble file

bin           = @["yourexecutable"]

nimpacker will bundle your executable to exe on windows, .app on mac

Your project root can have "logo.png" which will generate as icon of application.

CLI usage

nimpacker [build,run] --help

Usage:
  [build,run] [required&optional-params] [flags: string...]
Options:
  -h, --help                         print this cligen-erated help
  --help-syntax                      advanced: prepend,plurals,..
  -t=, --target=   string  REQUIRED  set target
  -r, --release    bool    false     set release

Examples

gamode windows optimization tool for game

Development

run
nimpacker run --target macos

build
nimpacker build --target macos

Cross compilation for Windows

To cross compile for Windows from Linux or macOS using the MinGW-w64 toolchain:

nim c -d:mingw myproject.nim

Use --cpu:i386 or --cpu:amd64 to switch the CPU architecture.

The MinGW-w64 toolchain can be installed as follows:

Ubuntu: apt install mingw-w64
CentOS: yum install mingw32-gcc | mingw64-gcc - requires EPEL
OSX: brew install mingw-w64

References

Distribute your app and the WebView2 Runtime

WebView2 Win32 Reference