Как сканировать параметры приложения в OSX

Как сканировать параметры приложения в OSX

Я иногда вижу howto, которые позволяют вам изменять функциональность некоторых приложений на OSX с помощью defaultsкомандной строки. Я знаю, что люди находят эти директивы конфигурации, сканируя приложение. Как это делается?

исправить: мог бы поклясться, что это было option. Моя вина.

решение1

Вы можете использовать defaultsне только для изменения этих значений, но и для их перечисления.

defaults read -gпоказывать "глобальные" параметры, а defaults read com.company.ProgramNameпоказыватьзначения по умолчанию(т.е. параметры конфигурации) для конкретной программы. В этом контексте, com.company.ProgramNameявляетсяидентификатор пакетапрограммы, например com.apple.TextEditили com.culturedcode.Things.Подробнее об этом.


Например, запустите defaults read com.apple.Finderи вы найдете строку, которая говорит AppleShowAllFiles = FALSEили что-то похожее. Теперь будьте авантюрны и запустите defaults write com.apple.Finder AppleShowAllFiles -boolean TRUEи перезапустите Finder, чтобы посмотреть, что произойдет.

Для получения дополнительной информации об использовании defaultsвведите , man defaultsчтобы просмотреть документацию. Это может стать довольно сложным, и некоторые вещи, связанные со списками и словарями, практически невозможны. Как только вы доберетесь до этого, посмотрите /usr/libexec/PlistBuddy— на этом сайте есть несколько примеров использования, просто используйте функцию поиска.


Узнать идентификатор пакета конкретной программы:

Чтобы узнать, что использует ваше приложениеcom.vendor.yourapp, щелкните правой кнопкой мыши по пакету приложений, выберитеПоказать содержимое упаковки, перейдите кСодержание, открытьИнформация.plistс помощью текстового редактора или лучше редактора списка свойств, напримерРедактор списка объектов недвижимостиилиXкод 4(оба являются частью инструментов разработчика Apple) и найдитеCFBundleIdentifierили т.п.


Другой инструмент, который вы можете использовать, это strings. Он отобразит все строки (т.е. потенциально полезные последовательности символов) в двоичном файле. Обратите внимание, что это даеттоннложных срабатываний, поскольку также отображаются вызовы функций Objective-C, а также обычный вывод, отображаемый в пользовательском интерфейсе.


Секретытакже предлагает базу данных скрытых настроек для OS X, отсортированных по приложению. Их можно изменить с помощью defaults. Для вашего удобства вы также можете загрузить Preference Pane с веб-сайта, что позволяет вам изменять их через ваши System Preferences.

решение2

#!/bin/sh

# find key names in ~/Library/Preferences/`osascript -e 'id of app "iTunes"'`.plist
defaults read com.apple.iTunes | ruby -e 'puts STDIN.read.scan(/^    \"?([a-zA-Z_.\-]+?)\"? /)' > keys.txt

# extract identifiers from a binary
# (the output is tens of thousands of lines even after grepping)
strings - /Applications/iTunes.app/Contents/MacOS/iTunes | egrep "^[a-zA-Z][a-zA-Z_.\-]{7,}$" | ruby -e 'puts STDIN.read.split("\n").uniq' > strings.txt

# the identifiers for preferences often appear near each other
for x in `cat /0/keys.txt`; do
    grep -C 10 "$x" strings.txt
done | ruby -e 'puts STDIN.read.split("\n").uniq' > strings2.txt

Другой метод с использованием отладчика GNU:arcticmac.home.comcast.net/~arcticmac/tutorials/gdbFindingPrefs.html

Связанный контент