Créer un plugin Wox (Python)

Qu'est-ce que #Wox

Win + S est un excellent lanceur fonctionnant sous Windows: http://www.wox.one/

J'utilise Alfred (+ Powerpack) sur macOS, mais je l'ai trouvé lorsque je cherchais un lanceur d'utilisabilité similaire dans l'environnement Windows récemment attribué. Je peux créer un plugin avec C # et Python. , Alfred workflow (mais pas aussi flexible) peut faire des extensions similaires.

développement de plugins

Comme mentionné ci-dessus, je suis un utilisateur Alfred, donc j'ai choisi Python parce que je veux porter mon propre workflow Alfred écrit en Python. Pour exécuter le plugin écrit en Python, je dois installer Python 3 séparément et dire à Wox où je suis. Par conséquent, j'estime que les obstacles sont un peu élevés en termes d'utilisation généralisée. Sauf souci particulier, il semble préférable de se développer en C #.

principe

Cliquez ici pour la documentation officielle: http://doc.wox.one/en/plugin/create_plugin.html

Le fait est que Wox transmet l'entrée utilisateur au plugin, donc c'est aussi simple que de renvoyer le résultat correspondant dans JSON. Le développeur reçoit la chaîne parce que la classe d'assistance la rend bonne pour chaque langage tout en disant JSON. Renvoyez simplement un tableau de dictionnaires (pour Python). JSONRPC.png

Wox affiche les options basées sur le tableau retourné par le plugin, et un rappel est généré pour l'élément sélectionné par l'utilisateur, donc le processus est exécuté (dès que le navigateur ou le dossier est ouvert). Sélectionnez l'élément qui ne contient pas les informations de rappel. Ne peux pas. SoWkIImgAStDuGejJYrIqBLJ2C-lKB1IA2nDBQha0h91GW4vfUcPUN1H21UXjYYrk3Id1AOOP0vGi3WZlrmXEIC_Cpcr6DLig2Y6uNdv9PbfSDCH9YKcbsJcvt4vfEQbWDm90000.png

Procédure de développement

Installer Python 3

Utilisé par Wox pour exécuter le plugin Python. Après l'installation, spécifiez la destination d'installation à partir de l'écran de configuration de Wox.

Choisissez un répertoire de travail

--git init --Faire fonctionner Python 3 précédemment installé (j'ai utilisé pyenv car j'ai créé un environnement de développement sur WSL)

Créer plugin.json

Créez un fichier plugin.json en vous référant à Official

{
  "ID": "1AEB702E890911EABAF20C54152B91EC",  //Plugin ID,32 bit UUID
  "ActionKeyword": "sample",                 //Plugin default action keyword
  "Name": "sample plugin",                   //Plugin name
  "Description": "sample plugin",            //Plugin description
  "Author": "kosugi",                        //Plugin Author
  "Version": "1.0.0",                        //Plugin version,must be x.x.x format
  "Language": "python",                      //Plugin language,we support csharp,python and executable now
  "Website": "https://qiita.com/kosugi",     //Plugin website or author website
  "IcoPath": "Images\\icon.png ",             //Plugin icon, relative path to the pluign folder
  "ExecuteFileName": "main.py"               //Execution entry. Dll name for c# plugin, and python file for python plugin
}

--ID est `python -c'import uuid; print (uuid.uuid1 (). Hex.upper ()) '' etc.

wox.py prêt

En regardant le programme d'exemple officiel, j'ai lu que wox.py est nécessaire, mais je ne connais pas la bonne méthode d'approvisionnement. Probablement exécuté à partir de Wox Quand c'est fait, il peut être inclus dans le chemin de recherche du module, mais que dois-je faire pendant le développement?

Après examen, il a été inclus dans le référentiel GitHub de Wox (il semble peu probable que le référentiel lui-même doive être cloné).

wget https://raw.githubusercontent.com/Wox-launcher/Wox/master/JsonRPC/wox.py

Si wox.py existe lors de l'exécution à partir de Wox, il sera priorisé et ne doit pas être inclus dans l'archive (décrite plus loin) ou dans la destination d'installation.

corps du plugin

main.py


# -*- coding: utf-8 -*-
from wox import Wox

class Main(Wox):

    def query(self, user_input):
        # user_Renvoie le résultat correspondant à l'entrée
        return [{
            'Title': 'Affiché sur la première ligne(test: ' + user_input + ')',
            'SubTitle': 'Affiché sur la deuxième ligne',
            'IcoPath': 'Icône affichée à gauche.png',
            'JsonRPCAction': {
                'method': 'action', #Nom de la méthode appelée au moment de la sélection
                'parameters': ['Argument 1 passé à la méthode', '2...'],
                'dontHideAfterAction': False
            }
        }]

    def action(self, data1, data2):
        #L'article a été sélectionné et sera traité
        pass

if __name__ == '__main__':
    Main()

Lorsque le script est exécuté, le JSON donné comme argument de ligne de commande est interprété par la classe Wox du wox.py à portée de main, et la méthode query est appelée. Plus précisément, elle est exécutée comme suit.

$ python main.py '{"method": "query", "parameters": ["user intput"]}' | jq
{
  "result": [
    {
      "Title": "Affiché sur la première ligne(test: user intput)",
      "SubTitle": "Affiché sur la deuxième ligne",
      "IcoPath": "Icône affichée à gauche.png ",
      "JsonRPCAction": {
        "method": "action",
        "parameters": [
          "Argument 1 passé à la méthode",
          "2..."
        ],
        "dontHideAfterAction": false
      }
    }
  ]
}

Si vous utilisez la méthode d'exécution de main.py, vous ne pouvez pas vérifier le rappel (ici, le comportement lorsque la méthode ʻaction` est appelée), vous devez donc l'installer sur Wox et le vérifier, mais si vous concevez un test Il serait possible d'écrire.

Installation sur Wox

Lorsqu'il est appelé via Wox, l'écran ressemble à ceci: sample.png

Inscription dans le référentiel de plugins

Si vous enregistrez un compte sur http://www.wox.one/plugin, vous pouvez enregistrer le plugin créé Vous pouvez rechercher et installer celui enregistré à partir de Wox.

Pour l'enregistrement, utilisez une archive ZIP des fichiers requis. L'extension doit être wox au lieu de zip.

Ce que j'ai fait (enregistré) cette fois

2020-04-28-09-32-50_Trim.gif

Vous pouvez rechercher le nom Unicode et copier le caractère correspondant dans le presse-papiers, ou copier le caractère correspondant au point de code que vous avez entré dans le presse-papiers. Vous pouvez l'installer avec wpm install Unicodebuilder (requête) et wpm install Unicodebuilder, respectivement. Alfred Vous pouvez inclure plusieurs ActionKeywords dans un flux de travail, mais pas Wox, nous avons donc séparé les plugins.

Recommended Posts

Créer un plugin Wox (Python)
Créer un module Python
Créer un environnement Python
Créer une fonction en Python
Créer un dictionnaire en Python
Créer un tableau numpy python
Créer un répertoire avec python
Créer un plugin pour exécuter Python Doctest sur Vim (2)
Créez un plug-in pour exécuter Python Doctest avec Vim (1)
Créer une interface graphique python à l'aide de tkinter
Créer un conteneur DI avec Python
Créer un environnement Python sur Mac (2017/4)
Créez un environnement virtuel avec Python!
Créer un fichier binaire en Python
Créer un environnement python dans centos
Ecrire le plugin vim en Python
Créer un framework de décorateur à usage général pour Python
5 façons de créer un chatbot Python
Créer une chaîne aléatoire en Python
Créer un décorateur de fonction Python avec Class
Créer un nouveau projet de calcul numérique Python
Créez une image factice avec Python + PIL.
Créez un environnement python sur votre Mac
Créer une application GUI simple en Python
Créons un environnement virtuel pour Python
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
[Python] [LINE Bot] Créer un robot LINE de retour de perroquet
Créer un compteur de fréquence de mots avec Python 3.4
Créer un fichier deb à partir d'un package python
[Python] Créez un LineBot qui s'exécute régulièrement
[GPS] Créer un fichier kml avec Python
Ecrire un plugin Vim simple en Python 3
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
[Python] Compréhension de liste Différentes façons de créer une liste
Modifier Excel à partir de Python pour créer un tableau croisé dynamique
Créez un environnement de test Vim + Python en 1 minute
Créer un fichier GIF en utilisant Pillow en Python
Créer un tableau C à partir d'une feuille Python> Excel
[python] Créer une liste de différents types de caractères
Créer un LINE BOT avec Minette pour Python
Je veux créer une fenêtre avec Python
Créer un graphique de distribution normale standard en Python
Comment créer un fichier JSON en Python
Créer un environnement virtuel avec conda avec Python
Créer une nouvelle tâche Todoist à partir d'un script Python
Créer une page qui se charge indéfiniment avec python
[Note] Créez une classe de fuseau horaire sur une ligne avec python
Vous pouvez facilement créer une interface graphique même avec Python
Créer un environnement de construction python3 avec Sublime Text3
Créer une carte Web en utilisant Python et GDAL
Créer une barre de couleurs avec Python + Qt (PySide)
Étapes pour créer un bot Twitter avec Python
[Venv] Créer un environnement virtuel python sur Ubuntu
Créer un modèle d'investissement dynamique simple en Python
Python: créer une classe qui prend en charge l'affectation décompressée