LaunchBar 6-acties maken

LaunchBar 6 is een applicatiestarter die kan worden uitgebreid met acties. In eerdere versies van LaunchBar, acties werden geschreven AppleScript. Met LaunchBar 6, elke scriptingtaal kan worden gebruikt, maar de voorkeurstaal is dat wel JavaScript.

In deze zelfstudie laat ik je zien hoe je je eigen acties kunt maken in JavaScript om de functionaliteit van uit te breiden LaunchBar. Daarom is een praktische kennis van JavaScript wordt verwacht. Het artikel Word een professionele JavaScript-ontwikkelaar met Tuts + cursussen kan je helpen aan de slag te gaan JavaScript.

Als je meer wilt weten over de interface met LaunchBar 6, je kunt de LaunchBar 6 Action-documentatie.

De toepassing waarmee deze actie zal communiceren is FoldingText. FoldingText is een geweldige aftopper-editor met veel uitbreidbaarheid. Bekijk de tutorial eens, FoldingText aanpassen, om te zien hoe je kunt aanpassen FoldingText om aan uw behoeften te voldoen.

Om te communiceren met FoldingText, Ik zal je laten zien hoe je Apple's nieuw kunt gebruiken JavaScript voor automatisering in plaats van AppleScript. Jij kunt lezen JavaScript voor automatiseringsdocumentatie om u te helpen aan de slag met de taal.

Een actie maken

Om een ​​actie te starten, moet je een map maken met de .lbaction uitbreiding.

De Action's Directory maken

In vinder, klik met de rechtermuisknop in een map en selecteer Nieuwe map geef de nieuwe map een naam FoldingTextAddToTag.lbaction. Het lijkt niet langer op een map in vinder. LaunchBar registreert die extensie met OS X om het als een speciaal bestandstype te behandelen. Het is nog steeds een map, maar je verplaatst het als een bestand.

De inhoud van de map weergeven

Om de inhoud opnieuw te bekijken, klik met de rechtermuisknop in de map en selecteer Toon Inhoud van de verpakking.

Actie Inhoud

Eenmaal in het actiepakket kunnen alle bestanden en mappen waaruit een actie bestaat zichtbaar worden gemaakt.

Tree View van een actie

De basisstructuur van een actie kan worden bekeken met de boom commando. De boom commando is een standaard Unix opdracht voor het grafisch weergeven van een directorystructuur. Je kunt het installeren met HomeBrew met het commando:

brouwboom installeren

Je bekijkt dan een map met boom .

Als u de structuur voor een nieuwe actie wilt maken, maakt u een Inhoud map met submappen van Middelen en scripts. In de bovenste map, a Readme.md bestand moet worden gemaakt met een beschrijving van de actie in Markdown formaat.

Vervolgens wordt een pictogram voor de actie geplaatst in de Middelen directory. Gebruik gewoon die in de download en plaats hem daar.

In de Inhoud map, de Info.plist bestand moet worden gemaakt. Dit bestand vertelt LaunchBar hoe de actie te gebruiken. Plaats in dat bestand het volgende:

    CFBundleIdentifier com.customct.launchbar.FoldingTextAddToTag CFBundleName FT-AddToTag CFBundleVersion 1.0 CFBundleIconFile icoon LBDebugLogEnabled   LBTextInputTitle ft: addtag LBScripts  LBDefaultScript  LBLiveFeedbackEnabled  LBRequiresArgument  LBReturnsResult  LBRunInBackground  LBScriptName default.js   LBDescription  LBAuthor Richard Guay LBWebsite http://customct.com LBEmail [email protected] LBTwitter @CustomComputerT  LBSummary Hiermee kunt u een bericht toevoegen aan een willekeurige tag in het bovenste document.  LBArgument Er is een tagnaam en een notitie bij nodig om aan de tag te hechten.  LBResult Voegt een bericht toe aan een tag in FoldingText.  LBRequirements Geen   

Dit is een tekst plist dat is bewerkbaar met elke teksteditor. De verschillende sleutels vertellen LaunchBar wat te doen met de actie. De minimale sleutels zijn:

CFBundleIdentifier

Deze sleutel geeft een unieke identificatie voor de actie. Om de uniekheid te verzekeren, gebruik ik een omgekeerde DNS van mijn website met de programmanaam en actienaam.

CFBundleName

Deze sleutel geeft een naam voor de actie. Dit wordt getoond in het dialoogvenster met acties om in / uit te schakelen.

CFBundleVersion

Deze sleutel geeft het versienummer voor de actie. Voor deze actie zal het zijn 1.0.

CFBundleIconFile

Deze sleutel geeft de naam van het pictogrambestand in de Middelen directory van de actie. Het bestandstype wordt niet gegeven.

LBDebugLogEnabled

Deze sleutel is een boolean die de status van logboekregistratie bepaalt. Dit moet worden uitgeschakeld met een valse waarde.

LBTextInputTitle

Deze sleutel is de naam die de gebruiker zal gebruiken om de actie te callen LaunchBar. Het is ft: addtotag. Naarmate de gebruiker begint te typen, LaunchBar zal alle acties en bestanden vermelden die het overeenkomen. Meestal hoeft u alleen maar te typen ft: een of toevoegen aan om tot deze actie te komen.

LBScripts

Deze sleutel start een ander woordenboek met termen voor het vorige LBTextInputTitle sleutel. De volgende zes sleutels staan ​​in dit woordenboek om te beschrijven hoe de actie werkt.

LBDefaultScript

Hiermee wordt het definitiescript voor actiescript gestart. De volgende vijf toetsen staan ​​in dit woordenboek.

LBLiveFeedbackEnabled

Deze booleaanse sleutel vertelt LaunchBar of het script wel of niet live feedback zal geven. Live feedback is een lijst met opties om uit te kiezen LaunchBar. Deze actie levert een lijst met tagnamen om uit te selecteren. Daarom zou dit waar moeten zijn.

LBRequiresArgument

Deze booleaanse sleutel vertelt LaunchBar als deze actie een argument vereist. Nogmaals, deze actie heeft het bericht nodig om aan de tag toe te voegen. Daarom zal het waar zijn.

LBReturnsResult

Deze booleaanse sleutel geeft LaunchBar aan als deze actie alle resultaten zal retourneren. Aangezien deze actie live feedback heeft, moet dit ook waar zijn.

LBRunInBackground

Sommige acties zullen eenvoudig iets starten en kunnen op de achtergrond worden gedaan, zodat LaunchBar hoeft niet te wachten of de uitvoer op te nemen. Voor deze actie is deze sleutel onwaar.

LBScriptName

Deze sleutel vertelt LaunchBar de naam van het uit te voeren script. Het script moet in de scripts subdirectory.

LBDescription

Deze sleutel start het laatste woordenboek dat de auteur van de actie beschrijft en verschillende stukjes informatie over de actie. Een deel hiervan wordt aan de gebruiker getoond als de actie is geïnstalleerd. Deze toetsen zijn zeer duidelijk.

Met dit plist-bestand op zijn plaats en het pictogram in de Middelen map, kan het grootste deel van de actie worden gemaakt. Open de scripts submap en maak een bestand met de naam default.js. Plaats het volgende erin:

// // Functie: run // // Beschrijving: deze functie wordt door LaunchBar aangeroepen wanneer de actie wordt aangeroepen zonder een tekenreeks. // Het maakt een menu dat LaunchBar aan de gebruiker zal geven. De menu-itemslijst // actuele functies die moeten worden aangeroepen om een ​​actie in FoldingText te laten plaatsvinden. Gewoon aanroepen // de runWithString is een lege string. // function run () runWithString ("");  // // Functie: runWithString // // Beschrijving: deze functie wordt door LaunchBar aangeroepen wanneer de actie met een tekenreeks wordt aangeroepen. // Het maakt een menu dat LaunchBar aan de gebruiker zal geven. De menu-itemslijst // actuele functies die moeten worden aangeroepen om een ​​actie in FoldingText te laten plaatsvinden. // // Inputs: // string Een tekenreeks gegeven door de gebruiker. // function runWithString (string) // // Maak variabelen die zullen worden gebruikt. // var result = []; string = string.trim (); // // Een lijst met tags ophalen van het huidige document. // var tags = getTagsFromDocument (). splitsen (","); // // Deze functie moet worden aangeroepen om een ​​nieuwe lijst te maken. Creëer het. // // // Foreach-tag, voeg een menu-item toe als een kind. // tags.forEach (functie (item) // // Dit voegt toe aan de opdracht AddToTag. // result.push (title: item, subtitle: "FoldingText: Add to Tag", icon: "icon", action : 'addToTag', actionArgument: item.trim () + "|" + string, actionRunsInBackground: true, actionReturnsItems: false);); // // De resulterende menulijst retourneren. // return (resultaat);  // // functie: getTagsFromDocument // // Beschrijving: deze functie gebruikt een osascript om het bovenste FoldingText // -document te doorzoeken voor een lijst met tags. Deze lijst wordt teruggezonden naar de aanroepende // -routine. // function getTagsFromDocument () var result = LaunchBar.execute ("/ usr / bin / osascript", "getListOfTags.scpt"); retourneren (resultaat);  // // functie: addToTag // // Beschrijving: deze functie gebruikt een osascript om een ​​door de gebruiker aangeleverde string // toe te voegen aan de eerste tag van het type dat aan het script is gegeven. De informatie // die aan het script wordt gegeven, is "tag | tekst", waarbij tag een tag is en tekst de tekst is die moet worden toegevoegd. // function addToTag (obj) LaunchBar.execute ("/ usr / bin / osascript", "notetag.scpt", obj.toString ());  

Dit script heeft vier functies waarvan er twee zijn vereist door LaunchBar en twee hulpfuncties. LaunchBar vereist alle acties om een ​​te definiëren rennen() functie die wordt aangeroepen wanneer er geen invoer door de gebruiker is, en runWithString () functie die een stringargument opeist van wat de gebruiker typt. De rennen() functie roept gewoon de runWithString () functie met een lege string.

De runWithString () functie krijgt een lijst met tags van de bovenste FoldingText document met behulp van de helperfunctie getTagsFromDocument (). Voor elke tag wordt een informatiestructuur gemaakt met de informatie LaunchBar moet de resultaten weergeven. De structuurelementen zijn:

titel

Dit geeft een unieke titel voor elke subactie. Het is de naam van de tag om het bericht bij te voegen.

subtitel

Dit is de ondertitel voor de subactie. Ik heb dit ingesteld op de naam van de actie die deze subactie heeft gemaakt.

icoon

Elke subactie kan een ander pictogram hebben, maar deze actie heeft deze niet nodig.

actie

Dit vertelt LaunchBar de naam van de functie die moet worden aangeroepen als deze subactie is geselecteerd. Voor deze actie gaan alle oproepen naar de addToTag () functie.

actionArgument

Dit definieert het argument verzonden naar de functie gedefinieerd in actie. De tagnaam wordt aaneengeschakeld met de invoer van de gebruiker. De addToTag () functie parseert deze tekenreeks om de tagnaam en het bericht te krijgen dat aan de tag moet worden toegevoegd.

actionRunsInBackground

Dit Booleaanse veld is waar, dus dat is waar LaunchBar wacht niet tot de functie terugkeert. Dat stelt de gebruiker in staat om snel naar een andere taak te gaan.

actionReturnsItems

Dit is fout dus LaunchBar zal de uitvoer van de functieaanroep niet verzamelen.

De laatste twee functies bellen JavaScript voor automatisering scripts die zijn opgeslagen in de scripts directory. Die functies roepen een opdrachtregelprogramma op door te gebruiken LaunchBarspeciale opdracht LaunchBar.execute ().

Maak een bestand met de naam getListOfTags.scpt en open het Scripteditor. Plaats in dit bestand de volgende code:

function run (arg) app = Applicatie ("FoldingText"); doc = app.documents [0]; if (doc! = null) return doc.evaluate (script: "function (editor) return editor.tree (). tags (true) .sort ();"); 

Wanneer een JavaScript voor automatisering bestand wordt uitgevoerd met de osascript tolk, zal het de rennen() functie met alles dat aan de opdrachtregel is toegevoegd, als tekenreeks doorgegeven.

Deze code krijgt een Toepassing object voor FoldingText programma. Dit is hetzelfde als vertel de toepassing ... in AppleScript. Vervolgens wordt met dat toepassingsobject gevraagd naar het bovenste document. Als er een bovenste document is, geeft de functie dit een JavaScript programma om schatten dat zal alle tags in dat document retourneren. Die tags worden vervolgens teruggestuurd naar de opdrachtregel.

Het tweede script wordt genoemd notetag.scpt met deze code:

function run (arg) app = Applicatie ("FoldingText"); doc = app.documents [0]; if (doc! = null) return doc.evaluate (script: "-functie (editor, opties) var tree = editor.tree (), q = options.toString (). trim (). split ('|' ), result = "; var tag = q [0], q = q [1]; var tnode = editor.tree (). evaluNodePath ('// @' + tag) [0]; if (tnode) var message = tree.createNode (q); tnode.appendChild (message); else result = 'No' + tag + 'Found.'; return (result); ", withOptions: arg);

Dit is hetzelfde als het vorige script, behalve de JavaScript doorgegeven aan schatten commando. Deze JavaScript zal het invoerargument naar een tag en bericht ontleden. Het vertelt dan FoldingText om het bericht aan die tag toe te voegen in het document.

De actie laden en uitvoeren

Zodra al deze stukken op hun plaats staan, dubbelklik eenvoudig op de FoldingTextAddToTag.lbaction het dossier. OS X laadt het automatisch in LaunchBar.

De actie laden

Wanneer u selecteert Installeren, de actie wordt toegevoegd aan de acties gebruikt door LaunchBar.

De actie uitvoeren

Om de actie uit te voeren, activeer LaunchBar en typ addtotag en de actie zal verschijnen. Als u dit selecteert, wordt bovenaan een lijst met tags weergegeven FoldingText document en een tekstvak. Zet een bericht in het tekstvak en selecteer een tag. Het gegeven bericht wordt toegevoegd aan de tag.

Conclusie

Deze tutorial laat zien hoe te schrijven LaunchBar acties gebruiken JavaScript en JavaScript voor automatisering. Nu je weet hoe je het moet doen, begin met oefenen door meer acties te ondernemen.