Не правда ли, когда вам попадался совет, в котором нужно было изменять какую-либо переменную
Например, “defaults read -globalDomain
О поиске недокументированных параметров я говорить не буду, если их нет в соответствующих файлах plist, то нужно копаться в коде программ и размышлять.
Я хочу показать, как можно сопоставить параметр в настройках системы (или программы) значению, доступному через механизм defaults.
Получить полное содержимое всех доменов defaults можно командой:
$ defaults read
Если вы знаете, что ищете, то можно поискать параметр через grep или же открыв результат в текстовом редакторе, и там сделать поиск.
$ defaults read | grep mouse | more "com.apple.mouse.scaling" = 2;
Если же вы не имеете понятия, что именно искать, но знаете, где меняется параметр в настройках, то вам пригодится мой метод.
Пару дней назад Арсений задал мне вопрос о скорости автоповтора при нажатии клавиши на клавиатуре. Эти параметры находятся в System Preferences/Keyboard:
Я захотел найти, как их можно поменять через defaults.
Много лет назад я активно расправлялся с играми под MS DOS, находя счётчики жизни резидентным дебагером (уже не помню его название). Суть сводилась к снятию дампа памяти до изменения счётчика, потом после его изменения и сравнение. Если данных получалось слишком много, то я повторял процедуру. Всё просто.
Здесь применим тот же подход. Снимаю дамп всех параметров:
$ defaults read > dump1.txt
Сдвигаю нужные мне ползунки в настройках. Жду (данные сбрасываются на диск не в ту же секунду, я для гарантии жду секунд 10-20). Снова снимаю дамп:
$ defaults read > dump2.txt
Сравниваем файлы diff’ом и находим нужные нам данные:
$ diff -u dump1.txt dump2.txt - InitialKeyRepeat = 15; - KeyRepeat = 2; + InitialKeyRepeat = 94; + KeyRepeat = 60;
Теперь нужно найти домен, к которому относится параметр, для чего открываем dump1.txt в редакторе и ищем, куда относится InitialKeyRepeat. Я сделал это через grep:
$ cat dump1.txt | grep -250 InitialKeyRepeat | more "Apple Global Domain" = { ...
Домен найден, параметр известен, проверяем:
$ defaults read "Apple Global Domain" KeyRepeat 2 $ defaults read "Apple Global Domain" InitialKeyRepeat 15
Поменять параметр можно так (я не экспериментировал и значение привожу “с потолка”):
$ defaults write "Apple Global Domain" KeyRepeat 3
Вуаля!
Если вас заинтересовала тема defaults, вы можете почитать другие мои статьи на эту тему: