Workflow setup and skeletonΒΆ

Alfred-Python is aimed particularly at authors of so-called Script Filters. These are activated by a keyword in Alfred, receive user input and return results to Alfred.

To write a Script Filter with Alfred-Workflow, make sure your Script Filter is set to use /bin/bash as the Language, and select the following (and only the following) Escaping options:

  • Backquotes
  • Double Quotes
  • Dollars
  • Backslashes

The Script field should contain the following:

python yourscript.py "{query}"

where yourscript.py is the name of your script.

Your workflow should start out like this. This enables Workflow to capture any errors thrown by your scripts:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/python
# encoding: utf-8

import sys

from workflow import Workflow

log = None


def main(wf):
    # The Workflow instance will be passed to the function
    # you call from `Workflow.run`

    # Your imports here if you want to catch import errors
    import somemodule
    import anothermodule

    # Get args from Workflow as normalized Unicode
    args = wf.args

    # Do stuff here ...

    # Add an item to Alfred feedback
    wf.add_item('Item title', 'Item subtitle')

    # Send output to Alfred
    wf.send_feedback()


if __name__ == '__main__':
    wf = Workflow()
    # Assign Workflow logger to a global variable, so all module
    # functions can access it without having to pass the Workflow
    # instance around
    log = wf.logger
    sys.exit(wf.run(main))