MinimumMenu 0.1について
ここ最近コツコツと作っていたminuプロジェクト(Cocoaアプリケーション)を、せっかくなので公開することにしました。
使い方
MinimumMenu(日本語環境:ミニマムメニュー)は、メニューバー右側のアイコンのメニュー*1が、文字メニューと重なって隠れてしまう場合に重宝します。
- マウスカーソルをスクリーンの一番上に移動すると、水色のラインが発光します。
- それを一回クリックすると、文字メニューが最小になり、アイコンのメニューを表示するスペースが最大になります。
- もう一度クリックすると、直前のアプリケーションに戻ります。
- 文字メニューが最小の時、メニューバーには短縮名で Minu(日本語環境:ミニュー)と表示されます。(以下、「Minu」と表記することにします。)
アプリケーションとしての機能は上記の通りで、見ての通りほとんど何もしません。Minuがアクティブになる直前にアプリケーションを記憶して、クリックで戻すことができるだけの機能です。機能がないのでメニューは一つだけです。結果、Minuがアクティブになるとアイコンのメニューを表示するスペースが最大になるのです。サンプルアプリケーションみたいなものです。
しかし、Cocoaアプリケーションとして公開するために必要な必要最小限の機能は、出来るだけ実装するようにしました。今後、自分がちょっとした機能の便利ツールを作りたくなった時の足掛かりになるといいな、という希望を持っています。Minuには機能がほとんど無いので、あとは欲しい機能を追加するだけでいいのです。
再利用またはサンプルになりそうな実装
- ユーザーデフォルト
- ユーザーの環境設定を保存できます。また、アプリケーションのデフォルトも設定してあり、その変更も.plistファイルなので容易です。
- ローカライズ
- 透明ウィンドウ
- 便利ツールを作る時、透明ウィンドウを利用することはありそうなことです。透明ウィンドウを利用すればデスクトップの好みの位置に、好みの形状で何でも表示することができます。minuも透明ウィンドウを利用しているので、それを足掛かりに拡張することが容易です。
- マウスイベント処理
- mouseEntered:、mouseExited:、mouseDown:等のマウスイベントを直接処理しています。やはり便利ツールを作る時には必要な処理になりそうです。(ドラッグ&ドロップの実装とか)
- CocoaBindingの利用
- CocoaBindingを使えば、オブジェクト間で値を連携するためのコードが激減します。minuでもユーザーデフォルトの処理で利用して、ずいぶん楽をしています。
- Info.plistの設定
- アイコンやアプリケーション名、バージョン情報、著作権情報等のアプリケーションの基本的な情報を、ちゃんと表示できるようにInfo.plistやInfoPlist.stringsで設定しています。
minuプロジェクトは2008-05-22の以下の日記から始まっています。(3歩進んで2歩下がる的な公開までの軌跡が続きます。)
ダウンロード
MinimumMenu 0.3のダウンロードページへ
- アプリケーションメニューが占有する領域を最小にすることを目指す
- アプリケーションメニューを「Minu」からアイコン表示に変更
- アプリケーションメニューを非表示にする設定を追加
MinimumMenu 0.3.1のダウンロードページへ
- 青いラインがメニューバー上部に表示されない場合の対策。
- 解像度を変更した時、青いラインの長さが不足する対策。
MinimumMenu 0.4.5のダウンロードページへ
- PreferencesのTracking around displayを追加。「入」にすることで...
- ディスプレイの左辺・右辺・下辺へのマウスオーバーによってMinimumMenuがアクティブなる。
- 但し、Dcokが出現するポジションでのマウスオーバーは無効。(意図しないアクティブを避けるため)
- コーナー四隅の64ピクセルは、反応しないエリアとした。(誤作動防止のため)
- アプリをアクティブにする方式で切り替えるように変更。(従来はアプリを起動する方式で切り替えていた)
- ウィンドウなしで起動中のアプリが、新たなウィンドウを勝手に開いてしまう対策。
- タイミングによっては、終了したはずのアプリが意図せず再起動してしまう対策。
- ウィンドウの重なり順序も完全に維持される。
*1:メニューバーアイテムと呼ばれているようです。