Controlar qué programas se inician al arrancar tu Mac

En MacOS, como en otros sistemas operativos, existen varias formas en las que una aplicación puede solicitar ejecutarse al iniciar sesión.

Un usuario puede controlar qué aplicaciones han solicitado arrancarse junto con el sistema. Para ello sólo debemos ir a las Preferencias del sistema, entrar en el panel de Usuarios y grupos y en el selector de pestaña activar la pestaña llamada Items de inicio. En esa pestaña encontraremos una tabla con todas las aplicaciones que se arrancarán cuando se inicie la sesión de un usuario.

El problema es que este panel sólo da acceso a modificar la configuración de arranque de un usuario en concreto y sólo controla las aplicaciones que hayan solicitado el arranque con la sesión de un usuario. Pero si se han instalado servicios o aplicaciones que afectan a todo el sistema no aparecerán en esa tabla.

Finder al rescate

Lo interesante de utilizar un sistema operativo como MacOS es que todas las configuraciones son ficheros o elementos en carpetas. Sólo hay que conocer en qué carpeta buscar y qué podemos encontrar en esas carpetas.

Para poder examinar esas carpetas simplemente debemos ir a Finder y en la barra de menú buscar el menú Ir a y activar la opción Ir a la carpeta … e introducir la ruta a la carpeta que queremos examinar.

 

Servicios para drivers y servicios de seguridad

En MacOS, como en Unix, existen unos servicios especiales que se denominan daemons. Estos servicios carecen de interfaz de usuario y suelen encargarse de que algo funcione bien. Algunos de estos daemons se encargan de mantener la seguridad en las comunicaciones, que la cámara, el micrófono u otros periféricos multimedia estén siempre disponibles para cuando los necesite el usuario no haya ningún tipo de demora.

Todos estos daemons declaran su arranque al iniciar nuestro equipo en una carpeta determinada. En MacOS, por motivos de seguridad, los daemons incluidos por Apple tienen una carpeta segura y específica y los servicios de terceros utilizan otra carpeta.

Para los daemons de Apple tenemos la carpeta /System/Library/LaunchDaemons.

En esa carpeta encontraremos diversos elementos que lo que hacen es iniciar el daemon para que el sistema mantenga un control. Es recomendable no tocar en esta carpeta sin tener una copia de seguridad previa ya que estos daemons permiten usar bastantes elementos del hardware de nuestro equipo y puede que si rompemos algo tengamos que iniciar una sesión en modo a prueba de fallos y la accesibilidad puede no estar disponible.

Para los daemons de compañías distintas a Apple tenemos la carpeta /Library/LaunchDaemons

En esta carpeta podemos encontrar servicios que arrancan el soporte de análisis de Adobe, los servicios de configuración de auriculares USB, servicios de actualización de software de Microsoft o Google o el servicio de arranque rápido de Zoom.

Para hacer que un servicio deje de arrancar con nuestro equipo simplemente debemos sacarlo de la carpeta /Library/LaunchDaemons

Servicios de arranque de aplicaciones

Puede que un servicio lo que realice es arrancar una aplicación. Esto sucede por ejemplo con las aplicaciones de OneDrive, Dropbox, Amazon Music o Amazon Chime.

Estos servicios de arranque de aplicaciones se localizan en dos carpetas:

La primera afecta a todos los usuarios y su ruta es /Library/LaunchAgents

La segunda carpeta es para cada usuario en concreto y la ruta para el usuario actual es ~/Library/LaunchAgents

Para evitar que un programa arranque simplemente deberemos borrar el servicio que lo arranca de la carpeta de launch-agent correspondiente.

Obtener el listado de voces disponibles para el comando say en MacOS

El comando say se utiliza en MacOS tanto desde la terminal como desde AppleScript para hacer que una de las voces instaladas en el sistema operativo lea una información.

Vimos un ejemplo en la introducción a AppleScript en el que hacíamos hablar a nuestro Mac desde un AppleScript.

Usando say desde la Terminal

Usar el comando say desde la terminal es bastante sencillo. Vamos a ver el típico ejemplo de Hola mundo con la Terminal.

Abre la Terminal de Mac, está en la carpeta Aplicaciones/Utilidades

Una vez abierta escribe el siguiente comando:

say '¡Hola mundo!'

Al ejecutar el comando el equipo verbalizará el mensaje con la voz por defecto del sistema.

Si queremos usar una voz en concreto tenemos que especificarlo utilizando su nombre precedido del indicador -v. Por ejemplo utilicemos la voz de Monica en el ejemplo anterior:

say -v Monica '¡Hola mundo!'

El problema aparece cuando no conocemos el nombre de la voz concreta que queremos utilizar. Para ello el mismo comando say nos ofrece la solución.

Al usar el comando say de la siguiente forma se mostrará un listado de voces en la Terminal:

say -v \?

El listado será algo como lo siguiente:

  • Alex en_US # Most people recognize me by my voice.
  • Alice it_IT # Salve, mi chiamo Alice e sono una voce italiana.
  • Alva sv_SE # Hej, jag heter Alva. Jag är en svensk röst.
  • Amelie fr_CA # Bonjour, je m’appelle Amelie. Je suis une voix canadienne.
  • Anna de_DE # Hallo, ich heiße Anna und ich bin eine deutsche Stimme.
  • Carmit he_IL # שלום. קוראים לי כרמית, ואני קול בשפה העברית.
  • Damayanti id_ID # Halo, nama saya Damayanti. Saya berbahasa Indonesia.
  • Daniel en_GB # Hello, my name is Daniel. I am a British-English voice.
  • Diego es_AR # Hola, me llamo Diego y soy una voz española.
  • Ellen nl_BE # Hallo, mijn naam is Ellen. Ik ben een Belgische stem.
  • Fiona en-scotland # Hello, my name is Fiona. I am a Scottish-English voice.
  • Fred en_US # I sure like being inside this fancy computer
  • Ioana ro_RO # Bună, mă cheamă Ioana . Sunt o voce românească.
  • Joana pt_PT # Olá, chamo-me Joana e dou voz ao português falado em Portugal.
  • Jorge es_ES # Hola, me llamo Jorge y soy una voz española.
  • Juan es_MX # Hola, me llamo Juan y soy una voz mexicana.
  • Kanya th_TH # สวัสดีค่ะ ดิฉันชื่อKanya
  • Karen en_AU # Hello, my name is Karen. I am an Australian-English voice.
  • Kyoko ja_JP # こんにちは、私の名前はKyokoです。日本語の音声をお届けします。
  • Laura sk_SK # Ahoj. Volám sa Laura . Som hlas v slovenskom jazyku.
  • Lekha hi_IN # नमस्कार, मेरा नाम लेखा है. मैं हिन्दी में बोलने वाली आवाज़ हूँ.
  • Luca it_IT # Salve, mi chiamo Luca e sono una voce italiana.
  • Luciana pt_BR # Olá, o meu nome é Luciana e a minha voz corresponde ao português que é falado no Brasil
  • Maged ar_SA # مرحبًا اسمي Maged. أنا عربي من السعودية.
  • Mariska hu_HU # Üdvözlöm! Mariska vagyok. Én vagyok a magyar hang.
  • Mei-Jia zh_TW # 您好,我叫美佳。我說國語。
  • Melina el_GR # Γεια σας, ονομάζομαι Melina. Είμαι μια ελληνική φωνή.
  • Milena ru_RU # Здравствуйте, меня зовут Milena. Я – русский голос системы.
  • Moira en_IE # Hello, my name is Moira. I am an Irish-English voice.
  • Monica es_ES # Hola, me llamo Monica y soy una voz española.
  • Nora nb_NO # Hei, jeg heter Nora. Jeg er en norsk stemme.
  • Paulina es_MX # Hola, me llamo Paulina y soy una voz mexicana.
  • Rishi en_IN # Hello, my name is Rishi. I am an Indian-English voice.
  • Samantha en_US # Hello, my name is Samantha. I am an American-English voice.
  • Sara da_DK # Hej, jeg hedder Sara. Jeg er en dansk stemme.
  • Satu fi_FI # Hei, minun nimeni on Satu. Olen suomalainen ääni.
  • Sin-ji zh_HK # 您好,我叫 Sin-ji。我講廣東話。
  • Tessa en_ZA # Hello, my name is Tessa. I am a South African-English voice.
  • Thomas fr_FR # Bonjour, je m’appelle Thomas. Je suis une voix française.
  • Ting-Ting zh_CN # 您好,我叫Ting-Ting。我讲中文普通话。
  • Veena en_IN # Hello, my name is Veena. I am an Indian-English voice.
  • Victoria en_US # Isn’t it nice to have a computer that will talk to you?
  • Xander nl_NL # Hallo, mijn naam is Xander. Ik ben een Nederlandse stem.
  • Yelda tr_TR # Merhaba, benim adım Yelda. Ben Türkçe bir sesim.
  • Yuna ko_KR # 안녕하세요. 제 이름은 Yuna입니다. 저는 한국어 음성입니다.
  • Yuri ru_RU # Здравствуйте, меня зовут Yuri. Я – русский голос системы.
  • Zosia pl_PL # Witaj. Mam na imię Zosia, jestem głosem kobiecym dla języka polskiego.
  • Zuzana cs_CZ # Dobrý den, jmenuji se Zuzana. Jsem český hlas.

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.

Atajos de teclado útiles en XCode

A la hora de mejorar nuestra productividad utilizando una herramienta lo ideal es conseguir que algunas tareas repetitivas o la activación de algunas funciones que ofrece la herramienta se consiga realizar en el menor tiempo posible. Esta mejora en la productividad la podemos conseguir utilizando atajos de teclado.

Xcode es el entorno de desarrollo de Apple para sus distintas plataformas de software. Ofrece multitud de funciones y posee multitud de atajos de teclado. Incluso nos ofrece la oportunidad de crear atajos nuevos, redefinirlos o mejorar su comportamiento.

En este artículo comparto alguno de los atajos de teclado que más utilizo con esta herramienta.

Moverse entre zonas del proyecto

A veces lo ideal para encontrar algo es saber cómo moverse rápidamente. Cuando tenemos un proyecto con muchos archivos esto es indispensable.

Saltar entre archivos de un grupo

Control + 5

Al usar este atajo de teclado desde un editor nos aparecerá una lista de todos los ficheros que están contenidos en el mismo grupo que el fichero que estemos editando en ese momento. De esta forma podemos saltar entre ficheros agrupados de forma rápida.

Saltar entre elementos del fichero actual

Control + 6

Con este atajo de teclado accederemos a una lista de todas las declaraciones de variables, métodos, marcas y demás símbolos del fichero que estemos editando. De esta forma podemos ver de un vistazo todo lo que hay y saltar al punto que necesitemos.

Saltar a una línea

Comando + L

Con este atajo podremos mover el foco de edición a una línea concreta del fichero que estemos editando.

Abrir rápidamente

Mayúscula + Comando + O 

Este comando nos abrirá un popup para encontrar rápidamente algún elemento del proyecto sea un fichero, una clase o la declaración de un método.

Lo interesante de este comando es que cuando estamos en el elemento que queremos abrir si pulsamos enter lo abriremos en el editor principal pero si pulsamos Option+Enter lo abriremos en el editor secundario

Mostrar en el explorador de proyecto

Mayúscula + Comando + J

Con este atajo se abrirá el panel del explorador de proyecto focalizando el fichero que tengamos abierto en el editor. Esto es útil para cuando el depurador o el compilador nos lleva a un fichero de código donde se localiza un error o warning. De esta forma nos podemos orientar en el árbol de ficheros del proyecto de forma más clara.

Controlando el espacio

A veces la pantalla de Xcode se llena de demasiada información o elementos y no nos permite concentrarnos o ver con claridad qué estamos haciendo.

Para gestionar las áreas de visualización de Xcode tenemos los siguientes atajos.

Ocultar/mostrar el inspector

Opción + Comando + 0

El inspector de objetos es un panel muy útil cuando estamos utilizando Interface Builder, añadiendo idiomas a los recursos o gestionando la dependencia de ficheros entre targets. El resto del tiempo de uso de Xcode no lo utilizamos para nada. Por esta razón viene bien saber qué se puede ocultar y mostrar fácilmente.

Mostrar y ocultar el área de depuración

Comando + Mayúsculas + Y

El área de depuración ocupa un espacio importante y es una zona que sólo utilizamos cuando estamos realizando pruebas. Por esta razón también es interesante ocultarla cuando no se utilice.

Mover el foco al editor

Control + Comando + Mayúsculas + Enter

Con este atajo de teclado el editor se ampliará para ocupar todo el espacio disponible

Esto viene bien cuando, por ejemplo, al intentar leer código con VoiceOver notamos que no lee líneas de código completas. Esto se debe a que algún otro panel o área de Xcode está limitando el área de visualización del editor.

Pausar/reanudar visión del canvas

Comando + Opción + P

A veces nos interesa que la simulación del cambas de la vista SwiftUI se refresque o nuestro equipo va corto de recursos y es mejor desactivar esta simulación.

Ocultar/mostrar canvas

Comando + Opción + Enter

Cuando estamos editando una View de SwiftUI puede que nos interese ocultar el canvas de previsualización para ahorrar recursos.

Conclusión

Con esta lista de atajos podemos mejorar sustancialmente nuestra productividad en Xcode pero hay muchos más atajos e incluso podemos crear los nuestros gracias a las opciones de personalización de MacOS y Xcode.

Merece la pena explorar un poco esta gran herramienta que ofrece tantas posibilidades.

Mostrar y escuchar un iPhone en la pantalla de tu Mac

En muchas ocasiones puede que nos interese grabar el video y el audio de nuestro dispositivo iOS o puede que necesitemos compartir lo que se ve y se escucha en nuestro iPhone mientras estamos en una videoconferencia.

Aunque algunas aplicaciones incluyen drivers para identificar un dispositivo iOS como otra ventana de aplicación a la hora de compartir pantalla el propio sistema MacOS nos proporciona una solución simple y compatible con cualquier aplicación de videoconferencia que nos permita compartir nuestro escritorio.

QuickTime player al rescate

La aplicación Quicktime player viene instalada en MacOS por defecto y funciona como una grabadora de video y audio simple pero incluye funciones muy interesantes.

Una de ellas es la opción de nueva grabación de video la cual nos permite grabar la señal de video y audio del dispositivo que seleccionemos. Al seleccionar esta opción desde el menú archivo nos saldrá la interfaz simple de Quicktime player.

En esta interfaz hay un botón llamado mostrar menú de selección de dispositivo de captura que nos permite seleccionar cuales serán los dispositivos de entrada para la cámara y el micrófono. Si en este botón de menú elejimos nuestro iPhone o iPad tanto como para cámara como para micrófono podremos grabar tanto la imagen como el audio del dispositivo.

Para que se pueda escuchar en el Mac el audio del iPhone es necesario buscar un regulador de volumen en la pantalla de Quicktime player y subir el volumen.

También es posible ver y escuchar el iPhone en tiempo real sin necesidad de iniciar la grabación de video. De esta forma Quicktime player consumirá menos recursos y es una solución ideal si sólo necesitamos ver o compartir la pantalla de nuestro dispositivo móvil.

Cómo exportar desde MacOS un documento de Pages a PDF incluyendo atributos de accesibilidad

En MacOS desde hace unos años se incluye la suite ofimática Iwork.

Esta suite ofimática desarrollada por Apple incluye hojas de cálculo, editor de presentaciones y un potente procesador de textos. Este procesador de textos tiene como nombre Pages.

Marcado de accesibilidad en Pages

En Pages es muy sencillo etiquetar la accesibilidad en los párrafos. Simplemente debemos seleccionar un párrafo de nuestro documento y en la herramienta de formateo elegir un estilo de párrafo como pueden ser título, encabezado de nivel 1 o encabezado de nivel 2.

También en la herramienta de formateo se pueden indicar las descripciones alternativas para imágenes, elementos incrustados o campos de formulario.

Exportando a PDF respetando la accesibilidad

Una vez tengamos nuestro documento de Pages accesible respetando los estilos de párrafo, descripciones para imágenes e incluyendo las demás marcas semánticas para mejorar la accesibilidad es momento de realizar el proceso de exportación a PDF.

En el menú Archivo encontramos la opción exportar a …,y en el submenú debemos elegir la opción PDF.

Nos aparecerá el menú de exportación donde confirmaremos el formato de fichero a exportar, en nuestro caso PDF; la calidad del documento y, cosa importante, dentro del botón de opciones avanzadas encontraremos el nivel de exportación de los elementos de accesibilidad.

Esta opción viene en el valor por defecto. Este valor sólo afecta a la conversión de elementos de maquetación de datos. Elementos como marcas de encabezado, etiquetas de controles de formulario o descripciones alternativas para elementos visuales no serán incluidas en el documento PDF generado tras la exportación.

Según nos indica Pages su descripción es:

Se etiqueta el documento cuando las tablas tienen menos de 10.000 celdas. El etiquetado incrementa el tiempo de exportación y el tamaño del archivo.

Debemos cambiar este valor al valor activada ya que esto nos garantiza que se incluirán todas las etiquetas de accesibilidad posibles.

Su descripción según Pages es la siguiente:

Siempre se etiqueta el documento, lo que hace que se incremente el tiempo de exportación y el tamaño del archivo especialmente en el caso de documentos grandes o complejos.

Con esta opción de accesibilidad activada ya podemos pulsar el botón de Siguiente para que Pages nos pregunte dónde guardar el nuevo documento generado.