空闲时零 CPU
屏幕上没有变化,就什么都不运行。空闲窗口不绘制任何帧,也不耗电。
用 Rust 或 TypeScript 构建原生桌面应用的 GPU 加速 GUI 框架。熟悉的布局、真正好用的文本、内置无障碍——应用空闲时零 CPU 占用。
屏幕上没有变化,就什么都不运行。空闲窗口不绘制任何帧,也不耗电。
渲染在 GPU 上进行,并且只重绘窗口中发生变化的部分。
Flexbox 与 CSS Grid,外加 Tailwind 风格的简写。会排网页,就会排窗口。
一大批可访问的无样式组件——菜单、对话框、弹出层、select、combobox、标签页、表格、树——随你定制。
选择、编辑、撤销、输入法、emoji、从右到左文字,表现与所有原生应用一致。
屏幕阅读器看到的是真实的按钮、列表和文本,无需额外代码。
百万行的表格与列表,滚动不掉帧。
真实窗口、原生菜单、对话框、托盘图标与系统通知——不是套壳浏览器。
quickgui dev 边改边跑;quickgui build 直接产出已签名、可安装的发布版本。
想用哪个都行——产出的是同一个原生应用,而且没有 webview。
struct Counter {
count: usize,
}
impl View for Counter {
fn render(
&mut self,
cx: &mut ViewContext<'_, Self>,
) -> impl IntoElement {
let increment = cx.listener("increment", |this, cx| {
this.count += 1;
cx.invalidate();
});
div()
.size_full()
.flex_col()
.items_center()
.justify_center()
.gap_3()
.child(text(format!("Count: {}", self.count)))
.child(
div()
.on_click(increment)
.px_4()
.py_2()
.rounded_lg()
.bg(Color::rgb8(24, 24, 27))
.text_color(Color::rgb8(250, 250, 250))
.hover(|s| s.bg(Color::rgb8(63, 63, 70)))
.child("Increment"),
)
}
}cargo add quickgui上面的计数器就是完整的 main.rs——直接复制进来。
cargo run --releasebunx @quickgui/cli init my-app
cd my-app
bun run devquickgui build --target darwin-arm64 \
--sign "Developer ID Application: Example (TEAMID)" \
--notarize quickgui-notary你会得到一个真实、已签名、自包含的应用,连安装包都有。