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コマンドで設定する方法

  • XcodeProperty List Editorを利用するには、Xcodeをインストールしておく必要がある。
  • しかし、このためだけにXcodeをインストールするのも面倒である。
  • しかも、Xcodeを使って辞書検索項目を追加する手順も面倒である。
  • そこで、defaultsコマンドで設定する方法も考えてみた。
$ defaults write com.apple.spotlight.plist orderedItems -array-add 'enablednameMENU_DEFINITION'
$ killall SystemUIServer

上記コマンドが正常に実行されれば...

  • Spotlightのシステム環境設定を開くと、一番下に空白項目が追加されているはず。

  • その空白項目をドラッグ&ドロップして、一番上に並べ替えれば、設定完了である。
  • 以下のコマンドで、OSXデフォルトの状態に戻る。(これまでの表示順序もデフォルトに戻ってしまう)
$ defaults delete com.apple.spotlight.plist orderedItems
$ killall SystemUIServer
  • 辞書検索の項目のみ削除したい場合は、Xcodeで空白項目のアイテムのみ削除する。
    • Xcodeをインストールしていない場合は、面倒なことになってしまう...。
    • おっと、バックアップをとってあるはずだから、それを復元してもいい。

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