paint-brush
Hellfred o: Cómo aprendí a automatizar macOS y volverme tremendamente productivopor@bradblundell
2,958 lecturas
2,958 lecturas

Hellfred o: Cómo aprendí a automatizar macOS y volverme tremendamente productivo

por Brad Blundell9m2022/08/12
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Las aplicaciones de Hellfred se basan en Hammerspoon para que pueda automatizar tareas y aumentar la productividad mediante la programación de accesos directos en sus flujos de trabajo diarios.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Hellfred o: Cómo aprendí a automatizar macOS y volverme tremendamente productivo
Brad Blundell HackerNoon profile picture


Quería velocidad. Necesitaba velocidad.


Todo este clic, toda esta búsqueda, todo el pensamiento repetitivo y la sobrecarga mental se interponían para hacer el trabajo.


Necesitaba que los robots hicieran el trabajo por mí.


Recientemente me mudé a macOS después de muchos años en Windows, donde jugué con AutoHotkey.


Como un novato relativo de Mac, comencé a piratear con Alfred , Karabiner y rápidamente encontré consuelo en la forma de Hammerspoon.


Ah, cuchara de martillo. Sí, había consumido el código y los módulos, "Spoons", de las personas súper inteligentes que codificaban y extendían Hammerspoon y eso me hizo ganar un gran kilometraje, pero necesitaba más .


Luego, estaba Lua. Quería mejorar en Lua.
¿La mejor manera de hacerlo?

Codificar algo.




Ingrese a Hellfred , una colección de 3 mini-aplicaciones construidas sobre cuchara martillo para que pueda automatizar tareas, aumentar la productividad y eliminar la pérdida de tiempo mediante la programación de accesos directos en sus flujos de trabajo diarios.


Es una forma de asignar tareas repetitivas que consumen mucho tiempo a secuencias de teclas, comandos o textos de búsqueda.



Infierno. Un mapeador de elección de comportamiento de búsqueda difusa.


fuego del infierno. Un mapeador de claves para el comportamiento.


Infierno. Un mapeador de comando a comportamiento.


TL;DR

Entonces, ¿quieres fuego rápido? Pase a la sección de instalación y tutorial a continuación o descargar el repositorio y checkout un basics a la rama básica.


 git checkout basics



Las aplicaciones

fuego infernal

Una utilidad de mapeo rápida, basada en modos, de teclas de acceso directo a la acción.

  • Admite disparadores de una sola tecla, así como secuencias de acordes clave como disparadores.
  • Expone prácticamente todas las teclas del teclado, incluidas las teclas modificadoras, para usarlas como disparadores.
  • Los modos permiten que el mismo activador tenga diferentes comportamientos en diferentes contextos.


¿En inglés por favor?

Cuando escribo un carácter o una secuencia de caracteres, ejecuto una función específica, pero solo si estoy en un modo particular.


Está bien. ¿Un ejemplo tal vez?

  • Cuando escribo c , ejecuto la función launchGoogleChromeApp (pero solo si estoy en modo predeterminado)
  • Cuando escribo w seguido de m , ejecuto la función changeToWindowManagerMode (nuevamente, mientras estoy en el modo predeterminado)
  • Cuando escribo c , ejecuto la función centerWindowOnScreen (mientras está en el modo WindowManager)


Infierno

Una utilidad de selección de búsqueda difusa con mapeo de elección a acción.

  • Admite conjuntos de opciones de varios niveles (anidados).


¿En inglés por favor?

Cuando busco en una lista de opciones y selecciono una, ejecuto una función específica. Si mi elección tiene subopciones (piense: parent => children ), entonces muéstrame esas para que pueda buscarlas.


Está bien. ¿Un ejemplo tal vez?

Supongamos que tiene esta estructura:

  • Cuando escriba ' goog ', resalte la opción ' Abrir Google '. Al seleccionar esta opción se ejecutará la función openGoogleInBrowser .
  • Alternativamente, si escribo ' aplicación ', resalto la opción ' Lanzar aplicaciones '. Al seleccionar esta opción, se reemplazarán las opciones actuales con Terminal , Notas y Calendario (el subconjunto de opciones para Iniciar aplicaciones )
  • Cuando realizo una búsqueda aproximada entre ellos y selecciono uno, Hellfuzz ejecutará launchOrOpenApp con la aplicación seleccionada.


Infierno

Una utilidad similar a la línea de comandos con soporte básico de coincidencia de cadenas.


¿En inglés por favor?

Cuando escribo un comando y lo envío, inspecciono mi comando en busca de patrones de cadena coincidentes y ejecuto funciones relacionadas con ese comando.


Está bien. ¿Un ejemplo tal vez?

  • Cuando escribo el comando ' abrir notas ' y luego presiono enter , luego ejecuto cualquier función con un filter (por ejemplo, el comando debe comenzar con la palabra ' abrir ') y comportamiento (por ejemplo, abrir la aplicación asociada con ' notas ') adecuado para abrir las Notas aplicación

  • Cuando escribo ' explorar github ' y luego presiono enter , luego ejecuto cualquier función con un filtro (por ejemplo, el comando comienza con la palabra ' examinar ') y comportamiento (abrir URL asociada con ' github ') adecuado para abrir el enlace.



Instalación: Encendedor

  1. Descargar e instalar Hammerspoon
  2. Instale Hellfred: clone el repositorio en su directorio ` ~/.hammerspoon `:


 git clone https://github.com/braddevelop/hellfred.git ~/.hammerspoon

Bootstrap: enciéndelo

Hay un archivo de arranque para Hellfred con una configuración preconfigurada. Hagámosle referencia en el archivo init.lua de Hammerspoon.

https://gist.github.com/braddevelop/bac92b6797c087ca42f9363aab4972e0

Guarde el archivo y vuelva a cargar la configuración (o ahórrese algo de tiempo y use recarga elegante )


¿Qué hay en la caja? Pruebe la configuración previa

Las 3 aplicaciones de Hellfred están listas para usar y están preconfiguradas con un ejemplo de inicio rápido. Probémoslo para asegurarnos de que todo esté cableado y encendido.

Prueba Hellfire

  • Abre Hellfire con la tecla de acceso directo shift + + h
  • Escriba el caracter c
  • El repositorio de Hellfred se abrirá en un navegador.

Prueba Hellfuzz

  • Abre Hellfuzz con la tecla de acceso directo shift + + h
  • Escribe la palabra ' wiki '
  • Esto resalta la opción ' Abrir wiki de Hellfred '
  • Presiona enter y la wiki de Hellfred se abrirá en un navegador.

Prueba Hellprompt

  • Abra Hellprompt con la tecla de acceso rápido shift + ^ + h
  • Escribe ' código abierto '
  • Presiona enter y el repositorio de código para Hellfred se abrirá en un navegador.



Lo que logran Hellfire , Hellfuzz y Hellprompt es asignar un disparador o entrada a una acción o comportamiento , if-this-then-that , y aunque acabamos de demostrar el uso de cada aplicación para lograr el mismo resultado, encontrará que cada aplicación es más adecuada para ciertos casos de uso que otros.



Tutorial: una configuración básica

Que estaremos programando

Ahora subamos la temperatura y configuremos algo un poco más útil. Vamos a programar cada aplicación para que resuelva los siguientes escenarios para que puedas dominar las cosas:

  1. Un sencillo lanzador de aplicaciones
  2. Un lanzador de URL para enlaces visitados con frecuencia


Puede encontrar los archivos finales de este tutorial en el directorio hellfred/extend/basics en la rama básica del repositorio.


Patrones a tener en cuenta

Cada aplicación sigue un conjunto similar de pasos.

  1. Inicialice la aplicación con un enlace de tecla de acceso rápido
  2. Configure los objetos ` Subscriber (esto podría hacerse en hellfred-bootstrap.lua , pero crearemos archivos separados para mantener las cosas absolutamente limpias. Aprovecharemos los métodos de fábrica para que la creación de objetos sea muy sencilla)
  3. Registrar los suscriptores con la aplicación
  4. Tecla de acceso rápido para ejecutar la aplicación
  5. Destruye las tareas que consumen tiempo


Configuración para Hellfire

Hellfire funciona un poco como esto:


Lanzador de aplicaciones

Inicializar la aplicación

Esto ya está hecho con la configuración previa en hellfred-bootstrap.lua . Siéntase libre de cambiar la tecla de acceso rápido a otra cosa.
https://gist.github.com/braddevelop/49c7e7c7c62350d93e7798ff2bf40541


Configurar objetos de Subscriber

los triggers y las callbacks de llamada están definidos por el usuario y se envuelven dentro de objetos de configuración simples. Estos objetos actúan como subscribers cuando se registran en la aplicación respectiva y se les notifica cada vez que sucede algo importante dentro de la aplicación.


Los objetos de suscriptor para Hellfire siguen esta estructura:

https://gist.github.com/braddevelop/20c9c5b97a85a9a5c4cb924b511e494a

Nota : si fireIfModeIs no está definido, Hellfire configurará ANY modo de forma predeterminada, lo que significa que la devolución de llamada se activará en cualquier modo cuando se active.


Cree la siguiente estructura de directorios si no existe: hellfred/extend/basics .

Luego cree un nuevo archivo Lua dentro del directorio basics llamado hellfirepack-applications.lua ; la convención de nomenclatura de archivos no tiene importancia.


Añade este código:

https://gist.github.com/braddevelop/c12d37d64ce75b83a195666317a10aa2


Registrar los suscriptores con la aplicación

De vuelta en hellfred-bootstrap.lua , debemos registrar el paquete de suscriptores que acabamos de configurar.

https://gist.github.com/braddevelop/2298469b805978062421f5a09d01d11a


Ejecute la aplicación

Ingrese Hellfire ( shift + + h ) y escriba cualquiera de los nuevos disparadores:
f para abrir la aplicación Finder, t para abrir Terminal o n para abrir la aplicación Notas.


Link Launcher (usando los modos Hellfire)

Configurar objetos de Subscriber

Muy bien, ahora configuremos los suscriptores para nuestro iniciador de URL de enlaces comunes. Cree un nuevo archivo Lua en hellfred/extend/basics llamado hellfirepack-common-links.lua


Añade este código:

https://gist.github.com/braddevelop/7d637464f45d2d9a4641e365ad2f20a1


Registrar los suscriptores con la aplicación

De vuelta en hellfred-bootstrap.lua , debemos registrar el paquete de suscriptores que acabamos de configurar.
https://gist.github.com/braddevelop/f0dafb518797620747044afbc20da060


Ejecute la aplicación

Ingresa Hellfire ( shift + + h ) y escribe cualquiera de los nuevos activadores: t , g , h o s .


¡Aférrate! ¿ t que al escribir el gatillo se abrió Terminal y también se abrió el sitio web de TechCrunch ? Probablemente no sea eso lo que queremos que suceda. Aprovechemos la función Modo Hellfire .


Los modos ofrecen una manera de hacer que el mismo disparador se comporte de manera diferente en diferentes contextos.


Por defecto, Hellfire se inicializa en un modo llamado... lo has adivinado... modo ' Predeterminado '.
Podemos configurar algunos modos personalizados para usar con Hellfire para que los activadores se comporten de manera diferente en diferentes modos, o 'espacios de nombres' si lo desea.


Considere este flujo:

Cree un nuevo archivo Lua en hellfred/extend/basics llamado hellfire-modes-extended.lua .

Crearemos un modo separado para que se disparen los activadores de enlaces comunes .


Añade este código:

https://gist.github.com/braddevelop/1e3f345076a8cd5c4cdf843cad785c9e


Vamos a requerir este archivo en hellfred-bootstrap.lua para que sea globalmente accesible. Haremos lo mismo con el archivo Hellfire Modes para tener acceso a los modos incorporados de Hellfire en otras partes de nuestra aplicación.


Agregue el siguiente código en hellfred-bootstrap.lua (en la sección de metadatos, hacia la parte superior del archivo)

https://gist.github.com/braddevelop/04a4ec21aab06f50760d1082b216426f


Ahora necesitamos una forma de cambiar el modo a nuestro nuevo modo Vínculos comunes.

Usaremos la secuencia de teclas c seguida de l .

También necesitamos poder volver al modo predeterminado

Usaremos el punto y coma ; como disparador.


Eso es lo siguiente…


Configurar objetos de Subscriber que desencadenan cambios de modo

Cree un nuevo archivo Lua en hellfred/extend/basics llamado hellfire-mode-triggers.lua


Añade este código:

https://gist.github.com/braddevelop/283acacb9634590208c3b29b6039dc12


Registrar los suscriptores con la aplicación

En hellfred-bootstrap.lua , registre los suscriptores para los activadores del nuevo modo:

https://gist.github.com/braddevelop/8afc4a576d550415f22c3c6fbf4152f1


Prueba de cambio entre modos

Ahora ingrese Hellfire ( shift + + h ) y alterne entre los dos modos. Modos FTW!


Actualizar suscriptores para trabajar en modos

Ahora necesitamos actualizar a nuestros suscriptores en hellfirepack-common-links.lua para que solo se activen cuando el modo Common Links esté activo.

Actualizaremos el método de fábrica y asignaremos _G.HELLFIRE_MODES_EXTENDED.COMMON_LINKS a fireIfModeIs en lugar de nil .


El método actualizado debería verse así:

https://gist.github.com/braddevelop/152a16f87efe55f08e7ed7139225f757


También necesitamos actualizar a nuestros suscriptores en hellfirepack-applications.lua para que solo se activen cuando el modo predeterminado de Hellfire esté activo.


El método actualizado debería verse así:

https://gist.github.com/braddevelop/8ed8dea04397b0471299c8c89f8a9ae0


Ejecute la aplicación

Ingrese Hellfire ( shift + + h ) y alterne entre los modos. El disparador t ahora se comporta de manera diferente según el modo en el que se encuentre Hellfire. ¡Diablos, sí!


Configuración de Hellprompt

Así es como funciona Hellprompt:

Lanzador de aplicaciones y URL

Inicializar la aplicación

Esto ya está hecho con la configuración previa en hellfred-bootstrap.lua . Siéntase libre de cambiar la tecla de acceso rápido a otra cosa.

https://gist.github.com/braddevelop/11e9b4871182f90c57313ab6ffa939a4


Configurar objetos de Subscriber

Los suscriptores de Hellprompt tienen una estructura diferente a los de Hellfire.

Considere esta estructura:

https://gist.github.com/braddevelop/c247d1d1429234c96f3e8c7d8a0b48df

Nota : si el filter no está definido, la devolución de llamada siempre se ejecutará.


Cree un nuevo archivo Lua en hellfred/extend/basics llamado hellpromptpack-commands.lua

Añade este código:

https://gist.github.com/braddevelop/6b18219f83fcf69826083d5dfce5d06f


Registrar los suscriptores con la aplicación

De vuelta en hellfred-bootstrap.lua , debemos registrar el paquete de suscriptores que acabamos de configurar.

https://gist.github.com/braddevelop/f1b75646b7330fcb1c993a5737fd7d61


Ejecute la aplicación
Ingrese Hellprompt ( shift + ^ + h ) y pruebe esos comandos. ¡Infierno!

Probar:

 browse news

y:

 open terminal


Configuración de Hellfuzz

Así es como funciona Hellfuzz:

Lanzador de aplicaciones

Inicializar la aplicación

Esto ya está hecho con la configuración previa en hellfred-bootstrap.lua . Siéntase libre de cambiar la tecla de acceso rápido a otra cosa.
https://gist.github.com/braddevelop/b18f575ec347503628e7457217b6e187


Configurar objetos de Subscriber

Los suscriptores de Hellfuzz tienen una estructura diferente a las otras aplicaciones.

Considere esta estructura:

https://gist.github.com/braddevelop/56e9c22c6f921575637c73d60920d208

Nota : si se define nextChoicesFn , se ignora la callback de llamada.


Para facilitar las cosas, usaremos un método de ayuda para configurar suscriptores para Hellfuzz


Cree un nuevo archivo Lua en hellfred/extend/basics llamado hellfuzzpack-apps-and-links.lua


Añade este código:

https://gist.github.com/braddevelop/3564ad1ec286a30eca1abb94cfd6a69a


Registrar los suscriptores con la aplicación

En hellfred-bootstrap.lua , registra el paquete de suscriptores.

https://gist.github.com/braddevelop/a90f9d5635377d74b145a892845c8273


Ejecute la aplicación

Ingresa Hellfuzz ( shift + + h ) y escribe un comando. Por ejemplo, comience a escribir la palabra 'Terminal' , verá que la opción para abrir Terminal está resaltada. Presiona enter y se abre la Terminal . ¡Ahumado en caliente!


Link Launcher (utilizando conjuntos de opciones anidados)

Una característica útil de Hellfuzz es la capacidad de anidar conjuntos de opciones.

Considere este flujo actualizado:


Probemos esto en nuestra tarea Link Launcher , crearemos la siguiente estructura de elección jerárquica:

Actualice el código en hellfuzzpack-apps-and-links.lua a lo siguiente:

https://gist.github.com/braddevelop/384b0ae9629faca95d5d4cb519cd8e61


Ahora ingrese Hellfuzz ( shift + + h ) y comience a buscar ' Enlaces comunes '. Puede seleccionar la opción ' Enlaces comunes ', y el subconjunto de opciones de commonLinkNextChoices se mostrará y podrá realizar búsquedas aproximadas. Al seleccionar cualquiera de las opciones de enlace, se abrirá la URL respectiva.



Extensiones: Añadir leña al fuego.

Esté atento a los próximos experimentos y extensiones de Hellfred en el repositorio consultando la rama extend .

 git checkout extend




Ahora ve a armar el infierno \m/