buffr
受 Vim 启发的浏览器。原生,GPU 加速。Rust + CEF。
基于
Chromium Embedded Framework 构建的
Modal 浏览器,通过
cef Rust crate 实现。Vim 键位绑定由
hjkl-engine 提供支持。
状态
Pre-1.0,每次版本升级都会发布带标签的版本——当前版本以
最新 release 为准。
多标签浏览;弹出窗口(window.open、OAuth)在专用的
buffr 窗口中渲染,具有只读地址栏并保留 window.opener;
target="_blank" 和 Ctrl+click 在新标签页中打开;双指水平滑动
导航浏览器历史记录;vim 模态引擎(hjkl-engine)已连接用于页面模式
分发和插入模式文本编辑;历史记录 / 下载 / 书签 /
权限 / 缩放数据层已连接并持久化到 SQLite。参见
CHANGELOG.md。
支持的平台
每个 release 发布以下二进制工件:
| OS | Architecture | Format |
|---|---|---|
| Linux | x86_64, aarch64 | .deb, .rpm, .tar.gz |
| macOS | arm64 (Apple Silicon) | .dmg |
| Windows | x64, arm64 | .msi (per-user) |
Linux 需要 Wayland 会话。 不支持 X11。GNOME 45+、KDE 6、 Sway、Hyprland 以及其他现代合成器默认都运行 Wayland。如果
XDG_SESSION_TYPE不是wayland,buffr 将退出并显示清晰的错误信息。
为什么不支持 Intel Mac(x86_64-apple-darwin)?
我们在 0.1.14 中移除了 Intel Mac 构建。Apple 已于 2023 年停止销售 Intel Mac,且 GitHub Actions macos-13 运行器池竞争非常激烈——发布标签通常需排队 1–2 小时等待槽位,从而阻塞整个发布流水线(publish-github-release 在 .github/workflows/ci.yml 中对每个二进制分支进行门控)。其成本与用户数量不成比例,因此我们将其移除。
如果你使用的是 Intel Mac 并希望运行 buffr,请在自己的机器上从源码构建——该工作区针对 x86_64-apple-darwin 可干净构建,支持仅从发布流水线中缺失,而非从代码中缺失。
应用
| 二进制文件 | 角色 |
|---|---|
buffr | 监督者 / 入口点。生成 buffr-app,在崩溃或 UI 挂起时重启它。 |
buffr-app | 浏览器本身。拥有窗口、CEF 生命周期、chrome、键位映射、存储。 |
buffr-helper | CEF 子进程辅助程序(渲染器 / GPU / 实用进程)。 |
Crates
| Crate | 角色 |
|---|---|
buffr-engine | BrowserEngine trait、引擎路由、内部 buffr:// 服务器。 |
buffr-cef | CEF 集成:BrowserHost、多标签页宿主、OSR、处理器、IPC。 |
buffr-core | 引擎无关的核心:提示、编辑模式、更新、崩溃报告器、… |
buffr-modal | Vim 页面模式 FSM、键映射 trie、hjkl-engine 编辑模式桥接。 |
buffr-ui | 状态栏、标签条、输入栏、权限/确认提示。 |
buffr-config | TOML 配置加载器、验证器、热重载监视器。 |
buffr-store | 位于五个存储之后的共享 SQLite 打开/调优 + 迁移运行器。 |
buffr-history | 基于 SQLite 的浏览历史(frecency 搜索)。 |
buffr-bookmarks | 基于 SQLite 的书签存储,支持标签 + Netscape 导入。 |
buffr-downloads | 基于 SQLite 的下载跟踪;CEF 处理器集成。 |
buffr-permissions | 基于 SQLite 的按源权限存储(摄像头、麦克风、地理位置、…)。 |
buffr-zoom | 基于 SQLite 的按域名缩放级别持久化。 |
buffr-view-source | buffr-src: 页面的语法高亮 + HTML 渲染。 |
所有成员均设置 publish = false —— 此处没有任何内容发布到 crates.io,且
注册表上的 buffr 名称已被撤回。请在 workspace 内部通过路径依赖使用,
或在外部通过 git 依赖使用。
实验性,位于工作区之外。 crates/buffr-webkit(一个 WPE WebKit
后端)和 apps/buffr-poc(基于其上的 Wayland 子表面嵌入概念验证)位于根目录 Cargo.toml 中的 exclude 列表里。它们
仅限 Linux,需要 wpewebkit-2.0 系统软件包,并且不由 CI 构建。
请独立构建它们:
cargo build --manifest-path crates/buffr-webkit/Cargo.toml
cargo build --manifest-path apps/buffr-poc/Cargo.toml
安装
macOS (Homebrew)
brew install --cask kryptic-sh/tap/buffr
Arch Linux(AUR)
paru -S buffr-bin
每个标签的预构建软件包,位于 发布页面:
| 平台 | 资产 | 架构 |
|---|---|---|
| macOS | .dmg | arm64 |
| Windows | .msi | x64, arm64 |
| Debian / Ubuntu | .deb | amd64, arm64 |
| Fedora / RHEL | .rpm | x86_64, aarch64 |
| Linux (generic) | .tar.gz | x86_64, aarch64 |
| Snap | .snap | amd64, arm64 |
| Flatpak | .flatpak | amd64, arm64 |
注意:
cargo install buffr不是 受支持的安装路径 — 请参阅 下方 构建 中的说明。
构建
# Vendor the CEF binary distribution (~500 MB extracted).
cargo xtask fetch-cef
# Build the workspace. `default-members` covers all three binaries
# (buffr, buffr-app, buffr-helper), which the next step needs.
cargo build
# Run. The workspace has three binaries, so bare `cargo run` is
# ambiguous ("could not determine which binary to run") — name one.
# `buffr` is the supervisor; it finds `buffr-app` next to itself.
cargo run --bin buffr
# Or skip supervision and run the browser directly:
cargo run --bin buffr-app
注意:
cargo install buffr不是受支持的安装路径。每个 工作区成员都设置了publish = false,并且 crates.io 上的buffr名称已被 撤回,因此cargo install没有任何内容可获取。CEF 应用还需要在二进制文件旁边 放置一个大型运行时负载(libcef、.pak资源、语言区域、 沙箱辅助程序),而cargo install无法放置这些内容。请从 github.com/kryptic-sh/buffr/releases 获取预构建 版本,或按照上述说明从源代码构建。
有关完整的前置条件、平台
矩阵和 CEF 路径覆盖,请参阅 docs/site/dev.md。
已知限制
- 不支持图像/多媒体剪贴板粘贴。 Ctrl+V 文本粘贴 有效,但将图像或其他非文本剪贴板内容粘贴到网页中 是无效操作。这是 CEF 离屏渲染 (OSR) 的限制,并非 buffr 实现特有的问题。已在 #19 中跟踪。
贡献
目前还没有 CONTRIBUTING.md —— 请提交 issue 或 PR。在
推送之前,本地门槛:cargo fmt --all、cargo clippy --all-targets -- -D warnings、
cargo test。请参阅 docs/site/dev.md。
许可证
MIT。请参阅 LICENSE。