Spotlightで辞書検索の優先順位を設定する
以前、Lion以降のSpotlightで、辞書検索の優先順位が下がってしまったことを嘆いた。常に検索結果の下の方に表示され、↓キーで連打していたと。それがcommand-Lあるいはcommand-Dでショートカット選択できることを発見して、幸せな辞書環境に戻った。
ところがその数日後、コメント経由でさらに素晴らしい情報を頂いた!何と、Spotlightの辞書検索の優先順位を自由に設定する方法があったのだ!(wさんに感謝)さっそく試してみる。
参考ページ(素晴らしい情報に感謝です!)
Xcodeで設定する方法
- (ホーム直下の )~/Library/Preferences/com.apple.spotlight.plistをXcodeで開く。
- orderedItemsを展開して、Item 0を選択して、コピー。
-
-
- もしorderedItemsが存在しないときは、一旦ウィンドウを閉じて、
- Spotlightのシステム環境設定を開いて、検索結果の表示順序をどれか一つ並べ替え、
- 10秒くらい待ってから、再び~/Library/Preferences/com.apple.spotlight.plistをXcodeで開く。
-
- 今度は一つ上のorderedItemsを選択して、ペースト。
- 項目一つが追加され、Item 0とItem 1を展開すると、同じ内容になっているはず。
- 一番下のItemが15から16に変化していることに注目。
- ペーストしたことでItemが一つ追加されたのだ。
- Item 0のnameの値を MENU_DEFINITION に変更する。
- 以上の編集をして、保存しておく。
- 設定を反映させるために、一旦ログアウトして、再びログインする。
- この状態でSpotlightのシステム環境設定を確認すると、一番上に空白項目が確認できるはずである。
- 空白項目であるが、これは辞書検索の表示順序である。
- 空白項目を並べ替えることで、辞書検索を好みの位置に設定できるのだ。
- そしてSpotlightで確認してみると...
辞書検索の項目が、トップヒットの下に表示されている!
- ↓キーで一つ下を選択してクイックルックしたり、returnキーを押して辞書.appで開けるのだ。
- トップヒットより上に表示することはできない...。(以前からの仕様)
- ちなみに、下の方にも相変わらず辞書検索の項目が残ってしまっている...。
- command-Lあるいはcommand-Dすると、下の方の辞書検索の項目が選択された。
defaultsコマンドで設定する方法
- XcodeのProperty List Editorを利用するには、Xcodeをインストールしておく必要がある。
- しかし、このためだけにXcodeをインストールするのも面倒である。
- しかも、Xcodeを使って辞書検索項目を追加する手順も面倒である。
- そこで、defaultsコマンドで設定する方法も考えてみた。
$ defaults write com.apple.spotlight.plist orderedItems -array-add '' $ killall SystemUIServer enabled name MENU_DEFINITION
上記コマンドが正常に実行されれば...
- Spotlightのシステム環境設定を開くと、一番下に空白項目が追加されているはず。
- その空白項目をドラッグ&ドロップして、一番上に並べ替えれば、設定完了である。
- 以下のコマンドで、OSXデフォルトの状態に戻る。(これまでの表示順序もデフォルトに戻ってしまう)
$ defaults delete com.apple.spotlight.plist orderedItems $ killall SystemUIServer
AppleScriptで設定する方法
- さらに、AppleScriptで一気に処理するようにしてみた。
- 自分のMacBook Pro Retina OSX 10.8.2環境では、期待どおり動いた。
- 環境によってうまく動かない場合は、上記のXcodeかdefaultsコマンドで設定してしまった方が早いかもしれない。
辞書検索の項目を追加する
-
- 空白項目を追加した状態でシステム環境設定が開くので、一番上にドラッグすれば、辞書検索が最優先となるのだ。
activate
display dialog "Spotlightで辞書検索を最優先にします。" with icon 1
open_preference_spotlight_result() make_key_orderedItems() activate
display dialog "(2/4)処理中です..." buttons {"キャンセル"} with icon 1 giving up after 10
add_dctionary_item_to_spotlight_result() activate
display dialog "(3/4)書き込み中です..." buttons {"キャンセル"} with icon 1 giving up after 10
reset_spotlight() activate
display dialog "(4/4)待機中です..." buttons {"キャンセル"} with icon 1 giving up after 5
open_preference_spotlight_result() message_dragging_dictionary_to_top()
on add_dctionary_item_to_spotlight_result() set dictionary_item to "'<dict><key>enabled</key><true/><key>name</key><string>MENU_DEFINITION</string></dict>'"
do shell script "defaults write com.apple.spotlight.plist orderedItems -array-add " & dictionary_item
end add_dctionary_item_to_spotlight_result
on reset_spotlight() do shell script "killall SystemUIServer"
end reset_spotlight
on open_preference_spotlight_result() tell application "System Preferences"
if running then
quit
delay 1
end if
set current pane to pane "com.apple.preference.spotlight"
activate
end tell
tell application "System Events"
tell process "System Preferences"
click radio button "検索結果" of tab group 1 of window 1 -->タブ,0,missing value
end tell
end tell
end open_preference_spotlight_result
on make_key_orderedItems() if application "System Preferences" is not running then open_preference_spotlight_result() tell application "System Events"
tell process "System Preferences"
activate
click radio button "検索結果" of tab group 1 of window 1 -->タブ,0,missing value
click checkbox 1 of row -1 of table 1 of scroll area 1 of tab group 1 of window 1 -->チェックボックス,1,missing value
display dialog "(1/4)準備中です..." buttons {"キャンセル"} with icon 1 giving up after 10
activate
click checkbox 1 of row -1 of table 1 of scroll area 1 of tab group 1 of window 1 -->チェックボックス,1,missing value
end tell
end tell
tell application "System Preferences" to quit
end make_key_orderedItems
on message_dragging_dictionary_to_top() tell application "System Preferences"
activate
display dialog "辞書検索の項目を追加しました!
下側にスクロールすると、空白の項目を確認できます。
ドラッグして先頭に移動してください。" buttons {"OK"} default button 1 with icon 1 giving up after 30
end tell
end message_dragging_dictionary_to_top
Spotlightデフォルトに戻す
- OSXデフォルトの状態に戻す。(これまでの表示順序もデフォルトに戻ってしまう)
activate
display dialog "Spotlightの表示順序を、デフォルトに戻します。" with icon 0
try
do shell script "defaults delete com.apple.spotlight.plist orderedItems"
do shell script "killall SystemUIServer"
tell application "System Preferences" to if running then quit
activate
display dialog "10秒待機しています...
(ダイアログが閉じれば完了です)" buttons {"処理中..."} with icon 1 giving up after 10
on error
activate
display dialog "現在、デフォルト設定です。" buttons {"OK"} with icon 1 giving up after 3
end try