mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-01-03 15:27:26 -08:00
c2c50f2877
Bash doesn't seem to recognize oh-my-posh is installed with -f oh-my-posh using -x "$(command -v oh-my-posh)" fixes this
174 lines
4.4 KiB
Plaintext
174 lines
4.4 KiB
Plaintext
---
|
|
id: installation
|
|
title: Manual Installation
|
|
sidebar_label: Manual Installation
|
|
---
|
|
|
|
import Tabs from "@theme/Tabs";
|
|
import TabItem from "@theme/TabItem";
|
|
|
|
### 1. Setup your terminal
|
|
|
|
Oh my Posh uses ANSI color codes under the hood, these should work everywhere,
|
|
but you may have to set `$TERM` to `xterm-256color` for it to work.
|
|
|
|
For maximum enjoyment, make sure to install a powerline enabled font. The fonts I use are patched by [Nerd Fonts][nerdfonts],
|
|
which offers a maximum of icons you can use to configure your prompt.
|
|
|
|
Oh my Posh was designed using [Meslo LGM NF][meslo], so if you happen to see missing icons either change to that font or replace the icons
|
|
by changing the [theme][themes] to your liking.
|
|
|
|
### 2. Download the latest binary
|
|
|
|
<Tabs
|
|
defaultValue="windows"
|
|
values={[
|
|
{ label: 'windows', value: 'windows', },
|
|
{ label: 'macos', value: 'macos', },
|
|
{ label: 'unix', value: 'unix', },
|
|
]
|
|
}>
|
|
<TabItem value="windows">
|
|
|
|
If you're looking to use the shell in PowerShell, there's a [PowerShell package][powershell] for your enjoyment that facilitates the whole process.
|
|
But, if you insist on doing it manually, or you use a pre-core version of PowerShell, here you go :-)
|
|
|
|
```powershell
|
|
mkdir C:\tools
|
|
Invoke-Webrequest https://github.com/JanDeDobbeleer/oh-my-posh3/releases/latest/download/posh-windows-amd64.exe -OutFile C:\tools\oh-my-posh.exe
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="macos">
|
|
|
|
|
|
```bash
|
|
wget https://github.com/JanDeDobbeleer/oh-my-posh3/releases/latest/download/posh-darwin-amd64 -O /usr/local/bin/oh-my-posh
|
|
chmod +x /usr/local/bin/oh-my-posh
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="unix">
|
|
|
|
|
|
```bash
|
|
wget https://github.com/JanDeDobbeleer/oh-my-posh3/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh
|
|
chmod +x /usr/local/bin/oh-my-posh
|
|
```
|
|
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
|
|
### 3. Download a theme
|
|
|
|
Find a [theme][themes] you like, download it and store it somewhere you can find it again.
|
|
|
|
### 4. Replace your existing prompt
|
|
|
|
<Tabs
|
|
defaultValue="powershell"
|
|
values={[
|
|
{ label: 'powershell', value: 'powershell', },
|
|
{ label: 'zsh', value: 'zsh', },
|
|
{ label: 'bash', value: 'bash', },
|
|
{ label: 'nix', value: 'nix', },
|
|
{ label: 'fish', value: 'fish', },
|
|
]
|
|
}>
|
|
<TabItem value="powershell">
|
|
|
|
Edit `$PROFILE` in your preferred PowerShell version and add the following lines.
|
|
|
|
```powershell
|
|
[ScriptBlock]$Prompt = {
|
|
$realLASTEXITCODE = $global:LASTEXITCODE
|
|
& "C:\tools\oh-my-posh.exe" -config "~/downloadedtheme.json" -error $realLASTEXITCODE -pwd $PWD
|
|
$global:LASTEXITCODE = $realLASTEXITCODE
|
|
Remove-Variable realLASTEXITCODE -Confirm:$false
|
|
}
|
|
Set-Item -Path Function:prompt -Value $Prompt -Force
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="zsh">
|
|
|
|
Add the following to `~/.zshrc`:
|
|
|
|
```bash
|
|
function powerline_precmd() {
|
|
PS1="$(oh-my-posh -config ~/downloadedtheme.json --error $?)"
|
|
}
|
|
|
|
function install_powerline_precmd() {
|
|
for s in "${precmd_functions[@]}"; do
|
|
if [ "$s" = "powerline_precmd" ]; then
|
|
return
|
|
fi
|
|
done
|
|
precmd_functions+=(powerline_precmd)
|
|
}
|
|
|
|
if [ "$TERM" != "linux" ]; then
|
|
install_powerline_precmd
|
|
fi
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="bash">
|
|
|
|
Add the following to `~/.bashrc` (or `~/.profile` on MacOS):
|
|
|
|
```bash
|
|
function _update_ps1() {
|
|
PS1="$(oh-my-posh -config ~/downloadedtheme.json -error $?)"
|
|
}
|
|
|
|
if [ "$TERM" != "linux" ] && [ -x "$(command -v oh-my-posh)" ]; then
|
|
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
|
|
fi
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="nix">
|
|
|
|
When using `nix-shell --pure`, `oh-my-posh` will not be accessible, and
|
|
your prompt will not appear.
|
|
|
|
As a workaround you can add this snippet to `~/.bashrc`,
|
|
which should re-enable the prompt in most cases:
|
|
|
|
```bash
|
|
# Workaround for nix-shell --pure
|
|
if [ "$IN_NIX_SHELL" == "pure" ]; then
|
|
if [ -x oh-my-posh ]; then
|
|
alias powerline-go="oh-my-posh -config ~/downloadedtheme.json"
|
|
fi
|
|
fi
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="fish">
|
|
|
|
Redefine `fish_prompt` in `~/.config/fish/config.fish`:
|
|
|
|
```bash
|
|
function fish_prompt
|
|
eval oh-my-posh -config ~/downloadedtheme.json -error $status
|
|
end
|
|
```
|
|
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
Make sure `~/downloadedtheme.json` points to your downloaded or adjusted theme. If the theme would be invalid, the default Agnoster prompt is printed.
|
|
|
|
### 5. Profit
|
|
|
|
🎉🎉🎉
|
|
|
|
[nerdfonts]: https://www.nerdfonts.com/
|
|
[meslo]: https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Meslo.zip
|
|
[powershell]: /docs/powershell
|
|
[themes]: https://github.com/JanDeDobbeleer/oh-my-posh3/tree/main/themes
|