Je voulais de la vitesse. J'avais besoin de vitesse.
Tous ces clics, toutes ces recherches, toutes les pensées répétitives et les frais généraux mentaux empêchaient réellement de faire le travail.
J'avais besoin que les robots fassent le travail pour moi.
J'étais récemment passé à macOS après de nombreuses années sur Windows où j'avais bricolé avec AutoHotkey.
En tant que parent Mac noob, j'ai commencé à bidouiller avec Alfred , Karabiner et j'ai rapidement trouvé du réconfort sous la forme de Hammerspoon.
Ah, Hammerspoon . Oui, j'avais consommé le code et les modules - "Spoons" - des personnes super intelligentes codant et étendant Hammerspoon et cela m'a fait gagner beaucoup de temps, mais j'avais besoin de plus .
Ensuite, il y avait Lua. Je voulais me perfectionner en Lua.
La meilleure façon de le faire ?Codez quelque chose.
Entrez Hellfred , une collection de 3 mini-applications construites sur
C'est un moyen de mapper des tâches répétitives et chronophages sur des séquences de touches, des commandes ou des textes interrogeables.
TL; DR
Alors vous voulez du feu rapide ? Passez à la section d'installation et de didacticiel ci-dessous oucheckout
la branche basics
.
git checkout basics
Les applications
Flamme infernale
Un utilitaire de mappage rapide, basé sur le mode, raccourci vers action.
- Prend en charge les déclencheurs à touche unique ainsi que les séquences d'accords clés comme déclencheurs.
- Expose pratiquement toutes les touches du clavier, y compris les touches de modification à utiliser comme déclencheurs.
- Les modes permettent au même déclencheur d'avoir différents comportements dans différents contextes.
En anglais s'il vous plaît?
Lorsque je tape un caractère ou une séquence de caractères, j'exécute alors une fonction spécifique, mais uniquement si je suis dans un mode particulier.
D'accord. Un exemple peut-être ?
- Lorsque je tape c , exécutez la fonction
launchGoogleChromeApp
(mais uniquement si je suis en mode par défaut) - Lorsque je tape w suivi de m , exécutez la fonction
changeToWindowManagerMode
(encore une fois, en mode par défaut) - Lorsque je tape c , exécutez la fonction
centerWindowOnScreen
(en mode WindowManager)
Hellfuzz
Un utilitaire de sélection de recherche floue avec mappage choix-action.
- Prend en charge les ensembles de choix à plusieurs niveaux (imbriqués).
En anglais s'il vous plaît?
Lorsque je recherche dans une liste de choix et que j'en sélectionne un, j'exécute une fonction spécifique. Si mon choix a des sous-choix (pensez: parent => children
), alors montrez-moi ceux-ci pour que je puisse les parcourir.
D'accord. Un exemple peut-être ?
Supposons que vous ayez cette structure :
- Quand je tape ' goog ', alors mettez en surbrillance le choix ' Ouvrir Google '. La sélection de cette option exécutera la fonction
openGoogleInBrowser
. - Alternativement, si je tape ' app ', puis mettez en surbrillance le choix ' Launch Apps '. La sélection de cette option remplacera les choix actuels par Terminal , Notes et Calendrier (le sous-ensemble de choix pour Lancer des applications )
- Lorsque je fais une recherche floue parmi ceux -ci et que j'en sélectionne un, Hellfuzz exécutera
launchOrOpenApp
avec l'application sélectionnée.
Hellprompt
Un utilitaire de type ligne de commande avec prise en charge de la correspondance de chaîne de base.
En anglais s'il vous plaît?
Lorsque je tape une commande et que je la soumets, j'inspecte ma commande pour tout modèle de chaîne correspondant et j'exécute les fonctions liées à cette commande.
D'accord. Un exemple peut-être ?
Lorsque je tape la commande ' open notes ' puis que j'appuie sur
enter
, j'exécute n'importe quelle fonction avec unfilter
(par exemple, la commande doit commencer par le mot ' open ') et un comportement (par exemple, ouvrir l'application associée à ' notes ') approprié pour ouvrir les Notes application.Lorsque je tape ' browse github ' puis que j'appuie sur
enter
, j'exécute n'importe quelle fonction avec un filtre (par exemple, la commande commence par le mot ' browse ') et un comportement (open url associé à ' github ') adapté pour ouvrir le lien.
Installation : allume-feu
- Téléchargez et installez Hammerspoon
- Installez Hellfred : clonez le référentiel dans votre répertoire `
~/.hammerspoon
` :
git clone https://github.com/braddevelop/hellfred.git ~/.hammerspoon
Bootstrap : allumez-le
Il existe un fichier bootstrap pour Hellfred avec une configuration préconfigurée. Faisons référence à cela dans le fichier init.lua
de Hammerspoon.
https://gist.github.com/braddevelop/bac92b6797c087ca42f9363aab4972e0
Enregistrez le fichier et rechargez la configuration (ou gagnez du temps et utilisez
Qu'y a-t-il dans la boite? Essayez la pré-configuration
Prêtes à l'emploi, les 3 applications Hellfred sont prêtes à l'emploi et sont préconfigurées avec un exemple de démarrage rapide. Testons-le pour nous assurer que tout fonctionne correctement.
Essayez Hellfire
- Ouvrez Hellfire avec le raccourci clavier
shift
+⌘
+h
- Tapez le caractère
c
- Le référentiel pour Hellfred s'ouvrira dans un navigateur.
Essayez Hellfuzz
- Ouvrez Hellfuzz avec le raccourci clavier
shift
+⌥
+h
- Tapez le mot ' wiki '
- Cela met en évidence l'option ' Ouvrir le wiki Hellfred '
- Appuyez sur
enter
et le wiki de Hellfred s'ouvrira dans un navigateur
Essayez Hellprompt
- Ouvrez Hellprompt avec le raccourci clavier
shift
+^
+h
- Tapez ' code ouvert '
- Appuyez sur
enter
et le dépôt de code pour Hellfred s'ouvrira dans un navigateur
Ce que Hellfire , Hellfuzz et Hellprompt réalisent est de mapper un déclencheur ou une entrée à une action ou un comportement , if-this-then-that
, et bien que nous venons de démontrer l'utilisation de chaque application pour obtenir le même résultat, vous trouverez chaque application plus adaptée à certains cas d'utilisation que d'autres.
Tutoriel : une configuration de base
Ce que nous allons programmer
Montons maintenant le feu et configurons quelque chose d'un peu plus utile. Nous allons programmer chaque application pour résoudre les scénarios suivants afin que vous puissiez maîtriser les choses :
- Un simple lanceur d'applications
- Un lanceur d'URL pour les liens fréquemment visités
Vous pouvez trouver les fichiers finaux de cette procédure pas à pas dans le répertoire hellfred/extend/basics sur la branche basics du référentiel.
Motifs à noter
Chaque application suit un ensemble d'étapes similaire.
- Initialiser l'application avec une liaison de raccourci clavier
- Configurez les objets `
Subscriber
` (Cela pourrait être fait dans hellfred-bootstrap.lua mais nous allons créer des fichiers séparés pour garder les choses parfaitement propres. Nous tirerons parti des méthodes d'usine pour rendre la création d'objets un jeu d'enfant) - Enregistrez les abonnés avec l'application
- Touche de raccourci pour exécuter l'application
- Détruisez les tâches chronophages
Configuration pour Hellfire
Hellfire fonctionne un peu comme ceci :
Lanceur d'applications
Initialiser l'application
Ceci est déjà fait avec la pré-configuration dans hellfred-bootstrap.lua
. N'hésitez pas à changer le raccourci clavier pour autre chose.
https://gist.github.com/braddevelop/49c7e7c7c62350d93e7798ff2bf40541
Configurer les objets Subscriber
les triggers
et callbacks
sont définis par l'utilisateur et encapsulés dans des objets de configuration simples. Ces objets agissent en tant subscribers
lorsqu'ils sont enregistrés auprès de l'application respective et avertis chaque fois que quelque chose d'important se produit dans l'application.
Les objets abonnés pour Hellfire suivent cette structure :
https://gist.github.com/braddevelop/20c9c5b97a85a9a5c4cb924b511e494a
Remarque : Si fireIfModeIs
n'est pas défini, Hellfire définira le mode ANY
par défaut, ce qui signifie que le rappel se déclenchera dans n'importe quel mode lorsqu'il sera déclenché.
Créez la structure de répertoire suivante si elle n'existe pas : hellfred/extend/basics
.
Créez ensuite un nouveau fichier Lua dans le répertoire de basics
appelé hellfirepack-applications.lua
- la convention de dénomination des fichiers n'a aucune importance.
Ajoutez ce code :
https://gist.github.com/braddevelop/c12d37d64ce75b83a195666317a10aa2
Enregistrez les abonnés avec l'application
De retour dans hellfred-bootstrap.lua
, nous devons enregistrer le pack d'abonnés que nous venons de configurer.
https://gist.github.com/braddevelop/2298469b805978062421f5a09d01d11a
Exécutez l'application
Entrez Hellfire ( shift
+ ⌘
+ h
) et tapez l'un des nouveaux déclencheurs :
f
pour ouvrir l'application Finder, t
pour ouvrir Terminal ou n
pour ouvrir l'application Notes.
Link Launcher (utilisant les modes Hellfire)
Configurer les objets Subscriber
Bon maintenant, configurons les abonnés pour notre lanceur d'url Common Links. Créez un nouveau fichier Lua dans hellfred/extend/basics
appelé hellfirepack-common-links.lua
Ajoutez ce code :
https://gist.github.com/braddevelop/7d637464f45d2d9a4641e365ad2f20a1
Enregistrez les abonnés avec l'application
De retour dans hellfred-bootstrap.lua
, nous devons enregistrer le pack d'abonnés que nous venons de configurer.
https://gist.github.com/braddevelop/f0dafb518797620747044afbc20da060
Exécutez l'application
Entrez Hellfire ( shift
+ ⌘
+ h
) et tapez l'un des nouveaux déclencheurs : t
, g
, h
ou s
.
Attendez! Avez-vous remarqué que la saisie du déclencheur a lancé Terminal t
ouvert le site Web TechCrunch ? Ce n'est probablement pas ce que nous souhaitons. Profitons de la fonctionnalité Hellfire's Mode .
Les modes offrent un moyen de faire en sorte que le même déclencheur se comporte différemment dans différents contextes.
Par défaut, Hellfire s'initialise dans un mode appelé… vous l'avez deviné… mode ' Default '.
Nous pouvons configurer certains modes personnalisés à utiliser avec Hellfire afin que les déclencheurs puissent se comporter différemment sous différents modes - ou "espaces de noms" si vous le souhaitez.
Considérez ce flux :
Créez un nouveau fichier Lua dans hellfred/extend/basics
appelé hellfire-modes-extended.lua
.
Nous allons créer un mode séparé pour que les déclencheurs de liens communs se déclenchent .
Ajoutez ce code :
https://gist.github.com/braddevelop/1e3f345076a8cd5c4cdf843cad785c9e
Nous allons exiger ce fichier dans hellfred-bootstrap.lua
donc c'est
Ajoutez le code suivant dans hellfred-bootstrap.lua
(sous la section metadata, vers le haut du fichier)
https://gist.github.com/braddevelop/04a4ec21aab06f50760d1082b216426f
Nous avons maintenant besoin d'un moyen de changer le mode pour notre nouveau mode Common Links.
Nous utiliserons la séquence de touches c
suivie de l
.
Nous devons également pouvoir revenir au mode par défaut
Nous utiliserons le point-virgule ;
comme déclencheur.
C'est la prochaine…
Configurer les objets Subscriber
qui déclenchent des changements de mode
Créez un nouveau fichier Lua dans hellfred/extend/basics
appelé hellfire-mode-triggers.lua
Ajoutez ce code :
https://gist.github.com/braddevelop/283acacb9634590208c3b29b6039dc12
Enregistrez les abonnés avec l'application
Dans hellfred-bootstrap.lua
, enregistrez les abonnés pour les nouveaux déclencheurs de mode :
https://gist.github.com/braddevelop/8afc4a576d550415f22c3c6fbf4152f1
Tester la commutation entre les modes
Entrez maintenant dans Hellfire ( shift
+ ⌘
+ h
) et basculez entre les deux modes. Mode FTW !
Mettre à jour les abonnés pour travailler dans les modes
Nous devons maintenant mettre à jour nos abonnés dans hellfirepack-common-links.lua
afin qu'ils ne se déclenchent que lorsque le mode Common Links est actif.
Nous allons mettre à jour la méthode d'usine et attribuer _G.HELLFIRE_MODES_EXTENDED.COMMON_LINKS
à fireIfModeIs
au lieu de nil
.
La méthode mise à jour devrait ressembler à ceci :
https://gist.github.com/braddevelop/152a16f87efe55f08e7ed7139225f757
Nous devons également mettre à jour nos abonnés dans hellfirepack-applications.lua
afin qu'ils ne se déclenchent que lorsque le mode par défaut de Hellfire est actif.
La méthode mise à jour devrait ressembler à ceci :
https://gist.github.com/braddevelop/8ed8dea04397b0471299c8c89f8a9ae0
Exécutez l'application
Entrez Hellfire ( shift
+ ⌘
+ h
) et basculez entre les modes. La gâchette se t
désormais différemment selon le mode dans lequel se trouve Hellfire. Hell yeah !
Configuration pour Hellprompt
Voici comment Hellprompt fonctionne :
Lanceur d'applications et d'URL
Initialiser l'application
Ceci est déjà fait avec la pré-configuration dans hellfred-bootstrap.lua
. N'hésitez pas à changer le raccourci clavier pour autre chose.
https://gist.github.com/braddevelop/11e9b4871182f90c57313ab6ffa939a4
Configurer les objets Subscriber
Les abonnés à Hellprompt adoptent une structure différente de ceux de Hellfire.
Considérez cette structure :
https://gist.github.com/braddevelop/c247d1d1429234c96f3e8c7d8a0b48df
Note : Si filter
n'est pas défini alors le callback sera toujours exécuté.
Créez un nouveau fichier Lua dans hellfred/extend/basics
appelé hellpromptpack-commands.lua
Ajoutez ce code :
https://gist.github.com/braddevelop/6b18219f83fcf69826083d5dfce5d06f
Enregistrez les abonnés avec l'application
De retour dans hellfred-bootstrap.lua
, nous devons enregistrer le pack d'abonnés que nous venons de configurer.
https://gist.github.com/braddevelop/f1b75646b7330fcb1c993a5737fd7d61
Exécutez l'application
Entrez Hellprompt ( shift
+ ^
+ h
) et testez ces commandes. Enfer!
Essayer:
browse news
et:
open terminal
Configuration pour Hellfuzz
Voici comment Hellfuzz fonctionne :
Lanceur d'applications
Initialiser l'application
Ceci est déjà fait avec la pré-configuration dans hellfred-bootstrap.lua
. N'hésitez pas à changer le raccourci clavier pour autre chose.
https://gist.github.com/braddevelop/b18f575ec347503628e7457217b6e187
Configurer les objets Subscriber
Les abonnés à Hellfuzz adoptent une structure différente des autres applications.
Considérez cette structure :
https://gist.github.com/braddevelop/56e9c22c6f921575637c73d60920d208
Remarque : Si nextChoicesFn
est défini, le callback
est ignoré.
Pour faciliter les choses, nous utiliserons une méthode d'assistance pour configurer les abonnés pour Hellfuzz
Créez un nouveau fichier Lua dans hellfred/extend/basics
appelé hellfuzzpack-apps-and-links.lua
Ajoutez ce code :
https://gist.github.com/braddevelop/3564ad1ec286a30eca1abb94cfd6a69a
Enregistrez les abonnés avec l'application
Dans hellfred-bootstrap.lua
, enregistrez le pack d'abonnés.
https://gist.github.com/braddevelop/a90f9d5635377d74b145a892845c8273
Exécutez l'application
Entrez Hellfuzz ( shift
+ ⌥
+ h
) et tapez une commande. Par exemple, commencez à taper le mot 'Terminal' , vous verrez l'option d'ouverture du Terminal en surbrillance. Appuyez sur enter
et le terminal s'ouvre. Fumage à chaud!
Lanceur de liens (utilisant des ensembles de choix imbriqués)
Une fonctionnalité pratique de Hellfuzz est la possibilité d'imbriquer des ensembles de choix.
Considérez ce flux mis à jour :
Essayons cela sur notre tâche Link Launcher , nous allons créer la structure de choix hiérarchique suivante :
Mettez à jour le code dans hellfuzzpack-apps-and-links.lua
comme suit :
https://gist.github.com/braddevelop/384b0ae9629faca95d5d4cb519cd8e61
Entrez maintenant Hellfuzz ( shift
+ ⌥
+ h
) et lancez la recherche de ' Liens communs '. Vous pouvez sélectionner le choix ' Liens communs ', et le sous-ensemble de choix de commonLinkNextChoices
sera affiché et pourra faire l'objet d'une recherche approximative. La sélection de l'une des options de lien ouvrira l'URL correspondante.
Extensions : Ajoutez de l'huile sur le feu.
Recherchez les prochaines expériences et extensions Hellfred sur le dépôt en consultant la branche d' extend
.
git checkout extend
Maintenant, va soulever l'enfer \m/