# ============================================================================= # Configuración personalizada de Oh My Posh - Tema LuisPa # ============================================================================= # Formato: YAML (permite comentarios y es más legible que JSON) # Ubicación final: ~/.oh-my-posh.yaml # Propósito: Prompt personalizado con información de sistema, Git, estado y colores # Compatible con: Oh My Posh v3+ en Linux, macOS, WSL2, Windows # Dependencias: Oh My Posh, Nerd Font (FiraCode recomendada), Git # ============================================================================= # Validación de esquema JSON para autocompletado y validación en editores # yaml-language-server: $schema=https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json # ============================================================================= # CONFIGURACIÓN GENERAL DEL PROMPT # ============================================================================= # Añadir espacio al final del prompt para separación visual final_space: true # Versión del esquema de configuración de Oh My Posh version: 3 # ============================================================================= # PALETA DE COLORES PERSONALIZADA # ============================================================================= # Define colores reutilizables en toda la configuración usando nombres semánticos # Formato: nombre: "#HEXCODE" - usar siempre códigos hexadecimales de 6 dígitos palette: # Colores base del tema black: "#262B44" # Fondo oscuro principal - usado para fondos y contraste white: "#FFFFFF" # Blanco puro - texto principal y elementos destacados whitesoft: "#7f8080" # Gris suave - texto secundario y elementos discretos # Colores de estado y contexto blue: "#4B95E9" # Azul información - Git ahead, elementos informativos cyan: "#61fdff" # Cyan brillante - directorios y rutas de archivos green: "#61fd5f" # Verde éxito - Git limpio, operaciones exitosas yellow: "#F3AE35" # Amarillo advertencia - resaltados y avisos orange: "#F07623" # Naranja atención - Git con cambios, estados mixtos red: "#D81E5B" # Rojo error - errores, Git con conflictos morado: "#D91C9A" # Morado especial - Git behind, estados únicos # ============================================================================= # CONFIGURACIÓN DE PROMPTS ESPECIALES # ============================================================================= # Prompt secundario - aparece en comandos multilínea o cuando se espera más entrada secondary_prompt: template: "\u276f " # Símbolo de continuación ❯ foreground: "p:white" # Color blanco para visibilidad background: "transparent" # Fondo transparente # Prompt transiente - versión compacta que reemplaza prompts anteriores # Mejora el desplazamiento y reduce el desorden visual en el historial transient_prompt: # Mostrar icono específico para VSCode en Windows, sino usar variable de entorno template: "{{ if and (eq .Env.TERM_PROGRAM \"vscode\") (eq .Env.OS \"Windows_NT\") }}[💻] {{ else }}[{{ .Env.OMP_OS_ICON }}] {{ end }}{{ .Folder }} \u276f " foreground: "p:whitesoft" # Texto suave para no distraer background: "transparent" # Fondo transparente # ============================================================================= # CONFIGURACIÓN DEL TÍTULO DE CONSOLA # ============================================================================= # Establece el título de la ventana del terminal con información contextual console_title_template: "{{ .Shell }} in {{ .Folder }}" # ============================================================================= # CONFIGURACIÓN DE ACTUALIZACIONES # ============================================================================= # Control de notificaciones y actualizaciones automáticas de Oh My Posh upgrade: notice: true # Mostrar notificaciones de nuevas versiones interval: "168h" # Verificar actualizaciones cada 168 horas (1 semana) auto: false # No actualizar automáticamente (seguridad) source: "cdn" # Usar CDN para verificar versiones (más rápido) # ============================================================================= # BLOQUES PRINCIPALES DEL PROMPT # ============================================================================= # Los bloques definen la estructura y layout del prompt # Cada bloque contiene segmentos que muestran información específica blocks: # --------------------------------------------------------------------------- # BLOQUE PRINCIPAL - PROMPT IZQUIERDO # --------------------------------------------------------------------------- - type: "prompt" # Tipo de bloque: prompt principal alignment: "left" # Alineación a la izquierda # Lista de segmentos que componen el prompt segments: # ----------------------------------------------------------------------- # SEGMENTO 1: ICONO DEL SISTEMA OPERATIVO # ----------------------------------------------------------------------- # Muestra un icono que identifica el sistema operativo actual - type: "text" # Segmento de texto estático/dinámico style: "plain" # Sin decoraciones de powerline # Lógica condicional: Si estamos en VSCode+Windows muestra 💻, sino usa variable OMP_OS_ICON # Esta variable se configura automáticamente en los archivos .zshrc y profile.ps1 template: "{{ if and (eq .Env.TERM_PROGRAM \"vscode\") (eq .Env.OS \"Windows_NT\") }}[💻] {{ else }}[{{ .Env.OMP_OS_ICON }}] {{ end }}" # ----------------------------------------------------------------------- # SEGMENTO 2: INFORMACIÓN DE SESIÓN (USUARIO@HOST) # ----------------------------------------------------------------------- # Muestra usuario actual, estado SSH si aplica, y nombre del host - type: "session" # Segmento de información de sesión style: "plain" # Sin decoraciones de powerline # Template con formato: [usuario@host] con indicador SSH si corresponde template: "{{ if .SSHSession }}\ueba9 {{ end }}{{ .UserName }}@{{ .HostName }}:" # \ueba9 = icono SSH nerd font, = negrita, p:color = referencia a paleta # ----------------------------------------------------------------------- # SEGMENTO 3: RUTA DEL DIRECTORIO ACTUAL # ----------------------------------------------------------------------- # Muestra la ruta del directorio de trabajo actual - type: "path" # Segmento de ruta de archivos style: "plain" # Sin decoraciones de powerline properties: style: "folder" # Mostrar solo el nombre de la carpeta actual (no ruta completa) template: "{{ .Path }}>" # Color cyan para destacar la ubicación # ----------------------------------------------------------------------- # SEGMENTO 4: INFORMACIÓN DE GIT # ----------------------------------------------------------------------- # Segmento más complejo: muestra estado detallado del repositorio Git - type: "git" # Segmento de información Git style: "powerline" # Estilo powerline (con conectores visuales) properties: branch_max_length: 25 # Limitar nombre de branch a 25 caracteres fetch_status: true # Obtener estado remoto (ahead/behind) fetch_upstream_icon: true # Mostrar icono del servicio remoto (GitHub, GitLab, etc.) # Template complejo con información detallada de Git: # - Icono y URL del upstream si existe # - Nombre del branch/HEAD actual # - Estado del branch (ahead/behind) # - Archivos modificados en working directory (\uf044 = icono modificado) # - Archivos en staging area (\uf046 = icono staged) template: " ({{ if .UpstreamURL }}{{ url .UpstreamIcon .UpstreamURL }} {{ end }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} \uf044 {{ .Working.String }}{{ end }}{{ if .Staging.Changed }} \uf046 {{ .Staging.String }}{{ end }})" # Color base: verde (estado limpio) foreground: "p:green" background: "transparent" # Templates condicionales para cambiar color según estado de Git: foreground_templates: # Naranja si hay cambios en working o staging - "{{ if or (.Working.Changed) (.Staging.Changed) }}p:orange{{ end }}" # Rojo si está tanto ahead como behind (conflicto) - "{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:red{{ end }}" # Morado si solo está behind (necesita pull) - "{{ if gt .Behind 0 }}p:morado{{ end }}" # Azul si solo está ahead (necesita push) - "{{ if gt .Ahead 0 }}p:blue{{ end }}" # ----------------------------------------------------------------------- # SEGMENTO 5: CÓDIGO DE SALIDA Y SÍMBOLO FINAL # ----------------------------------------------------------------------- # Muestra el estado del último comando y el símbolo de prompt final - type: "status" # Segmento de estado del último comando style: "plain" # Sin decoraciones de powerline properties: always_enabled: true # Mostrar siempre, incluso si el comando fue exitoso # Template condicional: # - Si el código de salida > 0: muestra X roja (\uf00d) # - Siempre termina con el símbolo de prompt ❯ (\u276f) template: " {{ if gt .Code 0 }}\uf00d {{ end }}\u276f" foreground: "p:white" # Color blanco para el símbolo final background: "transparent" # Fondo transparente # ============================================================================= # TOOLTIPS CONTEXTUALES # ============================================================================= # Tooltips que aparecen cuando se escriben ciertos comandos # Proporcionan información adicional sobre el contexto actual tooltips: # --------------------------------------------------------------------------- # TOOLTIP AWS - INFORMACIÓN DE AMAZON WEB SERVICES # --------------------------------------------------------------------------- # Se activa al escribir "aws" y muestra el perfil y región activos - type: "aws" # Segmento específico para AWS style: "diamond" # Estilo diamante (con bordes redondeados) # Configuración visual del tooltip leading_diamond: "\ue0b0" # Símbolo inicial del diamante trailing_diamond: "\ue0b4" # Símbolo final del diamante # Template: muestra icono AWS + perfil + región si está configurada template: " \ue7ad {{ .Profile }}{{ if .Region }}@{{ .Region }}{{ end }} " # Colores del tooltip AWS foreground: "p:white" # Texto blanco background: "p:orange" # Fondo naranja (color corporativo AWS) properties: display_default: true # Mostrar incluso si es el perfil por defecto # Comandos que activan este tooltip tips: - "aws" # Se activa al escribir "aws" # --------------------------------------------------------------------------- # TOOLTIP AZURE - INFORMACIÓN DE MICROSOFT AZURE # --------------------------------------------------------------------------- # Se activa al escribir "az" y muestra la suscripción activa - type: "az" # Segmento específico para Azure style: "diamond" # Estilo diamante # Configuración visual del tooltip leading_diamond: "\ue0b0" # Símbolo inicial del diamante trailing_diamond: "\ue0b4" # Símbolo final del diamante # Template: muestra icono Azure + nombre de la suscripción template: " \uebd8 {{ .Name }} " # Colores del tooltip Azure foreground: "p:white" # Texto blanco background: "p:blue" # Fondo azul (color corporativo Azure) properties: display_default: true # Mostrar incluso si es la suscripción por defecto # Comandos que activan este tooltip tips: - "az" # Se activa al escribir "az" # ============================================================================= # NOTAS IMPORTANTES PARA EL USUARIO: # ============================================================================= # 1. Este archivo debe colocarse en ~/.oh-my-posh.yaml # 2. Para usar este tema, actualiza tu configuración shell: # - Zsh: eval "$(oh-my-posh init zsh --config ~/.oh-my-posh.yaml)" # - PowerShell: oh-my-posh init pwsh --config ~/.oh-my-posh.yaml | Invoke-Expression # - Bash: eval "$(oh-my-posh init bash --config ~/.oh-my-posh.yaml)" # 3. Requiere una Nerd Font instalada (FiraCode Nerd Font recomendada) # 4. La variable OMP_OS_ICON debe estar configurada: # - Se configura automáticamente en .zshrc y Microsoft.PowerShell_profile.ps1 # - Valores típicos: 🍎 (macOS), 🐧 (Linux), 🔳 (WSL2), 🪟 (Windows) # 5. Para personalizar colores, modifica la sección "palette" # 6. Para añadir/quitar segmentos, modifica la lista "segments" # 7. Los iconos usan Nerd Font symbols: https://www.nerdfonts.com/cheat-sheet # 8. Para validar la configuración: oh-my-posh config validate --config ~/.oh-my-posh.yaml # 9. Para previsualizar cambios: oh-my-posh print primary --config ~/.oh-my-posh.yaml # =============================================================================