jueves, 11 de diciembre de 2025

Cómo crear un icono .icns para tu app en macOS usando solo Terminal

 macOS • Iconos personalizados PRO

Convierte un PNG del Escritorio (por ejemplo el icono de QRSCAN) en un icono .icns profesional para tus apps de macOS.

Vamos a usar solo herramientas nativas: sips para generar los tamaños y iconutil para crear el .icns final.

1. Requisitos previos

  • Un Mac con macOS (Intel o Apple Silicon).
  • Un archivo PNG cuadrado en el Escritorio, por ejemplo qrscan.png, idealmente 1024x1024 px.
  • Terminal (Zsh por defecto).
Puedes adaptar el nombre del archivo (por ejemplo miapp.png), pero en los ejemplos usaremos qrscan.png.

2. Crear la carpeta de iconos (.iconset)

Primero creamos la carpeta donde irán todas las versiones de tamaño del icono:

 TERMINAL MAC
cd ~/Desktop
mkdir qrscan.iconset
Si tu PNG no se llama qrscan.png, cambia el nombre en los comandos de esta guía.

3. Generar todos los tamaños de icono con sips

macOS usa distintos tamaños de icono según el contexto (Dock, Finder, vista previa…). Vamos a generarlos todos a partir de tu PNG original.

Ejecuta este bloque tal cual (asegúrate de estar en el Escritorio):

 TERMINAL MAC
cd ~/Desktop

sips -z 16 16   qrscan.png --out qrscan.iconset/icon_16x16.png
sips -z 32 32   qrscan.png --out qrscan.iconset/icon_16x16@2x.png

sips -z 32 32   qrscan.png --out qrscan.iconset/icon_32x32.png
sips -z 64 64   qrscan.png --out qrscan.iconset/icon_32x32@2x.png

sips -z 128 128 qrscan.png --out qrscan.iconset/icon_128x128.png
sips -z 256 256 qrscan.png --out qrscan.iconset/icon_128x128@2x.png

sips -z 256 256 qrscan.png --out qrscan.iconset/icon_256x256.png
sips -z 512 512 qrscan.png --out qrscan.iconset/icon_256x256@2x.png

sips -z 512 512 qrscan.png --out qrscan.iconset/icon_512x512.png
cp qrscan.png qrscan.iconset/icon_512x512@2x.png
Si partes de un PNG de 1024x1024 px, las versiones @2x (retina) se verán nítidas en todos los tamaños.

4. Convertir la carpeta .iconset en un .icns

Ahora empaquetamos la carpeta qrscan.iconset en un único archivo qrscan.icns, que es el formato de iconos oficial de macOS.

 TERMINAL MAC
cd ~/Desktop
iconutil -c icns qrscan.iconset

Si no hay errores, tendrás en tu Escritorio un archivo llamado qrscan.icns.

Puedes eliminar la carpeta qrscan.iconset si ya no la necesitas, dejando solo el .icns.

5. Aplicar el icono .icns a una app (Automator, utilidades, etc.)

Para apps sencillas (Automator, herramientas internas), el truco más simple sigue siendo usar Vista Previa y la ventana de “Obtener información”.

  1. Haz doble clic en qrscan.icns para abrirlo con Vista Previa.
  2. En Vista Previa, ve a Edición → Seleccionar todo (o ⌘A).
  3. Después, ve a Edición → Copiar (o ⌘C).
  4. En Finder, localiza tu app (por ejemplo Leer QR.app).
  5. Haz clic derecho sobre la app y selecciona Obtener información (o pulsa ⌘I).
  6. En la ventana de información, haz clic una vez sobre el pequeño icono de arriba a la izquierda (junto al nombre de la app) hasta que quede resaltado.
  7. Pulsa ⌘V para pegar el icono .icns que tienes en el portapapeles.
El nuevo icono se propagará al Dock, Spotlight y Finder. Si no lo ves al momento, cierra y vuelve a abrir la app, o reinicia sesión.

6. Resumen

  • Partes de un PNG cuadrado en el Escritorio (qrscan.png).
  • Generas todos los tamaños en una carpeta .iconset con sips.
  • Creas un .icns profesional con iconutil.
  • Aplicás el icono a cualquier app usando Vista Previa + “Obtener información”.

Perfecto para dar identidad visual a utilidades como QRSCAN, lanzadores de scripts y apps internas de tu ecosistema macOS.

Cómo crear QRSCAN en tu Mac para leer códigos QR en PDF, JPG y PNG

 macOS • QRSCAN Profesional

Convierte tu Mac en un lector de códigos QR profesional usando Python, un entorno virtual aislado y un comando rápido llamado qrscan.

1. Requisitos previos

Solo necesitas tres cosas:

  • macOS con Terminal (Intel o Apple Silicon).
  • Python 3 preinstalado (todos los Mac modernos lo traen).
  • Homebrew instalado.

Comprueba todo con:

 TERMINAL
python3 --version
brew --version
Si eso aparece correcto, continúa. No necesitaremos usar pip global, así que no habrá errores.

2. Crear el entorno virtual seguro

Vamos a crear un entorno completamente aislado llamado qrscan-env:

 TERMINAL
python3 -m venv ~/qrscan-env
source ~/qrscan-env/bin/activate

Instala las dependencias dentro del entorno:

 TERMINAL
pip install opencv-python pillow pdf2image

Instala poppler con Homebrew (para leer PDF):

 TERMINAL
brew install poppler

3. Crear el script ~/leer_qr.py

Pega este script completo:

 TERMINAL
cat > ~/leer_qr.py << 'EOF'
import sys, os
from PIL import Image
import numpy as np
import cv2
from pdf2image import convert_from_path

detector = cv2.QRCodeDetector()

def leer_qr_en_imagen(ruta):
    img = Image.open(ruta).convert("RGB")
    arr = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)

    textos = []

    try:
        ok, decoded, pts, _ = detector.detectAndDecodeMulti(arr)
        if ok:
            textos += [t for t in decoded if t]
    except:
        t, _, _ = detector.detectAndDecode(arr)
        if t:
            textos.append(t)

    return textos

def leer_qr_en_pdf(ruta):
    paginas = convert_from_path(ruta, dpi=300)
    resultados = []
    for i, p in enumerate(paginas):
        t = f"/tmp/qrscan_{i}.png"
        p.save(t, "PNG")
        resultados += leer_qr_en_imagen(t)
        os.remove(t)
    return resultados

if len(sys.argv) < 2:
    print("Uso: python3 leer_qr.py archivo.pdf|jpg|png")
    sys.exit()

archivo = sys.argv[1]

if not os.path.exists(archivo):
    print("Archivo no encontrado:", archivo)
    sys.exit()

if archivo.lower().endswith(".pdf"):
    r = leer_qr_en_pdf(archivo)
else:
    r = leer_qr_en_imagen(archivo)

if not r:
    print("No se encontró ningún QR")
else:
    print("=== QR DETECTADOS ===")
    for x in r:
        print(x)
EOF

4. Crear el comando rápido qrscan

Con esto podrás leer QR desde cualquier sitio simplemente escribiendo qrscan archivo.pdf.

Crea ~/bin si no existe:

 TERMINAL
mkdir -p ~/bin

Crea el script:

 TERMINAL
cat > ~/bin/qrscan << 'EOF'
#!/bin/zsh
"$HOME/qrscan-env/bin/python" "$HOME/leer_qr.py" "$@"
EOF

chmod +x ~/bin/qrscan

Añádelo al PATH:

 TERMINAL
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

5. Cómo usar QRSCAN

Una vez instalado, puedes leer códigos QR de cualquier archivo PDF, JPG o PNG simplemente usando el comando qrscan.

Ejemplo con PDF:

 TERMINAL
qrscan "/ruta/a/diseño.pdf"

Ejemplo con imagen:

 TERMINAL
qrscan "/ruta/a/imagen.png"
Ten en cuenta que el proceso puede tardar unos segundos, especialmente en PDFs con varias páginas. Una vez analizado el archivo, el comando mostrará en Terminal todos los enlaces detectados dentro de los códigos QR.

6. Acción rápida en Finder: clic derecho → “Leer QR”

Vamos a crear una Acción rápida (Quick Action) que te permitirá leer códigos QR directamente desde el menú contextual del Finder: seleccionas cualquier PDF, JPG o PNG → botón derecho → Acciones rápidas → Leer QR. Es la forma más cómoda de usar QRScan en tu día a día.

6.1 Configurar la Acción rápida en Automator

  1. Abre Automator.
  2. Pulsa Nuevo documento.
  3. Selecciona Acción rápida.
  4. Configura la parte superior así:
    • El flujo de trabajo recibe: archivos o carpetas
    • En: Finder.app
    • Imagen: Acción
    • Color: Negro
  5. En la barra lateral izquierda, busca “Ejecutar script de shell” y arrástralo al flujo.
  6. Configura:
    • Shell: /bin/zsh
    • Pasar datos de entrada: como argumentos

Pega este script final, 100% funcional para PDF multipágina, JPG y PNG:

 TERMINAL MAC
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"

PY="$HOME/qrscan-env/bin/python3"

for f in "$@"
do
  RESULT=$("$PY" "$HOME/leer_qr.py" "$f" \
    | grep -v '^=== QR DETECTADOS ===' \
    | sed '/^[[:space:]]*$/d' \
    | head -n 1)

  if [ -z "$RESULT" ]; then
    osascript -e 'display dialog "No se detectó ningún QR en el archivo seleccionado." with title "QRScan" buttons {"OK"} default button 1'
  else
    printf "%s" "$RESULT" | pbcopy

    osascript -e '
      display dialog "El contenido del QR se ha copiado al portapapeles:" & return & return & (the clipboard as text) ¬
      with title "QRScan - enlace copiado" buttons {"OK"} default button 1
    '
  fi
done

Guarda la acción con el nombre Leer QR. Ahora aparecerá automáticamente en: clic derecho → Acciones rápidas → Leer QR.

Esta acción puede tardar unos segundos en mostrar el resultado, especialmente si el archivo es un PDF multipágina o contiene varios códigos QR.
Configuración correcta de Acción rápida en Automator para QRScan

Haz clic para ampliar la imagen — configuración correcta de la Acción rápida “Leer QR”.

7. Crear una app (.app) arrastrar-y-soltar

Si quieres tener un acceso rápido en tu Dock o Escritorio, puedes crear una aplicación llamada Leer QR.app para arrastrar archivos PDF/JPG/PNG encima y obtener el enlace del QR al instante.

7.1. Crear la aplicación en Automator

Abre Automator y selecciona Aplicación como tipo de documento:

  1. Abre Automator en tu Mac.
  2. Selecciona Nuevo documento.
  3. Elige la opción Aplicación (muy importante).
  4. En la biblioteca de acciones, busca “Ejecutar un script de shell” y arrástralo al flujo.
  5. Configura así:
    • Shell: /bin/zsh
    • Pasar datos de entrada: como argumentos

Pega el siguiente script dentro del campo de Automator:

 AUTOMATOR (zsh)
for f in "$@"
do
  "$HOME/qrscan-env/bin/python" "$HOME/leer_qr.py" "$f"
done

Guarda la aplicación con el nombre Leer QR.app y colócala en Aplicaciones o en el Escritorio. Si quieres un acceso aún más rápido, arrástrala al Dock.

Ahora podrás arrastrar cualquier archivo PDF, JPG o PNG encima del icono de Leer QR.app. La app ejecutará el script y mostrará en Terminal el enlace del QR detectado.

8. Crear un Atajo de macOS (Shortcuts)

También puedes crear un atajo para leer códigos QR desde Spotlight, desde la barra de menús o incluso asignarle un atajo de teclado. Este método también usa el entorno virtual qrscan-env.

8.1. Crear un atajo que pide un archivo y lee el QR

  1. Abre la app Atajos en tu Mac.
  2. Crea un nuevo atajo llamado Leer QR (archivo).
  3. Añade la acción “Seleccionar archivo”. Esta acción permite elegir un PDF, JPG o PNG.
  4. Añade la acción “Ejecutar script de shell”. Configúrala así:
    • Shell: /bin/zsh
    • Entrada: archivo seleccionado

Pega este script dentro del bloque:

 ATAJOS (zsh)
PY="$HOME/qrscan-env/bin/python3"
"$PY" "$HOME/leer_qr.py" "$1"
Puedes añadir una acción final de Notificación para mostrar los enlaces QR o una acción para copiarlos al portapapeles. El proceso puede tardar unos segundos si el PDF es grande.

9. Resumen

Ya tienes un ecosistema completo para leer códigos QR en tu Mac:

  • qrscan — comando rápido profesional.
  • Acción rápida en Finder.
  • App arrastrar-y-soltar.
  • Atajo de macOS.

jueves, 27 de noviembre de 2025

Cómo solucionar el error “No estás autorizado a abrir la aplicación” en macOS (Actualizado 11/2025)

 macOS • Solución de errores

Guía rápida para Mac con chip Intel y Mac con chip Apple (M1, M2, M3…).

Si al intentar abrir una app en tu Mac te aparece el mensaje: “No estás autorizado a abrir la aplicación ‘lo que sea’”, no eres el único. Este error suele estar relacionado con permisos de la app o bloqueos de seguridad de macOS.

💻 Mac Intel
🍏 Apple Silicon (M1/M2/M3…)

Solución 1: revisar permisos desde el Finder (Intel + Apple)

Es el primer paso recomendado y no requiere usar Terminal.

  1. Abre la carpeta Aplicaciones.
  2. Clic derecho en la app → Obtener información.
  3. Ve abajo a Compartir y permisos.
  4. Asegúrate de que tu usuario tiene Leer y escribir.
  5. Si no aparece así, haz clic en el candado, introduce tu contraseña y cambia los permisos.
  6. Si ves la opción, pulsa Aplicar a los ítems incluidos….
Si con esto se soluciona, no es necesario continuar con las demás soluciones.

Solución 2: permitir la app desde Seguridad y privacidad

macOS puede bloquear apps que no están firmadas por Apple o desarrolladores identificados.

  1. Ve a  → Ajustes del Sistema (o Preferencias del Sistema).
  2. Entra en Seguridad y privacidad.
  3. En la pestaña General busca un mensaje como:
    “La aplicación ha sido bloqueada por seguridad”.
  4. Pulsa Abrir igualmente.
  5. Intenta abrir la aplicación de nuevo.
Esta opción aparece solo si macOS ha bloqueado la app por seguridad.

Solución 3: eliminar “quarantine” desde Terminal

 TERMINAL MAC
xattr -d com.apple.quarantine "/Applications/NombreDeLaApp.app"

Truco rápido: escribe el comando, deja un espacio y arrastra la aplicación desde Finder a la ventana del Terminal. macOS pegará automáticamente la ruta completa.

Solución 4: dar permisos de ejecución al binario interno (Intel + Apple)

Algunas aplicaciones no tienen permiso para ejecutar su archivo interno principal. Ese archivo está dentro de la carpeta oculta /Contents/MacOS/ del propio .app.

Para acceder a esa carpeta desde el Finder:

  • Haz clic derecho sobre la app → Mostrar contenido del paquete.
  • Entra en la carpeta Contents → luego en MacOS.
  • Ese archivo es el ejecutable que necesita permisos.
 TERMINAL MAC
chmod +x "/Applications/NombreDeLaApp.app/Contents/MacOS/"*

Truco rápido: puedes escribir chmod +x, dejar un espacio y arrastrar la app al Terminal. macOS pegará la ruta completa automáticamente.

Si el ejecutable interno no tiene permisos de ejecución, macOS mostrará errores como “no estás autorizado”, “permiso denegado” o simplemente la app no abrirá.

Solución avanzada: eliminar quarantine + corregir permisos

 TERMINAL MAC
sudo xattr -rd com.apple.quarantine "/Applications/NombreDeLaApp.app"
sudo chmod -R 755 "/Applications/NombreDeLaApp.app"

Truco rápido: escribe sudo xattr -rd com.apple.quarantine, deja un espacio y arrastra la app al Terminal. Así pegas la ruta exacta.

lunes, 24 de noviembre de 2025

⭐ Magic-Desktop: el atajo definitivo para limpiar tu escritorio en un segundo

Magic-Desktop: limpia tu escritorio en un segundo

El escritorio del Mac suele convertirse, sin darnos cuenta, en una zona llena de capturas de pantalla, archivos temporales, carpetas pendientes y todo tipo de elementos que terminan apareciendo en vídeos, presentaciones o sesiones de trabajo compartidas. Magic-Desktop llega precisamente para evitar eso.

Este atajo te permite ocultar o mostrar todos los iconos del escritorio con un simple comando, un atajo de teclado o incluso con la voz mediante Siri. Funciona de forma instantánea, sin eliminar nada y sin necesidad de mover archivos entre carpetas.

¿En qué situaciones es útil?

Magic-Desktop brilla especialmente en estos momentos:

  • 🎥 Grabación de tutoriales o Reels
  • 🎓 Clases online y demostraciones técnicas
  • 🧑‍💼 Reuniones profesionales compartiendo pantalla
  • 🪄 Presentaciones sin distracciones visuales
  • 🧘 Productividad: escritorio limpio mientras trabajas
  • 📸 Capturas de pantalla más limpias y profesionales

Pues vamos al lío, empecemos.

📥 Descarga directa del Atajo (opción recomendada)

Si quieres ser cómodo o cómoda, no complicarte la vida y disfrutar de Magic-Desktop al instante, aquí tienes la descarga directa desde iCloud:

Una vez instalado podrás usarlo:

  • haciendo clic dentro de la app Atajos,
  • pidiéndoselo a Siri,
  • o con un atajo de teclado ultrarrápido: Control + O (⌃ O).

Con esa combinación, el escritorio se oculta o reaparece al instante, estés en la aplicación que estés.

🧪 ¿Prefieres entender cómo funciona y crearlo tú mismo/a?

Si te gusta aprender, experimentar y montar tus propios atajos, sigue leyendo. A continuación verás paso a paso cómo funciona Magic-Desktop por dentro y cómo puedes crearlo manualmente: desde el script principal hasta la configuración final para macOS.

🛠️ Cómo crear Magic-Desktop manualmente

Magic-Desktop funciona gracias a un pequeño ajuste interno de macOS que controla si el escritorio muestra o no sus iconos. Lo único que hacemos es automatizar ese proceso para que puedas activarlo o desactivarlo con un solo gesto.

1️⃣ Crear el atajo desde cero

Abre la app Atajos en tu Mac:

  • Pulsa el botón “+” para crear un nuevo atajo.
  • Ponle el nombre Magic-Desktop.
  • Opcional: elige un icono o color para identificarlo rápidamente.

2️⃣ Añadir la acción “Ejecutar script de shell”

En el buscador de acciones escribe script y selecciona:

Ejecutar script de shell

Asegúrate de que el campo Shell está en bash.

3️⃣ Añadir el código que alterna el escritorio

Este script comprueba si el escritorio está visible o no, y alterna entre ambos estados automáticamente.

 TERMINAL MAC
Script principal · Magic-Desktop

ESTADO=$(defaults read com.apple.finder CreateDesktop 2>/dev/null)

if [ "$ESTADO" = "1" ] || [ "$ESTADO" = "true" ]; then
    defaults write com.apple.finder CreateDesktop -bool false
    MENSAJE="Ocultando escritorio"
else
    defaults write com.apple.finder CreateDesktop -bool true
    MENSAJE="Mostrando iconos del Escritorio"
fi

killall Finder
echo "$MENSAJE"

4️⃣ Configuración correcta del bloque

En la parte inferior de la acción “Ejecutar script de shell”, déjalo así:

  • Shell: bash
  • Entrada: Entrada de atajo (o “Entrada”)
  • Pasar entrada: a stdin
  • Ejecutar como administrador: desactivado

Esto es importante: si se ejecuta como administrador, macOS guarda la preferencia en otro contexto y el escritorio vuelve a aparecer solo. Con esta configuración funciona perfectamente en macOS Tahoe.

5️⃣ Añadir “Mostrar resultado”

Añade una nueva acción al atajo:

Mostrar resultado

No hace falta escribir nada: el propio script se encarga de enviar el mensaje adecuado (“Ocultando escritorio” o “Mostrando iconos del Escritorio”).

6️⃣ Asignar el atajo de teclado Control + O (⌃ O)

Con el atajo ya creado:

  • Pulsa el icono (i) arriba a la derecha.
  • Activa “Añadir atajo de teclado”.
  • Pulsa la combinación Control + O (⌃ O).

A partir de ese momento, podrás alternar la visibilidad del escritorio desde cualquier app simplemente pulsando esa combinación de teclas.

7️⃣ Probar que todo funciona

Para probarlo, ejecuta el atajo desde la app Atajos o usando ⌃ O:

  • Primera ejecución → el escritorio se limpia y verás “Ocultando escritorio”.
  • Segunda ejecución → vuelven los iconos y verás “Mostrando iconos del Escritorio”.

Cuando veas ese comportamiento, tendrás Magic-Desktop funcionando exactamente igual que la versión que puedes descargar desde iCloud, pero entendiendo todo lo que ocurre por detrás.

📸 Vista previa del atajo en Atajos (simulación en HTML)

Para que te hagas una idea visual, así se ve el atajo Magic-Desktop dentro de la app Atajos en macOS, recreado en HTML:

>_
Ejecutar script de shell
ESTADO=$(defaults read com.apple.finder CreateDesktop 2>/dev/null)

if [ "$ESTADO" = "1" ] || [ "$ESTADO" = "true" ]; then
    defaults write com.apple.finder CreateDesktop -bool false
    MENSAJE="Ocultando escritorio"
else
    defaults write com.apple.finder CreateDesktop -bool true
    MENSAJE="Mostrando escritorio"
fi

killall Finder
echo "$MENSAJE"
Mostrar resultado

El resultado del script se muestra como un pequeño mensaje, por ejemplo:

“Ocultando escritorio” o “Mostrando iconos del Escritorio”.

viernes, 21 de noviembre de 2025

⭐ DW ULTIMATE 2025-2026: Tu comando definitivo para descargar vídeos de Instagram, YouTube, TikTok y cualquier red social

DW ULTIMATE · TUTORIAL COMPLETO 2025-2026

Cómo descargar vídeos de cualquier red social en macOS con DW ULTIMATE

Instagram y otras redes sociales como YouTube, TikTok o X han endurecido sus medidas de seguridad y muchas veces no permiten descargar contenido sin estar logueado. En esta guía vas a crear DW ULTIMATE, un comando llamado dw que:

  • Actualiza automáticamente las cookies reales de Safari (especialmente útil para tu sesión de Instagram).
  • Te pide o confirma la URL mediante una ventana de macOS.
  • Descarga el vídeo de la red social que elijas con yt-dlp usando esas cookies y ffmpeg para las fusiones de audio/vídeo.
  • Muestra una notificación “Descarga completada.” y reproduce un sonido al terminar.
📝 Antes de empezar…

Te recomiendo leer el tutorial completo con calma, especialmente si es la primera vez que instalas herramientas en tu Mac desde el Terminal.

Todos los pasos que vas a realizar son seguros, no dañan tu ordenador y utilizan componentes fiables y ampliamente usados como Homebrew, Python, yt-dlp, ffmpeg y comandos estándar de macOS. No vas a modificar nada crítico del sistema: simplemente añadirás utilidades que usan millones de personas a diario.

Si sigues los pasos tal y como están explicados, podrás completar el proceso sin problemas. Tómate tu tiempo, revisa cada bloque antes de copiarlo y verás que crear tu propio descargador DW ULTIMATE es mucho más sencillo de lo que parece. 😊💪🏼

🧩 PASO 1 – Comprobar si Python 3 está instalado

Abre el Terminal y escribe:

 TERMINAL MAC
python3 --version

Si ves algo como: Python 3.12.0 o similar OK · Pasa al PASO 3

Si aparece “command not found” o error Instala Python · PASO 2

🧩 PASO 2 – ONE-SHOT: Instalar Homebrew + Python 3 automáticamente

Si no tienes Python 3, puedes instalar todo de una vez (Homebrew + Python 3) con este bloque. Solo tienes que copiar y pegarlo en el Terminal:

 TERMINAL MAC
# Instalar Homebrew si no existe
if ! command -v brew >/dev/null 2>&1; then
  echo "Instalando Homebrew..."
  /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  eval "$(/opt/homebrew/bin/brew shellenv)"
else
  echo "Homebrew ya está instalado."
fi

# Asegurar que Brew funciona en esta sesión
eval "$(/opt/homebrew/bin/brew shellenv)"

# Instalar Python 3
echo "Instalando Python 3..."
brew install python

# Verificar instalación
echo "Python instalado:"
python3 --version

Al terminar, vuelve a comprobar:

 TERMINAL MAC
python3 --version

Si devuelve una versión de Python 3, puedes continuar.

🧩 PASO 3 – Instalar la librería browser-cookie3

Esta librería es la que permitirá leer las cookies cifradas de Safari (incluida tu sesión de Instagram y otras webs que requieran login).

Instálala con:

 TERMINAL MAC
python3 -m pip install --user --break-system-packages browser-cookie3

Puedes comprobar la instalación con:

 TERMINAL MAC
python3 -m pip show browser-cookie3
🧩 PASO 4 – Instalar yt-dlp y ffmpeg

yt-dlp es el motor de descargas, y ffmpeg se encarga de fusionar audio y vídeo de forma óptima. Lo más sencillo es instalarlos con Homebrew.

Opción A – Instalación directa recomendada

Comandos básicos (recomendados para la mayoría de usuarios):

 TERMINAL MAC
brew install yt-dlp
brew install ffmpeg

Opción B – Solo instalar si faltan

Si prefieres comprobar primero, puedes usar algo como:

 TERMINAL MAC
# Instalar yt-dlp solo si no está
if ! command -v yt-dlp >/dev/null 2>&1; then
  brew install yt-dlp
fi

# Instalar ffmpeg solo si no está
if ! command -v ffmpeg >/dev/null 2>&1; then
  brew install ffmpeg
fi

Comprueba que yt-dlp responde correctamente:

 TERMINAL MAC
yt-dlp --version
🧩 PASO 5 – ONE-SHOT: Crear ~/bin y añadirlo al PATH

Ahora vamos a crear la carpeta personal de scripts (~/bin) y añadirla al PATH de zsh en un solo paso.

Copia y pega este bloque:

 TERMINAL MAC
# Crear ~/bin si no existe
mkdir -p "$HOME/bin"

# Crear ~/.zshrc si no existe
touch "$HOME/.zshrc"

# Añadir ~/bin al PATH solo si aún no está
if ! grep -q 'export PATH="$HOME/bin:$PATH"' "$HOME/.zshrc"; then
  echo 'export PATH="$HOME/bin:$PATH"' >> "$HOME/.zshrc"
  echo "Añadido ~/bin al PATH."
else
  echo "~/bin ya estaba en el PATH."
fi

# Recargar configuración de la shell
source "$HOME/.zshrc"

echo "PATH actualizado correctamente."

A partir de aquí, cualquier script que guardes dentro de ~/bin se podrá ejecutar como un comando más.

🧩 PASO 6 – Crear el script export-dwUltimate-cookies-safari

Este script exporta tus cookies de Instagram desde Safari y las guarda en ~/instagram_cookies/cookies.txt en formato compatible con yt-dlp. Está pensado principalmente para Instagram, pero la estructura se adapta a otras webs que requieran autenticación.

Copia y pega este bloque completo:

 TERMINAL MAC
cat > ~/bin/export-dwUltimate-cookies-safari << 'EOF'
#!/bin/bash
# Exporta cookies de Instagram desde Safari a formato Netscape para yt-dlp
# DW ULTIMATE (2025-2026)

set -e

DEST_DIR="$HOME/instagram_cookies"
DEST_FILE="$DEST_DIR/cookies.txt"

mkdir -p "$DEST_DIR"

# 1. Comprobar python3
if ! command -v python3 >/dev/null 2>&1; then
  echo "ERROR: python3 no está instalado."
  exit 1
fi

# 2. Comprobar que browser-cookie3 existe
python3 - << 'PYEOF'
try:
    import browser_cookie3
except ImportError:
    import sys
    print("ERROR: Falta el módulo 'browser-cookie3'.", file=sys.stderr)
    print("Instálalo con:", file=sys.stderr)
    print("python3 -m pip install --user --break-system-packages browser-cookie3", file=sys.stderr)
    sys.exit(1)
PYEOF

# 3. Volcar cookies de Safari → cookies.txt
python3 << 'PYEOF'
import browser_cookie3
import os, time

cj = browser_cookie3.safari(domain_name="instagram.com")

dest_dir = os.path.expanduser("~/instagram_cookies")
os.makedirs(dest_dir, exist_ok=True)
dest_file = os.path.join(dest_dir, "cookies.txt")

with open(dest_file, "w", encoding="utf-8") as f:
    f.write("# Netscape HTTP Cookie File\n")
    f.write("# Exported from Safari %s\n" % time.ctime())
    for c in cj:
        domain = c.domain
        flag = "TRUE" if domain.startswith(".") else "FALSE"
        path = c.path or "/"
        secure = "TRUE" if c.secure else "FALSE"
        expiry = str(int(c.expires)) if c.expires else "0"
        name = c.name
        value = c.value
        f.write("\t".join([domain, flag, path, secure, expiry, name, value]) + "\n")
PYEOF

osascript -e 'display notification "Cookies de Instagram (Safari) actualizadas" with title "DW ULTIMATE"'
echo "Cookies exportadas a: $DEST_FILE"
EOF

chmod +x ~/bin/export-dwUltimate-cookies-safari
🧩 PASO 7 – Exportar las cookies de Safari

Asegúrate de que estás logueado en Instagram en Safari y de que has abierto la web al menos una vez (para que existan cookies).

Después, ejecuta:

 TERMINAL MAC
export-dwUltimate-cookies-safari

Si todo va bien, verás un mensaje indicando la ruta de cookies.txt y una notificación de macOS con el título “DW ULTIMATE”.

Puedes comprobar el archivo con:

 TERMINAL MAC
ls -l ~/instagram_cookies
head ~/instagram_cookies/cookies.txt
🧩 PASO 8 – Probar una descarga con yt-dlp y cookies

⭐ Este paso es opcional. Puedes saltarlo si quieres ir directamente al comando DW ULTIMATE.

Antes de crear el comando definitivo, prueba que la combinación yt-dlp + cookies funciona correctamente. Puedes empezar con un Reel de Instagram o con cualquier otro vídeo de red social.

Ejemplo de prueba con un Reel:

 TERMINAL MAC
yt-dlp --cookies ~/instagram_cookies/cookies.txt "https://www.instagram.com/reel/TU_ID_AQUI/"

Si ves que descarga el vídeo y fusiona audio/vídeo sin errores de “login required”, estás listo para el comando final.

🧩 PASO 9 – Crear el comando definitivo dw (DW ULTIMATE)

Ahora vamos a crear el script Universal-Downloader-Ultimate, que:

  • Actualiza las cookies de Safari para Instagram.
  • Muestra una ventana para pegar o confirmar la URL.
  • Descarga el vídeo en la carpeta Descargas con yt-dlp usando tus cookies cuando son necesarias.
  • Muestra una notificación “Descarga completada.” y reproduce un sonido al terminar.

9.1 – Crear el script Universal-Downloader-Ultimate

Copia y pega este bloque completo en el Terminal:

 TERMINAL MAC
cat > ~/bin/Universal-Downloader-Ultimate << 'EOF'
#!/bin/bash
# DW ULTIMATE – Descargador universal con cookies de Safari (Instagram, etc.)

set -e

COOKIES_TXT="$HOME/instagram_cookies/cookies.txt"

# 1. Comprobar dependencias básicas
if ! command -v yt-dlp >/dev/null 2>&1; then
  echo "ERROR: 'yt-dlp' no está instalado. Instálalo con: brew install yt-dlp"
  exit 1
fi

if ! command -v export-dwUltimate-cookies-safari >/dev/null 2>&1; then
  echo "ERROR: No encuentro el comando 'export-dwUltimate-cookies-safari'."
  echo "Asegúrate de haber seguido el tutorial y creado ese script."
  exit 1
fi

if ! command -v osascript >/dev/null 2>&1; then
  echo "ERROR: 'osascript' no está disponible. Este script está pensado para macOS."
  exit 1
fi

# 2. Actualizar cookies de Safari (Instagram)
echo "Actualizando cookies de Safari (Instagram)..."
if ! export-dwUltimate-cookies-safari; then
  echo "ERROR: No se han podido exportar las cookies."
  exit 1
fi

if [ ! -s "$COOKIES_TXT" ]; then
  echo "ERROR: No se ha generado un cookies.txt válido en $COOKIES_TXT"
  exit 1
fi

# 3. Pedir/confirmar URL con una ventana de macOS
URL=$(
osascript << 'APPLESCRIPT'
set clipboardText to ""
try
  set clipboardText to the clipboard as text
end try

tell application "System Events"
  set userResponse to display dialog "Pega o confirma la URL que quieres descargar:" default answer clipboardText buttons {"Cancelar", "Descargar"} default button "Descargar" with title "DW ULTIMATE"
end tell

if button returned of userResponse is "Descargar" then
  return text returned of userResponse
else
  return ""
end if
APPLESCRIPT
)

# 4. Cancelar si no hay URL
if [ -z "$URL" ]; then
  echo "Operación cancelada por el usuario."
  exit 0
fi

echo "URL seleccionada:"
echo "  $URL"
echo

# 5. Carpeta de destino
DEST_DIR="$HOME/Downloads"
mkdir -p "$DEST_DIR"

# 6. Descargar con yt-dlp usando cookies
echo "Descargando con yt-dlp en: $DEST_DIR"
yt-dlp \
  --cookies "$COOKIES_TXT" \
  -f "bv*+ba/b" \
  -o "$DEST_DIR/%(uploader)s - %(title)s [%(id)s].%(ext)s" \
  "$URL"

EXIT_CODE=$?

if [ $EXIT_CODE -eq 0 ]; then
  # 7. Notificación y sonido de éxito
  osascript -e 'display notification "Descarga completada. ¡Hecho desde Sevilla con ❤️!" with title "DW ULTIMATE" subtitle "Vídeo guardado en Descargas"'
  afplay /System/Library/Sounds/Glass.aiff >/dev/null 2>&1 || true
echo
echo
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "   ✅  DESCARGA EXITOSA"
echo "   📁  Guardado en: ~/Downloads"
echo "   ❤️  Hecho desde Sevilla con amor"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
else
  # 8. Notificación de error
  osascript -e "display notification \"Ha ocurrido un error durante la descarga\" with title \"DW ULTIMATE\" subtitle \"Código de salida: $EXIT_CODE\""
  echo "❌ Ha ocurrido un error durante la descarga (código $EXIT_CODE)."
fi
EOF

chmod +x ~/bin/Universal-Downloader-Ultimate
echo "Script creado: ~/bin/Universal-Downloader-Ultimate"

9.2 – Crear el alias corto dw

Por último, crea el alias para poder usar el comando simplemente escribiendo dw:

 TERMINAL MAC
echo 'alias dw="Universal-Downloader-Ultimate"' >> ~/.zshrc
source ~/.zshrc

9.3 – Usar DW ULTIMATE

  1. Abre Safari y asegúrate de que estás logueado en la red social correspondiente si lo requiere (por ejemplo, Instagram).
  2. Copia la URL del vídeo que quieres descargar, ya sea de Instagram, YouTube, TikTok u otra plataforma.
  3. Abre el Terminal y escribe:
 TERMINAL MAC
dw

Aparecerá una ventana con la URL del portapapeles. Puedes editarla si quieres, pulsar “Descargar” y el sistema se encargará del resto: actualizar cookies, descargar el vídeo y avisarte con la notificación “Descarga completada.”.

❓ Preguntas frecuentes sobre DW ULTIMATE

¿DW ULTIMATE es seguro para mi Mac?

Sí. Todos los pasos del tutorial utilizan herramientas seguras y ampliamente usadas: Homebrew, Python, yt-dlp y ffmpeg. No modifican el sistema ni requieren permisos especiales; simplemente añaden utilidades para automatizar descargas.

¿Puedo descargar vídeos de cualquier red social?

Sí. yt-dlp es compatible con Instagram, YouTube, TikTok, X (Twitter), Facebook, Reddit, Twitch y cientos de plataformas más. DW ULTIMATE funciona con cualquier URL que yt-dlp soporte.

¿Necesito iniciar sesión en Instagram para usar DW ULTIMATE?

Solo si quieres descargar contenido protegido por login, como Reels privados o páginas que requieren sesión. El script usa tus cookies reales de Safari para autenticarse automáticamente.

¿Es obligatorio completar todos los pasos del tutorial?

No. Algunos pasos son opcionales, como la prueba del PASO 8. Sin embargo, es recomendable seguirlos en orden si es la primera vez que instalas herramientas de Terminal.

¿Necesito saber programar para usar DW ULTIMATE?

No. El tutorial está diseñado para que cualquier usuario pueda seguirlo simplemente copiando y pegando los comandos. No es necesario tener experiencia previa.

¿Puedo modificar o ampliar DW ULTIMATE?

Sí. Puedes personalizar el comando, añadir nuevos formatos de descarga, cambiar el nombre de los archivos, modificar la ventana emergente o incluso convertirlo en una app de macOS.

jueves, 20 de noviembre de 2025

Comandos curiosos y útiles del Terminal en macOS

 Terminal Mac

Comandos curiosos y útiles del Terminal en macOS

El Terminal de macOS esconde funciones tan útiles como sorprendentes. Desde animar tu escritorio hasta mostrar información oculta del sistema, estos comandos son perfectos para quienes quieren explorar un poco más su Mac.

1️⃣ Decir la hora en voz alta

Haz que tu Mac anuncie la hora actual:

bash
say "La hora es $(date +%H:%M)"

2️⃣ Ver la temperatura de la CPU

Usa este comando si tienes instaladas las herramientas Xcode:

bash
sudo powermetrics --samplers smc | grep -i "CPU die"

3️⃣ Convertir cualquier texto en un archivo de audio

Convierte texto a un archivo .aiff:

bash
say "Hola desde tu Mac" -o saludo.aiff

4️⃣ Mostrar todos los puertos abiertos

Perfecto para diagnosticar conexiones:

bash
lsof -i -P

5️⃣ Activar un salvapantallas como si fuera una app

Ideal para crear un efecto visual chulo:

bash
/System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine

6️⃣ Ver información detallada del sistema

Un listado profundo de características del Mac:

bash
system_profiler SPHardwareDataType

7️⃣ Reproducir un sonido oculto del sistema

macOS incluye sonidos internos secretos:

bash
afplay /System/Library/Sounds/Glass.aiff
Explorar el Terminal abre un mundo de posibilidades. Siempre que pruebes comandos nuevos, asegúrate de entender qué hacen y evita borrar archivos o procesos del sistema.

Cómo ocultar carpetas en tu Mac

 Trucos para Mac

Si compartes tu Mac o simplemente quieres mantener ciertas carpetas fuera de la vista, macOS te permite ocultarlas y volverlas a mostrar mediante comandos realmente sencillos. Aquí tienes la guía completa con todos los comandos listos para copiar.

1️⃣ Ocultar una carpeta con Terminal

Para ocultar cualquier carpeta, usa este comando cambiando la ruta según necesites:

 TERMINAL MAC
chflags hidden /ruta/de/tu/carpeta

👉 TRUCO rápido: también puedes escribir chflags hidden en el Terminal, dejar un espacio y arrastrar la carpeta que quieres ocultar directamente dentro de la ventana. macOS insertará automáticamente la ruta completa, evitando errores.

Ejemplo práctico: ocultar una carpeta llamada privado situada en el Escritorio:

 TERMINAL MAC
chflags hidden ~/Desktop/privado
2️⃣ Volver a mostrar la carpeta

Para hacer visible de nuevo una carpeta oculta, usa:

 TERMINAL MAC
chflags nohidden /ruta/de/tu/carpeta

Ejemplo completo:

 TERMINAL MAC
chflags nohidden ~/Desktop/privado
3️⃣ Ocultar una carpeta renombrándola con punto (.)

Todo archivo o carpeta que empieza por un punto se oculta automáticamente en macOS.

 TERMINAL MAC
mv ~/Desktop/privado ~/Desktop/.privado

Finder no permite renombrar carpetas con un punto inicial desde la interfaz, por lo que este método solo se puede realizar desde Terminal.

👀 Mostrar archivos ocultos en Finder

Usa este atajo de teclado para alternar entre mostrar u ocultar archivos invisibles en Finder:

⌘ Cmd + ⇧ Shift + .

miércoles, 26 de marzo de 2025

Cómo reiniciar y optimizar iCloud Drive desde la Terminal en macOS

 Optimización Mac · iCloud Drive

Cómo reiniciar y optimizar iCloud Drive desde la Terminal en macOS

Si iCloud Drive se queda bloqueado en “subiendo…”, no sincroniza correctamente, los archivos no aparecen o el icono de progreso nunca termina, puedes reiniciar y optimizar el servicio desde la Terminal con comandos seguros. Esta guía te muestra paso a paso cómo hacerlo.

1️⃣ Forzar reinicio de iCloud Drive (brutal pero seguro)

Este comando cierra todos los procesos relacionados con iCloud y obliga a macOS a reiniciar el servicio.

 TERMINAL MAC
killall bird; killall cloudd; killall CloudKeychainProxy

No borra archivos. Solo reinicia el motor que gestiona iCloud Drive.

2️⃣ Reparar la base de datos de iCloud Drive

Si iCloud Drive está lento, atascado o sincronizando mal, puedes forzar una verificación de la base interna:

 TERMINAL MAC
brctl log -w

Este comando no arregla por sí solo, pero te muestra exactamente qué falla en el motor “bird”.

3️⃣ Vaciar cachés de iCloud Drive (100% seguro)

Si la sincronización sigue sin funcionar, puedes eliminar únicamente la caché de iCloud (NO tus archivos).

 TERMINAL MAC
rm -rf ~/Library/Caches/com.apple.bird

macOS regenerará la carpeta automáticamente.

4️⃣ Reiniciar completamente "bird" (el motor de iCloud)

Bird es el proceso encargado de sincronizar todos los archivos de iCloud Drive.

 TERMINAL MAC
launchctl stop com.apple.bird
launchctl start com.apple.bird

5️⃣ Forzar una sincronización inmediata

Con esto obligas a iCloud a revisar todos los archivos y empezar una sincronización nueva:

 TERMINAL MAC
brctl diagnose --full-sync

❓ Preguntas frecuentes

¿Puedo perder mis archivos con estos comandos?

No. Nada de esto borra archivos almacenados en iCloud Drive.

¿Tengo que reiniciar el Mac?

No es necesario, pero puede acelerar la recuperación del servicio.

¿Esto funciona en cualquier versión de macOS?

Sí, todos estos comandos funcionan en macOS Monterey, Ventura, Sonoma y posteriores.