Convertir un AppleScript en una aplicación para MacOS

AppleScript permite a cualquier usuario de MacOS realizar pequeñas utilidades de forma rápida y sencilla pero el resultado sigue siendo un script que requiere de una aplicación para ser ejecutado. Pero esto no es del todo cierto

El Editor de scripts que ofrece Apple nos permite convertir un script de AppleScript en una aplicación para MacOS.

Un pequeño ejemplo para empezar

Para continuar vamos a partir de un pequeño ejemplo de script que sólo mostrará una alerta por pantalla. El código es el siguiente:


on run
display alert "Esto es un mensaje de prueba."
end run

Una vez escrito nuestro script y tras haberlo guardado con un nombre apropiado es el momento de convertirlo en aplicación.

Exportando un AppleScript como aplicación

En el menú Archivo de la barra de menú del Editor de scripts encontramos la opción de Exportar ….

Al activar la opción de Exportar … aparecerá un cuadro de diálogo para exportar nuestro script. Nos solicitará un nombre, una carpeta de destino y un formato. Ese campo formato es el que nos interesa.

Como formato podremos exportar a script, paquete de scripts, texto y aplicación. Es el formato aplicación el que nos interesa.

Dependiendo de la versión de MacOS que estemos ejecutando el campo formato también estará disponible en el cuadro de diálogo para guardar nuestro script.

Primeros pasos con Swift

Swift es un nuevo lenguaje de programación creado por Apple buscando atraer a nuevos desarrolladores. La propia compañía lo describe en su página oficial de Swift como un lenguaje potente y sencillo de aprender.

Realmente Swift, en comparación con otros lenguajes, tiene una curva de aprendizaje menor y las herramientas proporcionadas por Apple para desarrollar con él lo hacen un lenguaje muy apropiado como primera opción para aprender a programar.

Recientemente Apple ha decidido donar su lenguaje a la comunidad de código abierto lo que permitirá a Swift estar presente en otras plataformas por lo que desarrollar una aplicación para iOS, OSX, Linux y otras plataformas será algo habitual en Swift.

Programando en Swift

Para programar en un lenguaje de programación lo primero que necesitamos son herramientas de desarrollo compatibles con ese lenguaje. Si somos usuarios del sistema operativo MacOS X sólo debemos ir a la aplicación de la Mac AppStore y descargar el entorno de desarrollo de Apple más conocido como xCode.

xCode, como otras aplicaciones específicas para una profesión, no es una herramienta sencilla de comprender con un primer vistazo pero tampoco es una tarea imposible. Iremos conociendo poco a poco esta herramienta junto con el aprendizaje de Swift en una serie de artículos publicados en este blog.

Para programar en otra plataforma distinta a MacOS X hay varias alternativas proporcionadas por la comunidad de código abierto de Swift los cuales trabajan en un compilador para varias plataformas. Actualmente el compilador funciona para el sistema operativo Linux.

Otra alternativa para ir practicando con Swift mientras aprendemos es utilizar una herramienta online creada por IBM para este objetivo. Esta herramienta es conocida como IBM Swift Sandbox y nos ofrece la posibilidad de crear y ejecutar un Playground de Swift a través de nuestro navegador web. Esta herramienta web, aunque recientemente ha solucionado algunos problemas de compatibilidad con dispositivos móviles para poder programar en cualquier momento desde cualquier lugar, presenta algunas barreras de accesibilidad relacionadas con el uso de esta herramienta por parte de usuarios de productos de apoyo por lo que se recomienda utilizar en su lugar xCode o el compilador de Swift para Linux. Esperemos que pronto esté disponible este compilador para otros sistemas operativos.

¿Qué es un Playground de Swift?

Con la creación de Swift Apple también desarrolló nuevas herramientas y conceptos que ayuden a los desarrolladores a realizar su trabajo con mayor efectividad. Una de sus creaciones es el Playground de Swift. Un Playground de Swift es un mini proyecto de aplicación que nos permite probar de forma rápida y controlada partes de código antes de que decidamos introducir ese nuevo código en nuestro proyecto de trabajo. Esto permite probar algoritmos y funciones de una forma cómoda, segura y, además, Apple ha incorporado herramientas de monitorización en los Playgrounds para obtener el rendimiento de los algoritmos ejecutados así como permitir hacer una depuración más intensa de nuestro código.

Nuestro primer programa en Swift

Supongamos que vamos a utilizar xCode para crear nuestro primer programa en Swift. Al abrir xCode aparecerá una ventana de bienvenida. En ella habrá diversos botones, entre ellos encontramos uno que nos permite empezar con un Playground de Swift de forma rápida, es el botón con el título Get started with a playground. Una vez pulsado nos pedirá que demos un nombre a nuestro fichero de Playground y seleccionar una de las plataformas para nuestro Playground: iOS, OSX o TVOS. Tras esto se nos consultará dónde guardar el fichero de nuestro Playground. Con esto xCode ya puede crear el entorno de desarrollo para que empecemos a jugar con nuestro Playground de Swift.

xCode presenta en su interfaz un area de menú con una barra de herramientas con las principales opciones de ejecución, depuración y visualización, y un area de trabajo. Los usuarios de VoiceOver pueden identificar estas zonas fácilmente si utilizan el gesto de dejar de interactuar con el item varias veces (VO+Mayúsculas+flecha arriba). Explorando la ventana desde arriba a la izquierda siguiendo la exploración hacia la derecha encontrará la barra de herramientas, identificada como Toolbar, una zona para controlar las pestañas abiertas en xcode y un area de trabajo. Este area de trabajo es identificada por VoiceOver con el título de ruta de nuestro proyecto, sería algo parecido a MyPlayground.playground split group. Interactuando con el area de trabajo encontraremos varios subcontenedores:
el editor de código, la barra de debug, la zona de debug y varias zonas relacionadas con el diseño visual de la interfaz. Esta zona puede que contenga todos, algunos o ningunos de estos subcontenedores ya que podemos modificar la visualización de xCode en las opciones del menú View de la barra de menú de xCode. Por ahora sólo nos interesa el subcontenedor donde se encuentra el editor de código, VoiceOver lo identificará con el nombre de nuestro fichero en edición; la barra de debug y el panel de debug o depuración, dentro de este panel encontraremos la opción de ejecución para nuestro Playground.

En el editor de código encontramos que ya hay escrito un código de ejemplo:


//: Playground - noun: a place where people can play
import Cocoa
var str = "Hello, playground"

Prueba a borrar todo ese código, escribir el siguiente código y pulsar el botón Execute que hay en la barra de debu:


print("Hola mundo!")

Tras ejecutar el código veremos que el texto Hola mundo! aparece en el area de depuración. ¡Enhorabuena, has creado tu primer programa en Swift!

Puede que sólo encuentres la barra de debug, identificada por VoiceOver como debug bar group y no encuentres el panel de debug, identificado por voiceOver como debug group. Esto puede suceder porque este panel de depuración se puede ocultar. Para hacer que se vea podemos entrar en la barra de debug y pulsar el botón show debug area o usar la opción de la barra de menú de xCode en el menú View o el atajo de teclado ()Comando+Mayúsculas+Y).

Un primer paso de otros muchos

Pensaréis que este programa no vale para nada pero si habéis seguido las instrucciones hasta aquí se supone que habéis adquirido los primeros conocimientos para comenzar a aprender Swift ya que ahora sabéis lo siguiente:

  • Saber escribir código y ejecutar código en un Playground
  • Usar la función print() que muestra un texto por pantalla

En futuros artículos iremos aprendiendo más cosas sobre este lenguaje de programación.

Cómo reproducir un sonido al iniciar sesión en OSX

Aunque el sistema operativo OSX posee muchas características de accesibilidad y usabilidad hay que reconocer que el número de eventos del sistema asociados a un sonido es insuficiente.

Por suerte para sus usuarios existen herramientas y aplicaciones para solucionar total o parcialmente este problema.

Sonido al iniciar la sesión

Uno de los eventos de sonido más reconocidos en el sistema operativo Windows de Microsoft es el inicio de sesión. Es habitual escuchar una fanfarria notificando que la sesión del usuario se ha abierto.

Detectar cuando sucede este evento es sencillo. Podemos lanzar una aplicación cuando el sistema operativo arranque. Para ello las preferencias del sistema posee un apartado en la que se indican qué aplicaciones se arrancarán con la sesión del usuario.

Crear aplicaciones con Automator no es demasiado complicado.

Al abrir Automator y pulsar el botón de nuevo documento debemos seleccionar aplicación como tipo de documento .

Al abrirse la interfaz de Automator nos aparece una acción ya creada con el texto Una aplicación recibe archivos y carpetas como datos de entrada. Debemos ignorar esto ya que la entrada de datos en nuestra aplicación para reproducir un sonido será ignorada.

Reproduciendo un sonido desde la terminal de OSX

Para que nuestra aplicación creada con Automator reproduzca un sonido utilizaremos un comando de la terminal de OSX que tiene esta funcionalidad. Es el comando afplay. Este comando puede reproducir sonidos en diversos formatos como AIFF, CAF o WAV.

Para poder utilizar un comando de la terminal en Automator debemos incluir una acción de tipo Ejecutar el script Shell que se encuentra dentro de la categoría utilidades de la biblioteca de acciones de Automator. Debemos añadir esta acción a nuestro flujo de aplicación de Automator, para ello debemos arrastrar el elemento Ejecutar el script Shell a la zona de acciones del flujo de trabajo (donde aparece el texto Una aplicación recibe archivos y carpetas como datos de entrada). Los usuarios de VoiceOver deben usar las funciones de arrastrar y soltar que incorpora este lector de pantallas.

Una vez que tengamos la acción añadida a nuestro flujo de Automator debemos introducir nuestro código del script para reproducir un sonido. Esto lo haremos dentro del cuadro de edición en el que por defecto viene el código cat. Debemos sustituir todo ese código por el nuestro.

Para nuestro ejemplo vamos a reproducir un sonido propio del sistema operativo. Será el fichero Blow.aiff que está en la carpeta /System/Library/Sounds/. El código sería el siguiente:

afplay /System/Library/Sounds/Blow.aiff

Una vez hecho esto podemos probar que nuestra aplicación funciona, para ello sólo debemos ejecutar nuestro flujo de trabajo desde el propio Automator utilizando la opción que se encuentra en el menú Flujo de trabajo. Nos saldrá una alerta indicando que Automator requiere acceso a los parámetros del Finder, podemos ignorar la advertencia ya que cuando demos a guardar nuestra aplicación no habrá ningún problema.

Guardamos nuestra aplicación en la carpeta de aplicaciones con el nombre que decidamos.

Ejecutando nuestra aplicación al inicio de la sesión

Con nuestra aplicación lista en la carpeta de aplicaciones ahora debemos hacer que se ejecute cada vez que el sistema se inicie. Para ello debemos ir a las Preferencias del sistema y en el panel de usuarios y grupos debemos seleccionar nuestro usuario y pulsar la pestaña items de inicio. Nos aparecerá una tabla con las aplicaciones que se abren al iniciar la sesión del usuario seleccionado y un par de botones para añadir o eliminar items de inicio.

Una vez añadida nuestra aplicación podemos cerrar las preferencias del sistema y reiniciar nuestro equipo para probar que se reproduce el sonido correctamente.

Puedes descargar el ejemplo de Sonido de inicio en formato Zip para probar y seguir el ejemplo.

Cambiar rápidamente de idioma para el dictado en OSX

La nueva función de dictado para OSX permite al usuario dictar textos en más de 20 idiomas. Su uso es muy sencillo al igual que su configuración.

El problema aparece cuando el usuario quiere dictar en más de un sólo idioma. Aunque el cambio de idioma es sencillo puede resultar engorroso y lento y lo digo por experiencia. Durante un día normal de uso de este servicio puedo cambiar esta configuración unas 8 veces.

Para facilitar la operación de cambio de idioma he realizado un script de AppleScript que nos permite conmutar el idioma de dictado entre español de España e inglés de Estados unidos.

Este script, junto a la posibilidad de ejecución de scripts por atajos de teclado de VoiceOver, habilitan un cambio rápido de este servicio para adaptarse a nuestras necesidades en todo momento.

Puedes descargar el script de cambio de idioma e instalarlo en tu sistema OSX Mountain Lion.

Requisitos del script

Para un correcto funcionamiento del script es necesario cumplir los siguientes requisitos:

  • Utilizar OSX Mountain Lion 10.8.2 o superior
  • Tener instaladas las voces de Alex y Diego en el sistema. Estas voces se utilizan para la notificación de cambio de idioma.
  • Utilizar OSX en español. El script no funcionará de forma apropiada en un entorno OSX configurado para otro idioma.
  • El script sólo cambia entre español de España e inglés de Estados unidos. Para modificar estos valores es necesario modificar el código fuente del script.
  • Este script se distribuye de forma gratuita. Si vas a modificarlo o distribuirlo respeta su autoría y recuerda mencionar la fuente original de donde lo obtuviste.