{"id":186,"date":"2013-01-13T22:50:01","date_gmt":"2013-01-13T20:50:01","guid":{"rendered":"http:\/\/osxadmin.cz\/?p=186"},"modified":"2021-01-10T17:43:10","modified_gmt":"2021-01-10T15:43:10","slug":"os-x-defaults","status":"publish","type":"post","link":"https:\/\/macadmin.cz\/?p=186","title":{"rendered":"defaults"},"content":{"rendered":"<p>V\u0161echny sofistikovan\u011bj\u0161\u00ed aplikace pot\u0159ebuj\u00ed n\u011bjak\u00fd zp\u016fsob, jak si zapamatovat intern\u00ed nastaven\u00ed, kter\u00e9 obnov\u00ed p\u0159i p\u0159\u00ed\u0161t\u00edm spu\u0161t\u011bn\u00ed. Mohou to ud\u011blat po sv\u00e9m a vytvo\u0159it si n\u011bkde na disku konfigura\u010dn\u00ed soubor s vlastn\u00edmi pravidly pro jeho vnit\u0159n\u00ed podobu.<br \/>\nV unixov\u00fdch syst\u00e9mech sta\u010d\u00ed letm\u00fd pohled do adres\u00e1\u0159e <code>\/etc<\/code>. Ka\u017ed\u00fd soubor bude pravd\u011bpodobn\u011b vypadat jinak. Microsoft\u00ed Windows na to jdou diametr\u00e1ln\u011b odli\u0161nou cestou bin\u00e1rn\u00ed datab\u00e1ze (registry). Co OS X? <\/p>\n<h2>Application defaults<\/h2>\n<p>Des\u00edtkov\u00e9 \u0161elmy zd\u011bdily od sv\u00e9ho p\u0159edch\u016fdce (NeXTStepu) specifick\u00fd syst\u00e9m pro ukl\u00e1d\u00e1n\u00ed nastaven\u00ed postaven\u00fd na identifik\u00e1toru aplikace a mapov\u00e1n\u00ed datov\u00fdch typ\u016f CoreFoundation na jejich ekvivalenty v <a href=\"http:\/\/osxadmin.cz\/?p=138\">Property Listu<\/a>. Ka\u017ed\u00e1 spr\u00e1vn\u00e1 aplikace pro OS X by m\u011bla m\u00edt sv\u016fj unik\u00e1tn\u00ed identifik\u00e1tor ve tvaru obr\u00e1cen\u00e9ho DNS z\u00e1znamu dom\u00e9ny pod kontrolou v\u00fdvoj\u00e1\u0159e. Pro sv\u016fj program mohu pou\u017e\u00edt identifik\u00e1tor <code>cz.osxadmin.mujprogram<\/code>, proto\u017ee je to moment\u00e1ln\u011b moje dom\u00e9na \ud83d\ude42 Aplikace m\u00e1 mo\u017enost vyu\u017e\u00edt svoj\u00ed dom\u00e9nu pro ulo\u017een\u00ed n\u011bjak\u00fdch dat na disk. Odpadaj\u00ed trable se strukturou souboru + snadn\u00e9 na\u010d\u00edt\u00e1n\u00ed a ukl\u00e1d\u00e1n\u00ed zajist\u00ed CF API.<br \/>\n<!--more--><br \/>\nProgramov\u00e1n\u00ed v CF frameworku p\u0159enech\u00e1m jin\u00fdm a v tomto postu se zam\u011b\u0159\u00edm na pr\u00e1ci s aplika\u010dn\u00edm nastaven\u00edm pomoc\u00ed n\u00e1stroje <code>defaults<\/code>. V\u011bt\u0161ina m\u00edrn\u011b pokro\u010dil\u00fdch u\u017eivatel\u016f Maca se s n\u00edm pravd\u011bpodobn\u011b ji\u017e n\u011bkdy setkala, kdy\u017e ho copy&#038;paste vkl\u00e1dala do termin\u00e1lu, aby zm\u011bnila n\u011bjak\u00e9 skryt\u00e9 nastaven\u00ed syst\u00e9mu.<\/p>\n<h2>Dom\u00e9ny a data<\/h2>\n<p><code>defaults domains | tr ' ' '\\n'<\/code><br \/>\nVyp\u00ed\u0161e v\u0161echny dom\u00e9ny se kter\u00fdmi lze p\u0159\u00edmo manipulovat.<\/p>\n<p><a href=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.33.31.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.33.31.png\" alt=\"defaultsdomains\" width=\"472\" height=\"396\" class=\"aligncenter size-full wp-image-201\" srcset=\"https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.33.31.png 472w, https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.33.31-300x251.png 300w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/a><\/p>\n<p><code>defaults read com.apple.Finder<\/code><br \/>\nZobraz\u00ed zform\u00e1tovan\u00fd (o n\u011bco \u010ditelen\u011bj\u0161\u00ed ne\u017e xml) obsah konfigura\u010dn\u00edho souboru pro Finder. Tato dom\u00e9na odpov\u00edd\u00e1 souboru <b>com.apple.Finder.plist<\/b> v knihovn\u011b u\u017eivatele.<\/p>\n<p><a href=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-22.16.55.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-22.16.55.png\" alt=\"defaultsrad\" width=\"472\" height=\"354\" class=\"aligncenter size-full wp-image-191\" srcset=\"https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-22.16.55.png 472w, https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-22.16.55-300x225.png 300w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/a><\/p>\n<p>Plisty s nastaven\u00edm program\u016f najdete v <b>~\/Library\/Preferences\/<\/b> nebo <b>~\/Library\/Containers<\/b> pro sandboxovan\u00e9 aplikace. <\/p>\n<h2>Glob\u00e1ln\u00ed dom\u00e9na<\/h2>\n<p>Vedle dom\u00e9n jednotliv\u00fdch aplikac\u00ed existuje i spole\u010dn\u00fd glob\u00e1ln\u00ed  prostor. Fyzicky se tato data nach\u00e1z\u00ed v souboru <b>~\/Library\/Preferences\/.GlobalPreferences.plist<\/b><\/p>\n<p>P\u0159i pr\u00e1ci s glob\u00e1ln\u00edm prostorem je pot\u0159eba <code>defaults<\/code>  dodat up\u0159s\u0148uj\u00edc\u00ed argument. Mo\u017enost\u00ed z\u00e1pisu je v\u00edce: <code>-g | -globalDomain | NSGlobalDomain<\/code>.<br \/>\nP\u0159\u00edklad: <code>defaults read NSGlobalDomain<\/code>. <\/p>\n<h2>Local Library<\/h2>\n<p>Vedle nastaven\u00ed konkr\u00e9tn\u00edho u\u017eivatele je tu je\u0161t\u011b lok\u00e1ln\u00ed knihovna spole\u010dn\u00e1 pro v\u0161echny <b>\/Library<\/b> (a mnoho dal\u0161\u00edch m\u00edst, kde potk\u00e1te property list). Pokud chcete vyu\u017e\u00edt <code>defaults<\/code> k upraven\u00ed plistu v n\u00ed, mus\u00edte uv\u00e9st celou cestu k souboru -><br \/>\n<code>defaults read \/Library\/Preferences\/com.apple.security.plist<\/code><br \/>\n<code>defaults read \/Library\/Preferences\/.GlobalPreferences.plist<\/code><br \/>\n(Glob\u00e1ln\u00ed prostor pro v\u0161echny u\u017eivatele)<\/p>\n<h2>\u010c\u00edst<\/h2>\n<p><code>defaults read dom\u00e9na|plist<\/code> &#8211; komletn\u00ed obsah dom\u00e9ny\/plistu<br \/>\n<code>defaults read dom\u00e9na|plist kl\u00ed\u010d<\/code> &#8211; konkr\u00e9tn\u00ed informace podle kl\u00ed\u010de<br \/>\n<code>defaults read-typu dom\u00e9na|plist kl\u00ed\u010d<\/code> &#8211; datov\u00fd typ <\/p>\n<p><a href=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.35.02.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.35.02.png\" alt=\"defaultsraed\" width=\"528\" height=\"130\" class=\"aligncenter size-full wp-image-202\" srcset=\"https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.35.02.png 528w, https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.35.02-300x73.png 300w, https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.35.02-500x123.png 500w\" sizes=\"auto, (max-width: 528px) 100vw, 528px\" \/><\/a><\/p>\n<h2>Zapsat<\/h2>\n<p><code>defaults write dom\u00e9na|plist kl\u00ed\u010d data<\/code><br \/>\nDefaultn\u011b jsou data br\u00e1na jako \u0159et\u011bzec. Jin\u00fd datov\u00fd typ je nutn\u00e9 specifikovat p\u0159\u00edpana\u010dem:<br \/>\n<code>-string -data -int -float -bool -date -array -dict<\/code><br \/>\nDo existuj\u00edc\u00edch pol\u00ed a slovn\u00edk\u016f lze p\u0159idat dal\u0161\u00ed polo\u017eky p\u0159ep\u00edna\u010di:<br \/>\n<code>-dict-add -array-add<\/code><\/p>\n<p><a href=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.41.09.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.41.09.png\" alt=\"defaultswrite\" width=\"528\" height=\"396\" class=\"aligncenter size-full wp-image-204\" srcset=\"https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.41.09.png 528w, https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.41.09-300x225.png 300w, https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.41.09-500x375.png 500w\" sizes=\"auto, (max-width: 528px) 100vw, 528px\" \/><\/a><\/p>\n<h2>Smazat<\/h2>\n<p><code>defaults delete dom\u00e9na|plist<\/code> &#8211; sma\u017ee dom\u00e9nu\/plist. Samotn\u00fd <\/code> z\u016fstane zachov\u00e1n, jeho obsah nikoliv.<br \/>\n<code>defaults delete dom\u00e9na|plist kl\u00ed\u010d<\/code> &#8211; sma\u017ee jen specifikovan\u00fd key-value p\u00e1r.<\/p>\n<h2>Z\u00e1v\u011brem<\/h2>\n<p><code>defaults<\/code> hraje d\u016fle\u017eitou roli v shell-skriptov\u00e1n\u00ed pro OS X. \u010casto m\u016f\u017ee b\u00fdt pot\u0159eba vyt\u00e1hnou z plistu n\u011bjakou hodnotu, na z\u00e1klad\u011b kter\u00e9 se skript rozhodne, co bude d\u011blat d\u00e1l. Nen\u00ed v\u016fbec na \u0161kodu pomoc\u00ed defaults ukl\u00e1dat nastaven\u00ed samotn\u00e9ho skriptu (pokud je ur\u010den pouze pro OS X) a vyhnout se tak psan\u00ed funkc\u00ed pro <a href=\"http:\/\/cs.wikipedia.org\/wiki\/Syntaktick\u00e1_anal\u00fdza\">parsov\u00e1n\u00ed<\/a> konfigur\u00e1ku.<\/p>\n<p>Zrada p\u0159ich\u00e1z\u00ed, pokud chcete upravovat v\u00edce\u00farov\u0148ov\u00fd plist (slovn\u00edky a pole zano\u0159en\u00e9 v sob\u011b). Na ty <code>defaults<\/code> nesta\u010d\u00ed a nezb\u00fdv\u00e1 ne\u017e s\u00e1hnout po n\u00e1stroji <a href=\"http:\/\/stackoverflow.com\/questions\/12786464\/defaults-write-help-mac\">PlistBuddy<\/a>.<\/p>\n<p>Dal\u0161\u00ed inforamce v manu\u00e1lov\u00e9 str\u00e1nce -> <code>man defaults<\/code><\/p>\n<h2>Bonus: Secrets<\/h2>\n<p>Uvnit\u0159 property list\u016f r\u016fzn\u00fdch syst\u00e9mov\u00fdch komponent \u010dasto v\u00fdvoj\u00e1\u0159i &#8220;zapomn\u011bli&#8221; nastavovac\u00ed prom\u011bnn\u00e9, kter\u00e9 nemaj\u00ed \u017e\u00e1dn\u00e9 p\u0159ep\u00edn\u00e1tko v GUI. V\u011bt\u0161inou jde o drobnosti, ale najde se tam mnoho vylo\u017een\u011b \u0161ikovn\u00fdch nastaven\u00ed. Mezi moje obl\u00edben\u00e9 pat\u0159\u00ed mo\u017enost vypnout otravnou animaci p\u0159i otev\u0159en\u00ed nov\u00e9ho okna aplikace:<br \/>\n<code>defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO<\/code><br \/>\nU\u017eivatel\u00e9 na\u0161li skryt\u00fdch nastaven\u00ed pom\u011brn\u011b velk\u00e9 mno\u017estv\u00ed, proto p\u0159ijde vhod aplikace <a href=\"http:\/\/secrets.blacktree.com\">Secrets<\/a> v podob\u011b panelu do System Preferences , kter\u00e1 v nich um\u00ed vyhled\u00e1vat&#8230;<\/p>\n<p><a href=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.55.33.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/osxadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.55.33.png\" alt=\"defaultssecrets\" width=\"696\" height=\"591\" class=\"aligncenter size-full wp-image-208\" srcset=\"https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.55.33.png 696w, https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.55.33-300x254.png 300w, https:\/\/macadmin.cz\/wp-content\/uploads\/Screen-Shot-2013-01-13-at-23.55.33-500x424.png 500w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>V\u0161echny sofistikovan\u011bj\u0161\u00ed aplikace pot\u0159ebuj\u00ed n\u011bjak\u00fd zp\u016fsob, jak si zapamatovat intern\u00ed nastaven\u00ed, kter\u00e9 obnov\u00ed p\u0159i p\u0159\u00ed\u0161t\u00edm spu\u0161t\u011bn\u00ed. Mohou to ud\u011blat po sv\u00e9m a vytvo\u0159it si n\u011bkde na disku konfigura\u010dn\u00ed soubor s vlastn\u00edmi pravidly pro jeho vnit\u0159n\u00ed podobu. V unixov\u00fdch syst\u00e9mech sta\u010d\u00ed letm\u00fd pohled do adres\u00e1\u0159e \/etc. Ka\u017ed\u00fd soubor bude pravd\u011bpodobn\u011b vypadat jinak. Microsoft\u00ed Windows na to &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/macadmin.cz\/?p=186\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;defaults&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4,9],"tags":[],"class_list":["post-186","post","type-post","status-publish","format-standard","hentry","category-macos","category-shell"],"_links":{"self":[{"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/posts\/186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/macadmin.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=186"}],"version-history":[{"count":22,"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/posts\/186\/revisions"}],"predecessor-version":[{"id":274,"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/posts\/186\/revisions\/274"}],"wp:attachment":[{"href":"https:\/\/macadmin.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/macadmin.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/macadmin.cz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}