最終更新日:2013/11/29

MenuBarTitleToIcon - メニューバーのタイトルをアイコンにするSIMBLプラグイン

MenuBarTitleToIconについて

幅1440pxのディスプレイを使っていますが、最近MenuBarAppleScriptでメニューバーに色々表示させているとメニューバーの幅が足りない時があります。しかし、アプリケーションによっては余裕がいっぱいあるものがあります。メニューを良く見ると「ウインドウ」ってのがそもそも幅を取り過ぎな気がします。あと「フォーマット」も長いです。これらの基本的なものだけでもアイコンになれば幅が狭くなるかなと思い作りました。

最初はこういうのをするソフトがあったはずだと1時間ぐらい探したのですがどうしても見つからず、GUI無しで決まった項目だけアイコンにするのを作ってみたら1時間もかからずにできました。

スクリーンショット

バージョン1.2

10.9 + バージョン1.2のFinder、Safari、AppleScript エディタのメニューバーのスクリーンショットです

バージョン1.1

10.9 + バージョン1.1ではCotEditorのメニューバーが次のようになります

バージョン0.1

メニューが長くてメニューアイテムが省略されることが多かったAppleScriptエディタです。

使用前:約778px
使用後:約553px
見た目はちょっと気になりますが200px以上狭くなりました。アイコンと一文字のメニューバー項目が約50pxなので4個、アイコンだけなら約30pxなので6個表示できるスペースが増えました!

動作確認環境

Mac OS X 10.6.8で動作確認しています。

アイコンはシステム標準の物を適当に使用しています。

10.8.2で試してみたら「フォーマット」のアイコンが無かったので変わりませんでしたが、他の「ウインドウ」などはアイコンに変わりました。EasySIMBLを使用しました。

10.9 + EasySIMBLで動作確認

仕様・注意点

技術解説

GUIを変更するSIMBLプラグインということでシステムが不安定にならないか心配する方もおられるようなので、どのような実装なのか簡単に説明します。

メソッドの置換は一切行っていません

SIMBLプラグインでアプリケーションが不安定になる最大の原因が置換したメソッドがなんらかの問題を起こすことだと思います。しかし、MenuBarTitleToIconではそのメソッドの置換を一切行っていません。

では、何をしてるのか

MenuBarTitleToIconは次のような動作になります

  1. アプリケーション起動時にMenuBarTitleToIconがロードされます
    →SIMBLプラグインのロード自体でクラッシュすることは無いと思います
  2. メインメニュー([ NSApp mainMenu ])を順番に調べてアイコンにするタイトルなら画像を読み込みメニューアイテムにアイコンを設定します([ menuItem setImage:icon])
    →両方共OSXで公開されている基本的なAPIで特に危険は無いです。アイコンになってもメニューのタイトルは変わっていないのでアクセシビリティのAPIでGUIを操作するのには影響しません。
  3. MenuBarTitleToIconがアプリケーションの起動時にロードされた時に上記処理を行って、以降は何もしません。よって、起動後に動的にメニューが作られた場合はアイコンになりません。
    →起動直後にMenuBarTitleToIconがロードされてメニュータイトルをアイコンにする時に問題がなければ、もう何もしないのでクラッシュすることはないと思います。

アイコンにするメニュータイトルを追加する設定

MenuBarTitleToIcon_IconSetting.txtにアイコンの画像ファイルとそのメニュータイトルを記述することでアイコンにすることができます。

パスが次のようになるように「~/Library/Application Support」フォルダに「MenuBarTitleToIcon」というフォルダを作ってそこに置いて下さい。

/Users/自分/Library/Application Support/MenuBarTitleToIcon/MenuBarTitleToIcon_IconSetting.txt

書き方

MenuBarTitleToIcon_IconSetting.txtの書き方です。実際の例は同梱のMenuBarTitleToIcon_IconSetting.txtを見て下さい。

文字コードはUTF-8にしてください。

アイコン画像のパス
アイコンにするタイトル
アイコン画像のパス
アイコンにするタイトル1
アイコンにするタイトル2

仕様

メニューバーが変わるアプリケーションで常にアイコンにする設定

Firefoxがそうなのですがメニューバーが変わるアプリケーションでは変わったメニューバーではアイコンになりません。

そこで、メニューバーの変更をチェックして変更があった時にアイコンにする処理を実行するようにできます。

MenuBarTitleToIcon_AutoUpdateApp.txtに対象のアプリケーション名を改行区切りで書くことによって指定できます。

パスが次のようになるように「~/Library/Application Support」フォルダに「MenuBarTitleToIcon」というフォルダを作ってそこに置いて下さい。

/Users/自分/Library/Application Support/MenuBarTitleToIconMenuBarTitleToIcon_AutoUpdateApp.txt

仕様

コメント

1.5.0

自分で追加できるようになったので長いタイトルがあったらアイコン化を試してみて下さい。サンドボックス対応アプリケーションでは駄目ですが…。

1.3.0

Safariのメニューバーがついに全部アイコンになってスッキリしました。

どうせならと、アプリケーション名も試しみたのですが"..."みたいに表示されてアイコンが表示されなかったのでとりあえず断念ということになりました。

1.2.0

いろいろとアイコンにしてみました。

「表示」なんかはちょっと無理があるかもしれません。

「スクリプト」はスクリプトメニューと同じにしたけど、同じのが2つ表示されるのでちょっと気になる感じで.scptファイルのアイコンの方が良かったかな、と思っています。

いいアイコンが/System/Library/とかにあったら教えて下さい。

0.1.0

最初は違和感あったけど数日使っていたら慣れてきて迷わずウインドウメニューなどを選べるようになってきました。

スペースに余裕が出たので気兼ねなくMenuBarAppleScriptでメニューバーにアイコンを表示するアプリケーションを作っていけます。

ダウンロード

Download MenuBarTitleToIcon1.5.0.zip
「ツール」をアイコンにするようにした
アイコンにするメニュータイトルを追加する設定」を追加
メニューバーが変わるアプリケーションで常にアイコンにする設定」を追加
10.6.8で動作確認
10.9 + EasySIMBLで動作確認
MenuBarTitleToIcon1.3.0.zip
SafariStand等の後に読み込まれるように名前の先頭に「zzz」を付けてファイル名を「zzzMenuBarTitleToIcon.bundle」とした。
上書きインストールの場合、古い「MenuBarTitleToIcon.bundle」を削除して下さい。
「開発」をアイコンにするようにした
SafariのSafariStandの「Stand」をアイコンにするようにした
Safari6の「ブックマーク」がアイコンになるようなった(らしい)
アプリケーション名のメニューアイテムはアイコンにならないので処理対象外にした
10.6.8で動作確認
10.9 + EasySIMBLで動作確認
MenuBarTitleToIcon1.2.0.zip
「表示」「移動」「スクリプト」「ブックマーク」「履歴」をアイコンにするようにした
必要なアイコンのみ読みこむようにしたのでちょっと処理が軽くなったと思います
10.9 + EasySIMBLで動作確認
Safari6の「ブックマーク」はアイコンにならないようです。次のリリースで対応する予定です
MenuBarTitleToIcon1.1.0.zip
「ユーティリティ」をアイコンにするようにした
10.7以降、サンドボックス非対応アプリケーションでは「フォーマット」のアイコンをTextEditのアイコンにするようにした
10.9 + EasySIMBLで動作確認
MenuBarTitleToIcon0.1.0.zip
とりあえずできた
Mac OS X 10.6.8で動作確認しています。10.8.2では「フォーマット」のアイコンが無いので変わりませんが他のは変わりました。