Install Links: “Look, Tap, and Approve!”
With the advent of spacial computing that is driven by eye and hand movements, it is critical that the installation of automation tools be an easy seamless process. Welcome to “Look, Tap, and Approve!”
Beginning with the latest versions of Omni applications, there is a new way to install plug-ins: Omni Automation now supports “Install Links.” With Install Links, simply activating a link in a webpage, will automatically trigger the targeted Omni application’s built-in plug-in onboarding process.
For users of Install Links, you will no longer need to interact with the Finder (macOS) or the Files app (iOS · iPadOS · visionOS) to install downloaded plug-in files. Simply activate the link, and follow the prompts in the standard Omni plug-in onboarding process and you’re done. For Apple Vision Pro users especially, this greatly simplifies adding custom functionality to your Omni application.
Creating an Install Link
For Omni Automation plug-in creators who wish to share their plug-ins, an “Install Link” is a companion to the encoded Script URLs used to send and execute remote Omni Automation scripts. An Install Link begins with the name of the targeted Omni application followed by this specialized schema and parameter:
[NAME-OF-OMNI-APPICATION]:///omnijs-install?path=[ENCODED-FULL-URL-OF-PLUG-IN-FILE-OR-ZIP]
Install Links will greatly simplify the process of adding plug-ins to your Omni application.
Here’s a plug-in you can install and use to generate an Install Link from a copied URL. This plug-in works with all Omni applications.
Install Link Creator Plug-In
/*{
"type": "action",
"targets": ["omnifocus","omnigraffle","omniplan","omnioutliner"],
"author": "Otto Automator",
"identifier": "com.omni-automation.all.clipboard-to-install-link",
"version": "1.1",
"description": "This plug-in replaces the URL currently copied to the clipboard with an Install Link targeting the copied URL, or prompts for a URL string to be converted into an Install Link. The resulting Install Link string is logged to the console and placed on the clipboard.",
"label": "Install Link from Copied URL",
"shortLabel": "Install Link",
"paletteLabel": "Install Link",
"image": "link.circle"
}*/
(() => {
const action = new PlugIn.Action(async function(selection, sender){
try {
if (Pasteboard.general.hasURLs){
url = Pasteboard.general.URLs[0]
var urlStr = url.string
} else {
inputForm = new Form()
textInput = new Form.Field.String(
"textInput",
"URL",
null
)
inputForm.addField(textInput)
inputForm.validate = function(formObject){
textValue = formObject.values['textInput']
return (textValue && textValue.length > 0) ? true:false
}
formPrompt = "Enter URL string:"
buttonTitle = "Continue"
formObject = await inputForm.show(formPrompt, buttonTitle)
var urlStr = formObject.values["textInput"]
}
appID = URL.currentAppScheme
if(appID.includes("OmniFocus")){
var host = "omnifocus"
} else if (appID.includes("OmniGraffle")){
var host = "omnigraffle"
} else if (appID.includes("OmniOutliner")){
var host = "omnioutliner"
} else {
var host = "omniplan"
}
schema = `${host}:///omnijs-install?path=`
encodedURLstr = encodeURIComponent(urlStr)
installLink = schema + encodedURLstr
Pasteboard.general.string = installLink
console.log(installLink)
alertMsg = "The Install Link has been logged and placed on the clipboard."
alert = new Alert("Install Link", alertMsg)
alert.addOption("Open")
alert.addOption("Done")
buttonIndex = await alert.show()
console.log(buttonIndex)
if(buttonIndex === 0){
URL.fromString(installLink).open()
}
}
catch(err){
if(!err.causedByUserCancelling){
console.error(err.name, err.message)
new Alert(err.name, err.message).show()
}
}
});
action.validate = function(selection, sender){
return true
};
return action;
})();
Use of “Install Links” can be found with each of the example plug-ins featured in the Videos section of the “What’s New with Omni Automation in OmniFocus 4” featurette on this website.
Install Links and GitHub
DISCLAIMER: Mention of third-party websites and products is for informational purposes only and constitutes neither an endorsement nor a recommendation. OMNI-AUTOMATION.COM assumes no responsibility with regard to the selection, performance or use of information or products found at third-party websites. OMNI-AUTOMATION.COM provides this only as a convenience to our users. OMNI-AUTOMATION.COM has not tested the information found on these sites and makes no representations regarding its accuracy or reliability. There are risks inherent in the use of any information or products found on the Internet, and OMNI-AUTOMATION.COM assumes no responsibility in this regard. Please understand that a third-party site is independent from OMNI-AUTOMATION.COM and that OMNI-AUTOMATION.COM has no control over the content on that website. Please contact the vendor for additional information.
NOTE: Install Link support for GitHub requires OmniFocus 4.2.1 or later
Many developers use GitHub to host their Omni Automation plug-in projects. To create an Install Link for a ZIP archive of an Omni Automation plug-in, hosted on GitHub, follow these steps:
- In the “Releases” section, click the button titled: “Latest” (see illustration)
- In the forthcoming “Assets” view, right-click and copy the link to the ZIP archive titled: “Source code (zip)” (see illustration)
- Use the plug-in provided on this webpage to generate an Install Link from the copied URL