Je voulais de la vitesse. J'avais de vitesse. besoin 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 , et j'ai rapidement trouvé du réconfort sous la forme de Hammerspoon. Alfred Karabiner Ah, . 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 . Hammerspoon plus Ensuite, il y avait Lua. Je voulais me perfectionner en Lua. La meilleure façon de le faire ? Codez quelque chose. Entrez une collection de 3 mini-applications construites sur afin que vous puissiez automatiser les tâches, augmenter la productivité et éliminer les pertes de temps en programmant des raccourcis dans vos flux de travail quotidiens. , Hellfred Marteau cuillère 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 et la branche . Alors vous voulez du feu rapide ? Passez à la section d'installation et de didacticiel ci-dessous ou télécharger le dépôt checkout 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 , exécutez la fonction (mais uniquement si je suis en mode par défaut) c launchGoogleChromeApp Lorsque je tape suivi de , exécutez la fonction (encore une fois, en mode par défaut) w m changeToWindowManagerMode Lorsque je tape , exécutez la fonction (en mode WindowManager) c centerWindowOnScreen 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: ), alors montrez-moi ceux-ci pour que je puisse les parcourir. parent => children D'accord. Un exemple peut-être ? Supposons que vous ayez cette structure : Quand je tape ' ', alors mettez en surbrillance le choix ' '. La sélection de cette option exécutera la fonction . goog Ouvrir Google openGoogleInBrowser Alternativement, si je tape ' ', puis mettez en surbrillance le choix ' '. La sélection de cette option remplacera les choix actuels par , et (le sous-ensemble de choix pour ) app Launch Apps Terminal Notes Calendrier Lancer des applications Lorsque je fais une recherche floue parmi -ci et que j'en sélectionne un, Hellfuzz exécutera avec l'application sélectionnée. ceux launchOrOpenApp 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 ' ' puis que j'appuie sur , j'exécute n'importe quelle fonction avec un (par exemple, la commande doit commencer par le mot ' ') et un comportement (par exemple, ouvrir l'application associée à ' ') approprié pour ouvrir les Notes application. open notes enter filter open notes Lorsque je tape ' ' puis que j'appuie sur , j'exécute n'importe quelle fonction avec un filtre (par exemple, la commande commence par le mot ' ') et un comportement (open url associé à ' ') adapté pour ouvrir le lien. browse github enter browse github 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 pour Hellfred avec une configuration préconfigurée. Faisons référence à cela dans le fichier de Hammerspoon. fichier bootstrap init.lua https://gist.github.com/braddevelop/bac92b6797c087ca42f9363aab4972e0 Enregistrez le fichier et rechargez la configuration (ou gagnez du temps et utilisez ) rechargement fantaisie 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 avec le raccourci clavier + + Hellfire shift ⌘ h Tapez le caractère c Le référentiel pour Hellfred s'ouvrira dans un navigateur. Essayez Hellfuzz Ouvrez avec le raccourci clavier + + Hellfuzz shift ⌥ h Tapez le mot ' ' wiki Cela met en évidence l'option ' ' Ouvrir le wiki Hellfred Appuyez sur et le wiki de Hellfred s'ouvrira dans un navigateur enter Essayez Hellprompt Ouvrez avec le raccourci clavier + + Hellprompt shift ^ h Tapez ' ' code ouvert Appuyez sur et le dépôt de code pour Hellfred s'ouvrira dans un navigateur enter Ce que , et réalisent est de mapper un ou une à une ou un , , 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. Hellfire Hellfuzz Hellprompt déclencheur entrée action comportement if-this-then-that 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 pour résoudre les scénarios suivants afin que vous puissiez maîtriser les choses : chaque application 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 sur la branche du référentiel. répertoire hellfred/extend/basics basics Motifs à noter Chaque application suit un ensemble d'étapes similaire. Initialiser l'application avec une liaison de raccourci clavier Configurez les objets ` ` (Cela pourrait être fait dans 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) Subscriber hellfred-bootstrap.lua 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 . N'hésitez pas à changer le raccourci clavier pour autre chose. hellfred-bootstrap.lua https://gist.github.com/braddevelop/49c7e7c7c62350d93e7798ff2bf40541 Configurer les objets Subscriber les et sont définis par l'utilisateur et encapsulés dans des objets de configuration simples. Ces objets agissent en tant 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. triggers callbacks subscribers Les objets abonnés pour Hellfire suivent cette structure : https://gist.github.com/braddevelop/20c9c5b97a85a9a5c4cb924b511e494a : Si n'est pas défini, Hellfire définira le mode par défaut, ce qui signifie que le rappel se déclenchera dans n'importe quel mode lorsqu'il sera déclenché. Remarque fireIfModeIs ANY 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 appelé - la convention de dénomination des fichiers n'a aucune importance. basics hellfirepack-applications.lua Ajoutez ce code : https://gist.github.com/braddevelop/c12d37d64ce75b83a195666317a10aa2 Enregistrez les abonnés avec l'application De retour dans , nous devons enregistrer le pack d'abonnés que nous venons de configurer. hellfred-bootstrap.lua https://gist.github.com/braddevelop/2298469b805978062421f5a09d01d11a Exécutez l'application Entrez Hellfire ( + + ) et tapez l'un des nouveaux déclencheurs : pour ouvrir l'application Finder, pour ouvrir Terminal ou pour ouvrir l'application Notes. shift ⌘ h f t n 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 appelé hellfred/extend/basics hellfirepack-common-links.lua Ajoutez ce code : https://gist.github.com/braddevelop/7d637464f45d2d9a4641e365ad2f20a1 Enregistrez les abonnés avec l'application De retour dans , nous devons enregistrer le pack d'abonnés que nous venons de configurer. hellfred-bootstrap.lua https://gist.github.com/braddevelop/f0dafb518797620747044afbc20da060 Exécutez l'application Entrez Hellfire ( + + ) et tapez l'un des nouveaux déclencheurs : , , ou . shift ⌘ h t g h s Avez-vous remarqué que le site Web ? Ce n'est probablement pas ce que nous souhaitons. Profitons de la . Attendez! la saisie du déclencheur a lancé Terminal t ouvert TechCrunch 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 ' '. 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. Default Considérez ce flux : Créez un nouveau fichier Lua dans appelé . hellfred/extend/basics 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 donc c'est accessible. Nous ferons de même avec le afin d'avoir accès aux modes intégrés de Hellfire dans d'autres parties de notre application. hellfred-bootstrap.lua à l'échelle mondiale fichier Hellfire Modes Ajoutez le code suivant dans (sous la section metadata, vers le haut du fichier) hellfred-bootstrap.lua 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 suivie de . c l Nous devons également pouvoir revenir au mode par défaut Nous utiliserons le point-virgule comme déclencheur. ; C'est la prochaine… les objets Configurer Subscriber qui déclenchent des changements de mode Créez un nouveau fichier Lua dans appelé hellfred/extend/basics hellfire-mode-triggers.lua Ajoutez ce code : https://gist.github.com/braddevelop/283acacb9634590208c3b29b6039dc12 Enregistrez les abonnés avec l'application Dans , enregistrez les abonnés pour les nouveaux déclencheurs de mode : hellfred-bootstrap.lua https://gist.github.com/braddevelop/8afc4a576d550415f22c3c6fbf4152f1 Tester la commutation entre les modes Entrez maintenant dans Hellfire ( + + ) et basculez entre les deux modes. shift ⌘ h Mode FTW ! Mettre à jour les abonnés pour travailler dans les modes Nous devons maintenant mettre à jour nos abonnés dans afin qu'ils ne se déclenchent que lorsque est actif. hellfirepack-common-links.lua le mode Common Links Nous allons mettre à jour la méthode d'usine et attribuer à au lieu de . _G.HELLFIRE_MODES_EXTENDED.COMMON_LINKS fireIfModeIs nil La méthode mise à jour devrait ressembler à ceci : https://gist.github.com/braddevelop/152a16f87efe55f08e7ed7139225f757 Nous devons également mettre à jour nos abonnés dans afin qu'ils ne se déclenchent que lorsque est actif. hellfirepack-applications.lua le mode par défaut de Hellfire La méthode mise à jour devrait ressembler à ceci : https://gist.github.com/braddevelop/8ed8dea04397b0471299c8c89f8a9ae0 Exécutez l'application Entrez Hellfire ( + + ) et basculez entre les modes. La gâchette se désormais différemment selon le mode dans lequel se trouve Hellfire. shift ⌘ h t 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 . N'hésitez pas à changer le raccourci clavier pour autre chose. hellfred-bootstrap.lua 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 : Si n'est pas défini alors le callback sera toujours exécuté. Note filter Créez un nouveau fichier Lua dans appelé hellfred/extend/basics hellpromptpack-commands.lua Ajoutez ce code : https://gist.github.com/braddevelop/6b18219f83fcf69826083d5dfce5d06f Enregistrez les abonnés avec l'application De retour dans , nous devons enregistrer le pack d'abonnés que nous venons de configurer. hellfred-bootstrap.lua https://gist.github.com/braddevelop/f1b75646b7330fcb1c993a5737fd7d61 Entrez Hellprompt ( + + ) et testez ces commandes. Exécutez l'application shift ^ h 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 . N'hésitez pas à changer le raccourci clavier pour autre chose. hellfred-bootstrap.lua 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 : Si est défini, le est ignoré. Remarque nextChoicesFn callback 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 appelé hellfred/extend/basics hellfuzzpack-apps-and-links.lua Ajoutez ce code : https://gist.github.com/braddevelop/3564ad1ec286a30eca1abb94cfd6a69a Enregistrez les abonnés avec l'application Dans , enregistrez le pack d'abonnés. hellfred-bootstrap.lua https://gist.github.com/braddevelop/a90f9d5635377d74b145a892845c8273 Exécutez l'application Entrez Hellfuzz ( + + ) et tapez une commande. Par exemple, commencez à taper le mot , vous verrez l'option d'ouverture du Terminal en surbrillance. Appuyez sur et s'ouvre. shift ⌥ h 'Terminal' enter le terminal 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 , nous allons créer la structure de choix hiérarchique suivante : Link Launcher Mettez à jour le code dans comme suit : hellfuzzpack-apps-and-links.lua https://gist.github.com/braddevelop/384b0ae9629faca95d5d4cb519cd8e61 Entrez maintenant Hellfuzz ( + + ) et lancez la recherche de ' '. Vous pouvez sélectionner le choix ' ', et le sous-ensemble de choix de 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. shift ⌥ h Liens communs Liens communs commonLinkNextChoices 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/