勝手に独り読書会 - その01

何回になるんでしょうね.
つか途中で終わったりして.なんてw

と.

そういえば,こちらに出会って,そうかこういうのあるよねー,とトキメキ.
以来,だらだらしているうちに,とうとう os もヴァージョンアップするんだよなぁ な時期に...

いい加減,このあたりは "とうとう" なので,"そろそろ" やっておかなくちゃ,と思い,
腰を据えて,独り読書会を遂行することに.
独りなので,ペースは勝手.

結構な量があるので,分割しながら,
そして自身の興味関心によって,ムラがでるだろうことを,断っておきます.

基本,やっている設定と ui との関係を把握しておきたい,というのがモチベーションなので,その方向で作業していきます.

ui からって,Property List Editor からすれば,みんな ui からできるじゃん,言う人は見なくていいです.

まえおき

適宜,直接コメント入れながら進めていこう考えています.
各記述の下に入れる.

ui がある場合は,そのコントロールを記載.
無い場合は,"無" ,無いことすらわからない場合は "?" として,続けて一応,何の設定をしているのかわかる限り記載.
この辺りは,免責を挿入しておきます.ここには誤り,過不足があるかもしれません.勿論調べてはいるのですが,"無" はただ単に本人が知らないだけだったり,設定できる所は他にもあったりするかもしれません.*1

各コントロールの表記と,とりあえず.;

  • チェックボックス ... chb
  • ラジオボタン ... rbt
  • プッシュボタン ... pbt
  • ポップアップメニュー ... pmn
  • コンビネイションボックス ... cmb
  • パネル ... pnl
  • スライダー ... sld

コントロールの従属関係は ">" で繋いで,画面遷移があるケースは '-' で繋ぐ.

設定している値は "->".
ui を持っているケースは,その値を.持っていないケースでは,与えている値そのままで,どの状態にしているかを加えておきます.

こんな記載ルールとしておくか.破たんしたらその時また考えるということで.

そしてこれを書いている時点,こんなところです.;

 sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8.4
BuildVersion:   12E55

ゆことで,
今回は,このパラグラフ.

general ui/ux

#!/usr/bin/env bash

# ~/.osx — http://mths.be/osx

# Ask for the administrator password upfront
sudo -v

# Keep-alive: update existing `sudo` time stamp until `.osx` has finished
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &

###############################################################################
# General UI/UX                                                               #
###############################################################################

# Set computer name (as done via System Preferences → Sharing)
sudo scutil --set ComputerName "MathBook Pro"
sudo scutil --set HostName "MathBook Pro"
sudo scutil --set LocalHostName "MathBook-Pro"
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "MathBook-Pro"
###  - ComputerName  ; [システム環境設定],[共有] の [コンピューター名]
###  - HostName      ; (無; ホスト名)
###  - LocalHostName ; [システム環境設定],[共有] の [コンピューター名] > pbt[編集] > [ローカルホスト名]

# Set standby delay to 24 hours (default is 1 hour)
sudo pmset -a standbydelay 86400
### (無; スリープ状態に移行するまでの時間,単位は秒)
### -> スリープ状態に移行するまで 24 時間

# Menu bar: disable transparency
defaults write NSGlobalDomain AppleEnableMenuBarTransparency -bool false
### [システム環境],[デスクトップとスクリーンセーバ] のchb[半透明メニューバー]
### -> "オフ" (半透明にしない)

# Menu bar: show remaining battery time (on pre-10.8); hide percentage
defaults write com.apple.menuextra.battery ShowPercent -string "NO"
defaults write com.apple.menuextra.battery ShowTime -string "YES"
### (略)

# Menu bar: hide the useless Time Machine and Volume icons
defaults write com.apple.systemuiserver menuExtras -array "/System/Library/CoreServices/Menu Extras/Bluetooth.menu" "/System/Library/CoreServices/Menu Extras/AirPort.menu" "/System/Library/CoreServices/Menu Extras/Battery.menu" "/System/Library/CoreServices/Menu Extras/Clock.menu"
### (略; Bluetooth,Wifi,バッテリー,そして時計は,それぞれ [システム環境設定] の [Bluetooth],[ネットワーク],[省エネルギー],そして [日付と時刻] で.他もある)
### -> メニューバーに Bluetooth,Wifi,バッテリー,そして時計を表示.

# Set highlight color to green
defaults write NSGlobalDomain AppleHighlightColor -string '0.764700 0.976500 0.568600'
### [システム環境設定],[一般] の pmn[強調表示色]
### -> [グリーン]

# Set sidebar icon size to medium
defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 2
### [システム環境設定],[一般] の pmn[サイドバーのアイコンサイズ]
### -> [中]

# Always show scrollbars
defaults write NSGlobalDomain AppleShowScrollBars -string "Always"
# Possible values: `WhenScrolling`, `Automatic` and `Always`
### [システム環境設定],[一般] の rbt[スクロールバーの表示]
### -> [常に表示]

# Disable smooth scrolling
# (Uncomment if you’re on an older Mac that messes up the animation)
#defaults write NSGlobalDomain NSScrollAnimationEnabled -bool false
### (略)

# Disable opening and closing window animations
defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false
### (無; ウィンドウが開閉時のアニメーション)
### -> false (アニメーションさせない)

# Increase window resize speed for Cocoa applications
defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
### (無; シート表示のアニメーションスピード)
### -> 0.001 秒 (速くしている)

# Expand save panel by default
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
### (無; 保存ダイアログのデフォルト表示スタイル)
### -> true (常に詳細な情報を開いて表示)

# Expand print panel by default
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
### (略) プリンタ持っていない....というか要らないしw

# Save to disk (not to iCloud) by default
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
### (無; icloud 対応アプリでのファイル保存時のデフォルトを icloud にする)
### -> false (icloud をデフォルト保存先としない)

# Automatically quit printer app once the print jobs complete
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
### (略)

# Disable the “Are you sure you want to open this application?” dialog
defaults write com.apple.LaunchServices LSQuarantine -bool false
### (無; "... 開いてもよろしいですか" を表示する)
### -> false (表示しない)

# Display ASCII control characters using caret notation in standard text views
# Try e.g. `cd /tmp; unidecode "\x{0000}" > cc.txt; open -e cc.txt`
defaults write NSGlobalDomain NSTextShowsControlCharacters -bool true
### (無; ascii 制御文字の表示)
### -> true (表示する)

# Disable Resume system-wide
defaults write NSGlobalDomain NSQuitAlwaysKeepsWindows -bool false
### [システム環境設定],[一般] の chb[アプリケーションを終了して再度開くときにウィンドウを復元]
### -> "オフ" (復元しない)

# Disable automatic termination of inactive apps
defaults write NSGlobalDomain NSDisableAutomaticTermination -bool true
### (無; automatic termination 機能の無効)
### -> true (無効にする)

# Disable the crash reporter
#defaults write com.apple.CrashReporter DialogType -string "none"
### (無; クラッシュリポーターダイアログの表示)
### -> none (表示しない)

# Set Help Viewer windows to non-floating mode
defaults write com.apple.helpviewer DevMode -bool true
### (無; ヘルプの常時前面表示)
### -> true (常時前面表示しない)

# Fix for the ancient UTF-8 bug in QuickLook (http://mths.be/bbo)
# Commented out, as this is known to cause problems when saving files in
# Adobe Illustrator CS5 :(
#echo "0x08000100:0" > ~/.CFUserTextEncoding
### (略)

# Reveal IP address, hostname, OS version, etc. when clicking the clock
# in the login window
sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName
### (無; ログインパネルへの詳細情報出力)
### -> HostName (表示する)

# Restart automatically if the computer freezes
systemsetup -setrestartfreeze on
### (無; マシンがフリーズしたら自動的にリスタート)
### -> on (リスタートする)

# Never go into computer sleep mode
systemsetup -setcomputersleep Off > /dev/null
### [システム環境設定],[省エネルギー] の [バッテリー]/[電源アダプター] の sld[コンピュータのスリープ]
### -> [しない]

# Check for software updates daily, not just once per week
defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1
### (無; アップデートのチェック周期)
### -> 1 (毎日)

# Disable Notification Center and remove the menu bar icon
launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist
### (無; 通知センター)
### -> unload (使わない)

以下,メモ.

Set computer name (as done via System Preferences → Sharing)

# Set computer name (as done via System Preferences → Sharing)
sudo scutil --set ComputerName "MathBook Pro"
sudo scutil --set HostName "MathBook Pro"
sudo scutil --set LocalHostName "MathBook-Pro"
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "MathBook-Pro"

今更に知ったことなのですが,HostName については ui を持たないのだそう.

その背景についてはこの辺りが参考になりました.;

がしっと書いておりました.;

だが、システム環境設定のパネルから操作できない項目もある。その代表例が「HOSTNAME」で、インストール直後は「-AUTOMATIC-」に設定されている。

この捉え方について結構,明快な感じだったのは,こちら.;

OS X の hostname は (1) DHCP サーバーから供給された名前
(2) DNS の逆引きで出てきた名前
(3) 「共有」設定で入力した名前
(4) 'localhost'
の順で決定されます。
このケースでは、(1) か (2) で名前が決まってしまい、(3) の設定は無視される形になったのでしょう。

そして,hostname の固定は,;

ホスト名の固定化は、ホスト名が変わると異なるバックアップファイルを作成してしまうTime Machineへの対策となる。2ヵ所以上の場所でバックアップしている場合には、固定しておいたほうがいいだろう。

だそう.なるほど.

で.
これら以外の参照したサイトで,しばしば,その扱いが locakhostname とごっちゃにした記載のものが多く,何か迷ってちょっと気持ち悪かったです.
本当のところは?

ちなみに.
この設定は,ユーザ名の設定をしているのではない,と言うこと,お間違えの無きよう.

ちなみに,ユーザ名の変更方法はこんな,とメモ ;

Set standby delay to 24 hours (default is 1 hour)

# Set standby delay to 24 hours (default is 1 hour)
sudo pmset -a standbydelay 86400

これも初めて知ったことがあった.

スリープには 3 つあるんですって.

pmset コマンドの man 読んでいて,ここでの standby 引数 "standbydelay" の説明で「?」と ;

standbydelay specifies the delay, in seconds, before writing the hibernation image to disk and powering off memory for Standby.

"hibernation" ? 知らない言葉なので(笑,最初何言っているか分からず知らてべいたら, スリープには 3 つある,ということを知る.

詳細はこの辺り? ;

"hibernation",ハイバネイション.

万が一の電源断に備えてメインメモリの内容をHDDに書き出すが、スリープ中もメインメモリの内容を保持し続ける。

その内容の書き出し場所は,;

ハイバーネーションのための「/var/vm/sleepimage」ファイル

どんどん膨らんでいくんだそう.怖いですねえ...

Disable the “Are you sure you want to open this application?” dialog

# Disable the “Are you sure you want to open this application?” dialog
defaults write com.apple.LaunchServices LSQuarantine -bool false

これがですね.

実は,[システム環境設定],[セキュリティとプライバシー] の pnl[一般] > rbt[ダウンロードしたアプリケーションの実行許可] > rbt[すべてのアプリケーションを許可] だとテッキリ思い込んでいたのですが...

なぁーんか違うっぽいんですよね.
この方法で確認しての話ですが.

こういうのあります.;

ということで.

Restart automatically if the computer freezes

# Restart automatically if the computer freezes
systemsetup -setrestartfreeze on

この辺り見て「ん?」と思ったのですが,10.7 lion の頃は,[システム環境設定] の [省エネルギー] に [コンピュータが操作不能になった場合に自動的に再起動] とな感じで ui コントロールとしてあった?

Never go into computer sleep mode

# Never go into computer sleep mode
systemsetup -setcomputersleep Off > /dev/null

この辺りで,ちょいと眩暈(笑

あれ? スリープ関連の設定って pmset でもできたっけよね.

あるひとつの設定に対して,口が n 個あるってこと?

ある人(時)は,pmsetstandbydelay を使い,
別のある人(時)は,systemusetup -setsleep を使う,ということがあり得る?
pmset のターゲットは [システム環境設定] の [省エネルギー] への挙動で,
systemsetup はそれだけでない,という違いはあったとしても...

これが "真" だとしたら...

その摘み分けって?

こういうの弱いん.

って,実際に調べてみればいいんだけど,...まぁ,何時かの自分にウッチャル(笑

で,今回学んだこと.

systemsetup -printCommands

とすると,使えるコマンドをリストアップしてくれるんだそう.
ほう.

おわりに最初の,やっぱり

ワスレルノ,コワイ...

#!/usr/bin/env bash

# ~/.osx — http://mths.be/osx

# Ask for the administrator password upfront
sudo -v

# Keep-alive: update existing `sudo` time stamp until `.osx` has finished
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &

のでメモさせていただきます.

zsh は,系統発生的(w に bash を拡張した*2 もんらしいから,んまま使える.という認識でよろしい?

sudo -v, -n

sudo での -v オプションは,"validate" で認証情報を更新.誤解承知でぱっと思いついた表現で言うと,延命,ということか. も一つついで,の -n は "non-interactive",ユーザにパスワードを要求するプロンプトを出さない言うこと.

while true; do ... done

無限ループのお作法のひとつ.

kill -0 "$$"

動いてる? を見てる.

ちなみに || は "or".よくある話.

done 2>/dev/null

標準エラー出力をゴミ箱に.よかった,覚えてた.

$

"バックグランドプロセス",っていうらしい. 今回はこれを初めて知りました.

そして

今初めて知ったのだけど,code block の syntax color.

shell の場合は,"shell" じゃなく "sh" だ,ってことを今日初めて知った.
恥.

とゆことで.
おしまい.

*1:もし誤記,過不足があったら,その旨ご指摘ご教示いただけると大変助かります.

*2:こういうのは "上位互換" と言うのかしら?