这是一个争夺“特性蔓延副业世界记录”的项目,是对另一个“特性蔓延副业世界记录”(MII Apple //e 模拟器)的补充。它是一个复制了许多 Macintosh Classic“工具箱”API 的库,虽不是完整实现,但足以制作一些简单应用和 MII 模拟器所需的部分。
- 为何开发:想要为 MII 开发一个无大量依赖的 UI 库,不喜欢 Nuklear 立即模式 UI 的外观和局限性,也不喜欢其“布局”引擎,怀念过去精心设计的 UIs,且已有可用于制作自己库的部分代码,还喜欢制作自己的玩具。
- 能做什么:有类似 Macintosh Toolbox 的经典“管理器”,设计用于绘制到 ARGB 缓冲区,可复制到不同地方,如 MII 中是 OpenGL 纹理,示例文件夹中通过 XCB“共享”像素图复制到 X11 窗口,输出必须是 ARGB,可“矢量化”渲染但目前不需要。能创建窗口、绘制到窗口、有最多 15 层可进行裁剪等操作,有菜单管理器(包括菜单栏、菜单、快捷键等)、控制管理器(按钮、复选框等)、列表管理器(显示文件名等)、警报(典型“取消”“确定”警报)、标准文件对话框(有打开文件等功能)等。
- 与原项目的区别:外观上类似 MacOS8/9 去除灰度部分,对话框弹出菜单更像 OS8 ,滚动条更像 GS/OS ;API 上完全异步,基于“回调”,不再轮询,概念上更简单,所有元素分为窗口和控件。
- 依赖:外部依赖仅为libpixman,用于像素操作和裁剪,其他部分已包含在源代码中,如libcg(小型抗锯齿渲染器)、stb_truetype.h(加载 TrueType 字体库)、stb_ttc.h(扩展的字体字典库)。
- 如何构建:使用简单的 Makefile,在根目录执行“make”即可构建库及测试/演示/样本,运行“mui_shell”演示需安装 xcb xcb-shm xcb-randr xkbcommon-x11 。
- Nvidia 驱动问题:使用 Nvidia 二进制驱动时需在/etc/X11/xorg.conf 文件的“Device”中添加“Option "AllowSHMPixmaps" "1"”。
- 如何使用:最好通过修改mui_shell.c和mui_widgets_demo.c来开始,mui_shell 会将 mui_widgets_demo.so 作为插件加载并自动重新加载,可使用“make watch”在终端标签中自动构建和运行,方便快速开发。
- 常见问题(FAQ):没有暗模式、不可主题化、没有透明窗口和立方体效果、菜单不是粘性的、不使用 trendy 工具(cmake、meson、ninja、autotools)、没有绑定到新语言(Rust、Go、Python)、不使用 trendy 框架(GTK、QT、SDL、Wayland)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。