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。修改方式如下:
- 通过命令
orb config docker
修改 - 直接编辑
~/.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的前景。
简单花点时间,借鉴了别人的配置,也更换了图标,顺眼不少,参考如下:
- https://geekbb.xlog.page/Alacritty?locale=zh
- https://juejin.cn/post/7199193212777447484
- https://blog.csdn.net/yuoveyu/article/details/128388313
yml配置文件转换成toml,使用 alacritty migrate。
macos下如果找不到alacritty 命令,使用绝对路径:
/Applications/Alacritty.app/Contents/MacOS/alacritty migrate
然后删除yml文件,只保留toml即可。
还可以进一步搭配tmux,来弥补没有标签管理和session会话的劣势。