quicksilver / Quicksilver

Quicksilver Project Source
http://qsapp.com
Apache License 2.0
2.75k stars 286 forks source link

Current Selection Proxy Triggers broken on 400C upgrade #1858

Closed hmelman closed 10 years ago

hmelman commented 10 years ago

I can confirm that #1843 is fixed for me in 400C. But I found that my existing triggers using the Current Selection Proxy objects were broken. I recreated some and they work fine. In the image below I fixed the first three, the others are broken (though the Finder Selection one is working. The broken ones end up searching for the text "QSGlobalSelectionProxy". In the second image you can see other Proxy objects that are broken (they all seem to have that icon). screen shot 2014-05-30 at 7 20 52 pm screen shot 2014-05-30 at 7 24 35 pm

skurfer commented 10 years ago

Thanks for the report. Can you save off a copy of Triggers.plist and share it (privately if you want) before fixing any more of them? I’d like to see what’s causing it to only show identifiers.

skurfer commented 10 years ago

Most of them seem to get sorted out, but I’m wondering why they’re getting completely restructured (and in some cases, broken). My current theory is that the triggers are re-saved before the Current Application proxy is added to the catalog. #1784 might prevent that (if I’m even right), but I don’t think that’s the whole story.

Here’s what happens to the trigger for hiding the current application:

Before:

<dict>
  <key>ID</key>
  <string>0E525806-1B30-447B-AE45-5A78C8E08F9B</string>
  <key>anchorMask</key>
  <integer>2</integer>
  <key>command</key>
  <dict>
    <key>actionID</key>
    <string>AppHideAction</string>
    <key>directID</key>
    <string>QSCurrentApplicationProxy</string>
  </dict>
  <key>enabled</key>
  <true/>
  <key>eventType</key>
  <integer>8</integer>
  <key>type</key>
  <string>QSMouseTrigger</string>
</dict>

After:

<dict>
  <key>ID</key>
  <string>0E525806-1B30-447B-AE45-5A78C8E08F9B</string>
  <key>anchorMask</key>
  <integer>2</integer>
  <key>command</key>
  <dict>
    <key>actionID</key>
    <string>AppHideAction</string>
    <key>directArchive</key>
    <dict>
      <key>class</key>
      <string>QSObject</string>
      <key>data</key>
      <dict>
        <key>public.utf8-plain-text</key>
        <string>QSCurrentApplicationProxy</string>
      </dict>
      <key>properties</key>
      <dict>
        <key>QSObjectName</key>
        <string>QSCurrentApplicationProxy</string>
        <key>QSObjectType</key>
        <string>public.utf8-plain-text</string>
      </dict>
    </dict>
    <key>directID</key>
    <string>QSCurrentApplicationProxy</string>
  </dict>
  <key>enabled</key>
  <true/>
  <key>eventType</key>
  <integer>8</integer>
  <key>type</key>
  <string>QSMouseTrigger</string>
</dict>
pjrobertson commented 10 years ago

Looking at the before and after plists, I have a sneaky suspicion it's to do with my changes that make sure data keys are always UTIs, since the after plist is full of UTIs. Maybe an NSStringPboardType was lying around in the old plist, and then got converted over to the UTI which messed things up...?

Howard is hopefully looking for a pre-all-of-this-Triggers.plist, which should shed some like as to how the that ever occurred

pjrobertson commented 10 years ago

...and here's a before before. This plist (if I got it correct, @hmelman ) is the plist that existed before Howard ever tried QS 400C, and which was good to go on QS 1.1.3.

You'll note my suspicion from the previous comment, there are 'data' keys set in the plist of type string. Not what we really want. But perhaps somewhere QS is reading those instead of the 'property' key?

<dict>
    <key>ID</key>
    <string>0E525806-1B30-447B-AE45-5A78C8E08F9B</string>
    <key>anchorMask</key>
    <integer>2</integer>
    <key>command</key>
    <dict>
        <key>actionID</key>
        <string>AppHideAction</string>
        <key>directArchive</key>
        <dict>
            <key>class</key>
            <string>QSObject</string>
            <key>data</key>
            <dict>
                <key>NSStringPboardType</key>
                <string>QSCurrentApplicationProxy</string>
                <key>public.utf8-plain-text</key>
                <string>QSCurrentApplicationProxy</string>
            </dict>
            <key>properties</key>
            <dict>
                <key>QSObjectName</key>
                <string>QSCurrentApplicationProxy</string>
                <key>QSObjectType</key>
                <string>NSStringPboardType</string>
            </dict>
        </dict>
        <key>directID</key>
        <string>QSCurrentApplicationProxy</string>
    </dict>
    <key>enabled</key>
    <true/>
    <key>eventType</key>
    <integer>8</integer>
    <key>type</key>
    <string>QSMouseTrigger</string>
</dict>
skurfer commented 10 years ago

the plist that existed before Howard ever tried QS 400C, and which was good to go on QS 1.1.3.

Are you sure? Would it have used public.utf8-plain-text as a key before 1.2.0?

pjrobertson commented 10 years ago

... more analysing

I think Rob is correct, and that Howard's problem isn't 400C-related. Looking at that plist above, there are two bits of info for the dObject - directID and directArchive.

directID is the most reliable (and is checked for first - see QSCommand.m:353), but if the object isn't in QSLib (for some reason, it probably wasn't for Howard) then the other directArchive dict is used - which clearly shows above represents some kind of string object.

The fix is probably to only load triggers once the catalog has finished loading

pjrobertson commented 10 years ago

Are you sure? Would it have used public.utf8-plain-text as a key before 1.2.0?

Those are Howard’s words, not mine (why I asked for clarification…!) but I take your point. Anyhow, I think we know what the problem is (and am working on a fix)

(and I’m on IRC if need be) On 4 Meh 2014, at 23:25, Rob McBroom notifications@github.com wrote:

the plist that existed before Howard ever tried QS 400C, and which was good to go on QS 1.1.3.

Are you sure? Would it have used public.utf8-plain-text as a key before 1.2.0?

— Reply to this email directly or view it on GitHub.

skurfer commented 10 years ago

The fix is probably to only load triggers once the catalog has finished loading

Yes, triggers should wait for the catalog without question, even if that doesn’t fix this specific thing.

pjrobertson commented 10 years ago

An update on what I did a few days ago: so I tried to make triggers wait for the catalog... but that's really difficult.

Because the catalog is populated by plugins, and triggers are added by (the same) plugins. So when we're loading a plugin, we blindly load the catalog and triggers one after the other. How the hell are we meant to tell each plugin to wait loading its triggers until after all the catalog entries have been scanned (which we can't know anyway)? :(

skurfer commented 10 years ago

I could have sworn there was a notification when the catalog was done, but I guess it’s just for individual entries. The only things I can think of seem like hacks. For example:

  1. Reload all triggers periodically, or 2 minutes after QS launches.
  2. When a trigger is run, check the dObject and iObject. If either is text, call -[QSLib objectWithIdentifier:] to see if a “real” object exists for it.
pjrobertson commented 10 years ago

So if this isn't a 1.2.0 problem, can we bump its milestone to 2.0? :)

I think both your solutions are a bit too 'hacky' for the time being. I guess we need to go down the route that Nicholas went down... and rewrite everything to make it properly modular

hmelman commented 10 years ago

So I gather you just loop on each plugin and load everything in them? And it's too difficult to have several loops, first loading catalog, then triggers, etc.?

If this does get bumped to 2.0, how about a setting (enables via defaults if necessary or always on) to do hacky choice 1. Reload all triggers 2 mins after launch. If that means I don't have to fix my triggers after every launch, that's a win for me until a real fix can be incorporated.

skurfer commented 10 years ago

So if this isn't a 1.2.0 problem, can we bump its milestone to 2.0? :)

If it’s going to crap on people’s triggers, we should probably do something now. I admit, I haven’t had time to dig in and figure out what’s broken. Well, I guess I understand that. I just don’t understand why no one noticed before. I wonder if my changes in #1784 to prevent triggers from getting reloaded all over the place for no reason unmasked this bug.

skurfer commented 10 years ago

When a trigger is run, check the dObject and iObject. If either is text, call -[QSLib objectWithIdentifier:] to see if a “real” object exists for it.

Assume this goes a step further and updates the trigger to contain the actual object (if found).

Would this really be so bad? How many triggers intentionally contain text? That would mean that the overhead of testing text objects would only be incurred once (if the trigger is actually broken), because on subsequent invocations of the trigger, the text object won’t be there any more.

Still hacky maybe, but not complicated or expensive.

hmelman commented 10 years ago

I think I understand the implications and it seems fine to me. I've only ever had a couple of triggers with text in them. Mostly to paste fixed text like my system details or an URL. I used to just enter them as text in the trigger, now I make sure the text exists in the shelf (does that matter here?). Only other good use I can think of is if someone regularly searches for some text or emails to a specific address (and I'm not sure that counts as text).

Even still, as I understand the proposal, these things would still work, they'd just be a little slower because you'd first check if the text was a (probably proxy) object. I'm guessing that overhead won't be noticable to the user. Seems like a perfectly reasonable workaround.

skurfer commented 10 years ago

I’ve implemented the proposed change on a local branch. Try this build and see if it fixes the problem.

(It’s based on master, so the version number and release notes are behind, but the actual code should be otherwise identical to build 400C.)

hmelman commented 10 years ago

Seems to have the same problem. My mouse trigger gets it's name changed and doesn't seem to work (yes I'm sure I'm using the downloaded version). Here's a good opportunity to test my "paste my version details from shelf trigger) and yes I finally moved to Mavericks this weekend. There's no discernible lag. QS 1.2.0 (400C) 10.9.3, 3.4 GHz i7 iMac, 8GB RAM

screen shot 2014-06-30 at 1 50 59 pm

skurfer commented 10 years ago

Those version details are edited by hand, right? Because if you’re using the one I built this morning, the version should be “1.1.0:repairTrigger”. I replaced the objects in the command, which should update the trigger (in memory). I’ll see if there’s anything else I need to do. At the very least, I’ll add some logging to try and get an idea what’s going on.

hmelman commented 10 years ago

Yes, edited by hand.

skurfer commented 10 years ago

OK. Same code, but it should log what it sees to the Console…

http://cl.ly/473J2T2x3Q2Z

To give you an idea what to look for, these are the lines I added:

NSLog(@"direct object primary type: %@", [[cmd dObject] primaryType]);
NSLog(@"direct object is text: %@", self);
NSLog(@"checking catalog for %@: %@", ident, realObject);
NSLog(@"new direct object for trigger: %@", [[cmd dObject] displayName]);
NSLog(@"indirect object primary type: %@", [[cmd iObject] primaryType]);
NSLog(@"indirect object is text: %@", self);
NSLog(@"checking catalog for %@: %@", ident, realObject);
NSLog(@"new indirect object for trigger: %@", [[cmd iObject] displayName]);
hmelman commented 10 years ago

Didn't see those. Quit my QS. Started yours. (at 5:43) Hide Current App mouse trigger didn't work in same way. Tried using it, it didn't work. Fixed it. Used it and it worked. Quit your QS. Started it up again (at 5:47), tried using mouse trigger and it didn't work.

6/30/14 5:43:31.391 PM Quicksilver[726]: Cannot find executable for CFBundle 0x7fe795d5fc70 </Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSExtraScriptsPlugIn.92.qsplugin> (not loaded)
6/30/14 5:43:31.689 PM Quicksilver[726]: objc[726]: Class JKArray is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.689 PM Quicksilver[726]: objc[726]: Class JKDictionaryEnumerator is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.689 PM Quicksilver[726]: objc[726]: Class JKDictionary is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class JSONDecoder is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class JKSerializer is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class FMDatabase is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class FMStatement is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class FMResultSet is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.768 PM Quicksilver[726]: New Version: Purging all Identifiers and Forcing Rescan
6/30/14 5:43:31.777 PM Quicksilver[726]: Updated: Forcing Plugin Check
6/30/14 5:43:31.784 PM Quicksilver[726]: Could not find image named 'B7C43F23-DD71-4319-A130-F5C52F29DCB4'.
6/30/14 5:43:31.785 PM Quicksilver[726]: Could not find image named '60461255-0193-4D9C-AC6F-9C3B5B65FAD6'.
6/30/14 5:43:31.785 PM Quicksilver[726]: Could not find image named 'A25B83C1-3F84-46F1-87A6-AB19B10DD230'.
6/30/14 5:43:31.785 PM Quicksilver[726]: Could not find image named '8C040B9F-22D2-48B8-A50B-19AD2B98BD0C'.
6/30/14 5:43:32.189 PM Quicksilver[726]: bad data for Apple URL pasteboard type
6/30/14 5:43:32.189 PM Quicksilver[726]: bad data for public.utf16-external-plain-text
6/30/14 5:44:05.825 PM Quicksilver[726]: NSAlert is being used from a background thread, which is not safe.  This is probably going to crash sometimes. Break on void _NSAlertWarnUnsafeBackgroundThreadUsage() to debug.  This will be logged only once.  This may break in the future.
6/30/14 5:44:11.252 PM Quicksilver[726]: *** Assertion failure in -[NSMenu itemAtIndex:], /SourceCache/AppKit/AppKit-1265.21/Menus.subproj/NSMenu.m:865
6/30/14 5:44:11.253 PM Quicksilver[726]: Invalid parameter not satisfying: (index >= 0) && (index < [_itemArray count])
6/30/14 5:44:11.261 PM Quicksilver[726]: (
    0   CoreFoundation                      0x00007fff850ad25c __exceptionPreprocess + 172
    1   libobjc.A.dylib                     0x00007fff8dc80e75 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff850ad038 +[NSException raise:format:arguments:] + 104
    3   Foundation                          0x00007fff83f0fd41 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 189
    4   AppKit                              0x00007fff8c2ace76 -[NSMenu itemAtIndex:] + 164
    5   AppKit                              0x00007fff8c333931 -[NSPopUpButtonCell selectItemAtIndex:] + 411
    6   Quicksilver                         0x00000001028735e4 Quicksilver + 95716
    7   AppKit                              0x00007fff8c573146 -[NSTableView preparedCellAtColumn:row:] + 1437
    8   AppKit                              0x00007fff8c5cc818 -[NSOutlineView preparedCellAtColumn:row:] + 52
    9   AppKit                              0x00007fff8c572a5e -[NSTableView _drawContentsAtRow:column:withCellFrame:] + 44
    10  AppKit                              0x00007fff8c5cd28f -[NSOutlineView _drawContentsAtRow:column:withCellFrame:] + 91
    11  AppKit                              0x00007fff8c572793 -[NSTableView drawRow:clipRect:] + 1629
    12  QSInterface                         0x0000000102a29671 -[QSOutlineView drawRow:clipRect:] + 340
    13  AppKit                              0x00007fff8c571fed -[NSTableView drawRowIndexes:clipRect:] + 776
    14  AppKit                              0x00007fff8c5cc495 -[NSOutlineView drawRowIndexes:clipRect:] + 113
    15  AppKit                              0x00007fff8c43b331 -[NSTableView drawRect:] + 1484
    16  AppKit                              0x00007fff8c416557 -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] + 1082
    17  AppKit                              0x00007fff8c41600d __46-[NSView(NSLayerKitGlue) drawLayer:inContext:]_block_invoke + 186
    18  AppKit                              0x00007fff8c415e03 -[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] + 2297
    19  AppKit                              0x00007fff8c4154f8 -[NSView(NSLayerKitGlue) drawLayer:inContext:] + 108
    20  QuartzCore                          0x00007fff8356e812 CABackingStoreUpdate_ + 2220
    21  QuartzCore                          0x00007fff8356df60 ___ZN2CA5Layer8display_Ev_block_invoke + 59
    22  QuartzCore                          0x00007fff8356df1c x_blame_allocations + 84
    23  QuartzCore                          0x00007fff8356da2b _ZN2CA5Layer8display_Ev + 1539
    24  AppKit                              0x00007fff8c4153c3 _NSBackingLayerDisplay + 235
    25  AppKit                              0x00007fff8c3ec74b -[_NSViewBackingLayer display] + 811
    26  QuartzCore                          0x00007fff8356d162 _ZN2CA5Layer17display_if_neededEPNS_11TransactionE + 590
    27  QuartzCore                          0x00007fff8356c8b1 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 35
    28  QuartzCore                          0x00007fff8356c33c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 236
    29  QuartzCore                          0x00007fff8356bfd6 _ZN2CA11Transaction6commitEv + 388
    30  QuartzCore                          0x00007fff8357c761 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 71
    31  CoreFoundation                      0x00007fff84fddd67 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
    32  CoreFoundation                      0x00007fff84fddcd7 __CFRunLoopDoObservers + 391
    33  CoreFoundation                      0x00007fff84fcee94 CFRunLoopRunSpecific + 340
    34  HIToolbox                           0x00007fff87d8ba0d RunCurrentEventLoopInMode + 226
    35  HIToolbox                           0x00007fff87d8b7b7 ReceiveNextEventCommon + 479
    36  HIToolbox                           0x00007fff87d8b5bc _BlockUntilNextEventMatchingListInModeWithFilter + 65
    37  AppKit                              0x00007fff8c2b524e _DPSNextEvent + 1434
    38  AppKit                              0x00007fff8c2b489b -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 122
    39  AppKit                              0x00007fff8c2a899c -[NSApplication run] + 553
    40  AppKit                              0x00007fff8c293783 NSApplicationMain + 940
    41  Quicksilver                         0x000000010285dce4 Quicksilver + 7396
    42  ???                                 0x0000000000000002 0x0 + 2
)
6/30/14 5:44:18.367 PM Quicksilver[726]: CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
6/30/14 5:47:46.237 PM Quicksilver[759]: Cannot find executable for CFBundle 0x7fdedc133590 </Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSExtraScriptsPlugIn.92.qsplugin> (not loaded)
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JKArray is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JKDictionaryEnumerator is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JKDictionary is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JSONDecoder is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JKSerializer is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class FMDatabase is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class FMStatement is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class FMResultSet is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:47.737 PM Quicksilver[759]: Could not find image named 'B7C43F23-DD71-4319-A130-F5C52F29DCB4'.
6/30/14 5:47:47.737 PM Quicksilver[759]: Could not find image named '60461255-0193-4D9C-AC6F-9C3B5B65FAD6'.
6/30/14 5:47:47.737 PM Quicksilver[759]: Could not find image named 'A25B83C1-3F84-46F1-87A6-AB19B10DD230'.
6/30/14 5:47:47.737 PM Quicksilver[759]: Could not find image named '8C040B9F-22D2-48B8-A50B-19AD2B98BD0C'.
skurfer commented 10 years ago

Well, good news and bad news. That means it’s not even getting to the point where it tries to execute the trigger. That seemed suspicious, because I was able to see some of the log messages with my triggers. I recreated what you have exactly and I can reproduce it. I seems to be specific to Mouse triggers.

In any case, I should be able to get to the bottom of it quickly now.