JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 97
  • Score
    100M100P100Q76474F
  • License MIT

Create Alfred workflows with ease

Package Exports

  • alfy

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (alfy) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Alfy

Create Alfred workflows with ease

Build Status

Highlights

  • Easy input↔output.
  • Config and cache handling built-in.
  • Finds the node binary.
  • Presents uncaught exceptions and unhandled Promise rejections to the user.
    No need to manually .catch() top-level promises.

Prerequisites

You need Node.js 4+ and Alfred 3 with the paid Powerpack upgrade.

Install

$ npm install --save alfy

Usage

Create a new Alfred workflow and add a Script Filter with the following script:

./node_modules/.bin/run-node index.js "$1"

We can't call node directly as GUI apps on macOS doesn't inherit the $PATH.

In the workflow directory, create a index.js file, import alfy, and do your thing.

Example

Here we use got to fetch some JSON from a placeholder API and present matching items to the user:

const alfy = require('alfy');
const got = require('got');

got('jsonplaceholder.typicode.com/posts', {json: true}).then(result => {
    const items = result.body
        .filter(x => `${x.title} ${x.body}`.includes(alfy.input))
        .map(x => ({
            title: x.title,
            subtitle: x.body,
            arg: x.id
        }));

    alfy.output(items);
});
More

Some example usage in the wild: alfred-npms, alfred-emoj, alfred-ng2.

API

alfy

input

Type: string

Input from Alfred. What the user wrote in the input box.

output(list)

Type: Function

Return output to Alfred.

Accepts an Array of Objects with any of the supported properties.

Example:

alfy.output([{
    title: 'Unicorn'
}, {
    title: 'Rainbow'
}]);

log(text)

Type: string

Log some text to the debug panel. Only logs when alfred.debug is true, so not to interfere with the normal output.

error(error|message)

Type: Error string

Display an error or error message in Alfred.

config

Type: Object

Persist config data.

Exports a conf instance with the correct config path set.

Example:

alfy.config.set('unicorn', '🦄');

alfy.config.get('unicorn');
//=> '🦄'

cache

Type: Object

Persist cache data.

Exports a conf instance with the correct cache path set.

Example:

alfy.cache.set('unicorn', '🦄');

alfy.cache.get('unicorn');
//=> '🦄'

debug

Type: boolean

Whether the user currently has the workflow debugger open.

icon

Type: Object
Keys: info warning error alert like delete

Get various default system icons.

The most useful ones are included as keys. The rest you can get with icon.get(). Go to /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources in Finder to see them all.

Example:

console.log(alfy.icon.error);
//=> '/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/AlertStopIcon.icns'

console.log(alfy.icon.get('Clock'));
//=> '/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Clock.icns'

meta

Type: Object

Example:

{
    name: 'Emoj',
    version: '0.2.5',
    uid: 'user.workflow.B0AC54EC-601C-479A-9428-01F9FD732959',
    bundleId: 'com.sindresorhus.emoj'
}

alfred

Type: Object

Alfred metadata.

version

Example: '3.0.2'

Find out which version the user is currently running. This may be useful if your workflow depends on a particular Alfred version's features.

theme

Example: 'alfred.theme.yosemite'

Current theme used.

themeBackground

Example: 'rgba(255,255,255,0.98)'

If you're creating icons on the fly, this allows you to find out the color of the theme background.

themeSelectionBackground

Example: 'rgba(255,255,255,0.98)'

The color of the selected result.

themeSubtext

Example: 3

Find out what subtext mode the user has selected in the Appearance preferences.

Usability note: This is available so developers can tweak the result text based on the user's selected mode, but a workflow's result text should not be bloated unnecessarily based on this, as the main reason users generally hide the subtext is to make Alfred look cleaner.

data

Example: '/Users/sindresorhus/Library/Application Support/Alfred 3/Workflow Data/com.sindresorhus.npms'

Recommended location for non-volatile data. Just use alfy.data which uses this path.

cache

Example: '/Users/sindresorhus/Library/Caches/com.runningwithcrayons.Alfred-3/Workflow Data/com.sindresorhus.npms'

Recommended location for volatile data. Just use alfy.cache which uses this path.

preferences

Example: '/Users/sindresorhus/Dropbox/Alfred/Alfred.alfredpreferences'

This is the location of the Alfred.alfredpreferences. If a user has synced their settings, this will allow you to find out where their settings are regardless of sync state.

preferencesLocalHash

Example: 'adbd4f66bc3ae8493832af61a41ee609b20d8705'

Non-synced local preferences are stored within Alfred.alfredpreferences under …/preferences/local/${preferencesLocalHash}/.

  • alfred-simple - Simple theme for Alfred (Used in the screenshots)

License

MIT © Sindre Sorhus