跳转到内容

Mac环境配置

OrbStack

OrbStack是很好用的Mac下的开发工具,可以用来替换件Docker Desktop和Linux虚拟机。目前个人版使用免费。

一些介绍和使用教程:

OrbStack 的主要功能和优势

OrbStack 是一款专为 macOS 设计的轻量级工具,旨在提供快速、高效且用户友好的 Docker 容器和 Linux 虚拟机运行体验。它被认为是 Docker Desktop 和传统虚拟机的优秀替代品。

  • 更快、更轻、更简单: 相比 Docker Desktop 和传统虚拟机,OrbStack 在性能、资源占用和易用性方面都更具优势。
  • 提升开发效率: 快速启动、高性能和便捷的网络配置,可以显著提升开发效率。
  • 节省资源: 低资源占用,让你的 Mac 运行更流畅,电池更持久。
  • 无缝迁移: 完美兼容 Docker 现有工作流程,迁移成本低。

OrbStack 是一款强大的 macOS 开发工具,特别适合需要频繁使用 Docker 和 Linux 环境的开发者。

orb修改配置

Mac下面使用orbstack方式安装docker/docker compose。修改方式如下:

  1. 通过命令orb config docker修改
  2. 直接编辑 ~/.orbstack/config/docker.json修改

改完重启docker:

bash
orb restart docker

最新可用dockerhub代理:https://github.com/dongyubin/DockerHub

F5-TTS

安装参考:

重点步骤:

bash
git clone https://github.com/SWivid/F5-TTS.git
cd F5-TTS
conda create -n f5tts python=3.10 -y
conda activate f5tts
pip install -r requirements.txt
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download SWivid/F5-TTS --local-dir ckpts/
huggingface-cli download charactr/vocos-mel-24khz --local-dir ckpts/vocos
alias f5="cd /Users/cela/projects/F5-TTS && f5-tts_infer-gradio --port 7860 --host 0.0.0.0"

Mac窗口与快捷键管理

bash
brew install loop
brew install mac-mouse-fix
brew install --cask mos
brew install --cask sanesidebuttons

loop很好用,窗口管理用这个就可以了。

mos和mac-mouse-fix可以模拟触摸板滚动,mac-mouse-fix还可以设置鼠标各个键的快捷键。

如果鼠标侧键的功能没有了,就用sanebuttons。

一般人推荐loop和mac-mouse-fix。

brew切换node版本

当前是23版本,太高了,有些还不支持,需要降级到22版本。

bash
node -v

brew search node

brew install node@22

brew unlink node && brew link --overwrite --force node@22

echo 'export PATH="/opt/homebrew/opt/node@22/bin:$PATH"' >> ~/.zshrc

source ~/.zshrc

清理Mac脚本cleanmac

Clean your macOS with a script, not an expensive app.

项目主页:https://github.com/hkdobrev/cleanmac

禁止appstore更新

参考教程:https://sysin.org/blog/disable-mac-app-store-update/

禁止macos更新

## Mac Software Update (sysin)
127.0.0.1 swdist.apple.com
127.0.0.1 swscan.apple.com
127.0.0.1 swcdn.apple.com  #optional, download url
127.0.0.1 gdmf.apple.com
127.0.0.1 mesu.apple.com
127.0.0.1 xp.apple.com
127.0.0.1 gsp64-ssl.ls.apple.com

命令行模糊搜索工具fzf

项目主页:https://github.com/junegunn/fzf

常用于在终端中模糊搜索文件、进程、网络连接等。

结合管道使用:

bash
ps -ef | fzf
history | fzf

使用**作为trigger:

bash
unset **<Tab>
unalias **<Tab>

其他用法:

bash
bindkey | fzf # 搜索当前 shell 里所有绑定了的快捷键

fzf --preview "bat {} --color=always" # 快速预览当前以及子目录下文件内容,不在乎颜色的话 bat 可以换成 cat

cd $(find . -type d | fzf) # 可选择进入某个深层子目录
cd $(fd --type directory | fzf) # 与上面类似,不过使用更便捷的 fd

目录跳转工具z.sh

项目主页:https://github.com/rupa/z

快速跳转到过去或最近经常访问的目录的命令行工具。它会根据你使用的频率去区分你想要跳转的目录,只需要输入路径的部分字段,它就可以预测、补全你想要跳转的路径。z scr可以帮我跳转到~/scripts目录。

mac兼容资源工具macmon

很好用的开源监控mac资源实时使用的工具。

项目主页:https://github.com/vladkens/macmon

brew安装:

bash
brew install macmon

其他不少类似工具要求sudo权限,或者像htop那种不够好用。

mac删除软件图标

以删除python图标为例,打开Terminal:

bash
sqlite3 $(find /private/var/folders \( -name com.apple.dock.launchpad -a -user $USER \) 2> /dev/null)/db/db "DELETE FROM apps WHERE title='python';" && killall Dock

title ="" 输入你实际要删除软件的名字,比如python

亲测有效,用此方法删掉了python的残留app图标。

提示

可以制作成脚本,需要的时候直接运行脚本即可。

输入法指示器

使用 Input Source Pro,自动切换输入法加上适时的提示,让每一次输入都游刃有余。

mac刷新dns

bash
sudo killall -HUP mDNSResponder

提示

可以制作成脚本,需要的时候直接运行脚本即可。

Finder分栏设置默认宽度

苹果电脑 Mac 系统中最重要的功能:Finder 有四种显示模式:图标、列表、分栏、Cover Flow,很多 Mac 用户使用第三种分栏模式。

但 Finder 的默认分栏宽度比较窄,文件名长的话可能显示不全。每次拖拽调整分栏宽度后,一关闭,下次打开 Finder,分栏宽度又回到默认值了。

设置 Finder 分栏的默认宽度很简单,按住 option 键,再用鼠标拖动调整分栏宽度,以后再关闭 Finder 后重新打开,Finder 的宽度也不会变回去了。

brew常用命令

安装软件:
brew install <package-name>

卸载软件:
brew uninstall <package-name>

搜索软件:
brew search <package-name>

更新指定软件:
brew upgrade <package-name>

查看已安装的软件列表:
brew list

更新Homebrew本身:
brew update

清理所有包的旧版本:
brew cleanup

清理指定包的旧版本:
brew cleanup <package-name>

预览可清理的旧版本包(不执行实际清理):
brew cleanup -n

列出可以更新的软件包:
brew outdated

更多参考:

brew切换国内源

修改.zshrc:

bash
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"
export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"
source ~/.zshrc
brew update

参考:

mac安装llvm clang

使用brew 安装:

bash
brew install llvm

If you need to have llvm first in your PATH, run:

bash
echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> ~/.zshrc

For compilers to find llvm you may need to set:

bash
export LDFLAGS="-L/usr/local/opt/llvm/lib"
export CPPFLAGS="-I/usr/local/opt/llvm/include"

mac开启和停用ipv6

查看mac所有网络接口

bash
sudo networksetup -listallnetworkservices

Wi-Fi和以太网禁用IPv6

bash
sudo networksetup -setv6off Wi-Fi
sudo networksetup -setv6off Ethernet

启用ipv6

bash
sudo networksetup -setv6automatic Ethernet
sudo networksetup -setv6automatic Wi-Fi

提示

可以制作成脚本,需要的时候直接运行脚本即可。

mac修改hosts的权限

方式一,通过finder修改

可以参考这篇进行尝试。

方式二,通过chmod修改

这是stream++ 官网建议的修改方式:

bash
sudo chmod +a 'user:xxx:allow read' /etc/hosts
sudo chmod +a 'user:xxx:allow write' /etc/hosts

xxx为当前的非root用户。

这种貌似有问题,临时可以,过一会又不行了。

方式三,通过chflags修改

bash
sudo chflags nouchg /etc/hosts
sudo chflags noschg /etc/hosts
sudo chflags -hv noschg /etc/hosts

参考:

mac电源管理命令

电源管理设置,查看当前配置:

bash
sudo pmset -g

禁止网络接口休眠:

bash
sudo pmset -a sleep 0

这个命令会禁用所有网络接口的节能模式,-a 参数表示对所有电源模式生效。

恢复电源默认设置:

bash
sudo pmset restore

系统配置文件:

/Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist

参数解释:https://zhuanlan.zhihu.com/p/159468988

禁止Spotlight对移动设备索引

在很多时候Spotlight的确很方便,他可以帮忙快速地找到计算机中的文件或资源。他是利用事先做好的文件索引进行快速查找的。

但我插入一个移动硬盘或一个U盘他也要索引起来,这就不是我想要的了,因为移动存储设备一般都是只插入一下使用完毕了弹出。

而且做索引的时候会在移动存储设备中生成.fseventsd 和 .Spotlight-V100文件夹,如果文件很多也可能占用较多空间,完全没必要。

禁用很简单,就是在移动存储设备的根目录下建立一个名为 .metadata_never_index的空文件

可以在终端下切换到这个目录,然后执行touch .metadata_never_index

轻量级终端 Alacritty Terminal

简洁,快速,稳定的Terminal

之前在Mac上一直使用iTerm2,这款应该使用的时间最长,后来又换了Warp,配合zsh,都算是不错的体验,但都说不上完美,尤其是性能这个点,性能最好的替代品,alacritty应该就是暂时的答案了,56K的star属实有点惊人。Rust开发的,性能确实给了惊喜;期待这款Terminal的前景。

简单花点时间,借鉴了别人的配置,也更换了图标,顺眼不少,参考如下:

yml配置文件转换成toml,使用 alacritty migrate。

macos下如果找不到alacritty 命令,使用绝对路径:

/Applications/Alacritty.app/Contents/MacOS/alacritty migrate

然后删除yml文件,只保留toml即可。

还可以进一步搭配tmux,来弥补没有标签管理和session会话的劣势。