mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-02-21 02:55:37 -08:00
feat: pwsh module as install facilitator
This commit is contained in:
parent
0ee320491d
commit
a357becb85
|
@ -3,12 +3,12 @@ At this point, you're good to go. The `jandedobbeleer.omp.json` theme displays t
|
||||||
in your prompt, so 9/10 you'll be more than happy with it. However, if you want to explore additional
|
in your prompt, so 9/10 you'll be more than happy with it. However, if you want to explore additional
|
||||||
functionality, going through the additional steps below will help you get started.
|
functionality, going through the additional steps below will help you get started.
|
||||||
|
|
||||||
#### Change the theme
|
### Change the theme
|
||||||
|
|
||||||
We downloaded all the themes and set `jandedobbeleer.omp.json` as the one to use.
|
We downloaded all the themes and set `jandedobbeleer.omp.json` as the one to use.
|
||||||
However, there are [a lot more][themes] to be discovered and maybe there are some you like better.
|
However, there are [a lot more][themes] to be discovered and maybe there are some you like better.
|
||||||
|
|
||||||
#### Override the theme settings
|
## Override the theme settings
|
||||||
|
|
||||||
Maybe there's a theme you like, but you don't fancy the colors. Or, maybe there's a segment you
|
Maybe there's a theme you like, but you don't fancy the colors. Or, maybe there's a segment you
|
||||||
want to tweak/add, or replace some of the icons with a different one. Whatever the case, read through all
|
want to tweak/add, or replace some of the icons with a different one. Whatever the case, read through all
|
||||||
|
|
|
@ -11,7 +11,7 @@ import Customize from "./install-customize.md";
|
||||||
import CustomizeCmd from "./install-customize-cmd.mdx";
|
import CustomizeCmd from "./install-customize-cmd.mdx";
|
||||||
import InstallHomebrew from "./install-homebrew.mdx";
|
import InstallHomebrew from "./install-homebrew.mdx";
|
||||||
|
|
||||||
### Setup your terminal
|
## Setup your terminal
|
||||||
|
|
||||||
Oh My Posh uses ANSI color codes under the hood, these should work in every terminal,
|
Oh My Posh uses ANSI color codes under the hood, these should work in every terminal,
|
||||||
but you may have to set the environment variable `$TERM` to `xterm-256color` for it to work.
|
but you may have to set the environment variable `$TERM` to `xterm-256color` for it to work.
|
||||||
|
@ -20,7 +20,7 @@ but you may have to set the environment variable `$TERM` to `xterm-256color` for
|
||||||
|
|
||||||
<Shells />
|
<Shells />
|
||||||
|
|
||||||
### Customize
|
## Customize
|
||||||
|
|
||||||
<Customize />
|
<Customize />
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import Customize from "./install-customize.md";
|
||||||
import CustomizeCmd from "./install-customize-cmd.mdx";
|
import CustomizeCmd from "./install-customize-cmd.mdx";
|
||||||
import InstallHomebrew from "./install-homebrew.mdx";
|
import InstallHomebrew from "./install-homebrew.mdx";
|
||||||
|
|
||||||
### Setup your terminal
|
## Setup your terminal
|
||||||
|
|
||||||
As the standard terminal has issues displaying the ANSI characters correctly, we advise using
|
As the standard terminal has issues displaying the ANSI characters correctly, we advise using
|
||||||
[iTerm2][iterm2] or any other modern day MacOS terminal that supports ANSI characters.
|
[iTerm2][iterm2] or any other modern day MacOS terminal that supports ANSI characters.
|
||||||
|
@ -20,7 +20,7 @@ As the standard terminal has issues displaying the ANSI characters correctly, we
|
||||||
|
|
||||||
<Shells />
|
<Shells />
|
||||||
|
|
||||||
### Customize
|
## Customize
|
||||||
|
|
||||||
<Customize />
|
<Customize />
|
||||||
|
|
||||||
|
|
|
@ -1,93 +0,0 @@
|
||||||
---
|
|
||||||
id: pwsh
|
|
||||||
title: PowerShell
|
|
||||||
sidebar_label: 🐚 PowerShell
|
|
||||||
---
|
|
||||||
|
|
||||||
import Tabs from "@theme/Tabs";
|
|
||||||
import TabItem from "@theme/TabItem";
|
|
||||||
import Customize from "./install-customize.md";
|
|
||||||
|
|
||||||
:::info
|
|
||||||
This guide is for usage inside PowerShell only. If you plan to use Oh My Posh inside other shells as well,
|
|
||||||
have a look at the platform-specific install instructions.
|
|
||||||
:::
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Install-Module oh-my-posh -Scope CurrentUser
|
|
||||||
```
|
|
||||||
|
|
||||||
:::caution
|
|
||||||
If you wish to install for **all users in a linux** environment, you will need to install from an **elevated PowerShell session**.
|
|
||||||
You will also need to import the module one time from the elevated session in order to set the executable permissions correctly.
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
sudo pwsh
|
|
||||||
Install-Module oh-my-posh -Scope AllUsers
|
|
||||||
Import-Module oh-my-posh
|
|
||||||
```
|
|
||||||
:::
|
|
||||||
|
|
||||||
After installation, import Oh My Posh in your `$PROFILE`. Restart your shell and Oh My Posh will start downloading
|
|
||||||
a compatible version of the executable (this is kept in sync on update).
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Import-Module oh-my-posh
|
|
||||||
```
|
|
||||||
|
|
||||||
## List all themes
|
|
||||||
|
|
||||||
To display every available theme in the current directory, use the following
|
|
||||||
cmdlet.
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Get-PoshThemes
|
|
||||||
```
|
|
||||||
|
|
||||||
The module installs all themes in the module folder. To find the actual files, you can use the following command:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Get-PoshThemes -list
|
|
||||||
```
|
|
||||||
|
|
||||||
## Replace your existing prompt
|
|
||||||
|
|
||||||
Edit `$PROFILE` in your preferred PowerShell version and add the following line. Autocompletion is available so it will loop
|
|
||||||
through all available themes.
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Set-PoshPrompt -Theme jandedobbeleer
|
|
||||||
```
|
|
||||||
|
|
||||||
Once added, reload your profile for the changes to take effect.
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
. $PROFILE
|
|
||||||
```
|
|
||||||
|
|
||||||
<Customize />
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Export-PoshTheme -FilePath ~/.mytheme.omp.json -Format json
|
|
||||||
```
|
|
||||||
|
|
||||||
Once you're done editing, adjust your `$PROFILE` to use your newly created theme.
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Set-PoshPrompt -Theme ~/.mytheme.omp.json
|
|
||||||
```
|
|
||||||
|
|
||||||
## Update
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Update-Module oh-my-posh
|
|
||||||
```
|
|
||||||
|
|
||||||
🎉🎉🎉
|
|
||||||
|
|
||||||
[scoop]: https://scoop.sh/
|
|
||||||
[wt]: https://github.com/microsoft/terminal
|
|
||||||
[powershell]: https://www.powershellgallery.com/packages/oh-my-posh
|
|
||||||
[configuration]: /docs/config-overview
|
|
|
@ -26,6 +26,15 @@ oh-my-posh --print-shell
|
||||||
|
|
||||||
Edit `$PROFILE` in your preferred PowerShell version and add the following line.
|
Edit `$PROFILE` in your preferred PowerShell version and add the following line.
|
||||||
|
|
||||||
|
:::caution
|
||||||
|
If you installed Oh My Posh using `Install-Module oh-my-posh`, you need to first import
|
||||||
|
Oh My Posh in your `$PROFILE` before adding the line below:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
Import-Module oh-my-posh
|
||||||
|
```
|
||||||
|
:::
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
oh-my-posh --init --shell pwsh --config ~/jandedobbeleer.omp.json | Invoke-Expression
|
oh-my-posh --init --shell pwsh --config ~/jandedobbeleer.omp.json | Invoke-Expression
|
||||||
```
|
```
|
||||||
|
|
|
@ -10,11 +10,11 @@ import Shells from "./install-shells.mdx";
|
||||||
import Customize from "./install-customize.md";
|
import Customize from "./install-customize.md";
|
||||||
import CustomizeCmd from "./install-customize-cmd.mdx";
|
import CustomizeCmd from "./install-customize-cmd.mdx";
|
||||||
|
|
||||||
### Setup your terminal
|
## Setup your terminal
|
||||||
|
|
||||||
While Oh My Posh works on the standard terminal, we advise using the [Windows Terminal][wt].
|
While Oh My Posh works on the standard terminal, we advise using the [Windows Terminal][wt].
|
||||||
|
|
||||||
### Installation
|
## Install
|
||||||
|
|
||||||
<Tabs
|
<Tabs
|
||||||
defaultValue="winget"
|
defaultValue="winget"
|
||||||
|
@ -22,6 +22,7 @@ While Oh My Posh works on the standard terminal, we advise using the [Windows Te
|
||||||
values={[
|
values={[
|
||||||
{ label: 'winget', value: 'winget', },
|
{ label: 'winget', value: 'winget', },
|
||||||
{ label: 'scoop', value: 'scoop', },
|
{ label: 'scoop', value: 'scoop', },
|
||||||
|
{ label: 'powershell', value: 'powershell', },
|
||||||
{ label: 'chocolatey', value: 'chocolatey'},
|
{ label: 'chocolatey', value: 'chocolatey'},
|
||||||
]
|
]
|
||||||
}>
|
}>
|
||||||
|
@ -31,15 +32,6 @@ While Oh My Posh works on the standard terminal, we advise using the [Windows Te
|
||||||
winget install JanDeDobbeleer.OhMyPosh
|
winget install JanDeDobbeleer.OhMyPosh
|
||||||
```
|
```
|
||||||
|
|
||||||
This installs a couple of things:
|
|
||||||
|
|
||||||
- `oh-my-posh.exe` - Windows executable, added to your `$PATH`
|
|
||||||
- `themes` - The latest Oh My Posh themes
|
|
||||||
|
|
||||||
If you want to use a standard theme, you can find them in `~\AppData\Local\Programs\oh-my-posh\themes\`,
|
|
||||||
referencing them as such
|
|
||||||
will always keep them compatible with the binary when updating Oh My Posh.
|
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="scoop">
|
<TabItem value="scoop">
|
||||||
|
|
||||||
|
@ -47,14 +39,21 @@ will always keep them compatible with the binary when updating Oh My Posh.
|
||||||
scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json
|
scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json
|
||||||
```
|
```
|
||||||
|
|
||||||
This installs a couple of things:
|
</TabItem>
|
||||||
|
<TabItem value="powershell">
|
||||||
|
|
||||||
- `oh-my-posh.exe` - Windows executable, added to your `$PATH`
|
:::warning
|
||||||
- `themes` - The latest Oh My Posh themes
|
The PowerShell module only installs the Oh My Posh execuatble inside PowerShell, to use Oh My posh outside of PowerShell,
|
||||||
|
add the following folder to your `$PATH`:
|
||||||
|
|
||||||
If you want to use a standard theme, you can find them in `~\scoop\apps\oh-my-posh\current\themes\`,
|
```powershell
|
||||||
referencing them as such
|
"$((Get-Item (Get-Module oh-my-posh).ModuleBase).Parent.FullName)"
|
||||||
will always keep them compatible with the binary when updating Oh My Posh.
|
```
|
||||||
|
:::
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
Install-Module oh-my-posh -Scope CurrentUser
|
||||||
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="chocolatey">
|
<TabItem value="chocolatey">
|
||||||
|
@ -67,78 +66,17 @@ The chocolatey package is managed by [Curtis Carter][cc]. In case of problems, p
|
||||||
choco install oh-my-posh
|
choco install oh-my-posh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
This installs a couple of things:
|
This installs a couple of things:
|
||||||
|
|
||||||
- `oh-my-posh.exe` - Windows executable, added to your `$PATH`
|
- `oh-my-posh.exe` - Windows executable, added to your `$PATH`
|
||||||
- `themes` - The latest Oh My Posh themes
|
- `themes` - The latest Oh My Posh [themes][themes]
|
||||||
|
|
||||||
If you want to use a standard theme, you can find them in `~\AppData\Local\Programs\oh-my-posh\themes\`,
|
|
||||||
referencing them as such
|
|
||||||
will always keep them compatible with the binary when updating Oh My Posh.
|
|
||||||
|
|
||||||
</TabItem>
|
|
||||||
</Tabs>
|
|
||||||
|
|
||||||
For the `$PATH` to reload, a reboot is advised.
|
For the `$PATH` to reload, a reboot is advised.
|
||||||
|
|
||||||
### Usage
|
## Update
|
||||||
|
|
||||||
#### Preview the themes
|
|
||||||
|
|
||||||
<Tabs
|
|
||||||
defaultValue="winget"
|
|
||||||
groupId="install"
|
|
||||||
values={[
|
|
||||||
{ label: 'winget', value: 'winget', },
|
|
||||||
{ label: 'scoop', value: 'scoop', },
|
|
||||||
{ label: 'chocolatey', value: 'chocolatey'},
|
|
||||||
]
|
|
||||||
}>
|
|
||||||
<TabItem value="winget">
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Get-ChildItem -Path "~\AppData\Local\Programs\oh-my-posh\themes\*" -Include '*.omp.json' | Sort-Object Name | ForEach-Object -Process {
|
|
||||||
$esc = [char]27
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "$esc[1m$($_.BaseName)$esc[0m"
|
|
||||||
Write-Host ""
|
|
||||||
oh-my-posh --config $($_.FullName) --pwd $PWD
|
|
||||||
Write-Host ""
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
</TabItem>
|
|
||||||
<TabItem value="scoop">
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Get-ChildItem -Path "$(scoop prefix oh-my-posh)\themes\*" -Include '*.omp.json' | Sort-Object Name | ForEach-Object -Process {
|
|
||||||
$esc = [char]27
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "$esc[1m$($_.BaseName)$esc[0m"
|
|
||||||
Write-Host ""
|
|
||||||
oh-my-posh --config $($_.FullName) --pwd $PWD
|
|
||||||
Write-Host ""
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
</TabItem>
|
|
||||||
<TabItem value="chocolatey">
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Get-ChildItem -Path "~\AppData\Local\Programs\oh-my-posh\themes\*" -Include '*.omp.json' | Sort-Object Name | ForEach-Object -Process {
|
|
||||||
$esc = [char]27
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "$esc[1m$($_.BaseName)$esc[0m"
|
|
||||||
Write-Host ""
|
|
||||||
oh-my-posh --config $($_.FullName) --pwd $PWD
|
|
||||||
Write-Host ""
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
</TabItem>
|
|
||||||
</Tabs>
|
|
||||||
|
|
||||||
#### Update
|
|
||||||
|
|
||||||
<Tabs
|
<Tabs
|
||||||
defaultValue="winget"
|
defaultValue="winget"
|
||||||
|
@ -146,6 +84,7 @@ Get-ChildItem -Path "~\AppData\Local\Programs\oh-my-posh\themes\*" -Include '*.o
|
||||||
values={[
|
values={[
|
||||||
{ label: 'winget', value: 'winget', },
|
{ label: 'winget', value: 'winget', },
|
||||||
{ label: 'scoop', value: 'scoop', },
|
{ label: 'scoop', value: 'scoop', },
|
||||||
|
{ label: 'powershell', value: 'powershell', },
|
||||||
{ label: 'chocolatey', value: 'chocolatey'},
|
{ label: 'chocolatey', value: 'chocolatey'},
|
||||||
]
|
]
|
||||||
}>
|
}>
|
||||||
|
@ -162,6 +101,13 @@ winget upgrade JanDeDobbeleer.OhMyPosh
|
||||||
scoop update oh-my-posh
|
scoop update oh-my-posh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="powershell">
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
Update-Module oh-my-posh
|
||||||
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="chocolatey">
|
<TabItem value="chocolatey">
|
||||||
|
|
||||||
|
@ -172,7 +118,7 @@ choco upgrade oh-my-posh
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
### Replace your existing prompt
|
## Replace your existing prompt
|
||||||
|
|
||||||
<Tabs
|
<Tabs
|
||||||
defaultValue="winget"
|
defaultValue="winget"
|
||||||
|
@ -180,6 +126,7 @@ choco upgrade oh-my-posh
|
||||||
values={[
|
values={[
|
||||||
{ label: 'winget', value: 'winget', },
|
{ label: 'winget', value: 'winget', },
|
||||||
{ label: 'scoop', value: 'scoop', },
|
{ label: 'scoop', value: 'scoop', },
|
||||||
|
{ label: 'powershell', value: 'powershell', },
|
||||||
{ label: 'chocolatey', value: 'chocolatey'},
|
{ label: 'chocolatey', value: 'chocolatey'},
|
||||||
]
|
]
|
||||||
}>
|
}>
|
||||||
|
@ -196,6 +143,13 @@ You can find the themes scoop installs inside the `"$(scoop prefix oh-my-posh)\t
|
||||||
To use `jandedobbeleer.omp.json` for example, you can refer to it using `"$(scoop prefix oh-my-posh)\themes\jandedobbeleer.omp.json"`
|
To use `jandedobbeleer.omp.json` for example, you can refer to it using `"$(scoop prefix oh-my-posh)\themes\jandedobbeleer.omp.json"`
|
||||||
when setting the prompt using the `--config` flag.
|
when setting the prompt using the `--config` flag.
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="powershell">
|
||||||
|
|
||||||
|
You can find the themes PowerShell installs inside the `"$((Get-Module oh-my-posh).ModuleBase)\themes\"` folder.
|
||||||
|
To use `jandedobbeleer.omp.json` for example, you can refer to it using `"$((Get-Module oh-my-posh).ModuleBase)\themes\jandedobbeleer.omp.json"`
|
||||||
|
when setting the prompt using the `--config` flag.
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="chocolatey">
|
<TabItem value="chocolatey">
|
||||||
|
|
||||||
|
@ -215,6 +169,7 @@ Based on the installation method used, you can find this theme at the following
|
||||||
values={[
|
values={[
|
||||||
{ label: 'winget', value: 'winget', },
|
{ label: 'winget', value: 'winget', },
|
||||||
{ label: 'scoop', value: 'scoop', },
|
{ label: 'scoop', value: 'scoop', },
|
||||||
|
{ label: 'powershell', value: 'powershell', },
|
||||||
{ label: 'chocolatey', value: 'chocolatey'},
|
{ label: 'chocolatey', value: 'chocolatey'},
|
||||||
]
|
]
|
||||||
}>
|
}>
|
||||||
|
@ -227,6 +182,11 @@ Based on the installation method used, you can find this theme at the following
|
||||||
|
|
||||||
`"$(scoop prefix oh-my-posh)\themes\jandedobbeleer.omp.json"`
|
`"$(scoop prefix oh-my-posh)\themes\jandedobbeleer.omp.json"`
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="powershell">
|
||||||
|
|
||||||
|
`"$((Get-Module oh-my-posh).ModuleBase)\themes\jandedobbeleer.omp.json"`
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="chocolatey">
|
<TabItem value="chocolatey">
|
||||||
|
|
||||||
|
@ -241,7 +201,7 @@ When using oh-my-posh inside the WSL, make sure to follow the [linux](linux) ins
|
||||||
|
|
||||||
<Shells />
|
<Shells />
|
||||||
|
|
||||||
### Customize
|
## Customize
|
||||||
|
|
||||||
<Customize />
|
<Customize />
|
||||||
|
|
||||||
|
@ -262,3 +222,4 @@ Inside the WSL, replace `~` with the following path: `/mnt/c/Users/<WINDOWSUSERN
|
||||||
[cc]: https://github.com/digitalcoyote
|
[cc]: https://github.com/digitalcoyote
|
||||||
[cc-choco]: https://github.com/digitalcoyote/chocolatey-packages/tree/master/oh-my-posh
|
[cc-choco]: https://github.com/digitalcoyote/chocolatey-packages/tree/master/oh-my-posh
|
||||||
[linux]: https://ohmyposh.dev/docs/linux
|
[linux]: https://ohmyposh.dev/docs/linux
|
||||||
|
[themes]: https://ohmyposh.dev/docs/themes
|
||||||
|
|
|
@ -11,7 +11,7 @@ module.exports = {
|
||||||
type: "category",
|
type: "category",
|
||||||
label: "🚀 Installation",
|
label: "🚀 Installation",
|
||||||
collapsed: false,
|
collapsed: false,
|
||||||
items: ["pwsh", "windows", "macos", "linux"],
|
items: ["windows", "macos", "linux"],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,21 +1,5 @@
|
||||||
<#
|
$env:POSH_THEMES_PATH = "$PSScriptRoot/themes"
|
||||||
.SYNOPSIS
|
$env:PATH = "$((Get-Item $MyInvocation.MyCommand.ScriptBlock.Module.ModuleBase).Parent.FullName);$env:PATH"
|
||||||
Generates the prompt before each line in the console
|
|
||||||
#>
|
|
||||||
|
|
||||||
# Powershell doesn't default to UTF8 just yet, so we're forcing it as there are too many problems
|
|
||||||
# that pop up when we don't
|
|
||||||
if ($ExecutionContext.SessionState.LanguageMode -ne "ConstrainedLanguage") {
|
|
||||||
[console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
|
|
||||||
}
|
|
||||||
elseif ($env:POSH_CONSTRAINED_LANGUAGE -ne 1) {
|
|
||||||
Write-Host "[WARNING] ConstrainedLanguage mode detected, unable to set console to UTF-8.
|
|
||||||
When using PowerShell in ConstrainedLanguage mode, please set the
|
|
||||||
console mode manually to UTF-8. See here for more information:
|
|
||||||
https://ohmyposh.dev/docs/faq#powershell-running-in-constrainedlanguage-mode
|
|
||||||
"
|
|
||||||
$env:POSH_CONSTRAINED_LANGUAGE = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function Get-PoshDownloadUrl {
|
function Get-PoshDownloadUrl {
|
||||||
param(
|
param(
|
||||||
|
@ -107,6 +91,8 @@ function Sync-PoshExecutable {
|
||||||
|
|
||||||
Sync-PoshExecutable
|
Sync-PoshExecutable
|
||||||
|
|
||||||
|
# Legacy functions
|
||||||
|
|
||||||
function Set-PoshPrompt {
|
function Set-PoshPrompt {
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory = $false)]
|
[Parameter(Mandatory = $false)]
|
||||||
|
@ -115,15 +101,15 @@ function Set-PoshPrompt {
|
||||||
)
|
)
|
||||||
|
|
||||||
$config = ""
|
$config = ""
|
||||||
if (Test-Path "$PSScriptRoot/themes/$Theme.omp.json") {
|
if (Test-Path "$($env:POSH_THEMES_PATH)/$Theme.omp.json") {
|
||||||
$path = "$PSScriptRoot/themes/$Theme.omp.json"
|
$path = "$($env:POSH_THEMES_PATH)/$Theme.omp.json"
|
||||||
$config = (Resolve-Path -Path $path).ProviderPath
|
$config = (Resolve-Path -Path $path).ProviderPath
|
||||||
}
|
}
|
||||||
elseif (Test-Path $Theme) {
|
elseif (Test-Path $Theme) {
|
||||||
$config = (Resolve-Path -Path $Theme).ProviderPath
|
$config = (Resolve-Path -Path $Theme).ProviderPath
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$config = "$PSScriptRoot/themes/jandedobbeleer.omp.json"
|
$config = "$($env:POSH_THEMES_PATH)/jandedobbeleer.omp.json"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Workaround for get-location/push-location/pop-location from within a module
|
# Workaround for get-location/push-location/pop-location from within a module
|
||||||
|
@ -135,138 +121,6 @@ function Set-PoshPrompt {
|
||||||
(& $poshCommand --init --shell=pwsh --config="$config") | Invoke-Expression
|
(& $poshCommand --init --shell=pwsh --config="$config") | Invoke-Expression
|
||||||
}
|
}
|
||||||
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Returns an ansi formatted hyperlink
|
|
||||||
if name not set, uri is used as the name of the hyperlink
|
|
||||||
.EXAMPLE
|
|
||||||
Get-Hyperlink
|
|
||||||
#>
|
|
||||||
function Get-Hyperlink {
|
|
||||||
param(
|
|
||||||
[Parameter(Mandatory, ValuefromPipeline = $True)]
|
|
||||||
[string]$uri,
|
|
||||||
[Parameter(ValuefromPipeline = $True)]
|
|
||||||
[string]$name
|
|
||||||
)
|
|
||||||
$esc = [char]27
|
|
||||||
if ("" -eq $name) {
|
|
||||||
$name = $uri
|
|
||||||
}
|
|
||||||
if ($null -ne $env:WSL_DISTRO_NAME) {
|
|
||||||
# wsl conversion if needed
|
|
||||||
$uri = &wslpath -m $uri
|
|
||||||
}
|
|
||||||
return "$esc]8;;file://$uri$esc\$name$esc]8;;$esc\"
|
|
||||||
}
|
|
||||||
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Display a preview or a list of installed themes.
|
|
||||||
.EXAMPLE
|
|
||||||
Get-PoshThemes
|
|
||||||
.Example
|
|
||||||
Gest-PoshThemes -list
|
|
||||||
#>
|
|
||||||
function Get-PoshThemes() {
|
function Get-PoshThemes() {
|
||||||
param(
|
Write-Host 'Get-PoshThemes is deprecated, please have a look at all the themes in the documentation: https://ohmyposh.dev/docs/themes'
|
||||||
[switch]
|
|
||||||
[Parameter(Mandatory = $false, HelpMessage = "List themes path")]
|
|
||||||
$list
|
|
||||||
)
|
|
||||||
$consoleWidth = $Host.UI.RawUI.WindowSize.Width
|
|
||||||
$logo = @'
|
|
||||||
__ _____ _ ___ ___ ______ _ __
|
|
||||||
/ / | _ | | | \/ | | ___ \ | | \ \
|
|
||||||
/ / | | | | |__ | . . |_ _ | |_/ /__ ___| |__ \ \
|
|
||||||
< < | | | | '_ \ | |\/| | | | | | __/ _ \/ __| '_ \ > >
|
|
||||||
\ \ \ \_/ / | | | | | | | |_| | | | | (_) \__ \ | | | / /
|
|
||||||
\_\ \___/|_| |_| \_| |_/\__, | \_| \___/|___/_| |_| /_/
|
|
||||||
__/ |
|
|
||||||
|___/
|
|
||||||
'@
|
|
||||||
Write-Host $logo
|
|
||||||
$themes = Get-ChildItem -Path "$PSScriptRoot\themes\*" -Include '*.omp.json' | Sort-Object Name
|
|
||||||
Write-Host ("-" * $consoleWidth)
|
|
||||||
if ($list -eq $true) {
|
|
||||||
$themes | Select-Object @{ Name = 'hyperlink'; Expression = { Get-Hyperlink -uri $_.fullname } } | Format-Table -HideTableHeaders
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$poshCommand = Get-PoshCommand
|
|
||||||
$themes | ForEach-Object -Process {
|
|
||||||
Write-Host "Theme: $(Get-Hyperlink -uri $_.fullname -name $_.BaseName.Replace('.omp', ''))"
|
|
||||||
Write-Host ""
|
|
||||||
& $poshCommand -config $($_.FullName) -pwd $PWD
|
|
||||||
Write-Host ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Write-Host ("-" * $consoleWidth)
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "Themes location: $(Get-Hyperlink -uri "$PSScriptRoot/themes")"
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "To change your theme, use the Set-PoshPrompt command. Example:"
|
|
||||||
Write-Host " Set-PoshPrompt -Theme jandedobbeleer"
|
|
||||||
Write-Host ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Helper function to create argument completion results
|
|
||||||
function New-CompletionResult {
|
|
||||||
param(
|
|
||||||
[Parameter(Mandatory)]
|
|
||||||
[string]$CompletionText,
|
|
||||||
[string]$ListItemText = $CompletionText,
|
|
||||||
[System.Management.Automation.CompletionResultType]$CompletionResultType = [System.Management.Automation.CompletionResultType]::ParameterValue,
|
|
||||||
[string]$ToolTip = $CompletionText
|
|
||||||
)
|
|
||||||
|
|
||||||
New-Object System.Management.Automation.CompletionResult $CompletionText, $ListItemText, $CompletionResultType, $ToolTip
|
|
||||||
}
|
|
||||||
|
|
||||||
function ThemeCompletion {
|
|
||||||
param(
|
|
||||||
$commandName,
|
|
||||||
$parameterName,
|
|
||||||
$wordToComplete,
|
|
||||||
$commandAst,
|
|
||||||
$fakeBoundParameter
|
|
||||||
)
|
|
||||||
$themes = Get-ChildItem -Path "$PSScriptRoot\themes\*" -Include '*.omp.json' | Sort-Object Name | Select-Object -Property @{
|
|
||||||
label = 'BaseName'
|
|
||||||
expression = { $_.BaseName.Replace('.omp', '') }
|
|
||||||
}
|
|
||||||
$themes |
|
|
||||||
Where-Object { $_.BaseName.ToLower().StartsWith($wordToComplete.ToLower()); } |
|
|
||||||
Select-Object -Unique -ExpandProperty BaseName |
|
|
||||||
ForEach-Object { New-CompletionResult -CompletionText $_ }
|
|
||||||
}
|
|
||||||
|
|
||||||
Register-ArgumentCompleter `
|
|
||||||
-CommandName Set-PoshPrompt `
|
|
||||||
-ParameterName Theme `
|
|
||||||
-ScriptBlock $function:ThemeCompletion
|
|
||||||
|
|
||||||
|
|
||||||
# V2 compatibility functions
|
|
||||||
# These should be removed at a certain point in time
|
|
||||||
# but to facilitate ease of transition they are kept
|
|
||||||
# as long as issues/feature requests keep popping up
|
|
||||||
|
|
||||||
function Get-PoshInfoForV2Users {
|
|
||||||
Write-Host @'
|
|
||||||
|
|
||||||
Hi there!
|
|
||||||
|
|
||||||
It seems you're using an oh-my-posh V2 cmdlet while running V3.
|
|
||||||
To migrate your current setup to V3, have a look the documentation.
|
|
||||||
|
|
||||||
https://ohmyposh.dev/docs/upgrading
|
|
||||||
|
|
||||||
'@
|
|
||||||
}
|
|
||||||
|
|
||||||
Set-Alias -Name Set-Prompt -Value Get-PoshInfoForV2Users -Force
|
|
||||||
Set-Alias -Name Get-ThemesLocation -Value Get-PoshInfoForV2Users -Force
|
|
||||||
Set-Alias -Name Show-ThemeSymbols -Value Get-PoshInfoForV2Users -Force
|
|
||||||
Set-Alias -Name Show-ThemeColors -Value Get-PoshInfoForV2Users -Force
|
|
||||||
Set-Alias -Name Show-Colors -Value Get-PoshInfoForV2Users -Force
|
|
||||||
Set-Alias -Name Write-ColorPreview -Value Get-PoshInfoForV2Users -Force
|
|
||||||
|
|
|
@ -2,13 +2,14 @@
|
||||||
# that pop up when we don't
|
# that pop up when we don't
|
||||||
if ($ExecutionContext.SessionState.LanguageMode -ne "ConstrainedLanguage") {
|
if ($ExecutionContext.SessionState.LanguageMode -ne "ConstrainedLanguage") {
|
||||||
[console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
|
[console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
|
||||||
} elseif ($env:POSH_CONSTRAINED_LANGUAGE -ne 1) {
|
} else {
|
||||||
Write-Host "[WARNING] ConstrainedLanguage mode detected, unable to set console to UTF-8.
|
Write-Host "[WARNING] ConstrainedLanguage mode detected, unable to set console to UTF-8.
|
||||||
When using PowerShell in ConstrainedLanguage mode, please set the
|
When using PowerShell in ConstrainedLanguage mode, please set the
|
||||||
console mode manually to UTF-8. See here for more information:
|
console mode manually to UTF-8. See here for more information:
|
||||||
https://ohmyposh.dev/docs/faq#powershell-running-in-constrainedlanguage-mode
|
https://ohmyposh.dev/docs/faq#powershell-running-in-constrainedlanguage-mode
|
||||||
"
|
"
|
||||||
}
|
}
|
||||||
|
|
||||||
$env:POWERLINE_COMMAND = "oh-my-posh"
|
$env:POWERLINE_COMMAND = "oh-my-posh"
|
||||||
$env:CONDA_PROMPT_MODIFIER = $false
|
$env:CONDA_PROMPT_MODIFIER = $false
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue