libyue 的 MoonBit 封装:统一跨平台 GUI API,平台差异由库内部吸收,消费方无感
┌─────────────────────────────────────────────┐
│ Consumers (examples/*) │ Pure MoonBit, zero platform code
├─────────────────────────────────────────────┤
│ MoonBit library (yue/) │ Unified API: types, closures,
│ │ encoding, platform probing and
│ │ fallback — all absorbed here
├─────────────────────────────────────────────┤
│ Platform layer (shim/ + vendor/libyue) │ Thinnest C ABI (mechanical
│ │ translation) + libyue absorbing
│ │ win/linux/macos differences
└─────────────────────────────────────────────┘yue/ MoonBit library package
ffi.mbt Private extern "c" declarations (native backend only)
types.mbt Widget type definitions (Window/Label/View handles and wrappers)
app.mbt App lifecycle: init / run / quit
view.mbt Common View capabilities + callback registry (focus/enable/style/drag)
widgets.mbt Basic and composite widgets (Button/Entry/Slider/Picker/ComboBox/ProgressBar/Popover…)
browser.mbt Embedded browser (WebView)
menu.mbt Menu bar / popup menu / menu items
dialog.mbt File open/save dialogs
text_edit.mbt Multiline text editor
tab.mbt Tab control
table.mbt Table + data model bridge accepting MoonBit traits
painter.mbt 2D drawing (Painter / offscreen Canvas)
misc.mbt Group / Scroll / Separator / Clipboard / MessageBox
color.mbt Color utilities (pure MoonBit)
geometry.mbt Geometry value types (pure MoonBit)
error.mbt Structured errors
events.mbt Event system (mouse/keyboard, modifier normalization, VKEY constants, click tracking)
button.mbt Button / single-line Entry (Checkbox/Radio/Password)
props.mbt L1 props constructors (X::make / apply_style)
declarative.mbt L2 declarative nodes (Node/mount/vbox/label/…)
store.mbt L3 reactive Store (subscribe / map / bind_label)
tray.mbt Unified tray API
traybus/ Pure-MoonBit DBus + StatusNotifierItem protocol stack (Linux tray)
wire.mbt DBus wire format codec
bus.mbt Session bus connection, SASL EXTERNAL handshake, message dispatch
sni.mbt SNI protocol implementation
detect.mbt Desktop environment detection (XDG_CURRENT_DESKTOP)
icon.mbt Procedurally generated tray bitmap (no image assets or decoders)
sys.mbt fd-level syscall surface (all forwarded via shim)
shim/ C ABI wrapper layer (yue_mbt.cpp + include/yue_mbt.h) + CMakeLists
scripts/prepare.py Pinned-version libyue download + static library build (link flags are owned by prebuild.py)
scripts/prebuild.py Moon build hook: emits per-OS link config, propagated to all dependents
scripts/postadd.py Auto-triggered on `moon add` for the first native build
examples/ 15 examples: hello / editor / browser / drawing / table / widgets /
drag_source / drag_destination / floating_heart /
auto_height_edit / showcase / misc / advanced / events / layout
.agents/skills/ MoonBit skill librarysudo apt install build-essential cmake pkg-config \
libgtk-3-dev libpango1.0-dev libfontconfig1-dev libx11-dev \
libwebkit2gtk-4.1-devmoon run examples/helloirm https://cli.moonbitlang.com/install/powershell.ps1 | iexwinget install Kitware.CMake
winget install Microsoft.VisualStudio.2022.BuildTools -e --override "--quiet --wait --norestart --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"Start-Process -FilePath 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe' -ArgumentList 'modify','--installPath','"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"','--add','Microsoft.VisualStudio.Component.VC.ATL','--quiet','--norestart' -Verb RunAs -Waitcall "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
python3 scripts\prepare.py
moon run examples/hellomoon testInstall
Download ziplibyue 的 MoonBit 封装:统一跨平台 GUI API,平台差异由库内部吸收,消费方无感