Aller au contenu principal

Couleurs

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 →

Couleurs standards

Oh My Posh prend en charge plusieurs types de références colorimétriques :

  • Couleurs True Color via des [codes hexadécimaux][hexcolors] (par exemple #CB4B16).

  • 16 [noms de couleurs ANSI][ansicolors]. Cela inclut 8 couleurs ANSI de base ainsi que default :

    black red green yellow blue magenta cyan white default

    ainsi que 8 couleurs ANSI étendues :

    darkGray lightRed lightGreen lightYellow lightBlue lightMagenta lightCyan lightWhite

  • Palette de 256 couleurs via leur représentation numérique. Par exemple 0 correspond au noir, 1 au rouge, 2 au vert, etc.

  • Le mot-clé transparent permettant de créer une surcharge de premier plan transparente ou une couleur d'arrière-plan transparente via la propriété de premier plan du segment.

  • Le mot-clé foreground référençant la couleur de premier plan du segment actuel.

  • Le mot-clé background référençant la couleur d'arrière-plan du segment actuel.

  • Le mot-clé parentForeground héritant de la couleur de premier plan du segment actif précédent.

  • Le mot-clé parentBackground héritant de la couleur d'arrière-plan du segment actif précédent.

  • Le mot-clé accent référençant la couleur d'accent du système d'exploitation (Windows et macOS uniquement).

Modèles de couleurs

Tableau de [modèles][templates] de chaînes définissant la couleur selon le contexte. Sous le capot, cette fonctionnalité utilise le module [text/template][go-text-template] de Go étendu avec [sprig][sprig], et expose plusieurs propriétés standards. Pour les segments, consultez la section Propriétés des modèles dans la documentation. Les propriétés générales des modèles sont listées [ici][template-properties].

L'exemple suivant est basé sur le [Segment AWS][aws].

{
"type": "aws",
"style": "powerline",
"powerline_symbol": "",
"foreground": "#ffffff",
"background": "#111111",
"foreground_templates": [
"{{if contains \"default\" .Profile}}#FFA400{{end}}",
"{{if contains \"jan\" .Profile}}#f1184c{{end}}"
]
}

La logique est la suivante : lorsque foreground_templates contient un tableau, chaque modèle est vérifié jusqu'à ce qu'un retourne une chaîne non vide. Ainsi, si .Profile contient le mot default, le premier modèle retourne #FFA400, qui sera utilisé comme couleur. S'il contient jan, il retourne #f1184c. Si aucun modèle ne retourne de valeur, la valeur par défaut #ffffff est utilisée comme repli.

Surcharges de couleurs

Vous pouvez surcharger la couleur de premier plan et/ou d'arrière-plan pour tout texte dans les propriétés compatibles. La syntaxe personnalisée est intuitive : <foreground,background>text</>. Par exemple, <#ffffff,#000000>this is white with black background</> <#FF479C>but this is pink</>. Tout contenu entre le marqueur d'ouverture <#FF479C> et la fermeture </> sera coloré en conséquence.

Pour afficher un crochet coloré différent du foreground du segment :

{
"template": "<#CB4B16>┏[</>"
}

Pour modifier également la couleur d'arrière-plan dans la commande précédente :

{
"template": "<#CB4B16,#FFFFFF>┏[</>"
}

Pour modifier uniquement la couleur d'arrière-plan, omettre la première couleur :

{
"template": "<,#FFFFFF>┏[</>"
}

Palette

Si votre configuration définit une palette, vous pouvez utiliser la référence p:<palette key> où une Couleur standard est attendue.

Définition d'une palette

Une palette est un ensemble de Couleurs standards nommées. Pour l'utiliser, définissez un objet "palette" au niveau supérieur de votre configuration :

{
"palette": {
"git-foreground": "#193549",
"git": "#FFFB38",
"git-modified": "#FF9248",
"git-diverged": "#FF4500",
"git-ahead": "#B388FF",
"git-behind": "#B388FF",
"red": "#FF0000",
"green": "#00FF00",
"blue": "#0000FF",
"white": "#FFFFFF",
"black": "#111111"
}
}

Les noms de couleurs (clés de palette) peuvent avoir n'importe quelle valeur textuelle, soyez créatifs. Les valeurs de couleur, en revanche, doivent respecter le format des Couleurs standards.

Utilisation d'une palette

Vous pouvez désormais utiliser des références de palette dans les propriétés foreground, foreground_templates, background, background_templates de tout [segment][segment], ainsi que dans toute propriété de configuration acceptant une couleur standard. Le format d'une référence de palette est p:<palette key>. Voici un exemple avec le segment [Git][git] utilisant des références de palette :

{
"type": "git",
"style": "powerline",
"powerline_symbol": "",
"foreground": "p:git-foreground",
"background": "p:git",
"background_templates": [
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:git-modified{{ end }}",
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:git-diverged{{ end }}",
"{{ if gt .Ahead 0 }}p:git-ahead{{ end }}",
"{{ if gt .Behind 0 }}p:git-behind{{ end }}"
]
}

Centraliser toutes les couleurs au même endroit vous permet :

  • D'importer des configurations de couleurs existantes (avec quelques ajustements pour respecter le format)
  • De modifier facilement les couleurs de plusieurs segments simultanément
  • D'obtenir une configuration globale mieux organisée

Laissez libre cours à votre créativité !

Compatibilité entre références de palette et couleurs standards

L'utilisation d'une palette n'empêche pas d'employer des couleurs standards dans votre configuration. Cela reste possible partout, ce qui s'avère utile pour :

  • Appliquer une couleur spécifique à un élément isolé d'un segment
  • Utiliser dans une surcharge de couleur (exemple avec le segment [Batterie][battery]) :
{
"type": "battery",
"style": "powerline",
"invert_powerline": true,
"powerline_symbol": "",
"foreground": "p:white",
"background": "p:black",
"options": {
"discharging_icon": "<#ffa500>-</> ",
"charging_icon": "+ ",
"charged_icon": "* "
}
}

Gestion des références invalides

Si vous utilisez une référence de palette invalide comme couleur (par exemple une faute de frappe p:bleu au lieu de p:blue), le moteur de palette utilisera le mot-clé Transparent comme valeur de repli. Ainsi, si vos segments d'invite s'affichent avec des couleurs incorrectes et que vous utilisez une palette, vérifiez bien l'exactitude de vos références.

Résolution récursive

La palette permet une résolution récursive des références de palette. Vous pouvez utiliser une référence comme valeur de couleur dans la palette elle-même. Cela permet de :

  1. Définir des couleurs nommées
  2. Utiliser leurs références comme valeurs dans la palette

Exemple : p:foreground et p:background seront correctement définis sur "#CAF0F80" et "#023E8A" :

{
"palette": {
"light-blue": "#CAF0F8",
"dark-blue": "#023E8A",
"foreground": "p:light-blue",
"background": "p:dark-blue"
}
}

Palettes multiples

Pour utiliser une palette conditionnellement (par exemple pour un mode clair ou sombre), vous pouvez définir plusieurs palettes et utiliser un [template][templates] qui résout vers une clé de palette. Le template étant évalué dynamiquement, votre prompt peut changer à tout moment selon le résultat du template.

Exemple de configuration :

{
"palettes": {
"template": "{{ if eq .Shell \"pwsh\" }}latte{{ else }}frappe{{ end }}",
"list": {
"latte": {
"black": "#262B44",
"green": "#59C9A5",
"orange": "#F07623",
"red": "#e64553",
"white": "#E0DEF4",
"yellow": "#df8e1d",
"blue": "#7287fd"
},
"frappe": {
"black": "#262B44",
"green": "#59C9A5",
"orange": "#F07623",
"red": "#D81E5B",
"white": "#E0DEF4",
"yellow": "#F3AE35",
"blue": "#4B95E9"
}
}
}
}

Dans ce cas :

  • Si le shell est pwsh, la palette latte sera utilisée
  • Sinon, c'est la palette frappe qui s'applique

Vous pouvez aussi définir frappe comme palette par défaut, servant de repli quand aucune correspondance n'est trouvée via le template. Si aucune palette n'est disponible, toute référence de couleur utilisera transparent comme valeur de repli.

Pour éviter les duplications de couleurs, combinez les palettes avec la propriété palette. Cela permet de définir une couleur une seule fois et de la réutiliser dans plusieurs palettes :

{
"palette": {
"black": "#262B44",
"green": "#59C9A5",
"orange": "#F07623"
},
"palettes": {
"template": "{{ if eq .Shell \"pwsh\" }}latte{{ else }}frappe{{ end }}",
"list": {
"latte": {
"red": "#e64553",
"white": "#E0DEF4",
"yellow": "#df8e1d",
"blue": "#7287fd"
},
"frappe": {
"red": "#D81E5B",
"white": "#E0DEF4",
"yellow": "#F3AE35",
"blue": "#4B95E9"
}
}
}
}
info

Priorité de résolution :

  1. Les couleurs définies dans palettes priment sur celles de palette
  2. Si une couleur existe dans les deux, c'est la version de palettes qui est utilisée ::>

Cycle de couleurs

Pour appliquer une séquence de couleurs (arrière-plan et premier plan) de manière cyclique indépendamment des segments actifs, utilisez la propriété cycle. Celle-ci contient une liste de couleurs utilisées en boucle continue. Un cycle défini a toujours priorité sur les autres mécanismes.

{
"cycle": [
{
"background": "p:blue",
"foreground": "p:white"
},
{
"background": "p:green",
"foreground": "p:black"
},
{
"background": "p:orange",
"foreground": "p:white"
}
]
}