# zserge/lorca

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/zserge-lorca).**

8,198 stars · 538 forks · Go · MIT

## Links

- GitHub: https://github.com/zserge/lorca
- awesome-repositories: https://awesome-repositories.com/repository/zserge-lorca.md

## Description

Lorca is a framework for building cross-platform desktop applications using Go for the backend logic and HTML5 for the user interface. It functions as a wrapper that renders a web browser as the application window while executing core logic in a native process.

The project provides a communication bridge that binds native Go functions to the browser environment and allows the backend to execute JavaScript directly within the browser window. It includes capabilities for packaging binaries with custom icons and branding for multiple operating systems.

The framework covers window management, such as controlling screen dimensions and loading web content via local servers or data URLs. It also supports executing the user interface in headless mode for automated testing and provides native system dialogs for user interaction.

## Tags

### User Interface & Experience

- [Browser-Based Desktop UIs](https://awesome-repositories.com/f/user-interface-experience/browser-based-desktop-uis.md) — Renders the application interface using a host web browser while executing core logic in a native Go process.
- [Web-Based UI Renders](https://awesome-repositories.com/f/user-interface-experience/vector-graphics-rendering/desktop-ui-frameworks/web-based-ui-renders.md) — Renders a web browser as the application window while executing core logic in a native Go process. ([source](https://github.com/zserge/lorca#readme))
- [JavaScript Execution Bridges](https://awesome-repositories.com/f/user-interface-experience/javascript-execution-bridges.md) — Provides a bridge to execute arbitrary JavaScript strings within the browser window from the Go backend.
- [JSON Message Bus Bridges](https://awesome-repositories.com/f/user-interface-experience/native-rendering-bridges/json-message-bus-bridges.md) — Uses JSON serialization to bridge function calls and return values between the Go backend and the browser UI.
- [Embedded Web Renderers](https://awesome-repositories.com/f/user-interface-experience/web-based-rendering-engines/embedded-web-renderers.md) — Integrates a browser engine to render dynamic HTML and CSS content within a native application interface. ([source](https://github.com/zserge/lorca/blob/master/README.md))
- [Application Window Managers](https://awesome-repositories.com/f/user-interface-experience/application-window-managers.md) — Provides controls for creating and managing multiple browser windows to serve as separate application interfaces. ([source](https://github.com/zserge/lorca#readme))
- [Desktop Windowing Management](https://awesome-repositories.com/f/user-interface-experience/desktop-windowing-management.md) — Enables the creation and control of desktop windows with specific URLs and dimensions. ([source](https://github.com/zserge/lorca/blob/master/ui.go))
- [Local Content Delivery](https://awesome-repositories.com/f/user-interface-experience/local-content-delivery.md) — Serves the user interface via a local web server or embedded data URLs. ([source](https://github.com/zserge/lorca#readme))

### Programming Languages & Runtimes

- [JavaScript Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/expression-evaluators/javascript-runtimes.md) — Evaluates JavaScript expressions in the browser and returns resulting values to the Go backend. ([source](https://github.com/zserge/lorca/blob/master/ui_test.go))
- [Go Native Bindings](https://awesome-repositories.com/f/programming-languages-runtimes/language-interoperability/native-c-interoperability/c-function-bindings/go-native-bindings.md) — Maps native Go functions to the browser environment to allow the frontend to trigger system-level logic.
- [Rust-to-C++ Function Exposures](https://awesome-repositories.com/f/programming-languages-runtimes/language-interoperability/native-c-interoperability/c-function-bindings/rust-to-c-function-exposures.md) — Maps native Go functions to the browser environment, allowing the frontend to trigger system-level logic.
- [Native-to-Script Function Invocations](https://awesome-repositories.com/f/programming-languages-runtimes/native-to-script-function-invocations.md) — Binds application functions to the browser environment so the frontend can trigger native logic. ([source](https://github.com/zserge/lorca/blob/master/ui_test.go))

### Software Engineering & Architecture

- [Cross-Platform Desktop Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/application-frameworks/cross-platform-desktop-frameworks.md) — Provides a framework for creating desktop applications using web technologies and a native Go backend.
- [Cross-Platform Desktop Development](https://awesome-repositories.com/f/software-engineering-architecture/development-methodologies/application-targets-domains/cross-platform-desktop-development.md) — Provides a framework for building native desktop applications for multiple operating systems using a single codebase.

### Web Development

- [Backend-to-Frontend Bindings](https://awesome-repositories.com/f/web-development/backend-to-frontend-bindings.md) — Exposes native backend functions to the browser environment for direct invocation from the frontend. ([source](https://github.com/zserge/lorca/blob/master/ui.go))
- [Context Data Exchange](https://awesome-repositories.com/f/web-development/browser-automation/context-data-exchange.md) — Implements bidirectional transfer of serializable data between the native backend and the browser UI. ([source](https://github.com/zserge/lorca/blob/master/value_test.go))
- [JavaScript Execution Bridges](https://awesome-repositories.com/f/web-development/browser-integration-utilities/browser-infrastructure/javascript-execution-bridges.md) — Enables the execution of arbitrary JavaScript code directly within the browser window from the backend. ([source](https://github.com/zserge/lorca/blob/master/ui.go))
- [Desktop Web Wrappers](https://awesome-repositories.com/f/web-development/desktop-web-wrappers.md) — Encapsulates web applications into native desktop shells that communicate directly with a Go backend.
- [Embedded Browser URL Loads](https://awesome-repositories.com/f/web-development/custom-page-url-resolution/embedded-browser-url-loads.md) — Loads specified web pages into the embedded browser window to update the user interface. ([source](https://github.com/zserge/lorca/blob/master/ui.go))
- [Headless Browsers](https://awesome-repositories.com/f/web-development/headless-browsers.md) — Supports running the user interface in headless mode to enable automated testing.

### Development Tools & Productivity

- [Go Application Bundlers](https://awesome-repositories.com/f/development-tools-productivity/go-application-bundlers.md) — Packages Go binaries with custom icons and branding for distribution across multiple operating systems.

### DevOps & Infrastructure

- [Cross-Platform Packaging Tools](https://awesome-repositories.com/f/devops-infrastructure/cross-platform-packaging-tools.md) — Bundles application runtimes and assets into branded native executables with custom icons for multiple OSs. ([source](https://github.com/zserge/lorca#readme))
- [Desktop Packaging](https://awesome-repositories.com/f/devops-infrastructure/desktop-packaging.md) — Provides tools for wrapping applications into native desktop executables for cross-platform distribution. ([source](https://github.com/zserge/lorca/blob/master/README.md))
- [Headless Execution Modes](https://awesome-repositories.com/f/devops-infrastructure/headless-execution-modes.md) — Provides a headless execution mode to run the UI without a visible window for testing. ([source](https://github.com/zserge/lorca#readme))
- [Window Dimension Queries](https://awesome-repositories.com/f/devops-infrastructure/window-geometry-managers/window-dimension-constraints/window-dimension-queries.md) — Provides APIs to retrieve and set the current size and screen position of the application window. ([source](https://github.com/zserge/lorca/blob/master/ui.go))

### Networking & Communication

- [Local HTTP Servers](https://awesome-repositories.com/f/networking-communication/local-http-servers.md) — Serves UI assets to the browser via an embedded local web server or data URLs.

### Part of an Awesome List

- [Desktop and GUI Development](https://awesome-repositories.com/f/awesome-lists/devtools/desktop-and-gui-development.md) — HTML5 desktop apps using Chrome.
