¿Existe una forma más rápida de cambiar las aplicaciones predeterminadas asociadas con los tipos de archivo en OS X?

¿Hay algo más conveniente que usar RCDefaultApp o Magic Launch , o simplemente pulsar repetidamente los botones Change All en los paneles de información del Finder?

Pensé en escribir un script de shell que modificaría los arrays CFBundleDocumentTypes en los archivos Info.plist. Pero cada aplicación tiene varias claves (a veces un icono) que tendría que ser cambiado.

lsregister no se puede utilizar para realizar modificaciones específicas en la base de datos de Launch Services.

 $ `locate lsregister` -h lsregister: [OPTIONS] [ <path>... ] [ -apps <domain>[,domain]... ] [ -libs <domain>[,domain]... ] [ -all <domain>[,domain]... ] Paths are searched for applications to register with the Launch Service database. Valid domains are "system", "local", "network" and "user". Domains can also be specified using only the first letter. -kill Reset the Launch Services database before doing anything else -seed If database isn't seeded, scan default locations for applications and libraries to register -lint Print information about plist errors while registering bundles -convert Register apps found in older LS database files -lazy n Sleep for n seconds before registering/scanning -r Recursive directory scan, do not recurse into packages or invisible directories -R Recursive directory scan, descending into packages and invisible directories -f force-update registration even if mod date is unchanged -u unregister instead of register -v Display progress information -dump Display full database contents after registration -h Display this help 

Duti

  1. Descargue el instalador pkg o compile desde el origen
  2. Guarde un archivo como este en alguna parte:

     com.macromates.textmate public.shell-script all com.macromates.textmate public.unix-executable all com.macromates.textmate com.apple.property-list all org.videolan.vlc .avi all org.videolan.vlc .mkv all # ... 
  3. duti $file.duti

Encontrar identificadores de paquetes o UTIs:

 bundleid() { osascript -e "id of app \"$*\"" } getuti() { local f="/tmp/me.lri.getuti.${1##*.}" touch "$f" mdimport "$f" mdls -name kMDItemContentTypeTree "$f" rm "$f" } 

Lsapps

Escribí un guión de Ruby mucho como duti antes de que me enteré. Requiere reiniciar el sistema operativo para aplicar los cambios sin embargo. También sobrescribe cualquier cambio externo en com.apple.LaunchServices.plist .

 #!/usr/bin/env ruby datafile = "#{ENV['HOME']}/Notes/lsapps.txt" cachedir = "#{ENV['HOME']}/Library/Caches/me.lri.scripts" cachefile = cachedir + "/lsapps" `mkdir -p #{cachedir}; touch #{cachefile}` cachetext = IO.read(cachefile) a = [] IO.readlines(datafile).each do |line| line.strip! next unless line =~ /^([^#].*): (.+)/ z = $1, $2 bid = cachetext.scan(/#{z[0]} (.*)/)[0] unless bid bid = `osascript -e 'id of app "#{z[0]}"'`.chomp next unless bid File.open(cachefile, "a") { |f| f.puts(z[0] + " " + bid) } end z[1].strip.split(" ").each do |e| if e =~ /(.+):\/\/$/ a << "{LSHandlerURLScheme='#{$1}';LSHandlerRoleAll='#{bid}';}" elsif e.include?(".") a << "{LSHandlerContentType='#{e}';LSHandlerRoleAll='#{bid}';}" else a << "{LSHandlerContentTag='#{e}';LSHandlerContentTagClass=\ 'public.filename-extension';LSHandlerRoleAll='#{bid}';}" end end end system("defaults", "write", "com.apple.LaunchServices", "LSHandlers", "(" + a.join(",") + ")") `defaults write com.apple.LaunchServices LSQuarantine -bool false` 

Lsapps.txt

 NetNewsWire Lite: feed:// public.rss iCal: icaltodo icalevent Google Chrome: chrome:// Safari: public.html TextEdit: txt text md markdown csv TextMate: public.shell-script public.unix-executable public.script ssh:// xml plist dict css rst tex sh pl py rb gemspec php js java chm conf bash opml as cfm cfml class coffee ctp erb rhtml haml less msass scss yaml rd VLC: avi mpg flv mkv mp4 flac 3gp The Unarchiver: rar Skim: pdf iChm: chm AppleScript Editor: scpt Sequential: png jpg 

Puede cambiar qué aplicación abre todos los AVIs con bastante facilidad, no requiere scripts. Encuentre un archivo AVI y obtenga información sobre él. Esto le mostrará la información del archivo. Seleccione el programa que desea abrir los archivos, luego haga clic en el botón "Cambiar todo …". Esto le pedirá que cambie la asociación predeterminada. Introduzca aquí la descripción de la imagen

Al igual que un pequeño punto, bifurcaciones de recursos no se están eliminando, pero los códigos del creador son. Como tal, los sistemas Mac OS más nuevos tienen un sistema más flexible para trabajar cómo abrir archivos. Se supone que las aplicaciones funcionan en archivos que no tienen bifurcaciones de recursos, pero algunas aplicaciones todavía las utilizan.