You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+53-42
Original file line number
Diff line number
Diff line change
@@ -42,16 +42,17 @@ LCUI is a library written in C for building graphical user interfaces. Its goal
42
42
43
43
**LC** originates from the initials of the author's name. The library was initially designed to help the author develop small projects and gain development experience. However, the author did not gain a competitive advantage in the job market, which is crowded with C/C++ experts, and thus had to work in web front-end development. As a result, LCUI now leans towards integrating technologies from the web front-end domain.
44
44
45
-
### Main Features
45
+
### Key Features
46
46
47
-
-**Cross-Platform:** Supports Windows and Linux.
48
-
-**Fully Custom-Drawn Components:** Components maintain a consistent appearance and behavior across multiple platforms.
49
-
-**Built-in CSS Engine:** Supports using CSS to define the style and layout of the user interface, making it easier to get started for those with web development experience.
50
-
-**Provides Modern Development Tools:** The tools allow you to use the [TypeScript](https://lcui-dev.github.io/docs/guide/typescript) language with JSX syntax, the React library, and other web front-end technologies to write user interfaces.
47
+
-**Cross-platform:** Supports Windows and Linux.
48
+
-**Fully custom-drawn components:** Ensures consistent appearance and behavior of components across platforms.
49
+
-**DPI awareness:** Automatically scales the UI on high-resolution screens to maintain a clear display.
50
+
-**Built-in CSS engine:** Enables the use of CSS for defining UI styles and layouts, making it easier for developers with web development experience to get started.
51
+
-**Modern development tools:** Includes tools that allow you to build user interfaces using [TypeScript](https://lcui-dev.github.io/docs/guide/typescript) with JSX syntax, the React library, and other web frontend technologies.
51
52
52
-
### Overview of Features
53
+
### Development Experience Preview
53
54
54
-
You can learn about the development experience of LCUI applications from the following screenshot:
55
+
You can get an overview of the development experience for LCUI applications from the following image:
55
56
56
57

57
58
@@ -65,19 +66,18 @@ You can learn about the development experience of LCUI applications from the fol
65
66
66
67
Over time LCUI has been built up to be based on various libraries:
67
68
68
-
-[lib/yutil](./lib/yutil): Utility library providing common data structures and functions.
69
-
-[lib/pandagl](./lib/pandagl): PandaGL (Panda Graphics Library), offering font management, text layout, image I/O, graphics processing, and rendering capabilities.
70
-
-[lib/css](./lib/css): CSS parser and selector engine providing CSS parsing and selection capabilities.
71
-
-[lib/ptk](./lib/ptk): Platform Toolkit library offering cross-platform unified system-related APIs, including message loop, window management, input method, etc.
-[lib/ui-server](./lib/ui-server): UI server providing the ability to map UI components to system windows.
78
-
-[lib/ui-router](./lib/ui-router): Router manager offering route mapping and navigation capabilities.
79
-
-[lib/ui-widgets](./lib//ui/widgets): Predefined basic component library providing basic UI components such as text, button, scrollbar, etc.
80
-
-[lib/worker](./lib/worker): Worker thread library providing simple worker thread communication and management capabilities.
69
+
-[lib/yutil](./lib/yutil): Utility library providing common data structures and functions.
70
+
-[lib/pandagl](./lib/pandagl): PandaGL (Panda Graphics Library), a graphics library offering font management, text layout, image processing, and rendering capabilities.
71
+
-[lib/css](./lib/css): CSS parser and selector engine, enabling CSS parsing and selection functionalities.
72
+
-[lib/ptk](./lib/ptk): Platform Toolkit library offering cross-platform unified system-related APIs, including message loops, window management, timers, worker threads, and input methods.
-[lib/ui-server](./lib/ui-server): UI server that maps UI components to system windows.
78
+
-[lib/ui-router](./lib/ui-router): Router manager offering routing and navigation functionalities.
79
+
-[lib/ui-widgets](./lib/ui/widgets): Predefined basic component library offering essential UI components such as text, buttons, and scrollbars.
80
+
-[lib/worker](./lib/worker): Worker thread library providing simple communication and management for worker threads.
81
81
82
82
## Quick Start
83
83
@@ -122,21 +122,27 @@ Some features of LCUI and related projects are inspired by other open-source pro
122
122
123
123
## Roadmap
124
124
125
-
Here are the upcoming items:
126
-
127
-
- LCUI
128
-
- Improve API design.
129
-
- Enhance the CSS engine to support `inherit`, `!important`, and escape characters.
130
-
- Add [SDL](https://www.libsdl.org/) backend to replace the lib/ptk library.
131
-
- Adapt to other open-source graphics libraries for better rendering performance.
132
-
- Command-line Tools
133
-
-`lcui build --watch`: Continuously monitor file changes and automatically rebuild.
134
-
-`lcui dev-server`: Similar to webpack-dev-server, builds the LCUI application as a website for developers to preview interfaces in the browser.
135
-
- Add build cache to rebuild only files that have changed.
136
-
- React Component Library: Referencing some web frontend component libraries (e.g., [radix](https://www.radix-ui.com/), [shadcn/ui](https://ui.shadcn.com/)), develop a TypeScript + React component library suitable for LCUI applications, reusing components from the [LC Design](https://github.com/lcui-dev/lc-design) component library.
137
-
- Documentation
138
-
- Tutorials
139
-
- Request for Comments (RFC)
125
+
Below are the items for potential future development:
126
+
127
+
-**LCUI**
128
+
- Improve API design.
129
+
- Enhance the CSS engine to support `inherit` and `!important`.
130
+
- Add an [SDL](https://www.libsdl.org/) backend to replace the lib/ptk library.
131
+
- Adapt other open-source graphics libraries to achieve better rendering performance.
132
+
- Optimize memory usage.
133
+
- Improve performance.
134
+
135
+
-**Command-Line Tools**
136
+
-`lcui build --watch`: Continuously monitor file changes and automatically rebuild.
137
+
-`lcui dev-server`: Similar to webpack-dev-server, build LCUI applications as websites to allow developers to preview interfaces in the browser.
138
+
- Add build caching to rebuild only the modified files.
139
+
140
+
-**React Component Library**
141
+
Develop a component library for LCUI applications using TypeScript + React, inspired by some web frontend component libraries (e.g., [radix](https://www.radix-ui.com/), [shadcn/ui](https://ui.shadcn.com/)), and reuse components from the [LC Design](https://github.com/lcui-dev/lc-design) library.
142
+
143
+
-**Documentation**
144
+
- Tutorials
145
+
- Request for Comments (RFC)
140
146
141
147
## Contribution
142
148
@@ -152,20 +158,25 @@ Think LCUI is slow to update? there are many ways to [contribute](.github/CONTRI
152
158
LCUI has adopted the code of conduct defined by the Contributor Covenant. This document is used across many open source communities, and we think it articulates our values well. For more, see the [Code of Conduct](CODE_OF_CONDUCT.md).
153
159
154
160
## FAQ
161
+
**Is this a browser engine? Or a development library like Electron that integrates a browser environment?**
162
+
163
+
No, you can think of it as a traditional GUI development library that incorporates some web technologies.
155
164
156
-
**Is this a browser kernel? Or a development library like Electron that integrates the browser environment?**
165
+
**Why should I choose LCUI over other GUI libraries/frameworks?**
157
166
158
-
No, you can think of it as a traditional GUI development library that applied some Web technologies.
167
+
It's recommended to prioritize other GUI libraries/frameworks, as LCUI currently lacks:
159
168
160
-
**Since it supports the use of TypeScript language, why don't I use Electron?**
169
+
-**A rich set of built-in components:** You will need to build almost all the components in your interface from scratch, leading to higher development costs.
170
+
-**Efficient graphics rendering performance:** Interfaces with extensive and complex content may experience lag.
171
+
-**An animation system:** The lack of visual feedback affects the user interaction experience.
161
172
162
-
Yes, if you have web development experience and are willing to learn Electron, then Electron is obviously the best choice.
173
+
Given its current state, LCUI is best suited for fulfilling the author's personal needs or developing simple tools with minimal interface content and interactions.
163
174
164
-
Given LCUI's current capabilities, it is primarily suitable for meeting the author's personal needs and developing simple tools.
175
+
**Support development with TypeScript? If I know how to use it, why wouldn’t I just go with Electron?**
165
176
166
-
**Why should I choose LCUI over other GUI libraries/frameworks?**
177
+
Currently, TypeScript is primarily used to describe UI and resource dependencies, with only a few TypeScript features in use. You don’t need to study it in depth; in most cases, you can simply refer to example code for implementation.
167
178
168
-
We suggest that you prioritize other GUI libraries/frameworks.
179
+
If you have extensive web development experience and are willing to learn Electron, then Electron is clearly the better choice.
0 commit comments