Como explorar mais padrões, escrever ajustes no OS X?

13

Eu gostaria de explorar alguns novos ajustes que podem ser feitos pelo comando "defaults write" no OS X (ML).

O que posso fazer para descobri-las eu mesmo, em vez de procurar on-line por ajustes conhecidos?

Tom S
fonte

Respostas:

20

Isenção de responsabilidade: sou o autor de ~/.osxuma coleção de defaults writeconfigurações . Estas são as técnicas que eu uso para encontrar configurações. Deixe-me saber se existe um método melhor / mais fácil que não mencionei aqui!


Para a maioria das configurações não ocultas, é assim que você pode encontrar as chaves de preferência corretas no Terminal.app:

defaults read > a
# Change the setting
defaults read > b
diff a b

Para configurações ocultas, fica mais complicado. Você pode usar o stringsutilitário de linha de comando em qualquer executável binário e ver se algum texto resultante se parece com uma chave de preferência. Por exemplo:

strings /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder

Aqui está outro exemplo que examinará todos os .frameworkarquivos /System/Library/Frameworks/e filtrará um pouco a saída:

strings /System/Library/Frameworks/*.framework/Versions/Current/* /System/Library/Frameworks/*/Frameworks/*/Versions/Current/* 2> /dev/null | grep -E '^[a-zA-Z0-9_.-]{10,80}$' | sort | uniq

Há também uma ferramenta chamada GDB que pode ser usada para encontrar preferências ocultas.

Mathias Bynens
fonte
11
Muito obrigado e não acredito que você está me respondendo! Eu sabia da sua boa lista no github há muito tempo atrás. Muito obrigado! Vai tentar isso agora.
Tom S
2
@Lri FWIW, eu fiz uma instalação limpa do Mountain Lion na semana passada e defaults read;funciona bem aqui.
Mathias Bynens 31/07/2012
0

Outro comando de strings:

for f in $(mdfind kMDItemContentType==public.unix-executable -onlyin /System/Library/); do strings $f 2> /dev/null | grep -E '^[[:alnum:]_.-]{10,80}$' | grep ^Apple | sort -u | sed "s/^/${f##*/} /g"; done

sudo opensnoop -n cfprefsdmostra quais listas de propriedades são modificadas. Você pode usar o fseventer para exibir outras alterações do sistema de arquivos em tempo real.

O padrão tem um subcomando find:

$ defaults find nsquitalw
Found 1 keys in domain 'Apple Global Domain': {
    NSQuitAlwaysKeepsWindows = 1;
}

Os arquivos de cabeçalho geralmente contêm definições para chaves de preferência:

grep PreferenceKey -r ~/Code/Source/WebKit/ | grep '\.h:'
Lri
fonte
-1

O que assumi da sua pergunta é que você deseja explorar ajustes / configurações de um aplicativo. Você pode ler as preferências de um aplicativo com este comando trivial

defaults read NSGlobalDomain

ou

defaults read com.google.Chrome para ler as preferências graváveis ​​do Chrome nos comandos de gravação padrão que você solicitou.

Mr.Shan0
fonte