2013年3月17日日曜日

Safariの「ページをこのアプリケーションで開く」メニューの項目が多すぎる時

Safariのメニューバーの「開発」メニューを有効にするとその下に、「ページをこのアプリケーションで開く」という項目が見つかります。
これは、現在表示中のページを、同じMac内にインストールしてあるhtmlを開くことができる他のアプリケーションで開くためのものです。例えば、Firefoxなどで開きたい場合に便利です。
私は、Safariで見ると広告が入れ替わったり絵が動いたりして見づらいサイトを、「このページを…」メニューでFirefoxで開くことがあります。
別に広告で収益を得ること自体は構わないのですが、内容に集中できないのも困ります。

以前は、このメニュー項目には他のブラウザ名くらいしか含まれていなかったのですが、気づいたら下のように大量に増えていました。

これでは他のブラウザを開くのに、使いづらくて仕方ありません。
これを見ると問題点がふたつありそうです。
ひとつは、Windowsのアプリケーションがメニュー項目に出現していることです。ParallesでWindows XPをインストールしているのですが、何故かそれが表示されているようです。
もうひとつの問題は、Macのアプリケーションで同じものが2回出現していることです。これは、内蔵ハードディスクから外付けSSDに起動ディスクを引っ越した際に、両方にアプリケーションフォルダがあるためだと思われます。

それぞれ解決していきたいと思います。

1. Windowsアプリケーション項目の削除

Parallelsの設定を変更すると「ページをこのアプリケーションで開く」へのWindowsのアプリケーションの表示がなくなるようです。Parallelsを立ちあげて、「仮想マシン」メニューから「構成...」メニューを選択します。
表示された構成用ウインドウのオプションタブを選択し、アプリケーションボタンをクリックすると以下のような表示になります。

ここで図のように、WindowsアプリケーションをMacと共有するのチェックを外します。
このウインドウを閉じ、Safariを再起動します。すると、以下のように「ページをこのアプリケーションで開く」の項目が大幅に減りました。


2. 元の起動ディスクのアプリケーションフォルダの内容が表示される

単純には、元の起動ディスクのアプリケーションフォルダを削除すればメニューからも消えるのではと思います。試していませんが。
ここでは、元の起動ディスクも残す方法を試します。今使っている起動ディスクが故障した場合など、バックアップとして残しておきたいので。

この辺の情報を管理しているのは、Launch Serviceのデータベースなのでそこを修正すればよさそうです。でも単純にデータベースを修正しても、Spotlight (mds?)が、元の起動ディスクの情報を再インデックスすると意味がありません。そこで、以下の順番で試してみました。

(1) Spotlightの検索対象から元の起動ディスクのアプリケーションフォルダを外す
(2) lsregisterコマンドでLaunch Serviceのデータベースを修復する

以下、順番に説明します。以下の操作の間は念のため、Safariを終了しておきます。

2-1. Spotlightの検索対象から元の起動ディスクのアプリケーションフォルダを外す

システム環境設定を立ちあげ、Spotlightをクリックし、プライバシータブを選びます。ここで、フォルダやディスクをSpotlightの検索から除外できます。

左下の「+」ボタンをクリックして、元の起動ディスクのアプリケーションフォルダを検索対象から除外する場所として追加します。
システム環境設定を閉じて、Spotlightの設定は終了です。

2-2. lsregisterコマンドでLaunch Serviceのデータベースを修復する

この操作は、ターミナルを使います。ターミナルを起動し、lsregisterコマンドのあるディレクトリに移動します。
locateコマンドが使える場合(データベースを作っている場合)は、以下のコマンドでディレクトリの場所を確認します。$がプロンプトで、$の後ろがコマンド、$の次の行が出力です。

$ locate lsregister
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister
/Volumes/Mini2012 HD/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister

私の場合は、元の起動ディスクの情報もあるので2箇所出力されました。
現在の起動ディスクの方に移動します。
$ cd /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support

コピーペーストが面倒な場合は、次のようにしてもいいかもしれません。
$ cd $(dirname $(locate lsregister | grep ^/System))

locateコマンドが使えない場合は、findコマンドで以下を入力して、場所を確認します。
$ find /System -name lsregister 2>/dev/null

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister


ディレクトリを移動した後、以下のコマンドでLaunch Serviceのデータベースを再作成します。
$ ./lsregister -lazy 1 -kill -r -domain local -domain user

以前の記事では、
これで終了です。Safariを再起動すると以下のようになりました。

大丈夫のようです。Firefoxがふたつあるのは旧バージョンを残しているためです。
よかった。

0 件のコメント:

コメントを投稿