# lc-soft/lcui

**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/lc-soft-lcui).**

4,300 stars · 370 forks · C · mit

## Links

- GitHub: https://github.com/lc-soft/LCUI
- Homepage: https://lcui-dev.github.io
- awesome-repositories: https://awesome-repositories.com/repository/lc-soft-lcui.md

## Topics

`c` `cross-platform-gui` `gui-framework` `gui-toolkit` `windows`

## Description

LCUI is a component-based, cross-platform UI toolkit for building desktop applications using C, TypeScript, and JSX. It provides a declarative UI compiler that transforms JSX and TypeScript markup into native C code, enabling developers to construct interfaces without a browser runtime. The library includes a CSS styling engine that applies standard CSS rules to layout and style native desktop components, and supports component composition with state management and event binding.

The toolkit distinguishes itself by combining web development patterns with native desktop rendering, allowing developers to write interfaces using JSX and TypeScript that compile directly into executable code. It offers a component prototype system for defining custom components with lifecycle methods, and supports declarative XML interface loading for building component trees at runtime. The library includes density-aware scaling for adapting interfaces to different screen pixel densities, and provides flow and flexbox layout models controlled by CSS display properties.

LCUI manages the full application lifecycle from initialization through the main event loop to shutdown, and binds user interactions to logic functions through its event handling system. It supports both Windows and Linux platforms from a single codebase, and offers project scaffolding to generate the necessary files and build configuration for new projects. The library can be integrated either through prebuilt binary installation or by including source code directly.

## Tags

### Software Engineering & Architecture

- [Cross-Platform Desktop Development](https://awesome-repositories.com/f/software-engineering-architecture/development-methodologies/application-targets-domains/cross-platform-desktop-development.md) — Builds graphical desktop applications that run on Windows and Linux from a single codebase using XML, CSS, and C or TypeScript.
- [Application Loops](https://awesome-repositories.com/f/software-engineering-architecture/application-loops.md) — Provides the main event loop that keeps the application running and responsive to user input. ([source](https://lcui-dev.github.io/docs/guide/quick-start))
- [Component State Bindings](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/component-state-bindings.md) — Maps user interactions to logic functions and manages private component state for reactive updates.

### Development Tools & Productivity

- [Cross-Platform Desktop UI Toolkits](https://awesome-repositories.com/f/development-tools-productivity/platforms-runtimes-language-services/development-platforms/operating-system-environments/operating-systems/windows-development-environments/linux-compatibility-layers/cross-platform-desktop-ui-toolkits.md) — Compiles and executes desktop applications on both Windows and Linux operating systems. ([source](https://cdn.jsdelivr.net/gh/lc-soft/lcui@develop/README.md))

### Operating Systems & Systems Programming

- [State Management](https://awesome-repositories.com/f/operating-systems-systems-programming/desktop-environment-frameworks/desktop-environment-components/desktop-application-frameworks/state-management.md) — Manages component state and binds user interactions to logic functions within a desktop GUI framework.

### User Interface & Experience

- [C Desktop UI Libraries](https://awesome-repositories.com/f/user-interface-experience/c-terminal-ui-libraries/c-desktop-ui-libraries.md) — Creates graphical user interfaces using the C programming language for desktop applications. ([source](https://cdn.jsdelivr.net/gh/lc-soft/lcui@develop/README.md))
- [Component-Based UI Libraries](https://awesome-repositories.com/f/user-interface-experience/component-libraries/component-based-ui-libraries.md) — Provides a library for composing desktop interfaces from reusable components with state management and event binding.
- [Cross-Platform GUI Frameworks](https://awesome-repositories.com/f/user-interface-experience/cross-platform-gui-frameworks.md) — Creates desktop application interfaces that run consistently on Windows and Linux from a single codebase. ([source](https://lcui-dev.github.io/docs/guide/introduction))
- [Cross-Platform UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/cross-platform-ui-frameworks.md) — Creates graphical user interfaces that run consistently on Windows and Linux using XML and CSS. ([source](https://lcui-dev.github.io/docs/guide/introduction))
- [Cross-Platform UI Toolkits](https://awesome-repositories.com/f/user-interface-experience/cross-platform-ui-toolkits.md) — Renders desktop interfaces from XML, CSS, and JSX markup with a C-based runtime across platforms.
- [CSS Styling](https://awesome-repositories.com/f/user-interface-experience/css-styling.md) — Applies CSS rules to define the layout and visual appearance of UI components. ([source](https://lcui-dev.github.io/docs/guide/introduction))
- [Prototype Extensions](https://awesome-repositories.com/f/user-interface-experience/custom-component-extensions/custom-component-builders/prototype-extensions.md) — Defines custom components by extending prototypes with initialization, rendering, and sizing methods.
- [Custom UI Component Frameworks](https://awesome-repositories.com/f/user-interface-experience/custom-ui-component-frameworks.md) — Defines new component types by writing prototypes with custom lifecycle methods. ([source](https://lcui-dev.github.io/docs/guide/quick-start))
- [Declarative UI Compilers](https://awesome-repositories.com/f/user-interface-experience/declarative-ui-compilers.md) — Transforms JSX and TypeScript markup into native C code for interface rendering.
- [Declarative UI Markup](https://awesome-repositories.com/f/user-interface-experience/declarative-ui-definitions/declarative-ui-markup.md) — Defines interface structure and style using XML markup and CSS rules parsed by built-in libraries. ([source](https://cdn.jsdelivr.net/gh/lc-soft/lcui@develop/README.md))
- [Desktop Component Styling](https://awesome-repositories.com/f/user-interface-experience/desktop-component-styling.md) — Applies standard CSS syntax to layout and style native desktop components.
- [CSS-Driven Layout Containers](https://awesome-repositories.com/f/user-interface-experience/layout-management/component-layout-containers/css-driven-layout-containers.md) — Positions and aligns components using flow or flexbox layouts controlled by CSS display properties. ([source](https://lcui-dev.github.io/docs/guide/quick-start))
- [Web-Based UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/mobile-web-integration/web-application-integration/web-based-ui-frameworks.md) — Uses TypeScript, JSX, and web patterns to author user interfaces for native desktop applications. ([source](https://lcui-dev.github.io/docs/guide/introduction))
- [CSS Styling](https://awesome-repositories.com/f/user-interface-experience/styling-theming-systems/content-styling/styling-architectures/styling-systems/class-based-styling/css-styling.md) — Loads CSS from files or strings and applies class-based styles to control component appearance. ([source](https://lcui-dev.github.io/docs/guide/quick-start))
- [JSX Compilation](https://awesome-repositories.com/f/user-interface-experience/typescript-ui-frameworks/jsx-compilation.md) — Writes user interfaces using JSX and TypeScript syntax that compiles into native desktop UI code.
- [Native Compilation Frameworks](https://awesome-repositories.com/f/user-interface-experience/typescript-ui-frameworks/native-compilation-frameworks.md) — Writes user interfaces using TypeScript and JSX that compile into native UI code. ([source](https://lcui-dev.github.io/docs/guide/introduction))
- [Desktop Frameworks](https://awesome-repositories.com/f/user-interface-experience/widget-frameworks/jsx/desktop-frameworks.md) — Compiles TypeScript and JSX components into native desktop application code.
- [Runtime XML Layout Engines](https://awesome-repositories.com/f/user-interface-experience/xml-layout-definitions/runtime-xml-layout-engines.md) — Loads component trees and resource references from XML files to build interfaces at runtime.
- [Density-Independent Scaling](https://awesome-repositories.com/f/user-interface-experience/density-independent-scaling.md) — Adapts the user interface to different pixel densities using global scaling and density-independent units. ([source](https://cdn.jsdelivr.net/gh/lc-soft/lcui@develop/README.md))
- [Flow Layouts](https://awesome-repositories.com/f/user-interface-experience/flexbox-layout-models/flow-layouts.md) — Positions and aligns components using CSS display properties for flow or flexible box layouts.

### Web Development

- [Component Composition](https://awesome-repositories.com/f/web-development/component-composition.md) — Composes interfaces by nesting components that each own their logic and appearance. ([source](https://lcui-dev.github.io/docs/guide/quick-start))
- [Event Binding](https://awesome-repositories.com/f/web-development/event-binding.md) — Binds event handlers to components to execute custom logic when events like clicks occur. ([source](https://lcui-dev.github.io/docs/guide/quick-start))
- [Component State Management](https://awesome-repositories.com/f/web-development/frontend-development-tools/state-data-management/component-lifecycle-utilities/component-state-management.md) — Stores private component data and updates displayed content when that data changes. ([source](https://lcui-dev.github.io/docs/guide/quick-start))
- [Native Code Compilers](https://awesome-repositories.com/f/web-development/jsx-compilers/native-code-compilers.md) — Transforms JSX and TypeScript markup into native C code for direct interface rendering without a browser runtime.

### Part of an Awesome List

- [Graphical User Interface](https://awesome-repositories.com/f/awesome-lists/devtools/graphical-user-interface.md) — Builds interfaces using a combination of C, XML, and CSS.
- [GUI Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/gui-frameworks.md) — Small library for building interfaces with XML/CSS.
