マルチモニタ環境について(タスクバー編)

新しく記事を書き直しました。
こちらを参照していただけると助かります。

※自分で言うのもおかしいですが、一部日本語がおかしかったり、読みにくかったりするかもしれません。
※書いていたら長くなってきたので複数のエントリに分けます。
※このエントリではマルチモニタ環境でのタスクバーやウィンドウ表示について書いています。


たまにブログのエントリーなどであるが、やはり仕事をする上でディスプレイは2個以上あった方が効率がいいというのはあると思う。
片方の画面で資料を開いたまま、もう片方の画面でコーディングできたりするからだ。
以前、仕事場でモニタだけ余っていたので許可をもらってディスプレイ二つで作業するとかなり快適に作業できた。


しかし、ただ単純にモニタを増やせばそれだけで便利になるかと言えば必ずしもそうはいえないと思う。
モニタが二つ以上になることでマウスの移動する量は格段に増える。
プログラムを二つ同時に開いたりすることで視線移動の量も増えるため、脳で情報を処理する量も増えると思う。
あくまでも個人的なノウハウではあるけどその辺を纏めてみようと思う。
結局のところ、自分で試してみるのが一番いいわけだが、あくまでも参考程度に。
ちなみに私はWindowsユーザなのでWindowsに限定されます。MacLinuxの方にはほとんど参考にならないと思います。

基本的にマルチモニタ環境ではタスクバーが表示されるのは一つのモニタのみであり、サブ以降のモニタには表示されない。
よって大量のアプリケーションを同時起動しやすくなるマルチモニタ環境では、タスクバーが狭すぎて使いものにならなくなる場合がある。
アプリケーションを切り替える際にAlt+Tabで切り替えるにしてもアイコンだけでは分かりにくくなっていたりもする。
この辺はアプリケーションの力を借りて解決する。


http://labs.unoh.net/2006/09/post_43.htmlでも紹介されているが、MultiMonTaskbarULTRAMONというようなサブモニタにもタスクバーを表示するアプリケーションが存在する。
ULTRAMONは高機能だがシェアウェアであるためちょっと手を出しづらい(30日のトライアルがあるようなのでそこで気に入れば使用すればいい)
私がRealtime Soft UltraMonを知ったのも先の紹介記事であり試したいと思ったのだが、
サブモニタが壊れてシングル環境で作業しているためULTRAMONに関する感想が言えないので今回はパスする。
機能的には優れているようで、サブモニタにマウスカーソルを移動する機能や複数ディスプレイ目いっぱいにアプリケーションを広げる機能が備わっているようだ。


MultiMonTaskbarはフリーで使用でき、サブモニタに1行タスクバーと同じ幅のタスクバーができる。
またAlt+→やAlt+←でアクティブウィンドウを別のモニタに移動することが可能である。
ただ、ULTRAMONのようにマウスカーソルを移動させる機能や、ウィンドウを2画面分に広げる機能は存在しない。
また、サブモニタのタスクバーに表示されているアプリケーションをクリックしても切り替わるまでの動作がもっさりしている。
その為マウスを主体で使うユーザにはやぼったいかもしれない。


またULTRAMONのようなマウスカーソルを移動させたりする機能を追加するために別のアプリケーションの力を借りる。一つのアプリケーションで足りなければ他からもってくればいい。
私が使ったのはAutoHotKeyで、日本語の解説サイトは流行らせるページ跡地である。
インストールなどは解説サイト等を確認して欲しい。
スクリプトに下記コードを追加して2画面表示と1画面表示を切り替えられるようにした。
仕事の合間に作ったりしたのでソースが若干汚かったり動作がおかしかったりするかもしれないので何かあれば連絡頂けると助かります。

;画面を2画面最大化か1画面最大化のトグル
^#i::
WinGet,whd,ID,A
GoSub,sub_WindowResizing
return

sub_WindowResizing:
;今の座標とかを取得
WinGetPos,x,y,w,h,ahk_id %whd%
;縦横の最大(1画面分)を取得
SysGet, maxy,62
SysGet, maxx,61
if w < %maxx%+1
{
;横が画面最大値より小さければ2画面一杯に表示
;最大化を解除
WinRestore,ahk_id %whd%
;サイズ変更、座標も外枠の分だけずらす
WinMove,ahk_id %whd%,,-3,-3,maxx*2-13,maxy-5
}
else
{
;サイズを1画面の最大化より少しだけ小さくする
WinMove,ahk_id %whd%,,0,0,maxx-1,maxy
;最大化する
WinMaximize,A
}

return
;

マウスカーソルの移動もできるのでスクリプトを組んでみてもいいと思う。(MouseMoveとif文だけなので少しプログラムが書ければすぐできると思う)