post created: Mar 07, 2024
MacBook Pro Specification
- 13-inch, 2020
- 2 GHz Quad-Core Intel Core i5
- 16 GB RAM
- 512 GB SSD
- Key Layout - QWERTY
- macOS Sonoma 14.4
System Preferences
- Appearance
- Appearance - Light
- Show scroll bars - Always (ugly I know)
- Control Center
- Battery - Show Percentage
- Automatically hide and show the menu bar - Always
- Siri & Spotlight
- Ask Siri - Disable
- Spotlight Search result - Disable all except
- Applications
- Calculator
- Conversion
- Definition
- System Settings
- Privacy & Security
- FileVault - ON
- Desktop & Dock
- Position on screen
- if a single monitor -> Left
- Multiple monitors -> Bottom
- Automatically hide and show the Dock - Enable
- Animate opening applications - Disable
- Show suggested and recent apps in Dock - Disable
- Default web browser - Safari
- Position on screen
- Displays
- Use as - More Space
- Wallpaper
- Slam Dunk
- Battery
- Low Power Mode - Only on Battery
- Lock Screen
- Start Screen Saver when inactive - For 20 minutes
- Turn display off on battery when inactive - For 10 minutes
- Turn display off on power adapter when inactive - For 30 minutes
- Require password after screen saver begins or display is turned off - After 15 minutes
- Touch ID & Password
- Use Apple Watch to unlock you applications and your Mac - Enable
- Keyboard
- Text Input
- Dvorak
- Japanese - Romaji
- 3-Set Korean (390)
- Text Input Options
- Correct spelling automatically - Disable
- Capitalize words automatically - Disable
- Add period with double-space - Disable
- Use smart quotes and dashes - Disable
- Text Input
- Trackpad
- Point & Click
- Tracking Speed - all the way to fast
- Silent clicking - Enable
- Force Click and haptic feedback - Disable
- Tap to click - Enable
- More Gestures
- Notification center - Disable
- Point & Click
- Finder -> Settings
- General
- Show these items on the desktop: Disable All
- New finder windows show: Home
- Tags
- Disable All
- Sidebar
- uncheck Recents
- check Home
- uncheck Shared iCloud
- Advanced
- Show all filename extensions - Enable
- Remove items from the Trash after 30 Days - Enable
- General
- Sharing
- Disable all sharing
- Edit Local hostname
- Also in terminal:
sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"
System Preferences (Terminal)
Take screenshots as JPG
defaults write com.apple.screencapture type jpg
Show hidden files
defaults write com.apple.finder AppleShowAllFiles YES
Show path bar
defaults write com.apple.finder ShowPathbar -bool true
Show status bar
defaults write com.apple.finder ShowStatusBar -bool true
Homebrew
Install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Update everything in Homebrew to recent version:
brew update brew upgrade # if you have any outdated packages
Install GUI Applications
brew install --cask \ bitwarden \ figma \ karabiner-elements \ obsidian \ nota \ rectangle \ spotify \ gifski \ obs \ kitty
Install CLI Applications
brew install \ bat \ curl \ fish \ # used for oh-my-fish fisher \ git \ git-lfs \ gh \ # github CLI gpg \ pinentry-mac \ nvm \ pnpm \ neovim \ tmux \ ripgrep \ # used for telescope.nvim fd \ # used for telescope.nvim
Git & Git LFS
Configure the global user name and email:
git config --global user.name 'NAME' git config --global user.email 'EMAIL'
Initiate LFS setting by installing it:
git lfs install git lfs install --system # you may skip this
To process unicode file names:
git config --global core.precomposeunicode true
Backup previous SSH and GPG keys or create new ones.
Get the GPG key using gpg --list-secret-keys --keyid-format=long
and set the global defaults to sign your commits.
git config --global user.signingkey <key> git config --global commit.gpgsign true git config --global gpg.program /usr/local/bin/gpg
You may need to run the following:
export GPG_TTY=$(tty) echo "pinentry-program /usr/local/bin/pinentry-mac" > ~/.gnupg/gpg-agent.conf gpgconf --kill gpg-agent # restart the gpg service
Neovim
I'm using the kitty terminal.
Oh-My-Fish
Install Oh-My-Fish.
curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish
Install packages and setup Node
Install packages using omf install
:
omf install z nvm
Set the NVM directory
set -gx NVM_DIR (brew --prefix nvm)
Install the NVM plugin for Fisher
fisher install jorgebucaran/nvm.fish
Install and use Node
nvm install latest nvm use latest set --universal nvm_default_version latest
You may want to remove the conflicting Node versions:
which -a node ... rm -rf /usr/local/bin/node
Install Theme and Fonts
Show all themes using omf theme
:
omf theme Available: ... toaster
Install a theme toaster
:
omf install toaster
If you need to uninstall it, run omf uninstall <THEME>
omf uninstall toaster # and reload the terminal
Install the Meslo Nerd Font:
brew tap homebrew/cask-fonts brew install font-meslo-lg-nerd-font
You can change the font from the configuration file: Settings
or ⌘ + ,
on macOS.
Find # font_family
, un-comment it, and replace the monospace
with MesloLGS Nerd Font Mono
.
Set tmux as default
Open the configuration file: Settings
or ⌘ + ,
on macOS.
Find # shell .
and replace it with shell tmux
.
Then configure tmux (~/.tmux.conf
) to start with a fish
shell.
set-option -g default-shell /usr/local/bin/fish
Configure Fish shell's greeting message
set fish_greeting 'Happy Coding ヾ(*´ ∇ `)ノ'
Install LazyVim
Make a back up of your current neovim files.
# required mv ~/.config/nvim{,.bak} #optional; you can delete it instead of backing it if you want mv ~/.local/share/nvim{,.bak} mv ~/.local/state/nvim{,.bak} mv ~/.cache/nvim{,.bak}
Install it.
git clone https://github.com/LazyVim/starter ~/.config/nvim rm -rf ~/.config/nvim/.git nvim
When you first launch nvim
, it will install lazy vim and its plugins.
If you have your neovim setup template/backups, copy and/or replace files in ~/.config/nvim/lua
.
I saved my current setups in a private repository in github.
Configure aliases
Create a file aliases.fish
inside ~/.config/fish/conf.d
.
alias vim='nvim' alias cat='bat'
Add another aliases for git, git_aliases.fish
.
# ~/.config/fish/conf.d/git_aliases.fish alias g='git' alias gd='git diff' alias gst='git status' alias ga='git add' alias gaa='git add --all' alias gcmsg='git commit -m' alias gl='git pull' alias gll='git pull origin (current_branch)' alias gp='git push' alias gpp='git push origin (current_branch)' alias gpf='git push -f origin (current_branch)' alias gco='git checkout' alias gs='git switch' # switch branch alias gsp='git switch -' #switch back to previous branch alias gsm='git switch main' alias gb='git branch' alias gba='git branch -a' alias gcount='git shortlog -sn' alias glo='git log --oneline' alias gloga='git log --oneline --graph --all' alias gwc='git whatchanged' alias gwcp='git whatchanged -p --abbrev-commit --pretty=medium' alias gr='git restore --staged' # unstage changes; git reset file alias grd='git restore --staged --worktree' # unstage and discard changes; git checkout file alias gsundo='git reset --soft HEAD~1' alias ghundo='git reset --hard HEAD~1' alias gwa='git worktree add' alias gwr='git worktree remove' alias gwl='git worktree list' alias gbs='git bisect start' alias gbb='git bisect bad' alias gbg='git bisect good' function current_branch set ref (git symbolic-ref HEAD 2> /dev/null); or set ref (git rev-parse --short HEAD 2> /dev/null); or return echo $ref | sed -e 's|^refs/heads/||' end
Source two alias files or restart the terminal.