To set up **Oh My Posh** with **Zsh** on **Debian 12**, follow these steps to install the necessary components and configure your terminal prompt. ## Installation Steps ### 1. Download the Oh My Posh Binary First, you need to download the Oh My Posh binary suitable for Linux. Open your terminal and run the following command: ```bash sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh ``` ### 2. Set Executable Permissions Make the downloaded binary executable: ```bash sudo chmod +x /usr/local/bin/oh-my-posh ``` ### 3. Create a Directory for Themes You need a directory to store your themes. Create it using: ```bash mkdir -p ~/.poshthemes ``` ### 4. Download Themes You can download predefined themes from the Oh My Posh repository. For example, to download the latest themes, run: ```bash wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip ``` Unzip the downloaded file: ```bash unzip ~/.poshthemes/themes.zip -d ~/.poshthemes ``` Then, clean up by removing the zip file: ```bash rm ~/.poshthemes/themes.zip ``` ### 5. Update Your Zsh Configuration Now, you need to configure your Zsh shell to use Oh My Posh. Open your `.zshrc` file in a text editor: ```bash nano ~/.zshrc ``` Add the following line at the end of the file to initialize Oh My Posh with a specific theme (replace `alien` with your preferred theme name): ```bash eval "$(oh-my-posh --init --shell zsh --config ~/.poshthemes/alien.omp.json)" ``` ### 6. Apply Changes After saving and closing the `.zshrc` file, apply the changes by running: ```bash source ~/.zshrc ``` ## Additional Configuration ### Install a Nerd Font (Optional) For better aesthetics, install a Nerd Font that supports icons used by Oh My Posh. You can download fonts like **Meslo** or **Fira Code** from their respective repositories and install them on your system. ### Set Terminal Font Finally, ensure that your terminal emulator is configured to use the newly installed Nerd Font for optimal display of icons and symbols. By following these steps, you will have successfully set up Oh My Posh with Zsh on Debian 12, enhancing your terminal's appearance and functionality. Citations: [1] https://dev.to/karleeov/wsl-arch-setup-for-oh-my-posh-51pa [2] https://www.reddit.com/r/NixOS/comments/1ge1gwn/how_to_set_ohmyposh_settings/ [3] https://ohmyposh.dev/docs/installation/linux [4] https://www.librebyte.net/en/cli-en/oh-my-posh-a-beatifull-prompt-for-your-shell/ [5] https://www.youtube.com/watch?v=nGHgyPLi7UM [6] https://calebschoepp.com/blog/2021/how-to-setup-oh-my-posh-on-ubuntu/ [7] https://www.linux.org/threads/need-help-finalizing-oh-my-posh-bash-terminal.52617/ .zshrc ``` #go lang export GOROOT=/usr/local/go export GOPATH=/home/windy/go-lang export PATH=$PATH:$GOROOT/bin:$GOPATH/bin eval "$(oh-my-posh --init --shell zsh --config ~/.poshthemes/powerlevel10k_modern.omp.json)" [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh # Zinit setup and plugin management ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git" [ ! -d $ZINIT_HOME ] && mkdir -p "$(dirname $ZINIT_HOME)" [ ! -d $ZINIT_HOME/.git ] && git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME" source "${ZINIT_HOME}/zinit.zsh" # Load essential annexes (non-turbo mode for annex functionality) zinit light-mode for \ zdharma-continuum/zinit-annex-as-monitor \ zdharma-continuum/zinit-annex-bin-gem-node \ zdharma-continuum/zinit-annex-patch-dl \ zdharma-continuum/zinit-annex-rust # Load Zeno plugin with keybindings zinit ice lucid depth"1" blockf zinit light yuki-yano/zeno.zsh if [[ -n $ZENO_LOADED ]]; then bindkey ' ' zeno-auto-snippet bindkey '^m' accept-line bindkey '^i' zeno-completion bindkey '^g' zeno-ghq-cd bindkey '^r' zeno-history-selection bindkey '^x' zeno-insert-snippet fi # Load additional Zsh plugins zinit ice wait"0"; zinit light zsh-users/zsh-completions autoload -Uz compinit && compinit zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' zstyle ':completion:*:default' menu select=1 zinit light zsh-users/zsh-syntax-highlighting zinit light zsh-users/zsh-autosuggestions zinit light Aloxaf/fzf-tab # FZF configuration zi ice from"gh-r" as"program" zi light junegunn/fzf # Auto-suggestions styling ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=244" # History settings HISTFILE=~/.zsh-history HISTSIZE=100000 SAVEHIST=1000000 HISTDUP=erase setopt appendhistory sharehistory hist_ignore_space hist_ignore_all_dups setopt hist_save_no_dups hist_ignore_dups hist_find_no_dups setopt inc_append_history share_history # Zsh options for usability setopt AUTO_CD setopt AUTO_PARAM_KEYS # Completion and FZF styling zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" zstyle ':completion:*' menu no zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath' # Load additional plugins with default keys zinit pack"default+keys" for fzf # Ensure Zinit autocompletion autoload -Uz _zinit (( ${+_comps} )) && _comps[zinit]=_zinit # Consolidate PATH with deduplication export PATH=$(echo "/run/current-system/sw/bin:/usr/local/bin:/usr/local/sbin:$PATH" | tr ':' '\n' | awk '!seen[$0]++' | tr '\n' ':' | sed 's/:$//') ```