[TxMt] The file association war

Matthew Anderson manders2k.lists at gmail.com
Thu Sep 21 14:54:02 UTC 2006


This discussion made me curious about exactly how this works in OS  
X.  If anyone is curious:

This page[1] at the Apple Developer site describes the sequence of  
events for determining which application to launch when a document is  
opened (in a high-level, no-detail sort of way).

I believe that all the extensions applications claim to accept (and  
thus applications associated with an extension) are generated  
programatically, and cached here[2]:

   /Library/Caches/com.apple.LaunchServices-014nnn.csstore

where nnn is your uid number from the NetInfo database.

This program:

   /System/Library/Frameworks/ApplicationServices.framework/ 
Frameworks/LaunchServices.framework/Support/lsregister

Is capable of rebuilding that cached database and displaying it  
("lsregister -dump | less") for you to look at, if you're interested.

I think all of your customizations of preferred applications are  
stored here:

   ~/Library/Preferences/com.apple.LaunchServices.plist

I haven't confirmed this for certain, but I imagine that the 'file  
association war' mostly occurs in this plist.  I don't know exactly  
how this is supposed to be formatted, and perhaps shouldn't be edited  
by hand, but I'd think it should be pretty easy to go and delete all  
xml elements which reference applications you *don't* want to be  
opening files, or perhaps make some minor edits replacing one app  
reference (the undesired) with another (the desired).  Writing some  
AppleScript (if one knows how to do that, and I don't) might be a  
safer bet.  Although, can't be too dangerous to make a backup copy of  
the plist and then edit to your hearts content, see what happens.

[1]: http://developer.apple.com/documentation/Carbon/Conceptual/ 
LaunchServicesConcepts/index.html#//apple_ref/doc/uid/TP30000999
[2]: http://www.thexlab.com/faqs/resetlaunchservices.html

On Sep 19, 2006, at 10:09 PM, Trevor Harmon wrote:

> On Sep 19, 2006, at 7:21 PM, Charilaos Skiadas wrote:
>
>> So you really should only have to do this only once for every file  
>> type.
>
> "Every file type" is the problem. RCDefaultApp reports that there  
> are about *50* different extensions associated with BBEdit and  
> XCode. I don't want to go through and manually change every one of  
> those mappings. And what happens if I install yet another editor  
> or, say, a new version of BBEdit? I'll have to go back and change  
> all those associations *again*. Surely there's an easier way? I  
> guess I could always resort to writing some AppleScript, assuming  
> that would work...
>
> I suppose I'm also asking the broader question of why apps like  
> TextMate/BBEdit/etc. have to associate themselves with anything to  
> begin with. For example, when I install two C++ editors, they fight  
> for the .cc association, and I guess whichever one is installed  
> last wins. Seems like a rather weak way of managing file associations.
>
> Trevor
>
>
> ______________________________________________________________________
> For new threads USE THIS: textmate at lists.macromates.com
> (threading gets destroyed and the universe will collapse if you don't)
> http://lists.macromates.com/mailman/listinfo/textmate

--
  Matt Anderson





More information about the textmate mailing list