Last active
January 28, 2026 13:16
-
-
Save azzlack/c3d312bacd74fbe65f5e531ea8f579c7 to your computer and use it in GitHub Desktop.
My MacOS Terminal Setup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Install homebrew if not installed: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | |
| brew install --cask ghostty | |
| brew install --cask font-jetbrains-mono-nerd-font | |
| brew install zsh | |
| chsh -s $(which zsh) | |
| brew install starship | |
| brew install fnm | |
| brew install television | |
| brew install zsh-history-substring-search | |
| brew install zsh-autosuggestions | |
| brew install zsh-syntax-highlighting | |
| # After setting up all the config files, restart your terminal |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Located at $HOME/Library/Application\ Support/com.mitchellh.ghostty/config | |
| theme = dark:Catppuccin Mocha,light:Catppuccin Frappe | |
| shell-integration = zsh | |
| font-family = "JetBrainsMono Nerd Font Mono" | |
| font-size = 13 | |
| macos-titlebar-style = "tabs" | |
| keybind = shift+enter=text:\n |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Located at $HOME/.config/starship.toml | |
| "$schema" = 'https://starship.rs/config-schema.json' | |
| format = """ | |
| [](red)\ | |
| $os\ | |
| $username\ | |
| [](bg:peach fg:red)\ | |
| $directory\ | |
| [](bg:yellow fg:peach)\ | |
| $container\ | |
| $hostname\ | |
| [](bg:green fg:yellow)\ | |
| $c\ | |
| $rust\ | |
| $golang\ | |
| $nodejs\ | |
| $dotnet\ | |
| $php\ | |
| $java\ | |
| $kotlin\ | |
| $haskell\ | |
| $python\ | |
| $terraform\ | |
| [](bg:sapphire fg:green)\ | |
| $conda\ | |
| [](bg:lavender fg:sapphire)\ | |
| $time\ | |
| [ ](fg:lavender)\ | |
| $fill\ | |
| $docker_context\ | |
| $kubernetes\ | |
| $helm\ | |
| $aws\ | |
| $azure\ | |
| $git_branch\ | |
| $git_status\ | |
| $cmd_duration | |
| $line_break\ | |
| $character""" | |
| palette = 'catppuccin_mocha' | |
| [os] | |
| disabled = false | |
| style = "bg:red fg:crust" | |
| [os.symbols] | |
| Windows = "" | |
| Ubuntu = "" | |
| SUSE = "" | |
| Raspbian = "" | |
| Mint = "" | |
| Macos = "" | |
| Manjaro = "" | |
| Linux = "" | |
| Gentoo = "" | |
| Fedora = "" | |
| Alpine = "" | |
| Amazon = "" | |
| Android = "" | |
| AOSC = "" | |
| Arch = "" | |
| Artix = "" | |
| CentOS = "" | |
| Debian = "" | |
| Redhat = "" | |
| RedHatEnterprise = "" | |
| [username] | |
| show_always = true | |
| style_user = "bg:red fg:crust" | |
| style_root = "bg:red fg:crust" | |
| format = '[ $user ]($style)' | |
| [directory] | |
| style = "bg:peach fg:crust" | |
| format = "[ $path ]($style)" | |
| truncation_length = 3 | |
| truncation_symbol = "…/" | |
| [directory.substitutions] | |
| "Documents" = " " | |
| "Downloads" = " " | |
| "Music" = " " | |
| "Pictures" = " " | |
| "Developer" = " " | |
| [git_branch] | |
| symbol = "" | |
| format = '[ $symbol $branch ]($style)' | |
| [git_status] | |
| format = '[($all_status$ahead_behind )]($style)' | |
| [nodejs] | |
| symbol = "" | |
| style = "bg:green" | |
| format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' | |
| [c] | |
| symbol = " " | |
| style = "bg:green" | |
| format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' | |
| [rust] | |
| symbol = "" | |
| style = "bg:green" | |
| format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' | |
| [golang] | |
| symbol = "" | |
| style = "bg:green" | |
| format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' | |
| [php] | |
| symbol = "" | |
| style = "bg:green" | |
| format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' | |
| [java] | |
| symbol = " " | |
| style = "bg:green" | |
| format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' | |
| [kotlin] | |
| symbol = "" | |
| style = "bg:green" | |
| format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' | |
| [haskell] | |
| symbol = "" | |
| style = "bg:green" | |
| format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' | |
| [python] | |
| symbol = "" | |
| style = "bg:green" | |
| format = '[[ $symbol( $version)(\(#$virtualenv\)) ](fg:crust bg:green)]($style)' | |
| [docker_context] | |
| symbol = "" | |
| style = "bg:sapphire" | |
| format = '[[ $symbol( $context) ](fg:crust bg:sapphire)]($style)' | |
| [conda] | |
| symbol = " " | |
| style = "fg:crust bg:sapphire" | |
| format = '[$symbol$environment ]($style)' | |
| ignore_base = false | |
| [kubernetes] | |
| symbol = "⎈ " | |
| format = " [$symbol$context( \\($namespace\\))]($style) " | |
| style = "bright-blue" | |
| disabled = false | |
| [terraform] | |
| style = "bg:green fg:crust" | |
| symbol = "" | |
| format = "[ $symbol $workspace ]($style)" | |
| [helm] | |
| format = "[$symbol $version](bold white) " | |
| symbol="⛵" | |
| disabled = false | |
| [aws] | |
| format = 'on [$symbol($profile )(\($region\) )]($style)' | |
| symbol = '🅰 ' | |
| style = 'bold blue' | |
| [azure] | |
| format = 'on [$symbol($subscription)]($style) ' | |
| symbol=" " | |
| style = 'bold blue' | |
| [container] | |
| symbol = "" | |
| disabled = false | |
| [time] | |
| disabled = false | |
| time_format = "%R" | |
| style = "bg:lavender" | |
| format = '[[ $time ](fg:crust bg:lavender)]($style)' | |
| [line_break] | |
| disabled = false | |
| [character] | |
| disabled = false | |
| success_symbol = '[❯](bold fg:green)' | |
| error_symbol = '[✗](bold fg:red)' | |
| vimcmd_symbol = '[❮](bold fg:green)' | |
| vimcmd_replace_one_symbol = '[❮](bold fg:lavender)' | |
| vimcmd_replace_symbol = '[❮](bold fg:lavender)' | |
| vimcmd_visual_symbol = '[❮](bold fg:yellow)' | |
| [cmd_duration] | |
| show_milliseconds = true | |
| format = " in $duration " | |
| style = "bg:lavender" | |
| disabled = false | |
| show_notifications = true | |
| min_time_to_notify = 45000 | |
| [palettes.catppuccin_mocha] | |
| rosewater = "#f5e0dc" | |
| flamingo = "#f2cdcd" | |
| pink = "#f5c2e7" | |
| mauve = "#cba6f7" | |
| red = "#f38ba8" | |
| maroon = "#eba0ac" | |
| peach = "#fab387" | |
| yellow = "#f9e2af" | |
| green = "#a6e3a1" | |
| teal = "#94e2d5" | |
| sky = "#89dceb" | |
| sapphire = "#74c7ec" | |
| blue = "#89b4fa" | |
| lavender = "#b4befe" | |
| text = "#cdd6f4" | |
| subtext1 = "#bac2de" | |
| subtext0 = "#a6adc8" | |
| overlay2 = "#9399b2" | |
| overlay1 = "#7f849c" | |
| overlay0 = "#6c7086" | |
| surface2 = "#585b70" | |
| surface1 = "#45475a" | |
| surface0 = "#313244" | |
| base = "#1e1e2e" | |
| mantle = "#181825" | |
| crust = "#11111b" | |
| [palettes.catppuccin_frappe] | |
| rosewater = "#f2d5cf" | |
| flamingo = "#eebebe" | |
| pink = "#f4b8e4" | |
| mauve = "#ca9ee6" | |
| red = "#e78284" | |
| maroon = "#ea999c" | |
| peach = "#ef9f76" | |
| yellow = "#e5c890" | |
| green = "#a6d189" | |
| teal = "#81c8be" | |
| sky = "#99d1db" | |
| sapphire = "#85c1dc" | |
| blue = "#8caaee" | |
| lavender = "#babbf1" | |
| text = "#c6d0f5" | |
| subtext1 = "#b5bfe2" | |
| subtext0 = "#a5adce" | |
| overlay2 = "#949cbb" | |
| overlay1 = "#838ba7" | |
| overlay0 = "#737994" | |
| surface2 = "#626880" | |
| surface1 = "#51576d" | |
| surface0 = "#414559" | |
| base = "#303446" | |
| mantle = "#292c3c" | |
| crust = "#232634" | |
| [palettes.catppuccin_latte] | |
| rosewater = "#dc8a78" | |
| flamingo = "#dd7878" | |
| pink = "#ea76cb" | |
| mauve = "#8839ef" | |
| red = "#d20f39" | |
| maroon = "#e64553" | |
| peach = "#fe640b" | |
| yellow = "#df8e1d" | |
| green = "#40a02b" | |
| teal = "#179299" | |
| sky = "#04a5e5" | |
| sapphire = "#209fb5" | |
| blue = "#1e66f5" | |
| lavender = "#7287fd" | |
| text = "#4c4f69" | |
| subtext1 = "#5c5f77" | |
| subtext0 = "#6c6f85" | |
| overlay2 = "#7c7f93" | |
| overlay1 = "#8c8fa1" | |
| overlay0 = "#9ca0b0" | |
| surface2 = "#acb0be" | |
| surface1 = "#bcc0cc" | |
| surface0 = "#ccd0da" | |
| base = "#eff1f5" | |
| mantle = "#e6e9ef" | |
| crust = "#dce0e8" | |
| [palettes.catppuccin_macchiato] | |
| rosewater = "#f4dbd6" | |
| flamingo = "#f0c6c6" | |
| pink = "#f5bde6" | |
| mauve = "#c6a0f6" | |
| red = "#ed8796" | |
| maroon = "#ee99a0" | |
| peach = "#f5a97f" | |
| yellow = "#eed49f" | |
| green = "#a6da95" | |
| teal = "#8bd5ca" | |
| sky = "#91d7e3" | |
| sapphire = "#7dc4e4" | |
| blue = "#8aadf4" | |
| lavender = "#b7bdf8" | |
| text = "#cad3f5" | |
| subtext1 = "#b8c0e0" | |
| subtext0 = "#a5adcb" | |
| overlay2 = "#939ab7" | |
| overlay1 = "#8087a2" | |
| overlay0 = "#6e738d" | |
| surface2 = "#5b6078" | |
| surface1 = "#494d64" | |
| surface0 = "#363a4f" | |
| base = "#24273a" | |
| mantle = "#1e2030" | |
| crust = "#181926" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| export PATH="$HOME/.local/bin:$PATH" | |
| export PATH="/opt/homebrew/bin:$PATH" | |
| autoload -Uz compinit | |
| compinit | |
| # Style for zsh-autosuggestions | |
| export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#767676" | |
| export ZSH_AUTOSUGGEST_STRATEGY=(history completion) | |
| export ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20 | |
| # Use up/down arrows to navigate history | |
| bindkey '^[[A' history-substring-search-up | |
| bindkey '^[[B' history-substring-search-down | |
| # Use Home/End to jump to beginning/end of line | |
| bindkey "^[[H" beginning-of-line | |
| bindkey "^[[F" end-of-line | |
| # Color styles for kubectl diff commands | |
| export KUBECTL_EXTERNAL_DIFF="colordiff -N -u" | |
| # Terminal history settings | |
| export HISTFILE="$HOME/.zsh_history" | |
| export HISTSIZE="100000" | |
| export SAVEHIST="$HISTSIZE" | |
| setopt APPEND_HISTORY | |
| setopt INC_APPEND_HISTORY | |
| setopt HIST_IGNORE_DUPS | |
| setopt HIST_IGNORE_SPACE | |
| # Kubectl completion | |
| source <(kubectl completion zsh) | |
| # Television fuzzy search | |
| eval "$(tv init zsh)" | |
| # Zsh plugins | |
| source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh | |
| source $(brew --prefix)/share/zsh-history-substring-search/zsh-history-substring-search.zsh | |
| source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh | |
| # fnm | |
| FNM_PATH="/opt/homebrew/opt/fnm/bin" | |
| if [ -d "$FNM_PATH" ]; then | |
| eval "$(fnm env --use-on-cd --version-file-strategy=recursive --shell zsh)" | |
| fi | |
| # Starship init | |
| eval "$(starship init zsh)" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment