หลังจากที่ใช้ oh-my-zsh กับ prezto มาสักพัก ก็เลยลองหา theme ใหม่ๆ มาปรับหน้าตาของ terminal ให้สดชื่นกันอีกสักหน่อย powerlevel9k กับ nerd fonts ทำให้แสดง icon อื่นๆ เช่น นินจา หรือ รูปแมวเหมียว ได้ ขั้นการลงลงไม่เยอะมาก ตามด้านล่างนี้เลย
1. iTerm2

เริ่มด้วยลง iTerm2 กันก่อน
$brew cask install iterm2
2. Z shell (zsh -> ซี-เชล)

เผื่อใครใช้ shell ตัวอื่น ให้ลง zsh (อ่านว่า ซี-เชล) ต่อ
$brew install zsh
และเปลี่ยน default shell เป็น zsh
$chsh -s /bin/zsh
3. Nerd Fonts

ลง Nerd Fonts สำหรับรูป icon พิเศษต่างๆเช่น git, json และอีกมากมาย ดูได้จาก https://nerdfonts.com/
$brew tap caskroom/fonts
เปลี่ยน iterm2 ไปใช้ Nerd Fonts
iTerm2 -> Preferences -> Profiles -> Text -> Font -> Change Font
ตั้งค่า font ให้กับ Powerlevel9k theme
$echo "POWERLEVEL9K_MODE='nerdfont-complete'" >> ~/.zshrc
4. Powerlevel9k Theme

มีวิธีการลง Powerlevel9k theme หลายวิธี แต่ลองแนะนำวิธีง่ายๆ เบื้องต้นด้านล่างเพราะน่าจะกระชับสุด
$git clone https://github.com/bhilburn/powerlevel9k.git
$cd ~/powerlevel9k
$echo 'source ~/powerlevel9k/powerlevel9k.zsh-theme' >> ~/.zshrc
ตั้งค่า configuration เบื้องต้น โดยเพิ่มค่าด้านล่างนี้เข้าไปใน ./.zshrc
POWERLEVEL9K_MODE='nerdfont-complete'
# Set name of the theme to load.
ZSH_THEME="powerlevel9k/powerlevel9k"
source ~/github/powerlevel9k/powerlevel9k.zsh-theme
# Prompt settings
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_RPROMPT_ON_NEWLINE=true
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%K{white}%k"
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%K{green}%F{black} \uf155 %f%F{green}%k\ue0b0%f "
POWERLEVEL9K_DISABLE_RPROMPT=true
# Separators
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=$'\ue0b0'
POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR=$'\ue0b1'
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=$'\ue0b2'
POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR=$'\ue0b7'
# Dir colours
POWERLEVEL9K_DIR_HOME_BACKGROUND='black'
POWERLEVEL9K_DIR_HOME_FOREGROUND='white'
POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND='black'
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND='white'
POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='yellow'
POWERLEVEL9K_DIR_DEFAULT_FOREGROUND='black'
# VCS icons
POWERLEVEL9K_VCS_GIT_ICON=$'\uf113 '
POWERLEVEL9K_VCS_GIT_GITHUB_ICON=$'\uf113 '
POWERLEVEL9K_VCS_GIT_GITLAB_ICON=$'\uf296 '
POWERLEVEL9K_VCS_BRANCH_ICON=$''
POWERLEVEL9K_VCS_STAGED_ICON=$'\uf055'
POWERLEVEL9K_VCS_UNSTAGED_ICON=$'\uf421'
POWERLEVEL9K_VCS_UNTRACKED_ICON=$'\uf00d'
POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=$'\uf0ab '
POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=$'\uf0aa '
# VCS colours
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='blue'
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='black'
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND='green'
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND='black'
POWERLEVEL9K_VCS_CLEAN_BACKGROUND='green'
POWERLEVEL9K_VCS_CLEAN_FOREGROUND='black'
# VCS CONFIG
POWERLEVEL9K_SHOW_CHANGESET=false
# Status
POWERLEVEL9K_OK_ICON=$'\uf164'
POWERLEVEL9K_FAIL_ICON=$'\uf165'
POWERLEVEL9K_CARRIAGE_RETURN_ICON=$'\uf165'
# User with ninja
user_with_skull() {
echo -n "\ufc72 $(whoami)"
}
POWERLEVEL9K_CUSTOM_USER="user_with_skull"
# Command auto-correction.
ENABLE_CORRECTION="true"
# Command execution time stamp shown in the history command output.
HIST_STAMPS="mm/dd/yyyy"
# Prompt elements
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_user dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(background_jobs battery)
หลังจากแก้ค่าใน config .zshrc แล้ว restart iterm2 จะได้ผลลัพธ์หน้าตา terminal ประมาณนี้

การตั้งค่า theme เพิ่มเติมเข้าไปดูต่อได้ที่ https://github.com/bhilburn/powerlevel9k/wiki/Show-Off-Your-Config
Photo by Osman Rana on Unsplash
