Aller au contenu principal

Segment

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Un segment est une partie de l'invite de commande avec un contexte spécifique. Différents types sont disponibles nativement. Si vous cherchez la liste complète, vous pouvez sauter cette section et consulter les segments. Poursuivez votre lecture pour comprendre comment configurer un segment.

{
"blocks": [
{
"segments": [
{
"type": "path",
"style": "powerline",
"powerline_symbol": "",
"foreground": "#ffffff",
"background": "#61AFEF",
"template": " {{ .Path }} ",
"include_folders": [
"/Users/posh/Projects"
]
}
]
}
]
}

Paramètres

NameTypeDefaultDescription
typestringtakes the string value referencing which segment logic it needs to run (see segments for possible values)
stylestringplainsee Style below. Possible values:
powerline_symbolstringcharacter to use at the end of the segment when "style": "powerline" (e.g., \uE0B0)
leading_powerline_symbolstringcharacter to use at the start of the segment when "style": "powerline". By default, Oh My Posh uses an ANSI hack to invert the powerline_symbol, which provides the best alignment but may not work in all terminals. If you see black artifacts at segment starts, set this to the corresponding opening glyph (e.g., \uE0D6 when using \uE0B0, or \uE0D7 when using \uE0B1)
invert_powerlinebooleanfalseif true swaps the foreground and background colors. Can be useful when the character you want does not exist in the perfectly mirrored variant for example - defaults to false
leading_diamondstringcharacter to use at the start of the segment. Will take the background color of the segment as its foreground color
trailing_diamondstringcharacter to use at the end of the segment. Will take the background color of the segment as its foreground color
foregroundstringcolor
foreground_templates[]Templatecolor templates
backgroundstringcolor
background_templates[]Templatecolor templates
templatestringa go text/template template to render the prompt
templates[]Templatein some cases having a single template string is a bit cumbersome. Templates allows you to span the segment's template string multiple lines where every template is evaluated and depending on what you aim to achieve, there are two possible outcomes based on templates_logic
templates_logicstringjoin
  • first_match: return the first non-whitespace string and skip everything else
  • join:evaluate all templates and join all non-whitespace strings (default)
options[]Optionsee Options below
interactivebooleanfalsewhen true, the segment text is not escaped to allow the use of interactive prompt escape sequences in Bash/Zsh - defaults to false
aliasstringfor use with cross segment template properties
min_widthint0if the terminal width is smaller than this value, the segment will be hidden. For your terminal width, see oh-my-posh get width. Defaults to 0 (disable)
max_widthint0if the terminal width exceeds this value, the segment will be hidden. For your terminal width, see oh-my-posh get width. Defaults to 0 (disable)
cacheCachehow to cache the segment to avoid fetching information too much, see below
include_folders[]stringdefine which folders to include to enable the segment, see below
exclude_folders[]stringdefine which folders to exclude to disable the segment, see below
forcebooleanfalsewhen true, the segment is always rendered, even when it's only whitespace - defaults to false
timeoutint0timeout in milliseconds for segment execution. If the segment takes longer than this value to complete, it will be disabled. Defaults to 0 (no timeout)
indexintused to override a specific segment (1-based)
avertissement

Dans Bash/Zsh, lorsque la propriété interactive est true pour un segment, le calcul de la longueur de l'invite peut être erroné à cause des expansions de chaînes possibles (par exemple, \w dans Bash et %d dans Zsh, qui se développent tous deux en répertoire de travail actuel). Ainsi, un bloc aligné à droite n'est pas correctement positionné.

Malheureusement, Oh My Posh ne peut pas connaître la longueur finale de l'invite car l'expansion de chaîne est effectuée par votre shell. Utilisez donc cette fonctionnalité à vos risques et périls.

Style

Le style définit la manière dont une invite est rendue. En examinant la plupart des thèmes d'invite, nous avons identifié 4 types. Chacun nécessite une configuration différente et, selon l'apparence souhaitée, vous devrez peut-être tous les comprendre/utiliser.

Powerline

C'est ce qui a tout lancé pour nous. Utilise un symbole unique (powerline_symbol) pour séparer les segments. Il prend la couleur d'arrière-plan du segment précédent (ou transparent si aucun) et le premier plan du segment actuel (ou transparent pour le dernier segment). Attend que les segments aient un arrière-plan coloré, sinon cette option est peu utile.

Si vous voyez des triangles noirs (ou autres caractères selon votre powerline_symbol) au début d'un segment, définissez leading_powerline_symbol sur la version "d'ouverture" du powerline_symbol. Cela n'utilisera pas l'astuce ANSI inversée que nous avons mise en place car elle n'est pas supportée par tous les terminaux. Vous devrez peut-être ajuster vos paramètres de police pour un alignement optimal.

Git Bash

Le style powerline pose problème dans Git Bash en raison d'un calcul incorrect de la largeur des icônes, ce qui rend l'invite cassée lors de la saisie de commandes longues ou de la recherche dans l'historique.

La configuration d'invite suivante rencontre le même problème :

export PS1=" "

Plain

Simple. Texte coloré sur fond transparent. Pensez à définir foreground pour une expérience optimale.

Diamond

Alors que Powerline fonctionne bien avec un symbole unique, parfois vous voulez que les symboles de début et de fin d'un segment diffèrent. À la manière d'un diamant : < my segment text >. La différence avec "plain" est que les symboles du diamant prennent l'arrière-plan du segment comme couleur de premier plan.

Accordéon

Identique à Powerline, mais s'affiche même lorsqu'il est désactivé, sans texte. Ainsi, le segment semble non déployé, comme un accordéon.

Options

L'attribut options permet de personnaliser le comportement et l'apparence d'un segment au-delà des paramètres par défaut. Ces options peuvent inclure des indicateurs de fonctionnalité, des configurations ou des détails de style supplémentaires qui s'appliquent exclusivement au segment concerné. Pour connaître les options disponibles pour un segment spécifique, consultez sa section de documentation correspondante où chaque option est détaillée.

Cache

La propriété cache permet de contrôler la fréquence de rafraîchissement d'un segment. C'est utile lorsqu'un segment est lent à générer ou pour éviter de récupérer des informations trop souvent. La propriété cache est un objet avec les propriétés suivantes :

NameTypeDescription
durationstringthe duration for which the segment will be cached. The duration is a string in the format 1h2m3s. The duration is parsed using the time.ParseDuration function from the Go standard library. To disable the cache, use none
strategystringthe strategy to use to identify if we should show the segment's cache value. See below for more information on strategy
{
"cache": {
"duration": "1h",
"strategy": "folder"
}
}

Stratégie

Session

La stratégie de session mettra en cache le segment en fonction de la session shell actuelle. Utilisez ceci pour les segments que vous souhaitez afficher en permanence mais sans les actualiser trop fréquemment.

Dossier

La stratégie dossier met en cache le segment en fonction du répertoire de travail actuel. Elle conserve une valeur distincte pour chaque répertoire. Utile par exemple pour les segments de langage ou de contrôle de source. Les segments de contrôle de source comprennent le contexte du dépôt dans ce cas, donc la même valeur de cache de segment est utilisée dans un dépôt Git, quel que soit le dossier actuel.

Appareil

La stratégie appareil mettra en cache le segment en fonction de l'appareil actuel. Cela signifie que la même valeur de cache est utilisée quel que soit le dossier ou la session shell. Utilisez ceci pour les segments longs à générer mais qui changent peu, comme les segments d'informations système.

Dossiers d'inclusion et d'exclusion

Il peut être utile de restreindre l'affichage d'un segment à certains dossiers. Si include_folders est spécifié, le segment ne sera affiché que dans ces emplacements. Si exclude_folders est défini, le segment sera masqué dans les dossiers exclus.

{
"include_folders": [
"/Users/posh/Projects"
]
}
{
"exclude_folders": [
"/Users/posh/Projects"
]
}

Les chaînes spécifiées dans ces propriétés sont interprétées comme des expressions régulières. Vous pouvez utiliser n'importe quelle expression valide, mais le motif doit correspondre EXACTEMENT au nom complet du répertoire. L'exemple suivant correspondra à /Users/posh/Projects/Foo mais pas à /home/Users/posh/Projects/Foo.

{
"include_folders": [
"/Users/posh/Projects/.*"
]
}

Vous pouvez également combiner ces propriétés :

{
"include_folders": [
"/Users/posh/Projects/.*"
],
"exclude_folders": [
"/Users/posh/Projects/secret-project.*"
]
}
info
  • Oh My Posh accepte indifféremment / et \ comme séparateurs de chemin, et effectue la correspondance indépendamment du système d'exploitation.
  • Les chaînes étant évaluées comme expressions régulières, utilisez \\\\ pour représenter un backslash (\) sous Windows dans les formats JSON.
  • Le caractère ~ en début de chemin correspond au répertoire personnel de l'utilisateur.
  • La comparaison est insensible à la casse sous Windows/macOS, mais sensible sous les autres systèmes.

Ainsi pour l'utilisateur Bill, qui a un compte utilisateur Bill sous Windows et bill sous Linux, ~/Foo correspondra à C:\Users\Bill\Foo ou C:\Users\Bill\foo sous Windows, mais uniquement à /home/bill/Foo sous Linux.

Indice

Position du segment dans la configuration, utilisée pour [surcharger] un segment spécifique dans une configuration de base. Il s'agit d'un indice basé sur 1, donc le premier segment a un indice de 1.

Masquage des segments

Conditionnel

Pour masquer un segment entier (symboles inclus) via un modèle, le modèle doit renvoyer une chaîne vide. Utilisez des conditions (if) comme dans l'exemple ci-dessous, qui n'affiche un segment "diamond" que si la variable d'environnement POSH_ENV est définie.

Seuls les espaces sont exclus : les sauts de ligne et tabulations restent possibles si nécessaire.

{
"type": "text",
"style": "diamond",
"leading_diamond": " ",
"trailing_diamond": "",
"foreground": "#ffffff",
"background": "#d53c14",
"template": "{{ if .Env.POSH_ENV }}  {{ .Env.POSH_ENV }} {{ end }}"
}

Dynamique

Il arrive parfois que vous ne souhaitiez pas afficher un segment spécifique, sans que le cas d'usage ne justifie un modèle conditionnel. Dans ce cas, utilisez la commande oh-my-posh toggle <type> pour activer ou désactiver le segment. Cette action s'applique par session shell, ce qui signifie que la désactivation dans une instance de shell n'affectera pas les autres instances.

Listez les segments désactivés avec oh-my-posh get toggles.