15 votes

Changer l'application par défaut (pour une extension de fichier) via script/ligne de commande ?

Existe-t-il un moyen de définir l'application par défaut pour une extension de fichier via un script d'Apple, une commande en ligne de commande (du type defaults write [...] ).

Je sais que vous pouvez le modifier manuellement via le panneau d'information ou en utilisant la fonction RCDefaultApp mais comme je dois configurer de nombreuses machines et comptes d'utilisateurs, j'aimerais trouver un moyen d'automatiser le processus.

19voto

shsteimer Points 8749

Launch Services est responsable des associations de fichiers par défaut.

Disons que je veux changer tous les fichiers texte pour qu'ils s'ouvrent dans Sublime Text 2.

Tout d'abord, j'ai besoin du kMDItemCFBundleIdentifier pour Sublime Text 2. Je peux utiliser mdls pour obtenir cette information :

> mdls /Applications/Sublime\ Text\ 2.app 
_kTimeMachineIsCreationMarker  = 1
_kTimeMachineNewestSnapshot    = 4001-01-01 00:00:00 +0000
_kTimeMachineOldestSnapshot    = 2012-02-22 03:49:19 +0000
kMDItemCFBundleIdentifier      = "com.sublimetext.2"
....snip....

Je peux trouver la valeur du type de contenu pour les fichiers texte en inspectant l'un d'entre eux avec mdls :

> mdls test.txt 
kMDItemContentCreationDate     = 2012-03-25 04:18:50 +0000
kMDItemContentModificationDate = 2012-03-25 04:18:50 +0000
kMDItemContentType             = "public.plain-text"
kMDItemContentTypeTree         = (
    "public.plain-text",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDateAdded               = 2012-03-25 04:18:50 +0000
kMDItemDisplayName             = "test.txt"
kMDItemFSContentChangeDate     = 2012-03-25 04:18:50 +0000
kMDItemFSCreationDate          = 2012-03-25 04:18:50 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "test.txt"
kMDItemFSNodeCount             = 975
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 975
kMDItemFSTypeCode              = ""
kMDItemKind                    = "Plain Text"
kMDItemLogicalSize             = 975
kMDItemPhysicalSize            = 4096

Dans ce cas, je vais changer l'application par défaut pour toutes les public.plain-text types.

Pour ce faire, je tape :

defaults write com.apple.LaunchServices LSHandlers -array-add '{ LSHandlerContentType = \"public.plain-text\"; LSHandlerRoleAll = \"com.sublimetext.2\"; }'

Si je veux que les changements prennent effet, je dois redémarrer les services de lancement comme suit :

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user

Et pour rendre à César ce qui appartient à César, j'ai appris cette approche à partir de cette question et réponse de stackoverflow.com : https://stackoverflow.com/questions/9172226/how-to-set-default-application-for-specific-file-types-in-mac-os-x

8voto

Fuzzy Purple Monkey Points 702

duti est un utilitaire shell qui permet d'utiliser un fichier texte pour configurer les applications par défaut pour les types de fichiers et les schémas URL.

Par exemple, enregistrez un fichier comme ceci ~/.duti :

com.gnu.Emacs public.plain-text all 
com.gnu.Emacs public.unix-executable all
org.videolan.vlc .mkv all

Ensuite, exécutez duti ~/.duti .

Vous pouvez installer duti avec brew install duti ou en exécutant wget https://github.com/fitterhappier/duti/archive/duti-1.5.2.tar.gz;tar -xf duti-1.5.2.tar.gz;cd duti-duti-1.5.2;./configure;make;sudo make install .

0voto

Ce billet sur SuperUser contient également des informations utiles. Pour en savoir plus sur LaunchServices, Voici un lien à la documentation des développeurs d'Apple à ce sujet. Allez à la section intitulée LSSetDefaultRoleHandlerForContentType (page 48).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X