Quería velocidad. velocidad. Necesitaba 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 , y rápidamente encontré consuelo en la forma de Hammerspoon. Alfred Karabiner Ah, 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 . cuchara más Luego, estaba Lua. Quería mejorar en Lua. ¿La mejor manera de hacerlo? Codificar algo. Ingrese una colección de 3 mini-aplicaciones construidas sobre 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. , a Hellfred cuchara martillo Es una forma de asignar tareas repetitivas que consumen mucho tiempo a secuencias de teclas, comandos o textos de búsqueda. TL;DR y un a la rama básica. Entonces, ¿quieres fuego rápido? Pase a la sección de instalación y tutorial a continuación o descargar el repositorio checkout basics 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 , ejecuto la función (pero solo si estoy en modo predeterminado) c launchGoogleChromeApp Cuando escribo seguido de , ejecuto la función (nuevamente, mientras estoy en el modo predeterminado) w m changeToWindowManagerMode Cuando escribo , ejecuto la función (mientras está en el modo WindowManager) c centerWindowOnScreen 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: ), entonces muéstrame esas para que pueda buscarlas. parent => children Está bien. ¿Un ejemplo tal vez? Supongamos que tiene esta estructura: Cuando escriba ' ', resalte la opción ' '. Al seleccionar esta opción se ejecutará la función . goog Abrir Google openGoogleInBrowser Alternativamente, si escribo ' ', resalto la opción ' '. Al seleccionar esta opción, se reemplazarán las opciones actuales con , y (el subconjunto de opciones para ) aplicación Lanzar aplicaciones Terminal Notas Calendario Iniciar aplicaciones Cuando realizo una búsqueda aproximada entre y selecciono uno, Hellfuzz ejecutará con la aplicación seleccionada. ellos launchOrOpenApp 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 ' ' y luego presiono , luego ejecuto cualquier función con un (por ejemplo, el comando debe comenzar con la palabra ' ') y comportamiento (por ejemplo, abrir la aplicación asociada con ' ') adecuado para abrir las Notas aplicación abrir notas enter filter abrir notas Cuando escribo ' ' y luego presiono , luego ejecuto cualquier función con un filtro (por ejemplo, el comando comienza con la palabra ' ') y comportamiento (abrir URL asociada con ' ') adecuado para abrir el enlace. explorar github enter examinar github Instalación: Encendedor Descargar e instalar Hammerspoon Instale Hellfred: clone el repositorio en su directorio ` `: ~/.hammerspoon git clone https://github.com/braddevelop/hellfred.git ~/.hammerspoon Bootstrap: enciéndelo Hay un de para Hellfred con una configuración preconfigurada. Hagámosle referencia en el archivo de Hammerspoon. archivo arranque init.lua 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 con la tecla de acceso directo + + Hellfire shift ⌘ h Escriba el caracter c El repositorio de Hellfred se abrirá en un navegador. Prueba Hellfuzz Abre con la tecla de acceso directo + + Hellfuzz shift ⌥ h Escribe la palabra ' ' wiki Esto resalta la opción ' ' Abrir wiki de Hellfred Presiona y la wiki de Hellfred se abrirá en un navegador. enter Prueba Hellprompt Abra con la tecla de acceso rápido + + Hellprompt shift ^ h Escribe ' ' código abierto Presiona y el repositorio de código para Hellfred se abrirá en un navegador. enter Lo que logran , y es asignar un o a una o , , 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. Hellfire Hellfuzz Hellprompt disparador entrada acción comportamiento if-this-then-that Tutorial: una configuración básica Que estaremos programando Ahora subamos la temperatura y configuremos algo un poco más útil. Vamos a programar para que resuelva los siguientes escenarios para que puedas dominar las cosas: cada aplicación Un sencillo lanzador de aplicaciones Un lanzador de URL para enlaces visitados con frecuencia Puede encontrar los archivos finales de este tutorial en el la rama básica del repositorio. directorio hellfred/extend/basics en Patrones a tener en cuenta Cada aplicación sigue un conjunto similar de pasos. Inicialice la aplicación con un enlace de tecla de acceso rápido Configure los objetos ` (esto podría hacerse en , 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) Subscriber hellfred-bootstrap.lua Registrar los suscriptores con la aplicación Tecla de acceso rápido para ejecutar la aplicación 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 . Siéntase libre de cambiar la tecla de acceso rápido a otra cosa. hellfred-bootstrap.lua https://gist.github.com/braddevelop/49c7e7c7c62350d93e7798ff2bf40541 de Configurar objetos Subscriber los y las de llamada están definidos por el usuario y se envuelven dentro de objetos de configuración simples. Estos objetos actúan como cuando se registran en la aplicación respectiva y se les notifica cada vez que sucede algo importante dentro de la aplicación. triggers callbacks subscribers Los objetos de suscriptor para Hellfire siguen esta estructura: https://gist.github.com/braddevelop/20c9c5b97a85a9a5c4cb924b511e494a : si no está definido, Hellfire configurará modo de forma predeterminada, lo que significa que la devolución de llamada se activará en cualquier modo cuando se active. Nota fireIfModeIs ANY Cree la siguiente estructura de directorios si no existe: . hellfred/extend/basics Luego cree un nuevo archivo Lua dentro del directorio llamado ; la convención de nomenclatura de archivos no tiene importancia. basics hellfirepack-applications.lua Añade este código: https://gist.github.com/braddevelop/c12d37d64ce75b83a195666317a10aa2 Registrar los suscriptores con la aplicación De vuelta en , debemos registrar el paquete de suscriptores que acabamos de configurar. hellfred-bootstrap.lua https://gist.github.com/braddevelop/2298469b805978062421f5a09d01d11a Ejecute la aplicación Ingrese Hellfire ( + + ) y escriba cualquiera de los nuevos disparadores: para abrir la aplicación Finder, para abrir Terminal o para abrir la aplicación Notas. shift ⌘ h f t n Link Launcher (usando los modos Hellfire) de Configurar objetos Subscriber Muy bien, ahora configuremos los suscriptores para nuestro iniciador de URL de enlaces comunes. Cree un nuevo archivo Lua en llamado hellfred/extend/basics 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 , debemos registrar el paquete de suscriptores que acabamos de configurar. hellfred-bootstrap.lua https://gist.github.com/braddevelop/f0dafb518797620747044afbc20da060 Ejecute la aplicación Ingresa Hellfire ( + + ) y escribe cualquiera de los nuevos activadores: , , o . shift ⌘ h t g h s ¿ que al escribir el gatillo se abrió se abrió el sitio web de ? Probablemente no sea eso lo que queremos que suceda. Aprovechemos la . ¡Aférrate! t Terminal y también TechCrunch 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 ' '. 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. Predeterminado Considere este flujo: Cree un nuevo archivo Lua en llamado . hellfred/extend/basics 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 para que sea accesible. Haremos lo mismo con el para tener acceso a los modos incorporados de Hellfire en otras partes de nuestra aplicación. hellfred-bootstrap.lua globalmente archivo Hellfire Modes Agregue el siguiente código en (en la sección de metadatos, hacia la parte superior del archivo) hellfred-bootstrap.lua 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 seguida de . c l También necesitamos poder volver al modo predeterminado Usaremos el punto y coma como disparador. ; Eso es lo siguiente… de que desencadenan cambios de modo Configurar objetos Subscriber Cree un nuevo archivo Lua en llamado hellfred/extend/basics hellfire-mode-triggers.lua Añade este código: https://gist.github.com/braddevelop/283acacb9634590208c3b29b6039dc12 Registrar los suscriptores con la aplicación En , registre los suscriptores para los activadores del nuevo modo: hellfred-bootstrap.lua https://gist.github.com/braddevelop/8afc4a576d550415f22c3c6fbf4152f1 Prueba de cambio entre modos Ahora ingrese Hellfire ( + + ) y alterne entre los dos modos. shift ⌘ h Modos FTW! Actualizar suscriptores para trabajar en modos Ahora necesitamos actualizar a nuestros suscriptores en para que solo se activen cuando esté activo. hellfirepack-common-links.lua el modo Common Links Actualizaremos el método de fábrica y asignaremos a en lugar de . _G.HELLFIRE_MODES_EXTENDED.COMMON_LINKS fireIfModeIs nil El método actualizado debería verse así: https://gist.github.com/braddevelop/152a16f87efe55f08e7ed7139225f757 También necesitamos actualizar a nuestros suscriptores en para que solo se activen cuando esté activo. hellfirepack-applications.lua el modo predeterminado de Hellfire El método actualizado debería verse así: https://gist.github.com/braddevelop/8ed8dea04397b0471299c8c89f8a9ae0 Ejecute la aplicación Ingrese Hellfire ( + + ) y alterne entre los modos. El disparador ahora se comporta de manera diferente según el modo en el que se encuentre Hellfire. shift ⌘ h t ¡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 . Siéntase libre de cambiar la tecla de acceso rápido a otra cosa. hellfred-bootstrap.lua https://gist.github.com/braddevelop/11e9b4871182f90c57313ab6ffa939a4 de Configurar objetos Subscriber Los suscriptores de Hellprompt tienen una estructura diferente a los de Hellfire. Considere esta estructura: https://gist.github.com/braddevelop/c247d1d1429234c96f3e8c7d8a0b48df : si el no está definido, la devolución de llamada siempre se ejecutará. Nota filter Cree un nuevo archivo Lua en llamado hellfred/extend/basics hellpromptpack-commands.lua Añade este código: https://gist.github.com/braddevelop/6b18219f83fcf69826083d5dfce5d06f Registrar los suscriptores con la aplicación De vuelta en , debemos registrar el paquete de suscriptores que acabamos de configurar. hellfred-bootstrap.lua https://gist.github.com/braddevelop/f1b75646b7330fcb1c993a5737fd7d61 Ingrese Hellprompt ( + + ) y pruebe esos comandos. Ejecute la aplicación shift ^ h ¡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 . Siéntase libre de cambiar la tecla de acceso rápido a otra cosa. hellfred-bootstrap.lua https://gist.github.com/braddevelop/b18f575ec347503628e7457217b6e187 de Configurar objetos Subscriber Los suscriptores de Hellfuzz tienen una estructura diferente a las otras aplicaciones. Considere esta estructura: https://gist.github.com/braddevelop/56e9c22c6f921575637c73d60920d208 : si se define , se ignora la de llamada. Nota nextChoicesFn callback Para facilitar las cosas, usaremos un método de ayuda para configurar suscriptores para Hellfuzz Cree un nuevo archivo Lua en llamado hellfred/extend/basics hellfuzzpack-apps-and-links.lua Añade este código: https://gist.github.com/braddevelop/3564ad1ec286a30eca1abb94cfd6a69a Registrar los suscriptores con la aplicación En , registra el paquete de suscriptores. hellfred-bootstrap.lua https://gist.github.com/braddevelop/a90f9d5635377d74b145a892845c8273 Ejecute la aplicación Ingresa Hellfuzz ( + + ) y escribe un comando. Por ejemplo, comience a escribir la palabra , verá que la opción para abrir Terminal está resaltada. Presiona y se abre la . shift ⌥ h 'Terminal' enter 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 , crearemos la siguiente estructura de elección jerárquica: Link Launcher Actualice el código en a lo siguiente: hellfuzzpack-apps-and-links.lua https://gist.github.com/braddevelop/384b0ae9629faca95d5d4cb519cd8e61 Ahora ingrese Hellfuzz ( + + ) y comience a buscar ' '. Puede seleccionar la opción ' ', y el subconjunto de opciones de se mostrará y podrá realizar búsquedas aproximadas. Al seleccionar cualquiera de las opciones de enlace, se abrirá la URL respectiva. shift ⌥ h Enlaces comunes Enlaces comunes commonLinkNextChoices 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/