Erstellen Sie ein Wox-Plugin (Python)

Was ist #Wox?

Win + S ist ein großartiger Launcher unter Windows: http://www.wox.one/

Ich verwende Alfred (+ Powerpack) unter macOS, habe es aber gefunden, als ich nach einem ähnlichen Usability-Launcher in der kürzlich zugewiesenen Windows-Umgebung gesucht habe. Ich kann ein Plugin mit C # und Python erstellen. Der Alfred-Workflow (obwohl nicht so flexibel) kann ähnliche Erweiterungen durchführen.

Plugin-Entwicklung

Wie oben erwähnt, bin ich ein Alfred-Benutzer, daher habe ich mich für Python entschieden, weil ich meinen eigenen in Python geschriebenen Alfred-Workflow portieren möchte. Um das in Python geschriebene Plugin auszuführen, muss ich Python 3 separat installieren und Wox mitteilen, wo es zu finden ist. Daher bin ich der Meinung, dass die Hürden in Bezug auf die weit verbreitete Verwendung etwas hoch sind. Wenn keine besonderen Bedenken bestehen, scheint es besser, sich in C # zu entwickeln.

Prinzip

Klicken Sie hier für die offizielle Dokumentation: http://doc.wox.one/en/plugin/create_plugin.html

Der Punkt ist, dass Wox Benutzereingaben an das Plugin übergibt, so dass es so einfach ist, das entsprechende Ergebnis in JSON zurückzugeben. Der Entwickler erhält die Zeichenfolge, weil die Hilfsklasse sie für jede Sprache gut macht, während er JSON sagt. Geben Sie einfach eine Reihe von Diktaten zurück (für Python). JSONRPC.png

Wox zeigt die Optionen basierend auf dem vom Plugin zurückgegebenen Array an, und für das vom Benutzer ausgewählte Element wird ein Rückruf generiert, sodass der Vorgang ausgeführt wird (sobald der Browser oder Ordner geöffnet wird). Wählen Sie das Element aus, das die Rückrufinformationen nicht enthält. Kann nicht. SoWkIImgAStDuGejJYrIqBLJ2C-lKB1IA2nDBQha0h91GW4vfUcPUN1H21UXjYYrk3Id1AOOP0vGi3WZlrmXEIC_Cpcr6DLig2Y6uNdv9PbfSDCH9YKcbsJcvt4vfEQbWDm90000.png

Entwicklungsverfahren

Python 3 installieren

Wird von Wox verwendet, um das Python-Plugin auszuführen. Geben Sie nach der Installation das Installationsziel im Wox-Einstellungsbildschirm an.

Entscheide dich für ein Arbeitsverzeichnis

--git init --Machen Sie die zuvor installierte Python 3-Arbeit (ich habe pyenv verwendet, weil ich eine Entwicklungsumgebung auf WSL erstellt habe)

Erstellen Sie plugin.json

Erstellen Sie eine plugin.json-Datei unter Bezugnahme auf 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 ist python -c'import uuid; print (uuid.uuid1 (). Hex.upper ()) ' etc. --Version wird bei der Registrierung im offiziellen Repository abgespielt, es sei denn, es hat das Format "x.x.x" gemäß Dokument (es gibt kein Problem, wenn es zur Hand ist).

wox.py fertig

Wenn Sie sich das offizielle Beispielprogramm ansehen, können Sie lesen, dass wox.py notwendig ist, aber ich kenne die richtige Beschaffungsmethode nicht. Wahrscheinlich von Wox ausgeführt Wenn es fertig ist, kann es in den Modul-Suchpfad aufgenommen werden, aber was soll ich während der Entwicklung tun?

Bei der Prüfung wurde es in das GitHub-Repository von Wox aufgenommen (es ist unwahrscheinlich, dass das Repository selbst geklont werden muss).

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

Wenn wox.py beim Ausführen von Wox vorhanden ist, wird es priorisiert und sollte nicht in das Archiv (später beschrieben) oder das Installationsziel aufgenommen werden.

Plugin-Body

main.py


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

class Main(Wox):

    def query(self, user_input):
        # user_Gibt das Ergebnis zurück, das der Eingabe entspricht
        return [{
            'Title': 'Wird in der ersten Zeile angezeigt(test: ' + user_input + ')',
            'SubTitle': 'Wird in der zweiten Zeile angezeigt',
            'IcoPath': 'Das Symbol wird links angezeigt.png',
            'JsonRPCAction': {
                'method': 'action', #Methodenname, der zum Zeitpunkt der Auswahl aufgerufen wurde
                'parameters': ['Argument 1 an Methode übergeben', '2...'],
                'dontHideAfterAction': False
            }
        }]

    def action(self, data1, data2):
        #Der Artikel wurde ausgewählt und wird verarbeitet
        pass

if __name__ == '__main__':
    Main()

Wenn das Skript ausgeführt wird, wird der als Befehlszeilenargument angegebene JSON von der vorliegenden Wox-Klasse von "wox.py" interpretiert, und die "query" -Methode wird aufgerufen. Insbesondere wird sie wie folgt ausgeführt.

$ python main.py '{"method": "query", "parameters": ["user intput"]}' | jq
{
  "result": [
    {
      "Title": "Wird in der ersten Zeile angezeigt(test: user intput)",
      "SubTitle": "Wird in der zweiten Zeile angezeigt",
      "IcoPath": "Das Symbol wird links angezeigt.png ",
      "JsonRPCAction": {
        "method": "action",
        "parameters": [
          "Argument 1 an Methode übergeben",
          "2..."
        ],
        "dontHideAfterAction": false
      }
    }
  ]
}

Wenn Sie die Methode zum Ausführen von "main.py" verwenden, können Sie den Rückruf nicht überprüfen (hier das Verhalten beim Aufrufen der "action" -Methode). Sie müssen ihn also tatsächlich auf Wox installieren und überprüfen, aber wenn Sie einen Test entwickeln Es wäre möglich zu schreiben.

Installation auf Wox

--Diggen Sie ein Verzeichnis mit einem geeigneten Namen direkt unter dem Verzeichnis "Plugins" des Wox-Installationsziels und platzieren Sie die Dateien "plugin.json", "main.py" und "icon".

Bei einem Anruf über Wox sieht das Display folgendermaßen aus: sample.png

Registrierung im Plugin-Repository

Wenn Sie ein Konto unter http://www.wox.one/plugin registrieren, können Sie das erstellte Plugin registrieren. Sie können das registrierte Plugin von Wox suchen und installieren.

Verwenden Sie zur Registrierung ein ZIP-Archiv der erforderlichen Dateien. Die Erweiterung sollte wox anstelle von zip sein.

Was ich diesmal gemacht (registriert) habe

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

Sie können nach dem Unicode-Namen suchen und das entsprechende Zeichen in die Zwischenablage kopieren oder das Zeichen kopieren, das dem Codepunkt entspricht, den Sie in die Zwischenablage eingegeben haben. Sie können es mit "wpm install Unicodebuilder (query)" bzw. "wpm install Unicodebuilder" installieren. Alfred In diesem Fall kann ein Workflow mehrere ActionKeywords enthalten, Wox jedoch nicht. Daher werden die Plugins getrennt.

Recommended Posts

Erstellen Sie ein Wox-Plugin (Python)
Erstellen Sie ein Python-Modul
Erstellen Sie eine Python-Umgebung
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Erstellen Sie ein Python-Numpy-Array
Erstellen Sie ein Verzeichnis mit Python
Erstellen Sie ein Plug-In, das Python Doctest auf Vim ausführt (2)
Erstellen Sie ein Plug-In, um Python Doctest mit Vim (1) auszuführen.
Erstellen Sie mit tkinter eine Python-GUI
Erstellen Sie einen DI-Container mit Python
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie eine Binärdatei in Python
Erstellen Sie eine Python-Umgebung in Centos
Schreiben Sie das Vim-Plugin in Python
Erstellen Sie ein universelles Dekorationsframework für Python
5 Möglichkeiten zum Erstellen eines Python-Chatbots
Erstellen Sie eine zufällige Zeichenfolge in Python
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie ein neues numerisches Python-Berechnungsprojekt
Erstellen Sie mit Python + PIL ein Dummy-Image.
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
Erstellen Sie eine einfache GUI-App in Python
Erstellen wir eine virtuelle Umgebung für Python
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
[Python] [LINE Bot] Erstellen Sie einen LINE Bot mit Papageienrückgabe
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
Erstellen Sie eine Deb-Datei aus einem Python-Paket
[Python] Erstellen Sie einen LineBot, der regelmäßig ausgeführt wird
[GPS] Erstellen Sie eine kml-Datei mit Python
Schreiben Sie ein einfaches Vim-Plugin in Python 3
Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund.
[Python] Listenverständnis Verschiedene Möglichkeiten zum Erstellen einer Liste
Bearbeiten Sie Excel in Python, um eine Pivot-Tabelle zu erstellen
Erstellen Sie in 1 Minute eine Vim + Python-Testumgebung
Erstellen Sie eine GIF-Datei mit Pillow in Python
Erstellen Sie ein C-Array aus einer Python> Excel-Tabelle
[Python] Erstellen Sie eine Liste mit verschiedenen Zeichentypen
Erstellen Sie mit Minette für Python einen LINE BOT
Ich möchte mit Python ein Fenster erstellen
Erstellen Sie in Python ein Diagramm der Standardnormalverteilung
So erstellen Sie eine JSON-Datei in Python
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie eine neue Todoist-Aufgabe aus Python Script
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Sie können auch mit Python problemlos eine GUI erstellen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie eine Webmap mit Python und GDAL
Erstellen Sie eine Farbleiste mit Python + Qt (PySide)
Schritte zum Erstellen eines Twitter-Bots mit Python
[Venv] Erstellen Sie eine virtuelle Python-Umgebung unter Ubuntu
Erstellen Sie in Python ein einfaches Momentum-Investmentmodell
Python: Erstellen Sie eine Klasse, die entpackte Zuweisungen unterstützt