BrewUI 是 Homebrew 官方推出的 macOS 图形界面应用,用原生 SwiftUI 编写。它面向不习惯命令行的用户,把搜索、安装、更新、卸载 Homebrew 包的过程搬进窗口,同时展示底层执行的 brew 操作,不隐藏细节。数据来自 brew 命令行与 Homebrew JSON API。目前的服务标签页为只读,可查看已安装 formula 服务的状态、所有者、登录注册与日志路径,并按全部、运行中、已停止筛选;启停和配置仍需回到终端。应用提供社区多语言翻译,未翻译的文案回退英文,以 AGPL-3.0 开源,处于稳定并持续开发的状态。
brew install --cask homebrew-appHomebrew's official macOS GUI: making package management approachable for users who prefer graphical interfaces over Terminal, while maintaining complete transparency about underlying Homebrew operations.
Enable CLI-averse users to safely discover, install, update and manage Homebrew packages through a native SwiftUI interface that never hides what Homebrew is doing.
brew CLI and the Homebrew JSON APIbrew install --cask homebrew-app
Put Homebrew options in brew.env and relaunch BrewUI after changing them. Shell aliases and
exported variables do not configure the app. See Homebrew configuration.
After cloning:
./scripts/bootstrap
This installs Mint from Brewfile, runs mint bootstrap to build the SwiftFormat and SwiftLint versions pinned in Mintfile, enables repository git hooks and resolves Swift package dependencies for Homebrew.xcodeproj.
After bootstrap, commits automatically run checks on staged Swift files:
mint run swiftformatmint run swiftlint (with --fix, then strict validation)The hook also runs BrewUILint over the production tree. If unresolved lint violations remain, the commit is blocked and the hook prints the failures so you can fix and re-commit.
See development setup for signing configuration, conventions and testing for contributor guidance and architecture for system design.
Translations are community-sourced and a partial one is welcome: any string without a translation
falls back to English. Copy lives in one Localizable.xcstrings catalog per UI target, Homebrew/
for the window, sidebar and menus, and Resources/ in BrewUIComponents and each BrewFeature*
package. Edit a catalog in Xcode. See localisation for the reasoning
behind the steps below.
Homebrew/Localizable.xcstrings, press +, pick the language and translate at least one
string there. macOS only lists a language in the per-app picker under Applications in System
Settings when the app bundle ships it, so a language that exists only in a package catalog never
loads and scripts/localize verify fails. Adding it also records the language in knownRegions
in Homebrew.xcodeproj; commit that.verify fails on a blank.scripts/localize verify, then scripts/localize status to see how far the language has got.grep -rl "Run Again" Homebrew/Localizable.xcstrings Sources/*/Resources/Localizable.xcstrings.%@ or
%lld stands for.%1$@, %2$lld) if your language
needs a different order. Nothing checks this for you and a mismatch shows the wrong value at
runtime.1 package and
%lld packages). A language with more categories varies the %lld key by plural
(Vary By Plural in Xcode) and translates 1 package as well.scripts/localize verify.The key is the English text, so rewording a string makes a new entry rather than editing one.
bundle: #bundle and updating the comment: if
the meaning moved.scripts/localize sync, which an Xcode build does for you. It adds the new key and marks the
old one "extractionState" : "stale", keeping its translations..xcstrings changes with the code. CI compares the catalogs against the built sources
and fails if they have drifted.Stable and under active development.
The read-only Services tab shows installed formula services, their status, owner, login registration and service/log paths. Filter by All, Running or Stopped; start, stop and configure services in Terminal.
AGPL-3.0. If you reuse or adapt the source the AGPL terms apply, including the network-use clause.
内容由编辑整理,部分信息来自 GitHub 与项目官网,版权归原作者所有。发现错误?报告问题