Comment répertorier toutes les clés .plist disponibles sur une certaine application de domaine par commande par défaut?

17

Je veux connaître toutes les clés (liste de propriétés) disponibles sur certaines applications de domaine, par exemple, je pourrais lister les clés disponibles com.apple.docken entrant cette commande:

$ defaults read com.apple.dock

mais en quelque sorte, la sortie de cette commande n'a montré que la clé de la liste des propriétés actives, et pourtant pas toutes les clés disponibles pour com.apple.docky être répertoriées.

Quelqu'un peut m'aider à ce sujet?

wongacid
la source
Cela vous dérange si je reformule cela. Vous posez des questions sur l'outil qui écrit les messages et non sur la façon de désosser le programme qui lit les messages. Par défaut, le programme ignore tout ce que vous mettez par défaut qu'il ne s'attendait pas à voir. Vous pouvez intégrer Shakespeare dans les préférences du Finder et cela ne ferait heureusement rien tant qu'il s'agissait d'un plist XML valide une fois écrit dans le fichier.
bmike
@bmike Je m'en rends compte. Ce qui m'intéressait, c'était la liste des valeurs que l'application utilise réellement. J'ai pensé qu'il pourrait y avoir une liste complète cachée quelque part dans un fichier de configuration principal dans Apps.
awesomo
La liste de valeurs n'existe que dans le code source de chaque programme. Avez-vous un programme qui vous intéresse? Une fois compilées, les clés de chaîne dans le binaire sont encodées et toutes mélangées avec les autres chaînes. Rien n'empêche l'auteur d'un programme d'inclure une liste car elle pourrait facilement être ajoutée au dossier Contents / Resources qui existe dans une application donnée. En pratique, cela n'est pas largement fait.
bmike
Vous pouvez également différencier la sortie de defaults readpour trouver les clés des préférences normales ou utiliser la CFPreferencesCopyValueméthode dans gdb. Voir Comment explorer plus de réglages d'écriture par défaut sur OS X? - Super utilisateur .
Lri
Vous pouvez également différencier la sortie de defaults readpour trouver les clés des préférences normales, exécuter des chaînes sur les binaires des frameworks ou utiliser la CFPreferencesCopyValueméthode dans gdb. Voir Comment explorer plus de réglages d'écriture par défaut sur OS X? - Super utilisateur .
Lri

Réponses:

7

Ce n'est pas une tâche triviale, si je me souviens bien, les gens exécutent l' stringsutilitaire sur la ligne de commande contre une application et recherchent des éléments qui correspondent à une structure similaire à com.domain.FeatureName. (com.apple.iTunes, ch.cyberduck.CyberDuck, com.panic.Coda, etc.)

Le moyen le plus simple de gérer ces remplacements est d'utiliser un volet de préférences système du nom de Secrets . Cette utilisation installe un volet Préférences dans les Préférences Système et vous offre une interface pour choisir une application et modifier ses paramètres selon vos préférences.

Jason Salaz
la source
J'adorerais que vous répondiez à cela également - apple.stackexchange.com/questions/19899/… - les chaînes sont le moyen le plus convivial pour tenter cette ingénierie inverse des clés pour les utilisateurs finaux.
bmike
6

Trouvé un site Web dédié à ces commandes d'écriture par défaut de Mac OS X, quelques commandes pratiques pour Mac OS X Lion & Mountain Lion.

http://www.defaults-write.com

Brandon West
la source
5

Il n'y a vraiment pas de notion de clés "disponibles". L'application est libre de lire les clés de son choix. La plupart des gens découvrent les clés par défaut "secrètes" en utilisant stringspour parcourir le binaire de l'application pour voir quelles clés il va essayer de lire.

jtbandes
la source
oui, c'est exactement ce que je veux trouver, des clés par défaut "secrètes". Pourriez-vous expliquer davantage la clé "secrète"? C'est très utile s'il y a un exemple. Merci beaucoup.
wongacid
1
De nombreux exemples de bien connus sont répertoriés à secrets.blacktree.com
jtbandes
Merci!! faites-moi savoir si vous aviez un autre excellent lien sur ce genre d'informations. :-)
wongacid
4

La plupart des gens ici veulent tout faire via la ligne de commande, mais j'ai une suggestion plus pratique.

Ces deux programmes décrits ci-dessous répertorient une grande partie des fonctions personnalisables connues en ligne de commande des applications Mac OS X, triées par application ou fonction. L'avantage est que la liste des fonctions vous est fournie; vous n'avez pas besoin d'aller sur Google pour découvrir quelles sont les fonctions et les séquences de ligne de commande nécessaires pour modifier chacune d'elles.

Il existe plusieurs logiciels gratuits ou applications commerciales qui fournissent une interface utilisateur graphique répertoriant la plupart des options de personnalisation qui peuvent être modifiées via le terminal. Pour activer l'une de ces fonctionnalités, en utilisant ces programmes que je décris, vous le faites dans l'interface graphique de l'application et vous n'avez pas du tout besoin d'utiliser la ligne de commande. Vous n'avez besoin de rien savoir defaults writeni de .plistfichiers.

Deux de ces applications sont:

TinkerTool

qui est gratuit, et

MacPilot

qui vient d'être mis à jour avec de nouvelles fonctionnalités Lion et coûte 20,00 $ US.

Ce sont des programmes que je possède et utilise.

Téléchargez le TinkerTool gratuit et la version d'essai de MacPilot et cliquez sur tous les onglets pour voir toutes les nombreuses fonctionnalités que vous pouvez personnaliser. Il y en a trop pour les énumérer ici.

entrez la description de l'image ici

entrez la description de l'image ici

Mise à jour

Le développeur Frederik Wiker a publié des applications gratuites (dons acceptés) pour créer des personnalisations d'écriture par défaut spécifiques à Lion et Mountain Lion; beaucoup d'entre eux fonctionnent également très bien pour Mavericks (Mac OS X 10.9).

Téléchargez-les et voyez quelles personnalisations sont à votre disposition.

Lion Tweaks

Mountain Tweaks

entrez la description de l'image ici


la source
Merci pour les recommandations. J'apprécie l'approche alternative.
awesomo
Vous devriez vraiment accepter cette réponse de Wheat. Il a des années-lumière devant moi.
Jason Salaz
3

Peut-être qu'une explication assez longue de la façon dont les choses fonctionnent pourrait clarifier votre recherche et celle des autres pour ces préférences "cachées".

La plupart des applications liront leurs fichiers de préférences une fois au démarrage et l' defaultsoutil existe pour s'assurer que les fichiers de préférences sont une structure valide et ne contiennent pas d'erreurs de syntaxe. (Il permet également au système de modifier la façon dont les clés sont stockées et les utilisateurs n'ont pas à connaître les détails de l'implémentation et peuvent utiliser la commande par défaut pour effectuer toutes les opérations de lecture et d'écriture.)

Les guides de style et de grammaire de la langue anglaise garantissent que les mots que je tape ici sont significatifs pour le locuteur anglais moyen, et la normalisation du système par défaut définit un cadre pour que tout le monde sache à quoi s'attendre. Le formatage de la liste de préférences est beaucoup plus rigide et mathématique qu'un langage humain, mais les concepts sont similaires.

Le système par défaut de l'utilisateur Mac OS X est un magasin de valeurs clés (ou une base de données si vous préférez).

Vous pouvez écrire n'importe quoi dans ces magasins de valeurs clés de préférence, un sonnet Shakespeare, des chiffres, une liste de courses. Si le programme est codé pour rechercher une clé spécifique, il lira la valeur stockée. S'il ne recherche pas cette clé, sa valeur est inutilisée et non lue.

Cela vous indique comment savoir quelles valeurs un programme spécifique peut rechercher au démarrage. Cela se résume à vous devez soit connaître la valeur ou effectuer une rétro-ingénierie du programme.

De nombreux outils existent pour examiner un programme et essayer de comprendre quelles chaînes (les clés) sont incorporées, telles que stringset dbx / lldb ainsi que la liaison dans votre propre bibliothèque pour vider la structure interne d'un programme spécifique.

Dans la pratique, certaines choses qui sont nécessaires pour les tests sont ajoutées de cette manière «cachée» afin que vous ne puissiez pas regarder par-dessus le volet des préférences du programme et voir ces nouvelles fonctionnalités qui ne sont pas prêtes pour une large utilisation. D'une certaine manière, il n'est pas du tout simple d'obtenir une liste complète à moins que l'auteur de ce programme ne publie le code source ou ne documente ces paramètres publiquement.

Lorsque vous lisez le magasin par défaut pour une application particulière - vous lisez simplement le "livre" qui a été écrit lorsque l'application a créé son ensemble par défaut ou les paramètres fournis avec Mac OS X. C'est pourquoi vous ne recevez pas l'exhaustivité liste des choses qu'il est réaliste de changer avec cette application.

bmike
la source
2

Pour autant que je sache, une application ne stockera une nouvelle clé que si elle diffère de ses valeurs par défaut, du moins c'est ce que font mes applications. Ce n'est pas quelque chose qui peut être contrôlé facilement car il fait partie du cadre des valeurs par défaut de l'utilisateur, car l'application indique uniquement aux valeurs par défaut de l'utilisateur ce dont elle a besoin et elle s'occupe du reste. Malheureusement, je ne pense pas que les informations que vous recherchez seront faciles à obtenir. Cela pourrait être bien d'avoir accès à cela.

Fred
la source