使用 brew install 命令安装某些 cask 软件时,可以省略 cask 关键字,直接 brew install yaak 也能安装成功。
但在使用 brew bundle 命令时,必须在 Brewfile 中明确指定 cask 关键字:
# 正确写法
cask "yaak"
# 错误写法,会报错
brew "yaak"
原因:brew bundle 解析 Brewfile 时需要明确区分安装类型,而命令行 brew install 有自动检测能力。
11 notes found.
使用 brew install 命令安装某些 cask 软件时,可以省略 cask 关键字,直接 brew install yaak 也能安装成功。
但在使用 brew bundle 命令时,必须在 Brewfile 中明确指定 cask 关键字:
# 正确写法
cask "yaak"
# 错误写法,会报错
brew "yaak"
原因:brew bundle 解析 Brewfile 时需要明确区分安装类型,而命令行 brew install 有自动检测能力。
在 macOS 下配置如下参数,可以使用快捷键 ctrl+cmd来在任意位置拖拽窗口,而不是仅仅通过标题栏。
defaults write -g NSWindowShouldDragOnGesture YES

参考链接:https://www.reddit.com/r/MacOS/comments/k6hiwk/keyboard_modifier_to_simplify_click_drag_of/
Formula 用于从源码编译,Cask 用于分发预编译二进制。
Homebrew 团队希望统一 CLI 和 GUI 的安装体验,推动 brew install 作为唯一入口。因此 GoReleaser 官方推荐使用 Cask:
何时用 Cask:Go CLI 工具官方通常提供预编译二进制。
何时用 Formula:上游只提供源码、需要编译定制、或依赖本地库的软件。
自定义 tap 可同时包含两者:
# Formula
brew install zhaochunqi/homebrew-tap/<tool>
# Cask
brew install --cask zhaochunqi/homebrew-tap/<tool>
在所有的 git 全局配置中,配置:
# Configure Git to ensure line endings in files you checkout are correct for macOS
git config --global core.autocrlf input
或者在对应的 ~/.gitconfig 中配置:
[core]
autocrlf = input
但是 github 推荐在 windows 中将这个选项设置为 true,我查了下觉得在三端均采用 input 是非常合理的。
| 配置值 | 含义 |
|---|---|
| true | 双向转换: • 输入(commit)时:CRLF → LF • 输出(checkout)时:LF → CRLF |
| input | 仅输入时转换: • 输入(commit)时:CRLF → LF • 输出(checkout)时:不做转换(保留 LF) |
| false | 完全不转换 |
下载软件 Karabiner-Elements, 在 Complex Modifications 中点击 add prefined rule, 找到 Caps Lock to ESC and Ctrl 启用即可。
至此,macos/nixos/windows 的修改方法已经补全。
xcrun simctl status_bar booted override \
--time "9:41" \
--dataNetwork "wifi" --wifiMode active --wifiBars 3 \
--cellularMode active --cellularBars 4 \
--batteryState charged --batteryLevel 100

参考链接:https://jocmp.com/2025/08/08/demo-mode-for-ios-simulators/
在 x 上看到由于 macos 的一个安全检测机制显著降低了构建速度,可以通过添加到 Developer Tools 解决。

当你打开网络下载的 App 遇到提示 “应用已损坏,打不开” 或 “无法验证开发者” 时,通常是因为 macOS 的 Gatekeeper 安全机制拦截了该应用。
打开终端,执行以下命令即可修复:
# 语法:xattr -cr /Applications/你的应用名称.app
xattr -cr /Applications/jmcomic-downloader.app
提示:输入
xattr -cr后加一个空格,然后直接把 App 从“应用程序”文件夹拖入终端,路径会自动生成。
macOS 使用 扩展文件属性 (Extended File Attributes) 来标记文件的来源和元数据。
com.apple.quarantine):
当你使用浏览器(如 Chrome, Safari)下载文件时,macOS 会自动给文件加上一个名为 com.apple.quarantine (隔离) 的扩展属性。Gatekeeper 会检查这个属性,如果没有有效的开发者签名,系统就会拒绝运行并提示“已损坏”。xattr):xattr:管理文件扩展属性的工具。-c (Clear):清除所有扩展属性(包括隔离标记)。-r (Recursive):递归处理,应用到 .app 包内的所有文件。如果你只想移除隔离属性,而不影响其他元数据(如 Finder 的颜色标签等),可以使用更精准的 -d (Delete) 参数:
# 仅移除 quarantine 属性,保留其他属性
xattr -rd com.apple.quarantine /Applications/jmcomic-downloader.app
TL,DR: 在环境中添加 export RBW_TTY=$(tty) 即可解决
在 macos 下使用 rbw 来获取密钥时,经常会遇到需要至少 10s 以上的情况,但是在 linux 下并没有此现象,经过一番研究发现是 macos 系统机制问题导致的:rbw 在系统中会调用 ttyname(), 这个机制在 linux 下和 macos 下不同,在 linux 下只需要读取 /proc/self/fd/0 即可,但是在 macos 下,需要遍历,这可能要调用 /dev 目录下数百个设备文件。rbw 提供了一个机制,可以通过设定 RBW_TTY 这个环境变量跳过此检测。
➜ uname -m
arm64
➜ uname -s
Darwin 以 Bitwarden 为例:
ls -la /Applications/ | grep -i bitwarden
spctl -a -t exec -vvv /Applications/Bitwarden.app
输出如下:
/Applications/Bitwarden.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: 8bit Solutions LLC (LTZ2PFU5D6)
如果 source 是 Mac App Store, 那就是通过 app store 下载的,反之如果 source 是 Notarized Developer ID, 那就是通过 DMG 下载的。
这个命令是 macOS 系统中用于 Gatekeeper(门禁)安全机制的 spctl 工具的一个用法。具体解释如下:
spctl -a -t exec -vvv /Applications/Bitwarden.app
spctl
是 macOS 自带的命令行工具,全称是 System Policy Control,用于管理系统策略,尤其是 Gatekeeper 对应用程序的验证和授权。
-a(或 --assess)
表示“评估”(assess)指定的项目,即检查该应用是否被系统策略允许运行。
-t exec(或 --type execute)
指定评估类型为“可执行”(executable),即检查该应用是否可以被当作可执行程序运行。这是针对应用程序(.app)的标准类型。
-vvv
表示输出详细(verbose)信息,v 越多,输出越详细。-vvv 是非常详细的输出,会显示签名信息、证书链、权限来源等。
/Applications/Bitwarden.app
要评估的目标应用程序路径,这里是安装在应用程序文件夹中的 Bitwarden 密码管理器。
检查 Bitwarden.app 是否通过了 macOS 的 Gatekeeper 验证,是否被允许运行。
运行后,你会看到类似这样的输出(取决于实际情况):
/Applications/Bitwarden.app: accepted
source=Apple Notarized Developer ID
origin=Developer ID Application: Bitwarden Inc. (XXXXX)