#! /usr/bin/env python from plistlib import readPlist, writePlist import os, sys, shutil, traceback triggersPath = \ os.path.expanduser(reduce(os.path.join, ["~", "Library", "Application Support", "Quicksilver", "Triggers.plist"])) backupPath = \ os.path.expanduser(reduce(os.path.join, ["~", "Library", "Application Support", "Quicksilver", "Triggers.plist.backup"])) log = sys.stderr.write if not os.path.exists(triggersPath): log("%s does not exist\n" % triggersPath) sys.exit(1) if os.path.exists(backupPath): log("%s already exists, please move first\n" % backupPath) sys.exit(1) try: shutil.copy(triggersPath, backupPath) except: traceback.print_exc() log("Failed to backup Triggers.plist\n") sys.exit(1) try: tpl = readPlist(triggersPath) except: traceback.print_exc() log("Failed to parse Triggers.plist\n") sys.exit(1) if not tpl.has_key('triggers'): log("Unrecognized format for Triggers.plist\n") sys.exit(1) for trigger in tpl['triggers']: if not trigger.has_key('type'): trigger['type'] = 'QSHotKeyTrigger' writePlist(tpl, triggersPath)