paint-brush
Hellfred ou : Comment j'ai appris à automatiser macOS et à devenir extrêmement productifpar@bradblundell
2,958 lectures
2,958 lectures

Hellfred ou : Comment j'ai appris à automatiser macOS et à devenir extrêmement productif

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

Trop long; Pour lire

Les applications Hellfred sont construites sur Hammerspoon afin que vous puissiez automatiser les tâches et augmenter la productivité en programmant des raccourcis dans vos flux de travail quotidiens.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Hellfred ou : Comment j'ai appris à automatiser macOS et à devenir extrêmement productif
Brad Blundell HackerNoon profile picture


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 Marteau cuillère 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.


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.



Hellfuzz. Une recherche floue, un mappeur choix-comportement.


Feu de l'enfer. Un mappeur de clés de comportement.


Hellprompt. Un mappeur commande-comportement.


TL; DR

Alors vous voulez du feu rapide ? Passez à la section d'installation et de didacticiel ci-dessous ou télécharger le dépôt et checkout 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 un filter (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

  1. Téléchargez et installez Hammerspoon
  2. 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 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 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 :

  1. Un simple lanceur d'applications
  2. 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.

  1. Initialiser l'application avec une liaison de raccourci clavier
  2. 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)
  3. Enregistrez les abonnés avec l'application
  4. Touche de raccourci pour exécuter l'application
  5. 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 à l'échelle mondiale accessible. Nous ferons de même avec le fichier Hellfire Modes afin d'avoir accès aux modes intégrés de Hellfire dans d'autres parties de notre application.


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/