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.
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.
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).
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.
Wird von Wox verwendet, um das Python-Plugin auszuführen. Geben Sie nach der Installation das Installationsziel im Wox-Einstellungsbildschirm an.
--git init
--Machen Sie die zuvor installierte Python 3-Arbeit (ich habe pyenv verwendet, weil ich eine Entwicklungsumgebung auf WSL erstellt habe)
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).
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.
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.
--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".
plugin.json
angegebene ActionKeyword eingegeben wirdBei einem Anruf über Wox sieht das Display folgendermaßen aus:
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.
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