MacBook Leopardでヘルプウィンドウの使い勝手向上を目指して

ことえりのヘルプファイルをちゃんと読み始めて以来、最近は他のアプリケーションのヘルプファイルもなるべく読むように心掛けている。そうすると気になってくるのが、OSX 10.5 Leopardのヘルプウィンドウの表示方式だ。何と!フローティングウィンドウになっているのだ。クリックしようが、アプリを切り替えようが常に一番上のウィンドウとして表示される。(あり得ん...。)
MacBookの狭い画面では、ほとんどのウィンドウは常に最大化され、フロート化されたヘルプウィンドウは操作の邪魔になる。なのに...一時的に隠すにはDockにしまうしか方法が無いなんて...。普通のウィンドウのようにクリックで重なり順序を変更したり、アプリケーションの切替で背面に移動したり、ユーザーは(少なくとも自分は)もっと自由に操作したいのだ!

フローティングウィンドウをやめる

  • TinkerToolで設定する場合
    • Leopard >> ヘルプビューア:「ヘルプウィンドウを背面へ移動できるようにする」をチェックあり
  • ちなみに、以下のいずれかの方法でもOK
    • ターミナルコマンド:defaults write com.apple.helpviewer NormalWindow -bool YES
    • /Library/Preferences/com.apple.helpviewer.plistを開いてPropaty List Editorで編集する。(NormalWindowのチェックを入れる)
    • システム環境設定 >> secrets >> Help Viewer >> Float window abpve othersのチェックを外す。


上記設定のいずれかでフローティング状態は解除され普通のウィンドウになる。
ところが、確かに背面へ移動できるようになるのだが、今度は前面に出すことに苦労するようになる...。

  • ヘルプビューアがDockやアプリケーション切替でアクティブにならないアプリケーション形式のため、ウィンドウクリックで選択するしかない。
  • メニューから検索なしでヘルプを表示すると、ヘルプウィンドウは背面になってしまう。(検索結果を選択した時は前面になる)
  • ウィンドウを最大化した状態でヘルプを表示すると背面に隠れてしまう。ヘルプが表示されたことに気付かない。
  • 最大化したウィンドウを動かしてヘルプウィンドウをクリックすることは可能だ。でも、ウィンドウが複数だとやる気がしない...。
  • そんな時にExposeと思って期待してやってみるが、何故かヘルプウィンドウを選択しても前面に出てこない...。

一向に前面に出てこない...。ヘプルを見るためのヘルプが欲しくなってしまった。

      • 以下の作業ではOSXの開発環境のインストールが必要

Dock表示・アプリケーション切替を可能にする(Info.plistを設定)

アクティブにならないアプリケーション形式は、以下の設定でDockに表示されてアプリケーションの切替が可能な形式に変更できた。

  • ヘルプビューアの場所
    • /System/Library/CoreServices/ヘルプビューア.app


システムファイルを修正することになるので、もしもの時のバックアップ。(TimeMachineを利用していれば不要かも。)

  • バックアップ
    • ヘルプビューア.appを右クリックして、「"ヘルプビューア.app"を圧縮」を選択する。
    • デスクトップにヘルプビューア.app.zipが保存される。(書き込み権限がないので)
    • 元に戻したい時は、上記ファイルを解凍して、/System/Library/CoreServices/ヘルプビューア.appとして保存すればOK。


作業前にヘルプビューアは終了しておいた。

  • Info.plistの修正
    • ヘルプビューア.appの「パッケージの内容を表示」する。
    • /System/Library/CoreServices/Help Viewer.app/Contents/Info.plistを開く。
    • Property List Editorが起動したので、以下のように修正した。(Application is agent (UIElement)のチェックを外す)


    • 忘れずに保存して終了。

これで、一般的なDockに表示されるアプリケーションになった!アプリケーションの切替が可能になった!
でも、ヘルプビューア起動直後のヘルプウィンドウはExposeで選択できない...。結構ストレスを感じる。

Exposeで選択可能にする(HelpWindow.nibを設定)

  • /System/Library/CoreServices/Help Viewer.app/Contents/Resources/English.lproj/HelpWindow.nibをJapanese.lproj/HelpWindow.nibへコピーした。
    • (そのままではJapanese.lproj/HelpWindow.nibが開けなかったので。)
  • コピーしたJapanese.lproj/HelpWindow.nibを開く。
    • 言語環境でEnglishを利用する場合は、上記2つの作業は不要。English.lproj/HelpWindow.nibを開く。
  • Interface Builderが起動したので、以下のように修正した。
    • HelpWindowを選択して...


    • Style項目のチェックをすべて外す。


    • 忘れずに保存して終了。

これで、ヘルプビューア起動直後のヘルプウィンドウもExposeで選択できるようになった!
でも、本来はExposeを利用するまでもなく、ヘルプ検索して表示した時のように、ヘルプビューアがアクティブになって前面に表示されるべき。

解決できない問題と試行錯誤

ヘルプ検索なしで表示した時に、ヘルプビューアをアクティブにして前面に表示することが出来ない...。

ショートカットの合わせ技でするアクティブにする
  • shift-command-/  ↓  spaceまたはreturn  shift-command-tab
    • ヘルプビューアが起動していない状態なら上記決め打でOKだが、既に起動している場合はアプリケーションの切替を自分で判断して選択する必要がある。
Appleスクリプトでアクティブにする

最後はやはりAppleスクリプトに頼ってしまう...。ヘルプメニューの2行目(検索ボックスのすぐ下)を開いて、ヘルプビューアをアクティブにするスクリプト

  • 以下のスクリプトをHelpWindow.scptとして保存した。
  • Quicksilverからショートカットを割り当てた。(shift-option-command-/)
delay 0.5 --Quickslverで実行するにはひと呼吸必要だった

--操作対象のアプリを最前面に設定する(スクリプトメニューから実行する場合必要)
set current_app to short name of (info for (path to frontmost application))
activate application current_app --tell application "System Events"ブロック内ではエラーになる

tell application "System Events"
	keystroke "?" using command down
	delay 0.5
	key code 51 --delete
	key code 125 --↓
	delay 0.5
	keystroke return
end tell

tell application "Help Viewer"
	delay 1
	if running then activate --ヘルプビューアを利用しないヘルプもあるため
end tell

これで、ヘルプメニューの2行目(検索ボックスのすぐ下)であれば、shift-option-command-/で開いた時は満足。
でも、複数のヘルプが用意されている場合は、メニューから選択するしかない。

  • やはり、根本的にはヘルプビューア自体を起動直後からアクティブになるように修正するのがベスト。(解決できる方、ぜひ教えてください。)
  • ちなみに、Dockのヘルプビューアアイコンをクリックすると、望みもしない新規ヘルプウィンドウが追加される。残念...。