世の中には、「タイル型ウィンドウマネージャ」というのがあるらしい。

GUI のウィンドウ操作は、基本的にマウスでやるものだと思っていました。ウィンドウの移動から、リサイズまで…。しかし、世の中は広い。

ウィンドウの配置を半自動化し、キー操作であれこれ指定できるのがあるようです。

しかも推進委員会というのまである!

なんだこれ〜!?と思って読んでみたら、軽快そうでいける感じ。

とりあえずWindows 用としてHashTWM(http://dockbox.demonastery.org/ からダウンロードできます)を使ってみることにしました。

試してみながら、添付のreadme.txt の操作説明の部分だけを意訳してみましたので貼り付けておきます。

※以下で出てくるMod キーは、Ctrl + Alt を指します。

Mod + Escape - Exit (Windows should be restored to normal)
HashBoxを終了します。(ウィンドウは通常表示に戻ります)

Mod + j/k - Cycle through tiled windows
別のウィンドウを選択

Mod + Shift + j/k - Move selected window down/up
選択したウィンドウの表示位置を変更

Mod + Enter - Switch selected window in to main area
選択したウィンドウをメインエリアに移動
※メインエリアとは分割枠のうち、広い方のエリアを指します

Mod + h/l - Shift split offset
縦に分割されたウィンドウの表示領域を左右に調整

Mod + z/x - Increase/Decrease number of windows in main area
メインエリアに表示するウィンドウを追加/削除

Mod + c - Close foreground window
選択しているウインドウを閉じる

Mod + Space - Switch between tiling modes, Vertical/Horizontal stack, Grid, and Fullscreen
縦、横、フルスクリーンの各タイル表示モードの切り替え

Mod + y - Display foreground window class (For use with -i parameter)
選択しているウィンドウのクラス名を表示(コマンドラインオプションの-i パラメータで指定するために使う)

Mod + u - Toggle lock cursor mode. In this mode cursor is locked inside the active window
カーソルロックモードの切り替え。
カーソルロックをすると、選択中のウィンドウ内でしか、マウスカーソルを移動できなくなります。

Mod + i - Toggle ignore mode. If ignore is on then new windows will not be tiled but will appear as normal
イグノア(無視)モードの切り替え。
イグノアモードで新しいウィンドウを開くと、タイリングされず通常のウィンドウとして表示されます。

Mod + o - Force Tile Foreground window
(タイリングされていない通常ウィンドウを)強制的にタイリングします

Mod + p - Force Untile Foreground window (useful in combination with above for moving windows to another monitor)
タイリングされていない通常ウィンドウの状態に戻します。(ダブルディスプレイなどで、別のモニターにウィンドウを移動するときに便利です)

Mod + 1-5 - Switch to tag
1〜5で指定したタグに切り替え
※タグとは仮想ディスプレイを指します。5つまでウィンドウの環境を持てます。
※指定したタグにウィンドウがなければ切り替えません

Mod + Shift + 1-5 - Move Window to tag
選択したウィンドウを指定したタグに移動

きっかけ

私はこれまで特に問題意識もなくフルスクリーン派を続けて来ていますが、そんな私にも少しだけ不満がありました。
それは、参照する記事やソースを見ながらテキストエディタで作業する等の、いわば"参照系のお仕事" の場合。

こういうときは、おもむろにWindows のタスクバーから右クリックして「上下に並べて表示」や「左右に並べて表示」を選ぶと、自動的にウィンドウが縦/横に配置されていい感じになります。
しかし、開いている全てのウィンドウが配置されてしまうので、参照する必要のないウィンドウまで出てきて邪魔でしょうがない。
表示したくないウィンドウをタスクトレイに戻し、改めて「上下に並べて表示」を選びなおすことになります。

せっかくいい機能だと思うのに、機能として片手落ちだよなぁ...

なんとかならないかな…と思っていろいろ探していたら、これを見つけました。

デメリットはまだ未知数

今のところですが、Launchy というコマンド型アプリランチャとの相性が悪く、Launchy のウィンドウが表示した瞬間に消えてしまう問題が挙げられます。

まとめ

しかし、この操作感は確かにGNU ScreenVIM のウィンドウ分割の感じに似ていて、キーボードでポン、ポンと軽快です。
自分の中ですこしづつ、新しい風が吹いて来たのを感じています。