原文出處:如何優雅地在 Mac 上使用 dotfiles?html
若是不清楚什麼是 dotfiles 的話,能夠參閱善用 dotfiles 個人化本身的工做環境:java
dotfiles,顧名思義,就是檔案名稱以 . (dot) 為 prefix 的檔案通稱,如果您的做業系統是 Mac OS X 或是 Linux 這類 *nix-based 的做業系統,通常來說在視窗環境中是看不到這些檔案的,因為對系統來說,他們是所謂的隱藏檔,這些檔案有一些共通點,那就是他們一般用來儲存一些個人化的設定或是自定的拓展功能,以符合使用者自己的使用需求與習慣,有了這些設定好的檔案之後,使用者能夠讓整個系統用起來更為順手,並且大幅提昇他們自身的工做效率!所以對某些使用者來說,這些 dotfiles 設定檔對他們來說,反而多是他們機器上最重要的檔案呢!git
這份 dotfiles 是 fork 自Holman's dotfiles,並根據個人的需求修改過,若是有興趣,閱讀完這份文件之後,歡迎 fork 一份回去配置成適合本身的 dotfiles。github
更多的 dotfiles 請參考GitHub does dotfiles。spring
若是你打算從乾淨的 Mac 環境開始,請參閱 OS X:如何清除並安裝。chrome
shxcode-select --install
下載或使用 git clone 一份到 $HOME
目錄底下的 .dotfiles
資料夾裡面:docker
shgit clone https://github.com/amowu/dotfiles.git ~/.dotfiles
進入 .dotfiles
資料夾:shell
shcd ~/.dotfiles
安裝 dotfiles:bootstrap
shscript/bootstrap
bootstrap.sh
這個程式會自動完成如下工做:vim
.zshrc
, .vimrc
, .gitconfig
,.gitignore
, ...)。完成之後,手動安裝一些 App Store 上纔有的軟體(Dash, Moom, ...)。
使用 Mackup 進行備份回復:
shmackup restore
什麼是 Mackup? 底下會介紹。
執行 ~/.dotfiles/script/bootstrap
的時候,腳本會將目錄底下全部的 *.symlink
檔案透過 ln
命令創建連結至 $HOME
目錄底下:
topic | *.symlink | .dotfiles |
---|---|---|
git | gitconfig.symlink | ~/.gitconfig |
gitignore.symlink | ~/.gitignore | |
mackup | mackup.cfg.symlink | ~/.mackup.cfg |
vim | vimrc.symlink | ~/.vimrc |
zsh | zshrc.symlink | ~/.zshrc |
每一個環境的配置是以資料夾的形式被獨立區分。例如,若是想要新增 "Java" 的配置到 dotfiles,你能夠簡單的新增一個命名為 java
的資料夾,然後將檔案建至目錄底下。
任何副檔名是 .zsh
的檔案將在 shell 執行時被自動載入至環境中。
任何副檔名是 .symlink
的檔案將在你執行 script/bootstrap
安裝時被連結至 $HOME
目錄底下。.
一些目錄中比較特別的檔案:
bin/
目錄底下的檔案能夠在 shell 執行時直接使用。.zsh
結尾的檔案都會在 shell 執行時被載入至環境。path.zsh
的檔案會在 shell 執行時優先被載入至 $PATH
。*.symlink
結尾的檔案都會在 $HOME
目錄底下創建連結。這能夠讓你在配置環境的時候也保持版本控制的優點。新增 symlink 的時候須要執行 script/bootstrap
安裝。不一樣於 Holman's dotfiles,我修改了一些部分:
bin/dot
是一支簡單的腳本,會在 script/bootstrap
配置完 dotfiles 之後執行,安裝自定的 OS X 程式並設定系統參數配置。
執行 dot
之後,它會跑如下兩支腳本檔:
$HOME/.dotfiles/homebrew/install.sh
- Homebrew packages$HOME/.dotfiles/osx/set-defaults.sh
- OS X defaults setting執行 homebrew/install.sh
的時候,腳本會使用 Homebrew 和 Homebrew Cask 來安裝 binary、font 還有 app,能夠根據個人需求修改這個檔案,增長或減少本身須要的 packages:
shbinaries=( git tree ... )
字型都是以 font-XXX 的形式命名,能夠用 brew cask search /font-XXX/
搜尋是否存在。
shfonts=( font-roboto ... )
應用程式能夠用 brew cask search XXX
或是 Cask Search 網站搜尋是否存在。
shapps=( dropbox google-chrome ... )
如下是目前安裝的 packages:
Binary | 說明 |
---|---|
boot2docker | Linux virtual machine provider |
docker | An open platform for distributed applications for developers and sysadmins. |
git-flow | Git branch manage model |
grc | log 上色 |
legit | optimized for Git command-line |
mackup | 同步應用程式的配置 |
nvm | Node Version Manager |
ssh-copy-id | install your public key in a remote machine’s authorized_keys |
trash | 樹狀目錄顯示 |
tree | 刪除至垃圾桶 |
Font | 說明 |
---|---|
font-roboto | Roboto |
font-source-code-pro | Source Code Pro |
App | 說明 |
---|---|
alfred | 三大神器之一 |
dash | 程式文件查詢 |
dropbox | 雲端硬碟 |
evernote | 筆記 |
flux | 螢幕色彩亮度調整 |
google-chrome | Google 瀏覽器 |
iterm2 | 加強版終端機 |
Kaleidoscope | File comparison for Mac |
Keka | 免費的Mac OS X 檔案壓縮程式 |
mou | Markdown 編輯器 |
qlcolorcode | 讓 Quick Look 支援 syntax highlighting |
qlmarkdown | 讓 Quick Look 支援 Markdown |
qlstephen | 讓 Quick Look 支援無副檔名的純文字檔 |
聊天 | |
sourcetree | Git GUI |
sublime-text3 | 程式碼編輯器 |
virtualbox | 虛擬機 |
VLC | 媒體播放器 |
執行 osx/set-defaults.sh
之後,程式會將 Mac OS X 的一些系統設置改變,能夠根據個人需求修改這個檔案,或是參考 Mathias’s dotfiles 整理好的配置。
如下是目前設定的配置:
setting | script |
---|---|
關閉電池進入深刻睡眠模式 | sudo pmset -a standby 0 |
關閉電源進入深刻睡眠模式 | sudo pmset -a autopoweroff 0 |
加快視窗 resize 的速度(Cocoa applications) | defaults write NSGlobalDomain NSWindowResizeTime -float 0.001 |
預設展開儲存視窗 | defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true |
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true | |
關閉「你確定要開啟這個應用程式?」詢問視窗 | defaults write com.apple.LaunchServices LSQuarantine -bool false |
關閉 Time Machine | sudo tmutil disablelocal |
加速進入睡眠模式 | sudo pmset -a hibernatemode 0 |
開啟觸控板輕觸點擊功能 | defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true |
defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 | |
defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 | |
開啟觸控板/滑鼠右鍵選單功能 | defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true |
defaults write com.apple.driver.AppleBluetoothMultitouch.mouse MouseButtonMode "TwoButton" | |
開啟觸控板三指拖曳功能 | defaults -currentHost write NSGlobalDomain com.apple.trackpad.threeFingerDragGesture -bool true |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerDrag -bool true | |
開啟觸控板四指向下滑出現 app expose 功能 | defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerVertSwipeGesture -int 0 |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerVertSwipeGesture -int 0 | |
defaults write com.apple.dock showAppExposeGestureEnabled -int 1 | |
加快觸控板/滑鼠的速度 | defaults write NSGlobalDomain com.apple.trackpad.scaling -int 3 |
defaults write NSGlobalDomain com.apple.mouse.scaling -int 3 | |
開啟所有視窗組件支援鍵盤控制 | defaults write NSGlobalDomain AppleKeyboardUIMode -int 3 |
關閉鍵盤按住的輸入限制 | defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false |
加快鍵盤輸入 | defaults write NSGlobalDomain KeyRepeat -int 0 |
移除視窗截圖的影子 | defaults write com.apple.screencapture disable-shadow -bool true |
預設 Finder 起始位置為下載資料夾 | defaults write com.apple.finder NewWindowTarget -string "PfLo" |
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/Downloads/" | |
顯示副檔名 | defaults write NSGlobalDomain AppleShowAllExtensions -bool true |
顯示 Finder 狀態列 | defaults write com.apple.finder ShowStatusBar -bool true |
顯示 Finder 路徑列 | defaults write com.apple.finder ShowPathbar -bool true |
允許框選 Finde Quick Look 的文字 | defaults write com.apple.finder QLEnableTextSelection -bool true |
Finder 標題列顯示完整路徑 | defaults write com.apple.finder _FXShowPosixPathInTitle -bool true |
預設搜尋列的結果為當前目錄下 | defaults write com.apple.finder FXDefaultSearchScope -string "SCcf" |
關閉改變副檔名的警告提示 | defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false |
開啟資料夾的 spring loading 功能 | defaults write NSGlobalDomain com.apple.springing.enabled -bool true |
開啟 Dock 的 spring loading 功能 | defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true |
移除 spring loading 的延遲 | defaults write NSGlobalDomain com.apple.springing.delay -float 0 |
避免在 network volumes 底下創建 .DS_Store 檔案 | defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true |
使用 column view 做為 Finder 預設顯示選項 | defaults write com.apple.finder FXPreferredViewStyle -string "clmv" |
關閉清空垃圾桶的警告提示 | defaults write com.apple.finder WarnOnEmptyTrash -bool false |
使用黑色的選單列和 Dock | defaults write NSGlobalDomain AppleInterfaceStyle Dark |
使用縮放的效果做為視窗放大縮小效果 | defaults write com.apple.dock mineffect -string "scale" |
應用程式縮小至本身的圖示 | defaults write com.apple.dock minimize-to-application -bool true |
顯示 Dock 應用程式開啟中的小亮燈提示 | defaults write com.apple.dock show-process-indicators -bool true |
關閉 Dock 開啟應用程式的彈跳動畫 | defaults write com.apple.dock launchanim -bool false |
加快 Mission Control 的動畫速度 | defaults write com.apple.dock expose-animation-duration -float 0.1 |
關閉 Mission Control 的應用程式羣組化顯示 | defaults write com.apple.dock expose-group-by-app -bool false |
關閉 Dashboard | defaults write com.apple.dashboard mcx-disabled -bool true |
將 Dashboard 從多重桌面之中移除 | defaults write com.apple.dock dashboard-in-overlay -bool true |
自動隱藏 Dock | defaults write com.apple.dock autohide -bool true |
移除隱藏 Dock 的延遲 | defaults write com.apple.dock autohide-delay -float 0 |
移除 Dock 的顯示/隱藏動畫 | defaults write com.apple.dock autohide-time-modifier -float 0 |
將隱藏的應用程式 Dock 圖示半透明顯示 | defaults write com.apple.dock showhidden -bool true |
以上,若修改過 homebrew/install.sh
或 osx/set-defaults.sh
之後,直接執行指令:
shdot
就會再次更新 packages 還有 defaults setting。
當初始環境都安裝好之後,剩下的就是恢復備份。除了 .zsrc
、.vimrc
這類 dotfile 比較適合放在版本控制以外,其餘像是 Sublime 的 plugin、iTerm2 的 setting、Oh My Zsh 的 plugin、等等不少還有通常應用程式的配置檔須要備份,甚至是 SSH 的 key,這些我認為都不適合丟進 dotfiles 放上 GitHub。因此這裡介紹 Mackup 這個簡單的工具做為解決方案,使用方式很簡單,brew install mackup
安裝完之後只要執行:
mackup backup
就能夠將檔案備份到 Dropbox 或 Google Drive。當須要恢復的時候則是執行:
mackup restore
就會將雲端硬碟上的備份以 ln
連結的方式在新電腦上同步。
配置方式也很容易,創建一份 ~/.mackup.cfg
,或是直接使用 .dofiles/mackup/mackup.cfg.symlink
來修改:
sh[storage] engine = dropbox # 同步的雲端硬碟,有 dropbox 與 google_drive 能夠選擇 directory = Mackup # 同步的資料夾,這裡會將全部備份同步至 ~/Dropbox/Mackup 底下 # 指定要同步的應用程式 [applications_to_sync] iterm2 oh-my-zsh sublime-text-3 ssh [applications_to_ignore] # 指定不想同步的應用程式
如下是目前備份的應用程式:
app | 說明 |
---|---|
aws | AWS Command Line Interface |
dash | 程式文件查詢 |
flux | 螢幕色彩亮度調整 |
iterm2 | 加強版終端機 |
moom | 視窗佈局 |
oh-my-zsh | 加強版 ZSH |
sourcetree | Git GUI |
sublime-text-3 | 程式碼編輯器 |
ssh | SSH Key |
更多詳細的配置與支援的軟體請參閱 mackup 的文件。
剩下無法透過 Homebrew 安裝,或是須要透過 App Store 購買的應用程式,只能手動一個一個安裝回來了...
如下是目前安裝的應用程式:
App | 說明 |
---|---|
Moom | 視窗佈局 |
Day One | 日記 |
LINE | 聊天 |
Microsoft Remote Desktop | 遠端桌面 |
其餘安裝方式的應用程式:
App | 說明 |
---|---|
小麥註音輸入法 | 輸入法 |
Affinity Photo beta | 修圖軟體 |
If you're brand-new to the project and run into any blockers, please open an issue on this repository and I'd love to get it fixed for you!
I forked Zach Holman's excellent dotfiles.