LCUI

LCUI

轻量级C语言跨平台GUI开发库

LCUI是一款轻量级的C语言图形用户界面库,专注于探索创新的UI开发方法。它支持跨平台开发,提供自定义绘制组件和内置CSS引擎,同时融合了TypeScript、JSX和React等现代前端技术。LCUI特别适合开发小型桌面应用和学习GUI编程,为开发者提供了便捷的工具和灵活的开发体验。

LCUI用户界面C语言库跨平台CSS引擎Github开源项目
<p align="center"> <a href="http://lcui.org/"> <img src="https://lcui.lc-soft.io/static/images/lcui-logo-lg.png" alt="" width=72 height=72> </a> <h3 align="center">LCUI</h3> <p align="center"> 用于构建用户界面的C语言库 </p> <p align="center"> <a href="https://github.com/lc-soft/LCUI/actions"><img alt="GitHub Actions" src="https://yellow-cdn.veclightyear.com/0a4dffa0/63272c5b-fa89-4cd0-8e94-82b71b5c2742.svg"></a> <a href="https://codecov.io/gh/lc-soft/LCUI"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d7e46586-6dee-49cd-bf90-b2a72e72fd16.svg" /></a> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0b98789e-80ab-4059-a359-3e1a814968df.svg" alt="仓库大小"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c43ceda1-8b43-47bd-9971-5276d660c80d.svg" alt="代码大小"> </p> </p>

目录

<!-- TOC --> <!-- /TOC -->

简介

中文版说明文档

LCUI 是一个用 C 语言编写的用于构建图形用户界面的库。它的目标是探索和实践开发用户界面的新方式,特点是体积小、易于使用,并提供便捷的开发工具,帮助开发者快速创建带有图形用户界面的桌面应用程序。

LC 源自作者名字的首字母。该库最初是为了帮助作者开发小项目和获取开发经验而设计的。然而,作者在充满 C/C++ 专家的就业市场中并未获得竞争优势,因此不得不从事 Web 前端开发工作。因此,LCUI 现在倾向于整合来自 Web 前端领域的技术。

主要特性

  • 跨平台: 支持 Windows 和 Linux。
  • 完全自绘组件: 组件在多个平台上保持一致的外观和行为。
  • 内置 CSS 引擎: 支持使用 CSS 定义用户界面的样式和布局,使具有 Web 开发经验的人更容易上手。
  • 提供现代开发工具: 这些工具允许你使用 TypeScript 语言配合 JSX 语法、React 库以及其他 Web 前端技术来编写用户界面。

功能概览

你可以从以下截图了解 LCUI 应用程序的开发体验:

预览

  • React 风格的组件开发: 使用 TypeScript 编写 UI 配置文件。结合 TypeScript、JSX 语法和 LCUI React 库的优势,你可以简洁地描述界面结构、资源依赖、组件状态、数据绑定和事件绑定。
  • 多种样式表编写方式: Tailwind CSSCSS ModulesSass 和全局 CSS。
  • 基于文件系统的路由: 以目录形式组织应用程序页面,每个页面对应一个目录。目录的路径作为该页面的路由。借助内置的应用程序路由器,你可以轻松实现页面切换和导航,无需手动配置路由。
  • 用户友好且现代的图标库: 图标来源于 fluentui-system-icons 库,经过部分定制以适应 LCUI 的特性,提供类似的使用模式。
  • 命令行开发工具: 运行 lcui build 命令可预处理应用程序目录内的配置文件,然后生成相应的 C 源代码和资源文件。

架构

随着时间的推移,LCUI 已经建立在各种库的基础之上:

  • lib/yutil:提供常用数据结构和函数的实用工具库。
  • lib/pandagl:PandaGL(Panda Graphics Library),提供字体管理、文本布局、图像 I/O、图形处理和渲染功能。
  • lib/css:CSS 解析器和选择器引擎,提供 CSS 解析和选择功能。
  • lib/platform:平台库,提供跨平台统一的系统相关API,包括消息循环、窗口管理、输入法等。
  • lib/thread:线程库,提供跨平台的多线程能力。
  • lib/timer:定时器库,提供定期执行任务的能力。
  • lib/ui:UI核心库,提供UI组件管理、事件队列、样式计算、绘制等基本UI能力。
  • lib/ui-xml:XML解析库,提供从XML文件内容创建UI的能力。
  • lib/ui-cursor:光标库,提供光标绘制能力。
  • lib/ui-server:UI服务器,提供将UI组件映射到系统窗口的能力。
  • lib/ui-router:路由管理器,提供路由映射和导航能力。
  • lib/ui-widgets:预定义基础组件库,提供文本、按钮、滚动条等基本UI组件。
  • lib/worker:工作线程库,提供简单的工作线程通信和管理能力。

快速开始

在开始之前,你需要在电脑上安装以下软件:

  • Git:版本控制工具,用于下载示例项目的源代码。
  • XMake:构建工具,用于构建项目。
  • Node.js:JavaScript运行时环境,用于运行LCUI命令行开发工具。

然后,在命令行窗口中运行以下命令:

# 安装LCUI命令行开发工具 npm install -g @lcui/cli # 创建LCUI应用项目 lcui create my-lcui-app

之后按照命令提供的提示进行操作。

文档

教程

  • 待办事项列表:学习LCUI的基本概念和用法,以及如何使用它构建界面并实现状态管理、界面更新和交互。
  • 渲染布料动画:将现有布料模拟程序的JavaScript源代码改写成C语言,并使用cairo图形库进行布料渲染。然后应用LCUI来实现布料动画播放和交互。
  • 浏览器:参考网页浏览器,使用LCUI实现类似的界面结构、布局、样式和多标签页管理功能。利用LCUI的路由管理功能实现多标签页的页面状态管理和导航,以及简单的文件浏览页面。(此教程已过时,欢迎贡献更新)

参考资料

LCUI和相关项目的一些功能受到其他开源项目的启发。你可以参考它们的文档来了解基本概念和用法。

路线图

以下是即将进行的项目:

  • LCUI
    • 改进API设计。
    • 增强CSS引擎,支持inherit!important和转义字符。
    • 添加SDL后端以替代lib/platform库。
    • 适配其他开源图形库以提高渲染性能。
  • 命令行工具
    • lcui build --watch:持续监视文件变化并自动重新构建。
    • lcui dev-server:类似webpack-dev-server,将LCUI应用构建为网站,供开发者在浏览器中预览界面。
    • 添加构建缓存,只重新构建已更改的文件。
  • React组件库:参考一些Web前端组件库(如radixshadcn/ui),开发适用于LCUI应用的TypeScript + React组件库,复用LC Design组件库中的组件。
  • 文档
    • 教程
  • 意见征询(RFC)

贡献

认为 LCUI 更新太慢?有很多方式可以为 LCUI 做出贡献

LCUI 采用了 Contributor Covenant 定义的行为准则。这份文档在许多开源社区中被广泛使用,我们认为它很好地阐述了我们的价值观。更多信息请参见 行为准则

常见问题

这是一个浏览器内核吗?或者是像 Electron 那样集成了浏览器环境的开发库?

不是,你可以将它视为一个应用了一些 Web 技术的传统 GUI 开发库。

既然支持使用 TypeScript 语言,为什么我不使用 Electron 呢?

是的,如果你有 Web 开发经验并愿意学习 Electron,那么 Electron 显然是最佳选择。

考虑到 LCUI 当前的能力,它主要适合满足作者的个人需求和开发简单的工具。

为什么我应该选择 LCUI 而不是其他 GUI 库/框架?

我们建议你优先考虑其他 GUI 库/框架。

CSS 支持情况如何?

以下是支持的 CSS 特性列表。打勾的表示已支持(但不意味着完全支持)。未列出的属性默认不支持。

<details> <summary>CSS 特性覆盖范围</summary>
  • at 规则
    • @font-face
    • @keyframes
    • @media
  • 关键字
    • !important
  • 选择器
    • *
    • type
    • #id
    • .class
    • :hover
    • :focus
    • :active
    • :first-child
    • :last-child
    • [attr="value"]
    • :not()
    • :nth-child()
    • parent > child
    • a ~ b
    • ::after
    • ::before
    • ...
  • 单位
    • px
    • dp
    • sp
    • pt
    • %
    • rem
    • vh
    • vw
  • 属性
    • top, right, bottom, left
    • width, height
    • visibility
    • display
      • none
      • inline-block
      • block
      • flex
      • inline-flex
      • inline
      • grid
      • table
      • table-cell
      • table-row
      • table-column
      • ...
    • position
      • static
      • relative
      • absolute
      • fixed
    • box-sizing
      • border-box
      • content-box
    • border
    • border-radius
    • background-color
    • background-image
    • background-position
    • background-cover
    • background
    • pointer-events
    • font-face
    • font-family
    • font-size
    • font-style
    • flex
    • flex-shrink
    • flex-grow
    • flex-basis
    • flex-wrap
    • flex-direction
    • justify-content
      • flex-start
      • center
      • flex-end
    • align-items
      • flex-start
      • center
      • flex-end
      • stretch
    • float
    • transition
    • transform
    • ...
</details>

许可证

LCUI 项目基于 MIT 许可证 发布。

编辑推荐精选

问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多