Aller au contenu principal

Général

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 →

Oh My Posh génère votre invite de commande en utilisant des blocs (comme des Lego) qui contiennent un ou plusieurs segments. Une configuration très simple pourrait ressembler à ceci. Le format par défaut est json, mais nous supportons également toml et yaml. Un schéma est disponible, maintenu à jour, qui aide à l'auto-complétion et à la validation de la configuration.

info

Plusieurs thèmes sont disponibles, correspondant à des configurations prédéfinies. Vous pouvez les utiliser tels quels, ou comme point de départ pour créer votre propre configuration.

{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"final_space": true,
"version": 4,
"blocks": [
{
"type": "prompt",
"alignment": "left",
"segments": [
{
"type": "path",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#61AFEF",
"options": {
"style": "folder"
}
}
]
}
]
}

Avec cette configuration, un seul segment powerline est affiché, indiquant le nom du dossier courant. Pour appliquer cette configuration avec un exécutable Oh My Posh, utilisez le flag --config pour spécifier le chemin d'un fichier contenant le code ci-dessus. Le flag --shell universal est utilisé pour afficher l'invite sans caractères d'échappement, permettant de visualiser le prompt tel qu'il apparaîtrait dans une fonction shell.

attention

La commande ci-dessous n'enregistre pas la configuration pour votre shell, mais affiche simplement l'invite dans votre terminal. Pour utiliser votre configuration personnalisée de façon permanente, modifiez la configuration de votre prompt pour pointer vers votre fichier personnalisé.

oh-my-posh print primary --config sample.json --shell uni

Si tout fonctionne correctement, vous devriez voir l'invite s'afficher sur la ligne suivante. Si vous voyez beaucoup de caractères ▯ ou ?, configurez votre terminal avec une police compatible avant de continuer.

astuce

Le flag --config accepte aussi bien un chemin local qu'un fichier de configuration hébergé à distance.

Par exemple, la syntaxe suivante est un flag --config valide : --config 'https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/jandedobbeleer.omp.json'

Paramètres

NameTypeDefaultDescription
final_spacebooleanwhen true adds a space at the end of the prompt
pwdstringnotify terminal of current working directory, values can be osc99, osc7 or osc51 depending on your terminal. Supports templates
terminal_backgroundstringcolor - terminal background color, set to your terminal's background color when you notice black elements in Windows Terminal or the Visual Studio Code integrated terminal
accent_colorstringcolor - accent color, used as a fallback when the accent color is not supported
varmap[string]anyconfig variables to use in templates. Can be any value
shell_integrationbooleanfalseenable shell integration using FinalTerm's OSC sequences. Works in bash, cmd (Clink v1.14.25+), fish, powershell and zsh
enable_cursor_positioningbooleanfalseenable fetching the cursor position in bash and zsh to allow automatic hiding of leading newlines when at the top of the shell
patch_pwsh_bleedbooleanfalsepatch a PowerShell bug where the background colors bleed into the next line at the end of the buffer (can be removed when this is merged)
upgradeUpgradeenable auto upgrade or the upgrade notice. See Upgrade
iterm_features[]stringfalseenable iTerm2 specific features:
  • prompt_mark: add the iterm2_prompt_mark function for supported shells
  • current_dir: expose the current directory for iTerm2
  • remote_host: expose the current remote and user for iTerm2
mapsMapsa list of custom text mappings
asyncbooleanfalseload the prompt async. Will either load the standard prompt, or allow you to start typing right away. Supported for pwsh, powershell, zsh, bash and fish
versionint4the config version, currently at 4
extendsstringthe configuration to extend from

Correspondances

NameTypeDescription
user_nameobjecttext replacement mapping for user names
host_nameobjecttext replacement mapping for host names
shell_nameobjecttext replacement mapping for shell names. This modifies the .Shell global property.
{
"maps": {
"user_name": {
"jan": "🚀",
"root": "⚡"
},
"host_name": {
"laptop123": "work"
}
}
}

Extension

La clé extends permet d'étendre une configuration existante. C'est utile lorsque vous souhaitez enrichir une configuration de base sans dupliquer tous les paramètres, comme pour un thème. La valeur doit être le chemin d'un autre fichier de configuration, local ou distant.

Le remplacement de valeurs s'effectue en répétant la clé dans la nouvelle configuration. Par exemple, pour modifier accent_color dans une configuration de base, déclarez simplement la clé accent_color dans votre nouvelle configuration. La nouvelle valeur écrasera celle de la configuration de base.

Pour surcharger des segments et blocs, spécifiez un bloc avec le même type et alignment que dans la configuration de base. Vous pouvez ensuite ajouter ou modifier les segments dans ce bloc. Les segments sont identifiés par leur alias ou type, vous permettant d'ajouter de nouveaux segments ou modifier des existants sans affecter le reste.

Pour des cas d'utilisation plus avancés, vous pouvez également spécifier l'index du block ou segment à surcharger. Cela vous permet de surcharger des blocks ou segments à des positions spécifiques dans la configuration. Notez que l'index est 1-based : le premier block ou segment a l'index 1.

Validation par JSON Schema

Comme mentionné, les configurations Oh My Posh peuvent utiliser JSON Schema pour valider leur contenu. Incluez un lien vers le schéma externe qui définit la structure et le contenu attendus. Si votre éditeur est configuré pour utiliser JSON Schema, il comparera votre configuration au document externe et signalera les écarts.

Par exemple, avec ce code :

...
"segments": [
{
"type": "an_invalid_entry",
"template": "{{ if gt .Code 0 }}\uf134{{ end }}",
}
]
...

Des avertissements seront générés pour type, car an_invalid_entry n'est pas une valeur valide, ainsi que pour l'ensemble du segment (entre {}), car il manque la clé obligatoire style. Utilisez ces avertissements à votre avantage, les ignorer est à vos risques.

Formats acceptés

Oh My Posh prend en charge trois formats de fichiers pour les configurations : json, yaml et toml.

Divers convertisseurs existent pour passer d'un format à l'autre, bien qu'ils ne soient pas parfaits et nécessitent des ajustements manuels. Notamment, l'implémentation du schéma pour json est la suivante :

{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json"
}

Tandis que pour yaml :

# yaml-language-server: $schema=https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json

Les convertisseurs ne détecteront pas ce changement, vous devrez donc ajuster manuellement.