2011年1月30日日曜日

MacRuby・Snatcher・追加機能

SnatcherというかSpinというか、とにかく自分用ツールの追加機能を考える。

デスクトップにアクセスできないとんでもない仕様なので、その代わりになるような追加機能をつけたい。

現在の妄想は


こんな感じですかねー。マウスクリックでworkspaceの切替はすぐにでもできる。

あとはタスク選択(⌘+TAB、みたいな)とWindowセレクタがあれば便利だよな、と思うけど、果たして実現できるかどうか。

XcodeとInterfaceBuilderを起動していると、デスクトップ上にやたらウィンドウがたくさん開いてしまって、うっとおしいことがある。私の場合はマウスをDockまでもっていって、HyperDockの「アプリケーションで開いているウィンドウ一覧」表示の中から必要なウィンドウを選択することが多い。

これに近い機能をマウスクリックした場所で可能にできないか。ウィンドウのイメージ表示までできなくていいので、メニュー表示のようにしてできないかな。

タスク選択は、やっぱりDockまでマウスを動かすことが多いから、これもマウスクリックした場所でできたら便利かも。

開いているウィンドウの一覧を得る、というのはxcatsan師匠のblogにその手の記事があったのでただいまじっくり読んでいる最中。ただ師匠は「開いているウィンドウを画像として得る」ためかなり高度のAPIを叩いているので、素人はまずはNSWorkspaceあたりから攻めてみることにする。

def mouseDown(event)
  ws=NSWorkspace.sharedWorkspace
  #ws.launchApplication("Finder")
  ra=ws.launchedApplications
  puts ra[0].to_s
 end
とりあえず左クリックで起動中のアプリの一覧を取得して、その1番目をデバッガコンソールに出力してみる。(MacRubyはこれが手軽にできるからいい。ちなみにコメントアウトしてあるのは左クリックでFinder起動、という部分)

で、デバッガコンソールにはこう出力された。

{"NSApplicationPath"=>"/System/Library/CoreServices/Finder.app", "NSWorkspaceApplicationKey"=>#, "NSApplicationBundleIdentifier"=>"com.apple.finder", "NSApplicationProcessSerialNumberLow"=>40970, "NSApplicationProcessIdentifier"=>181, "NSApplicationProcessSerialNumberHigh"=>0, "NSApplicationName"=>"Finder"}

ハッシュで取得できるんだな。起動中のアプリを選んでアクティブにする、というだけならこの程度も十分なような気がする。せめてアイコンくらいは表示できるようにしたいけど、それはNSWorkspaceでもできるのかな。明日以降試してみよう。

0 件のコメント:

コメントを投稿