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.

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.

Quick Example
=============

Here's how to show recent `Pinboard.in <https://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``):

.. code-block:: python
:emphasize-lines: 4

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
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 and API docs, is
available at `Read the Docs <http://alfredworkflow.readthedocs.org/en/latest/>`_.

.. _requests: http://docs.python-requests.org/en/latest/
.. _Alfred 2: http://www.alfredapp.com/
.. _GitHub releases: https://github.com/deanishe/alfred-workflow/releases
.. _the source code: https://github.com/deanishe/alfred-workflow/archive/master.zip
.. _GitHub repository: https://github.com/deanishe/alfred-workflow
.. _Cheese Shop: https://pypi.python.org/pypi
.. _pip documentation: https://pip.pypa.io/en/latest/

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Alfred-Workflow-1.10.0.tar.gz (34.2 kB view details)

Uploaded Source

File details

Details for the file Alfred-Workflow-1.10.0.tar.gz.

File metadata

File hashes

Hashes for Alfred-Workflow-1.10.0.tar.gz
Algorithm Hash digest
SHA256 e82d51e7eeb9de70d359f7d3fc049353cdc39921b8a929bfcf4dfaf6f3e82f96
MD5 29a06db05a82f5756bdbb6328805021e
BLAKE2b-256 f0bcf766f9e276538853834bb7b60f1fdbcaddc93dab5121ac0b6ef4ec46c934

See more details on using hashes here.

Release history Release notifications | RSS feed

1.40.0

1 file

1.39.0

1 file

1.38.0

1 file

1.37.2

1 file

1.37.1

1 file

1.37

1 file

1.36

1 file

1.35

1 file

1.34

1 file

1.33

1 file

1.32

1 file

1.31

1 file

1.30

1 file

1.29

1 file

1.28.1

1 file

1.28

1 file

1.27

1 file

1.26

1 file

1.25.2

1 file

1.25.1

1 file

1.25

1 file

1.24

1 file

1.23.1

1 file

1.23

1.22

1 file

1.21.1

1 file

1.21

1 file

1.20

1 file

1.19

1 file

1.18.2

1 file

1.18.1

1 file

1.17.4

1 file

1.17.3

1 file

1.17.2

1 file

1.17.1

1 file

1.17

1 file

1.15.3

1 file

1.15.1

1 file

1.13

1 file

1.12

1 file

1.11.1

1 file

1.11.0

1.10.2

1 file

1.10.1

1 file

This release

1.10.0 This release

1 file

1.9.6

1 file

1.9.5

1 file

1.9.4

1 file

1.9.3

1 file

1.9.2

1 file

1.9.1

1 file

1.8.9

1 file

1.8.7

1 file

1.8.6

1 file

1.8.5

1 file

1.8.4

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page