Conocer la hora, el nivel de batería y la señal Wifi con VoiceOver en MacOS Ventura sin AppleScript

La nueva versión de MacOS conocida como Ventura ha proporcionado varias novedades y otras que no lo son tanto.

Como novedad para VoiceOver se ha incluido la opción de pulsar VO+F7 para conocer la hora y fecha. Si lo volvemos a pulsar VoiceOver nos dirá el estado de la batería. Por último si lo volvemos a pulsar VoiceOver nos dará indicaciones del estado de conectividad Wifi.

Todas esta información se puede obtener mediante Applescript para versiones anteriores de MacOS y usando las funciones de VoiceOver de ejecutar AppleScript por lo que desluce muchísimo el caracter de novedad para MacOS Ventura.

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.

SwiftUI en Playgrounds para MacOS

En el artículo anterior se explicó cómo utilizar Playgrounds para MacOS y creamos nuestro primer Playground en el que saludábamos a todo el mundo.

En este artículo seguiremos saludando a todo el mundo pero con SwiftUI.

¿Qué es SwiftUI?

SwiftUI es la nueva librería de Apple para crear interfaces de usuario de forma declarativa. Esto implica que a diferencia de AppKit o UIKit, las librerías anteriores para crear interfaces de usuario para MacOS e iOS, el que sea declarativa facilita muchísimo la creación de estas interfaces.

En SwiftUI todos los elementos visibles se denominan vistas. Ventanas, botones, etiquetas de texto o casillas de verificación son vistas. Estas vistas se codifican como structs en Swift en la que cada struct tiene un cuerpo (body) en el que se declara cómo se verá la vista o qué vistas serán contenidas por esa vista que estamos declarando.

El código

A continuación se muestra el código para nuestro Playground.

import PlaygroundSupport
import SwiftUI

struct ContentView: View {
var body: some View {
Text("¡Hola mundo!")
}
}

PlaygroundPage.current.setLiveView(ContentView())

Lo más importante de este código para Playgrounds es la primera línea, en la que importamos un módulo para realizar operaciones para Playgrounds y la última línea donde indicamos al controlador de páginas de Playground qué vista de SwiftUI queremos mostrar en la pantalla.

El resto del código es SwiftUI estándar.

Conclusión

Con este simple Playground se nos abre la posibilidad de poder empezar a aprender SwiftUI y crear nuestras propias interfaces de usuario.

Aprende y practica Swift en tu Mac con Swift playgrounds

El mundo de la programación es cada vez más accesible y necesario para todas las personas. Por esa razón aparecen aplicaciones para que todo el mundo pueda aprender y practicar. Apple nos ofrece Swift playgrounds tanto para Mac como para iPad para que podamos aprender y practicar el lenguaje de programación Swift.

Swift playgrounds para Mac

En este artículo veremos la versión de Swift playgrounds para MacOS.

Esta aplicación resulta bastante accesible siempre y cuando sigamos unas reglas y entendamos que algunos cursos generados por otros desarrolladores son muy visuales y quedan fuera de la accesibilidad propuesta por Apple.

Su instalación es muy sencilla desde la Mac Appstore.

Abriendo Swift playgrounds

Nada más abrir Swift playgrounds nos encontramos que la aplicación habla de áreas de juego, es la traducción de playgrounds.

En la pantalla principal encontramos un área llamada Mis áreas de juegos, donde se alojarán los cursos y pruebas que tengamos descargados o disponibles para descargar. 

La zona de más áreas de juegos nos permite ver una galería de cursos, lecciones y experimentos que podemos descargar y seguir.

Creando nuestro primer programa en Swift

Una cosa que nunca debemos olvidar es que las aplicaciones para MacOS tienen un menú en la barra de menú que nos dará acceso a muchas de las opciones de la aplicación.

Vamos a crear un playground para poder escribir nuestro primer programa en Swift.

Abrimos el menú Archivo de la barra de menú y bajamos hasta la opción Nueva área de juegos en blanco. Los usuarios de VoiceOver deben pulsar Control+Opción+M y pulsar flecha a la derecha hasta llegar al menú Archivo. Luego pulsar flecha abajo hasta la opción de nueva area de juegos en blanco y pulsar enter.

Estamos en la ventana de creación y ejecución de un Playground. En esta ventana encontramos las siguientes zonas:

Una barra de herramientas con opciones para importar código de otros playgrounds y abrir o cerrar la barra lateral.

La barra lateral donde se nos da acceso a los módulos y páginas de un playground.

El editor de código donde estará el código fuente de nuestro programa.

Un botón de opciones de ejecución que desplegará un menú para elegir distintas opciones mientras se ejecuta nuestro código.

Un botón para ejecutar código.

Un botón para abrir la consola y ver los resultados de ejecutar nuestro código.

Por último un área donde se verán los resultados y que VoiceOver identifica erróneamente como una zona para introducir código.

Comenzamos a codificar

Es hora de ponernos manos a la obra y a programar se aprende programando así que vamos a crear nuestro primer programa en Swift.

Pinchamos en el editor de código, con VoiceOver nos colocamos sobre el editor de código y pulsamos Control+Opción+espacio. Si no hacemos esto con VoiceOver la edición de código no será del todo accesible para personas ciegas.

Al entrar en el editor debemos introducir el siguiente código:

print("¡Hola mundo!")

Tras esto debemos pulsar el botón de ejecutar código. Los usuarios de VoiceOver para salir del editor simplemente deben de dejar de interactuar con el editor, para ello se pulsa Control+Opción+Mayúsculas+flecha arriba.

Al pulsar el botón de ejecutar código no se aprecia que haya sucedido nada. Esto se debe a que la función print imprime un texto por la consola y la consola actualmente está oculta. Debemos pulsar el botón Abrir consola para ver el resultado.

Encontraremos un área llamada salida de la consola que mostrará el texto ¡Hola mundo!.

Volvemos a editar nuestro código y añadimos otra línea a nuestro código anterior dejando nuestro programa con el siguiente código:

print("Hola mundo!")
print("Este es mi primer programa en Swift.")

Volvemos a pulsar el botón ejecutar código y la salida de la consola se actualizará con el nuevo mensaje.

 

Conclusión

Tras crear nuestro primer programa en Swift ya nada nos impide progresar en nuestro camino de aprendizaje y poder crear nuestras propias aplicaciones.

Podemos comenzar nuestro aprendizaje sin necesidad de instalar una aplicación tan compleja como Xcode y además tenemos acceso a otras lecciones.

Cómo crear nuestros certificados SSL desde la Terminal de Mac

El uso de certificados SSL en las páginas webs es practicamente de uso obligatorio. De esta forma podemos navegar con confianza por Internet.

En muchos casos la empresa que aloja un proyecto web ofrece certificados SSL a sus clientes estos, en la mayoría de los casos, implican un aumento en el precio del servicio de alojamiento web. Hay organizaciones como Let’s encrypt que ofrecen certificados SSL de forma gratuita y renovables cada 3 meses pero su interfaz web puede resultar confusa o inaccesible.

Para agilizar estos procesos de creación de certificados SSL se han desarrollado herramientas de certificación para Let’s Encrypt  para que cualquier persona pueda encontrar la que le resulte más cómoda y accesible.

Una de estas herramientas es Certbot para Mac que resulta totalmente accesible al tratarse de una aplicación de Terminal.

Instalando Certbot

Esta aplicación es fácil de instalar si estamos utilizando Homebrew en nuestro mac.

Simplemente debemos abrir una Terminal y ejecutar:

brew install certbot

Tras la instalación tendremos disponible Certbot en nuestro Mac.

Usando Certbot

Para poder usar Certbot con garantías es necesario saber utilizar la Terminal de Mac y saber crear ficheros desde la Terminal de Mac.

Una vez instalado Certbot deberemos ejecutar el siguiente comando:

sudo certbot certonly --manual

En la Terminal nos aparecerán diversas instrucciones a seguir. Lo primero que se nos pedirá es el dominio a certificar. Deberemos introducir el nombre de nuestro dominio, por ejemplo, programaraciegas.net

En la terminal se nos indicará que debemos crear un fichero de texto con una serie de números y letras y subirlos a una ruta URL de nuestro sitio web. Podemos copiar toda la pantalla de la Terminal y leerla cómodamente e un editor de textos. De esta forma podremos seleccionar y pegar en el nuevo fichero los datos que Certbot nos indica.

Una vez subido el fichero con el validador de certificado podemos probar en nuestro navegador web que la URL que utilizará Let’s Encrypt funciona. Una vez comprobado podemos pulsar enter en la Terminal para que Certbot continúe con su trabajo.

Tras el proceso de validación Certbot habrá creado unos ficheros en la carpeta /etc/letsencrypt/live/nuestro-dominio-registrado donde estarán los distintos datos del certificado.

Para ver estos ficheros debemos utilizar el comando cat desde la Terminal.

Visitando la página de gestión de nuestro dominio, normalmente CPanel, deberemos buscar la sección de SSL/TLS para introducir nuestro certificado SSL.

Dependiendo de cada compañía el proceso cambia por lo que es recomendable consultar la documentación que ofrece la compañía de alojamiento web para este proceso.

Una vez terminado el proceso nuestro certificado SSL garantizará que nuestro sitio web es seguro para todas las personas que navegan por Internet.