oh-my-posh/docs/docs/beta.mdx
2021-11-09 17:16:37 +01:00

191 lines
5 KiB
Plaintext

---
id: beta
title: Beta Features
sidebar_label: 🍼 Beta Features
---
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
## Tooltips
:::info
Due to limitations (or not having found a way just yet), this feature only works in `zsh` and `powershell` for
the time being.
:::
![Tooltip Demo](/img/posh-tooltip.gif)
Tooltips are segments that are rendered as a right-aligned prompt while you're typing certain keywords.
They behave similarly to the other segments when it comes to how and when they are shown so you can tweak
them to act and look like you want. The key difference is that they can be invoked using `tips` which are the
commands you are typing. Due to the possibility of the use of an alias, you can define for which keyword
the segment should be rendered.
### Configuration
You need to extend or create a custom theme with your tooltips. For example:
```json
{
"blocks": [
...
],
"tooltips": [
{
"type": "git",
"tips": ["git", "g"],
"style": "diamond",
"foreground": "#193549",
"background": "#fffb38",
"leading_diamond": "",
"trailing_diamond": "",
"properties": {
"fetch_status": true,
"fetch_upstream_icon": true,
"template": "{{ .HEAD }}{{ if .Staging.Changed }} \uF046 {{ .Staging.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Working.Changed }} \uF044 {{ .Working.String }}{{ end }}"
}
}
]
}
```
This configuration will render a right-aligned git segment when you type `git` or `g` followed by a space. Keep in mind that
this is a blocking call, meaning that if the segment renders slow, you can't type until it's visible. Optimizations in this space
are being explored.
### Enable the feature
<Tabs
defaultValue="pwsh"
groupId="shell"
values={[
{ label: 'powershell', value: 'pwsh', },
{ label: 'zsh', value: 'zsh', },
]
}>
<TabItem value="pwsh">
Import/invoke Oh My Posh in your `$PROFILE` and add the following line below:
```pwsh
Enable-PoshTooltips
```
For example:
```pwsh
# $PROFILE
oh-my-posh --init --shell pwsh --config ~\wildertheme.json | Invoke-Expression
Enable-PoshTooltips
```
Restart your shell or reload your `$PROFILE` using `. $PROFILE` for the changes to take effect.
</TabItem>
<TabItem value="zsh">
Invoke Oh My Posh in `.zshrc` and add the following line below:
```bash
enable_poshtooltips
```
Restart your shell or reload `.zshrc` using `source ~/.zshrc` for the changes to take effect.
</TabItem>
</Tabs>
## Transient prompt
:::info
This feature only works in `zsh` and `powershell` for the time being.
:::
Transient prompt, when enabled, replaces the prompt with a simpler one to allow more screen real estate.
You can use go [text/template][go-text-template] templates extended with [sprig][sprig] to enrich the text.
Environment variables are available, just like the [`console_title_template`][console-title] functionality.
Typically, your prompt will simply leave the prompt on the screen when you execute a command (or press enter) like so:
![Before Transient](/img/transient-before.gif)
By enabling Transient Prompt, you can replace the prompt with some other content for a cleaner console as shown here:
![After Transient](/img/transient-after.gif)
### Configuration
You need to extend or create a custom theme with your transient prompt. For example:
```json
{
"blocks": {
...
}
"transient_prompt": {
"background": "transparent",
"foreground": "#ffffff",
"template": "{{ .Shell }}> "
}
}
```
The configuration has the following properties:
- background: `string` [color][colors]
- foreground: `string` [color][colors]
- template: `string` - A go [text/template][go-text-template] template extended with [sprig][sprig] utilizing the
properties below. Defaults to `{{ .Shell }}> `
#### Template Properties
- `.Root`: `boolean` - is the current user root/admin or not
- `.Path`: `string` - the current working directory
- `.Folder`: `string` - the current working folder
- `.Shell`: `string` - the current shell name
- `.User`: `string` - the current user name
- `.Host`: `string` - the host name
- `.Env.VarName`: `string` - Any environment variable where `VarName` is the environment variable name
### Enable the feature
<Tabs
defaultValue="pwsh"
groupId="shell"
values={[
{ label: 'powershell', value: 'pwsh', },
{ label: 'zsh', value: 'zsh', },
]
}>
<TabItem value="pwsh">
Import/invoke Oh My Posh in your `$PROFILE` and add the following line below:
```pwsh
Enable-PoshTransientPrompt
```
Restart your shell or reload your `$PROFILE` using `. $PROFILE` for the changes to take effect.
</TabItem>
<TabItem value="zsh">
Invoke Oh My Posh in `.zshrc` and add the following line below:
```bash
enable_poshtransientprompt
```
Restart your shell or reload `.zshrc` using `source ~/.zshrc` for the changes to take effect.
</TabItem>
</Tabs>
[go-text-template]: https://golang.org/pkg/text/template/
[sprig]: https://masterminds.github.io/sprig/
[console-title]: /docs/configure#console-title-template
[colors]: /docs/configure#colors