LCUI

使用 C、XML 和 CSS 构建简单的跨平台桌面应用

快速上手 下载

当前版本:0.1.0 Alpha   ·   发布时间:2017-04-18   ·   GitHub 仓库   ·   创建者:lc-soft
Hello, World!
<?xml version="1.0" encoding="UTF-8" ?>
<lcui-app>
  <resource type="text/css">
    #text-hello {
      color: #8cc63f;
      padding: 25px;
      margin: 25px;
      border: 1px solid #000;
      background-color: #fafafa;
    }
    #btn-hello, #input-hello {
      margin: 0 0 0 25px;
    }
  </resource>
  <ui>
    <widget id="text-hello" type="textview">Hello, World!</widget>
    <widget id="input-hello" type="textedit">Hello, World!</widget>
    <widget id="btn-hello" type="button">Submit</widget>
  </ui>
</lcui-app>

概述

LCUI 是一个用 C 编写的图形界面开发库,你可以用 C、XML 和 CSS 创建简单的桌面应用,包括传统的 Win32 桌面应用、Windows 通用应用,目前主要支持 Windows 系统,后续版本将会完善对 Linux 系统的支持。

如果你在熟悉 C 语言的基础上还具备网页开发经验,那么在使用 LCUI 时会更容易上手,因为 LCUI 对 XML、CSS 以及元素布局等的处理方式和浏览器有一些相似的地方,你可以参考左侧的示例代码了解大致效果。

C语言编写

适用于体积较小且主要使用C语言实现的应用程序,以及偏向使用C语言编写简单应用的开发者。

XML + CSS

支持使用 XML 和 CSS 描述界面布局及样式,节省界面开发时间和维护成本。

跨平台

支持 Windows 和 GNU/Linux 系统,但目前对 GNU/Linux 系统的支持还不够完备。

样例展示

一些 LCUI 应用程序的效果图

受到地球上的一些人和公司的喜爱

LCUI 解决了许多复杂的问题,得益于 XML 和 CSS 支持,大大的减少了应用程序的界面开发与维护成本,我只需要为界面编写一次代码就能让我的应用在多个平台上呈现一致的界面效果,这使得我能够轻松的为我的应用开发适用于 Windows 通用平台(UWP)的版本,不用再去另外学习 UWP 应用的界面开发技术。目前主要是支持 Windows 平台,期待以后增加其它平台的适配。

参与贡献

开源项目的可持续发展仅靠作者一个人是远远不够的,如果你有意向,可以通过以下几种方式参与本项目

常见问题

诞生目的是什么?

主要为作者以后编写的程序提供图形界面支持,也就是用于作者的个人用途。

为何要重复造轮子?

因为那是别人的轮子,用别人的东西做自己的作品感觉没多大意思,而且那个时候也懒得浪费时间去学乱七八糟的东西,所以就自己造轮子,运用所学的东西去解决各种问题,毕竟独立开发过一个完整项目的人至少会比那些只会改改部分功能模块代码的螺丝钉强些。

我可以使用它么?

可以,但没多大用途,由于 LCUI 是作者的个人作品,因此请不要指望 LCUI 符合你的习惯和要求,如果要正式应用至你的软件,或着有很多其它需求,请选择主流GUI引擎/函数库。

我能用它做什么?

LCUI 支持 GNU/Linux 和 Windows 平台,你可以参考相关文档及样例截图来了解 LCUI 能够实现的功能。由于现在还不成熟,只能实现一些低级简单的效果。

与其它同类软件项目相比,有什么优势?

没有明显优势,LCUI的诞生并不是为了与其它GUI引擎/函数库竞争,也不是为了超越或取代某GUI引擎/函数库。

支持哪些编程语言?

LCUI 是 C 语言编写的,因此,可以在 C 语言或 C++ 语言中使用 LCUI。考虑到现阶段的情况,为了减少项目维护的工作量,暂不考虑提供其它语言的支持。

为何要选择用 C 语言开发 LCUI?

作者在开发 LCUI 前能正常应用于开发的编程语言只有 C,再加上其它一些因素的影响,例如:移植到硬件条件有限且对运行效率有要求的设备环境下(如:树莓派)、推翻某些人对C语言的肤浅认知,等等。因此,LCUI 在较长的时间内会使用C作为主要开发语言。

有丰富的文档吗?

没有,目前只有一小部分教程,写文档是一件很麻烦的事情,写完后还需要保持更新,每当项目内部功能有所改动时都需要更新文档。如果你需要更多文档的话,可以在 Patreon 上捐赠支持作者达成 512美元/月 的小目标,这样作者就会花大部分时间在文档编写工作上。

为什么要开放源代码?

因为现在作者对项目有绝对的主导权,不用担心有人会创建一个能抢占主导权且更具影响力的衍生版本,也不用担心有人会拿源代码干些不道德的事情,毕竟有时间、有能力且对这个项目有兴趣的人不多,再加上一些有意或无意留下的功能缺陷,能有时间折腾的人就更少了。开放源代码也可以满足作者的展现欲,刷点知名度和存在感,所以是利大于弊的。

是否有许可限制?

LCUI 是一个自由软件项目,基于 GNU通用公共许可协议 发布,该许可协议要求 LCUI 及 LCUI 衍生软件无论以何种形式发布,都必须确保收受者能收到或得到源码。