Eliminar todas las descargas de iCloud drive en MacOS

El servicio de almacenamiento en la nube incluido en los dispositivos de Apple, más conocido como iCloud drive, ofrece una completa integración en todo el entorno Apple. Incluso permite el acceso desde la Web.

Cuando se activa iCloud Drive en macOS, el sistema puede conservar una copia local de los archivos para un acceso más rápido, o dejar solo un enlace a ese archivo y mantener el contenido real en la nube para ahorrar espacio.
En ocasiones podemos querer forzar que macOS elimine las copias descargadas en el disco sin borrar nada de iCloud para recuperar espacio en nuestro Mac.

Podemos abrir la carpeta de iCloud en el Finder e ir uno a uno por cada archivo, abrir el menú contextual y activar la opción eliminar descarga. Pero esta tarea se puede complicar si tenemos multitud de carpetas y sub carpetas y miles de archivos almacenados en iCloud.

La Terminal al rescate

Desde la Terminal de MacOS podemos realizar operaciones complejas que no tienen forma de ser realizadas desde la interfaz gráfica de MacOS.

Si abrimos la Terminal de MacOS y ejecutamos el siguiente comando se realizará esa limpieza de todos los archivos de iCloud de nuestro equipo:

brctl evict ~/Library/Mobile\ Documents/com~apple~CloudDocs

Comando brctl

brctl (abreviatura de bird control) es una utilidad incluida en macOS que permite interactuar con los servicios de iCloud a bajo nivel.

El subcomando evict solicita al servicio que “evacúe” (evict) las copias locales de los archivos indicados: el archivo local se sustituye por un marcador que representa el ítem en iCloud, y el contenido real queda solo en la nube.

Desde el punto de vista del usuario, el archivo sigue apareciendo en Finder, pero macOS no mantiene su contenido en disco; si se abre de nuevo, el sistema lo descargará cuando sea necesario.

Aún más fácil con AppleScript

Puede que abrir la Terminal no sea del agrado de todos los usuarios por su aparente complejidad. Para evitar esto podemos crear un AppleScript con el siguiente contenido:

on run
    set icloudPath to POSIX path of (path to library folder from user domain) & "Mobile Documents/com~apple~CloudDocs"
    set command to "brctl evict " & quoted form of icloudPath
    do shell script command
end run

Ejecutando este AppleScript evitaremos usar la Terminal. Además, lo podemos convertir en una aplicación para crear automatizaciones.

Conoce el nivel de indentación del texto con VoiceOver de forma automática

VoiceOver para MacOS es incapaz de conocer y notificar el nivel de indentación del texto. Por esa razón en su día desarrollé un script que puede averiguar y verbalizar esta información. 

Este script está disponible en el repositorio de Indentation line for VoiceOver.

Usando el script manual

En este repositorio está el fichero speakIndentationLine que contiene el AppleScript para que VoiceOver verbalice el nivel de indentación del último texto verbalizado por el lector de pantallas.

Este script debía asociarse a un atajo de teclado de VoiceOver para poderlo utilizar de forma cómoda pero incluso así existía la posibilidad de perdernos un cambio de indentación debido a que debíamos revisar manualmente cada línea de un texto para conocer si había algún cambio en el nivel de indentación.

Automatizando la funcionalidad

Para solucionar el problema se ha creado un nuevo script en el repositorio llamado checkIndentationService que ejecuta la función de verificar el nivel de indentación de forma automática y sólo se verbaliza cuando se han producido cambios en el nivel de indentación.

Para que este script se ejecute de forma apropiada es necesario exportar el script como aplicación y asegurarnos que en la conversión esté marcada la opción Permanecer abierto tras el gestor de ejecución. Puedes leer sobre el proceso en el artículo Convertir un AppleScript en una aplicación para MacOS.

Una vez convertido tendremos la opción de abrir la aplicación checkIndentationService y VoiceOver verbalizará cada nuevo cambio de nivel de indentación de un texto.

Recuerda leer el fichero Readme.md del repositorio para saber cómo cambiar la voz que se utiliza para hacer las notificaciones.

Cómo ejecutar un script de AppleScript desde Swift

Aunque lenguajes de programación como Swift, Objective-C o Java nos permiten crear aplicaciones para Mac potentes y rápidas a veces hay funciones que AppleScript si puede hacer y otros lenguajes para Mac no pueden.

Un ejemplo de algo que AppleScript puede hacer con facilidad es consultar el estado y modificar el comportamiento de otra aplicación. Esto se debe a que muchas aplicaciones de MacOS incluyen librerías y diccionarios de soporte de AppleScript para que el propio sistema operativo pueda entablar comunicaciones con las aplicaciones.

Dentro de una aplicación podemos mezclar lenguajes de programación para conseguir los beneficios de todos ellos. Por ejemplo, crear un script en Swift que ejecute un script de AppleScript para manipular una aplicación.

Continuar leyendo «Cómo ejecutar un script de AppleScript desde Swift»

Cómo solucionar los problemas de ejecución de scripts de los comandos de VoiceOver en MacOS Catalina

Como vimos en el artículo Qué son y cómo usar los comandos de VoiceOver para Mac podemos ejecutar de forma rápida nuestros scripts de AppleScript.

Pero existe un problema a la hora de intentar algunos scripts de AppleScript como comandos de VoiceOver.

Continuar leyendo «Cómo solucionar los problemas de ejecución de scripts de los comandos de VoiceOver en MacOS Catalina»

Ajustar el nivel de brillo de la pantalla de nuestro Mac de forma aún más rápida gracias a AppleScript

En el pasado artículo de Controla el brillo de la pantalla de tu Mac desde la Terminal de MacOS conocimos al comando brightness que se podía instalar desde HomeBrew y aunque su instalación es sencilla puede que tener abierta la Terminal en todo momento y tener que escribir un comando resulte tedioso y poco productivo.

La solución pasa por utilizar AppleScript y su potencial para la automatización.

Continuar leyendo «Ajustar el nivel de brillo de la pantalla de nuestro Mac de forma aún más rápida gracias a AppleScript»