Supported software

Alfred 2 versions

Alfred-Workflow works with all versions of Alfred 2, but you must own the Powerpack to use Alfred’s workflow feature.

All Script Filter features provided by Alfred 2 as of v2.8.3 are supported in the latest version of Alfred-Workflow.

OS X versions

Alfred-Workflow supports the same OS X versions as Alfred 2, namely 10.6 (Snow Leopard) and later.

Note

Notifications, added in version 1.15 of Alfred-Workflow, are only available on Mountain Lion (10.8) and above.

Python versions

Alfred-Workflow supports versions 2.6 and 2.7 of Python. Python 3 is not supported.

Alfred-Workflow is intended to run on the OS X default system Python (/usr/bin/python), which is version 2.6 on OS X 10.6 and 2.7 on all later versions.

Here is the full list of new features in Python 2.7, but the most important things if you want your workflow to run on Snow Leopard/Python 2.6 are:

Python 2.6 is still included in later versions of OS X (up to and including Yosemite), so run your Python scripts with /usr/bin/python2.6 in addition to /usr/bin/python (2.7) to make sure they will run on Snow Leopard.

Why no Python 3 support?

Three main reasons:

  1. Python 3 isn’t installed by default on any version of OS X.
  2. Python 3 doesn’t get along well with Alfred 2.
  3. Alfred-Workflow is precisely the kind of project that’s hard to make 2- and 3-compatible.

Bluntly put, because of 3, Python 3 support won’t come until 1 and/or 2 changes.

Python 3 is awesome for writing workflows in theory. The encoding errors that are such a pain in Python 2 mostly just disappear.

In practice, Alfred 2 has a long-standing bug (which won’t be fixed in v2) [1] that makes it one of those places where Python 3 chokes and its automatic text decoding breaks the world.

My working assumption is that Alfred 3 (whenever that may arrive) will require the library to be significantly rewritten due to an updated API, and will fix the incorrect encoding issue. At some point, Apple will surely add Python 3 to OS X by default, too.

Python 3 support will most likely come when either of those things happens.

[1]Alfred 2 uses UTF-8 but tells workflows by omission that it’s an ASCII environment (no locale is set, so Python 3 defaults to the C locale, i.e. ASCII, as per the POSIX spec). You must specify UTF-8 in the environment, e.g. by setting PYTHONIOENCODING=UTF-8, before calling python3 otherwise your workflow (any Python 3 code, in fact) will die in flames.