ITADN
kryptic-sh/buffr · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

buffr

受 Vim 启发的浏览器。原生,GPU 加速。Rust + CEF。

CI release License: MIT Website

基于 Chromium Embedded Framework 构建的 Modal 浏览器,通过 cef Rust crate 实现。Vim 键位绑定由 hjkl-engine 提供支持。

状态

Pre-1.0,每次版本升级都会发布带标签的版本——当前版本以 最新 release 为准。 多标签浏览;弹出窗口(window.open、OAuth)在专用的 buffr 窗口中渲染,具有只读地址栏并保留 window.openertarget="_blank" 和 Ctrl+click 在新标签页中打开;双指水平滑动 导航浏览器历史记录;vim 模态引擎(hjkl-engine)已连接用于页面模式 分发和插入模式文本编辑;历史记录 / 下载 / 书签 / 权限 / 缩放数据层已连接并持久化到 SQLite。参见 CHANGELOG.md

支持的平台

每个 release 发布以下二进制工件:

OSArchitectureFormat
Linuxx86_64, aarch64.deb, .rpm, .tar.gz
macOSarm64 (Apple Silicon).dmg
Windowsx64, 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-helperCEF 子进程辅助程序(渲染器 / GPU / 实用进程)。

Crates

Crate角色
buffr-engineBrowserEngine trait、引擎路由、内部 buffr:// 服务器。
buffr-cefCEF 集成:BrowserHost、多标签页宿主、OSR、处理器、IPC。
buffr-core引擎无关的核心:提示、编辑模式、更新、崩溃报告器、…
buffr-modalVim 页面模式 FSM、键映射 trie、hjkl-engine 编辑模式桥接。
buffr-ui状态栏、标签条、输入栏、权限/确认提示。
buffr-configTOML 配置加载器、验证器、热重载监视器。
buffr-store位于五个存储之后的共享 SQLite 打开/调优 + 迁移运行器。
buffr-history基于 SQLite 的浏览历史(frecency 搜索)。
buffr-bookmarks基于 SQLite 的书签存储,支持标签 + Netscape 导入。
buffr-downloads基于 SQLite 的下载跟踪;CEF 处理器集成。
buffr-permissions基于 SQLite 的按源权限存储(摄像头、麦克风、地理位置、…)。
buffr-zoom基于 SQLite 的按域名缩放级别持久化。
buffr-view-sourcebuffr-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.dmgarm64
Windows.msix64, arm64
Debian / Ubuntu.debamd64, arm64
Fedora / RHEL.rpmx86_64, aarch64
Linux (generic).tar.gzx86_64, aarch64
Snap.snapamd64, arm64
Flatpak.flatpakamd64, 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 --allcargo clippy --all-targets -- -D warningscargo test。请参阅 docs/site/dev.md

许可证

MIT。请参阅 LICENSE