From 81e3f6de1e29492b95b03205980ee60ae530828c Mon Sep 17 00:00:00 2001 From: Marco Gallegos Date: Thu, 20 Nov 2025 23:11:37 -0600 Subject: [PATCH] feat: Add automatic terminal font configuration and switch Docker setup from Colima to Docker Desktop. --- .zshrc.example | 2 -- readme.md | 28 ++++++++++--------- vanity_setup.sh | 72 ++++++++++++++++++++++++++++++------------------- 3 files changed, 60 insertions(+), 42 deletions(-) diff --git a/.zshrc.example b/.zshrc.example index 5b5c855..7e2e4c6 100644 --- a/.zshrc.example +++ b/.zshrc.example @@ -146,7 +146,6 @@ alias dps='docker ps -a' alias di='docker images' alias dex='docker exec -it' alias dlog='docker logs -f' -alias colima-start='colima start --cpu 4 --memory 8 --disk 60' # --- NPM ------------------------------------------------------------------ alias nrs='npm run start' @@ -269,7 +268,6 @@ fi vanity_help() { cat <` (video completo) y `ytm ` (solo audio MP3). - Añade un comando `help` dentro de Zsh que describe el uso de estos alias. +- Cambia la fuente predeterminada de la app Terminal a *MesloLGS Nerd Font* (tamaño 14) para que los iconos de Oh My Posh se vean bien desde el primer arranque. -## 🐳 Stack Docker + Portainer (sin Desktop) -1. Instala el Docker CLI oficial (`brew install docker docker-buildx docker-compose`). -2. Instala Colima, que levanta el daemon de Docker usando Hypervisor.framework. -3. Intenta iniciar Colima automáticamente con `colima start --cpu 4 --memory 8 --disk 60`. -4. Instala Lazydocker (`brew install lazydocker`). -5. Despliega Portainer CE con los puertos `8000` y `9443`. Acceso: `https://localhost:9443`. +## 🐳 Stack Docker + Portainer +1. Instala el Docker CLI oficial (`brew install docker docker-buildx docker-compose`) y `lazydocker`. +2. Instala Docker Desktop vía Homebrew Cask y lo abre automáticamente. +3. Espera a que Docker Desktop termine de iniciar (el script consulta `docker info` hasta tener respuesta). +4. Cuando el daemon está listo, despliega Portainer CE publicando `8000` y `9443` (`https://localhost:9443`). -> Si Colima no logra iniciar (por ejemplo, porque falta el permiso de virtualización), el script salta Portainer y te recuerda ejecutar `colima start` manualmente antes de volver a elegir la opción `D`. +> Si Docker Desktop no termina de arrancar, el instalador lo indicará y deberás abrir la app manualmente antes de volver a elegir la opción `D`. ## ✅ Verificación rápida - Recargar Zsh: `source ~/.zshrc` +- Cierra y vuelve a abrir Terminal: la fuente debe ser MesloLGS Nerd Font con los iconos correctos en el prompt. - Comprobar Oh My Posh: el prompt debe mostrar colores y símbolos; si no, ejecuta `oh-my-posh init zsh --config ~/.poshthemes/catppuccin.omp.json`. - Verificar Docker: `docker info` - Confirmar Portainer: abre `https://localhost:9443` en el navegador. @@ -70,14 +72,14 @@ El script muestra un menú para elegir qué componentes instalar. ## ❗️ Solución de problemas - **“command not found: brew”**: ejecuta `eval "$(/opt/homebrew/bin/brew shellenv)"` (o `/usr/local/bin/brew`) y vuelve a correr la opción deseada. -- **Docker no arranca**: ejecuta `colima start` (o `colima status` para verificar) y vuelve a lanzar la opción `D` cuando `docker info` funcione. +- **Docker no arranca**: abre Docker Desktop y espera a que muestre “Running”; luego ejecuta `docker info` y repite la opción `D`. - **Oh My Posh sin fuente correcta**: instala Meslo manualmente desde `~/Library/Fonts` o selecciona *Meslo LG S DZ Nerd Font* en tu terminal. - **Conflictos con un `.zshrc` previo**: el instalador hace backup implícito sobrescribiendo `~/.zshrc`. Asegúrate de versionar tu archivo antes si necesitas conservarlo. ## 🧽 Desinstalación rápida - Elimina Portainer: `docker stop portainer && docker rm portainer && docker volume rm portainer_data`. - Borra la config Zsh (opcional): `rm -rf ~/.oh-my-zsh ~/.poshthemes ~/.zshrc`. -- Desinstala apps con Homebrew: `brew uninstall docker colima lazydocker oh-my-posh`. +- Desinstala apps con Homebrew: `brew uninstall docker docker-buildx docker-compose lazydocker oh-my-posh` y `brew uninstall --cask docker`. ## 📄 Licencia Distribuido bajo la licencia MIT. Consulta `LICENSE` para más detalles. diff --git a/vanity_setup.sh b/vanity_setup.sh index 5922996..674b9d0 100644 --- a/vanity_setup.sh +++ b/vanity_setup.sh @@ -77,6 +77,25 @@ setup_media_dirs() { mkdir -p "$HOME/videos/youtube" "$HOME/musica/youtube" } +configure_terminal_font() { + if ! command -v osascript >/dev/null 2>&1; then + return + fi + + local font_name="MesloLGS Nerd Font" + echo "Configurando Terminal para usar la fuente $font_name…" + /usr/bin/osascript </dev/null 2>&1 +tell application "Terminal" + try + set font name of default settings to "$font_name" + set font size of default settings to 14 + set font name of startup settings to "$font_name" + set font size of startup settings to 14 + end try +end tell +EOF +} + install_oh_my_zsh() { echo "Instalando Oh My Zsh y plugins…" if [ ! -d "$HOME/.oh-my-zsh" ]; then @@ -106,6 +125,7 @@ install_zsh_config() { install_cli_dependencies install_oh_my_zsh setup_media_dirs + configure_terminal_font echo "Configurando Oh My Posh…" mkdir -p "$HOME/.poshthemes" @@ -136,43 +156,40 @@ ensure_docker_daemon() { fi echo "No se detectó un demonio de Docker en ejecución." >&2 - echo "Asegúrate de tener un entorno Docker corriendo (Colima, OrbStack, Docker Desktop, etc)." >&2 + echo "Asegúrate de que Docker Desktop, OrbStack u otro daemon remoto esté activo." >&2 return 1 } -ensure_colima_daemon() { - if ensure_docker_daemon; then - return 0 - fi +wait_for_docker_desktop() { + local attempts=0 + local max_attempts=40 + local delay=5 - if ! command -v colima >/dev/null 2>&1; then - echo "Colima no está instalado; no se puede iniciar un daemon Docker automáticamente." >&2 - return 1 - fi - - if colima status >/dev/null 2>&1; then - docker context use colima >/dev/null 2>&1 || true - else - echo "Iniciando daemon de Docker con Colima…" - if ! colima start --cpu 4 --memory 8 --disk 60; then - echo "No se pudo iniciar Colima automáticamente; ejecútalo manualmente con 'colima start'." >&2 - return 1 + echo "Esperando a que Docker Desktop termine de iniciar…" + while (( attempts < max_attempts )); do + if docker info >/dev/null 2>&1; then + echo "Docker Desktop está operativo." + return 0 fi - fi + sleep "$delay" + attempts=$((attempts + 1)) + done - sleep 2 - docker context use colima >/dev/null 2>&1 || true - ensure_docker_daemon - return $? + echo "Docker Desktop no respondió después de $((max_attempts * delay)) segundos." >&2 + return 1 } install_docker_stack() { echo "Instalando Docker CLI y utilidades…" - brew install docker docker-buildx docker-compose lazydocker colima + brew install docker docker-buildx docker-compose lazydocker + brew install --cask docker - if ! ensure_colima_daemon; then - echo "Se omitió Portainer porque no hay un daemon Docker en ejecución." >&2 - echo "Sugerencia: inicia Colima manualmente con 'colima start' y vuelve a ejecutar la opción D." >&2 + echo "Abriendo Docker Desktop…" + open -gj -a Docker || open -a Docker || true + + if ! wait_for_docker_desktop; then + echo "Se omitió Portainer porque Docker Desktop no está listo." >&2 + echo "Abre Docker Desktop manualmente y vuelve a ejecutar la opción D." >&2 return fi @@ -234,8 +251,9 @@ BANNER echo "" main_menu - echo "==============================================" echo " Instalación completada." echo "==============================================" echo "" +echo "Para aplicar la configuración ejecuta ahora:" +echo "source ~/.zshrc"