Salut
langmc
L'utilitaire
defaults appelé avec le verbe
write permet d'éditer les fichiers de préférences
.plist d'une Bibliothèque d'utilisateur avec une syntaxe correcte. Voici un exemple de commande montrant la forme de sa syntaxe :
Bloc de code:
defaults write com.apple.finder AppleShowAllFiles 1
defaults est donc appelé avec le verbe
write pour éditer le fichier
~/Library/Preferences/com.apple.finder.plist afin d'y créer une entrée caractérisée par le binôme suivant :
Bloc de code:
<key>AppleShowAllFiles</key>
<string>1</string>
où la clé (
key) représente l'argument (
AppleShowAllFiles : afficher tous les fichiers) et la chaîne (
string) représente la valeur associée à la clé (
1 =
TRUE = vrai) => après relance du
Finder, les fichiers cachés seront donc affichés.
La commande inverse :
Bloc de code:
defaults write com.apple.finder AppleShowAllFiles 0
éditera le fichier
~/Library/Preferences/com.apple.finder.plist avec l'entrée suivante :
Bloc de code:
<key>AppleShowAllFiles</key>
<string>0</string>
où la valeur
0 de la chaîne =
FALSE = faux => après relance du
Finder, les fichiers normalement proscrits d'affichage pour le Finder seront de nouveau masqués.
Tu peux généraliser au-delà de cet exemple, en comprenant bien que la syntaxe de la commande a donc pour sujet :
defaults (l'utilitaire qui sait éditer les fichiers
.plist en respectant la syntaxe attendue) ; pour verbe
write (éditer) ; pour objet un fichier
.plist énoncé par son intitulé direct sans qu'il soit besoin de mentionner en tête le chemin à la Bibliothèque d'utilisateur, ni en queue l'extension
.plist ; et pour argument enfin la doublette constituée par l'intitulé d'une clé et la valeur (
1 ou
0 -
TRUE or
FALSE) associée.
--------------------
Il faut néanmoins remarquer la chose suivante qui a une importance critique :
- toute commande appelant defaults directement édite automatiquement le fichier .plist correspondant à l'intitulé abrégé dans le dossier des Preferences de la ~/Library exclusivement, càd. de la Bibliothèque du compte de l'utilisateur dont la session est ouverte.
- toute commande invoquant sudo en préalable de defaults n'édite par contre jamais le fichier .plist correspondant de la ~/Library, mais le fichier .plist du dossier des Preferences de la Bibliothèque de l'utilisateur root. Voici le chemin absolu : /private/var/root/Library/Preferences.
Lorsqu'un utilisateur choisit d'éteindre son Mac, sa session se ferme d'abord, mais le Système visite le dossier des
Preferences de la Bibliothèque de
root (quand bien même cette session n'a-t-elle jamais été ouverte graphiquement et quand bien même aucun mot-de-passe d'utilisateur n'a-t-il été défini pour
root) pour le cas où des instructions y seraient recelées susceptibles, par exemple, d'affecter l'extinction ou l'ouverture du Mac.
Je prends un exemple qui le montre : il est possible en préfaçant une commande
defaults de
sudo d'éditer, par exemple le fichier
/private/var/root/Library/Preferences/com.apple.loginwindow.plist en y inscrivant des
hooks : des accroches du processus gestionnaire de la fermeture générale de session et de l'ouverture générale de session. Voici par exemple les 2
hooks que j'ai inscrits comme entrées dans le fichier
/private/var/root/Library/Preferences/com.apple.loginwindow.plist de mon OS «
El Capitan» :
Bloc de code:
<key>LoginHook</key>
<string>/Library/Scripts/mute-off.sh</string>
<key>LogoutHook</key>
<string>/Library/Scripts/mute-on.sh</string>
=> le
LogoutHook agit sur la fermeture générale des sessions graphiques, avant extinction, en activant un script shell
mute-on.sh ramenant le son à
0 afin qu'à l'allumage du Mac le carillon de démarrage ("Chime") soit muet ; le
LoginHook, quant à lui, détermine l'activation d'un script shell
mute-off.sh annulant la suppression du son et le ramenant à sa valeur d'avant la fermeture de toute session d'utilisateur, ce quel que soit l'utilisateur qui ouvre la session, car cette restauration intervient en préalable de toute ouverture de session graphique d'utilisateur.
--------------------
Pour ce qui est d'une liste des arguments que l'on peut passer à
defaults relativement à tel ou tel fichier
.plist : il y faudrait un annuaire, vu le nombre de fichiers
com.apple.[---].plist (relatifs aux différentes applications Apple) et le nombre des entrées qu'on peut y greffer pour chacun, pour activer disons des "préférences de second ordre"...