Skip to main content

A Python helper library for writing Alfred 2 workflows.

Alfred workflows typically take user input, fetch data from the Web or elsewhere, filter them and display results to the user. Alfred-Workflow takes care of a lot of the details for you, allowing you to concentrate your efforts on your workflow’s functionality.

http://www.deanishe.net/alfred-workflow/

Features

  • Catches and logs workflow errors for easier development and support

  • “Magic” arguments to help development/debugging

  • Auto-saves settings

  • Super-simple data caching

  • Fuzzy, Alfred-like search/filtering with diacritic folding

  • Keychain support for secure storage (and syncing) of passwords, API keys etc.

  • Simple generation of Alfred feedback (XML output)

  • Input/output decoding for handling non-ASCII text

  • Lightweight web API with modelled on requests

  • Pre-configured logging

  • Painlessly add directories to sys.path

  • Easily launch background tasks (daemons) to keep your workflow responsive

  • Check for new versions and update workflows hosted on GitHub.

  • Post notifications via Notification Center.

Quick Example

Here’s how to show recent Pinboard.in posts in Alfred.

Create a new workflow in Alfred’s preferences. Add a Script Filter with Language /usr/bin/python and paste the following into the Script field (changing API_KEY):

import sys
from workflow import Workflow, ICON_WEB, web

API_KEY = 'your-pinboard-api-key'

def main(wf):
    url = 'https://api.pinboard.in/v1/posts/recent'
    params = dict(auth_token=API_KEY, count=20, format='json')
    r = web.get(url, params)
    r.raise_for_status()
    for post in r.json()['posts']:
        wf.add_item(post['description'], post['href'], arg=post['href'],
                    uid=post['hash'], valid=True, icon=ICON_WEB)
    wf.send_feedback()


if __name__ == u"__main__":
    wf = Workflow()
    sys.exit(wf.run(main))

Add an Open URL action to your workflow with {query} as the URL, connect your Script Filter to it, and you can now hit ENTER on a Pinboard item in Alfred to open it in your browser.

Installation

Note: If you intend to distribute your workflow to other users, you should include Alfred-Workflow (and other Python libraries your workflow requires) within your workflow’s directory as described below. Do not ask users to install anything into their system Python. Python installations cannot support multiple versions of the same library, so if you rely on globally-installed libraries, the chances are very good that your workflow will sooner or later break—or be broken by—some other software doing the same naughty thing.

With pip

You can install Alfred-Workflow directly into your workflow with:

pip install --target=/path/to/my/workflow Alfred-Workflow

You can install any other library available on the Cheese Shop the same way. See the pip documentation for more information.

From source

Download the alfred-workflow-X.X.X.zip file from the GitHub releases page and either extract the ZIP to the root directory of your workflow (where info.plist is) or place the ZIP in the root directory and add sys.path.insert(0, 'alfred-workflow-X.X.X.zip') to the top of your Python scripts.

Alternatively, you can download the source code from the GitHub repository and copy the workflow subfolder to the root directory of your workflow.

Your workflow directory should look something like this (where yourscript.py contains your workflow code and info.plist is the workflow information file generated by Alfred):

Your Workflow/
    info.plist
    icon.png
    workflow/
        __init__.py
        background.py
        notify.py
        Notify.tgz
        update.py
        version
        web.py
        workflow.py
    yourscript.py
    etc.

Or like this:

Your Workflow/
    info.plist
    icon.png
    workflow-1.X.X.zip
    yourscript.py
    etc.

Documentation

Detailed documentation, including a tutorial, is available at http://www.deanishe.net/alfred-workflow/.

Metadata

Release files for Alfred-Workflow 1.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Alfred-Workflow 1.17
File Size Uploaded Provenance Actions
Alfred-Workflow-1.17.tar.gz 79.0 kB Without provenance Details for Alfred-Workflow-1.17.tar.gz

Release files / Alfred-Workflow-1.17.tar.gz

Download URL Alfred-Workflow-1.17.tar.gz
Size 79.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b37cfb41ce3aeb7d2801e410da28280dc933ac420c00c394651d7a0e39c76eb2
BLAKE2b-256 checksum
How to use checksums
5cc44968db5a3467d1837bf868f1d6284d7b92cffba6e132213b318715985925
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for Alfred-Workflow 1.17

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

1.23

This release

1.17 This release

1 release file No provenance

1.11.0

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page