読者です 読者をやめる 読者になる 読者になる

opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

タイル型WMに手を出してみた (i3)

昔から気になっていたがどうも敷居が高い気がして(あと設定がめんどくさい気がして)手を出していなかったタイル型WMに気が向いたので手をしてみた。

主要なものでいくつかあるが、実用性がありそうなのは...

awesome
xmonad

と思ったけど、なんかこんなのもあった

i3

ということで、今回はこのi3というタイル型WMを使って見ようかなぁという感じ。
i3の公式ページは下のURL

http://i3wm.org/

環境

環境はおなじみArchLinuxです。

$ (sudo) pacman -S i3

でインストールできるよ。

起動

$HOME/.xinitrcに

exec i3

と書いて

$ startx

するととりあえず起動できる。ディスプレイマネージャがあるのならそれから選択してもよい。

起動するとこんな感じ...

f:id:opamp_sando:20131126005334p:plain

なにコレー

$modキー

i3の$modにどのキーが設定されてるかを確認する。デフォルトではaltキーになっているはず。
$HOME/.i3/configを設定することで$modは変えることができる。

例えば、初期では以下のようになっている

set $mod Mod1

これを

set $mod Mod4

とかして色々変更できる。Ctrlとかにでもきるけどvimとか使うときにいろいろかぶるかもね。
まあ、その辺もうまく設定できればいいのかもだけど。

ターミナルを起動してみる

ターミナルは上記の$mod+Enterで起動できる。
$modを押しながらEnterを押すとフルスクリーンでターミナルが起動するようになっているはず。

更にその状態で$mod+Enterを連打すると連打した分だけ画面を分割してターミナルが起動するはず。

f:id:opamp_sando:20131126005903p:plain

見てわかるように、何もせずに$mod+Enterするとひたすら同じ方向に分割して開いてくれる。
...

f:id:opamp_sando:20131126010228p:plain

.。oO(こんな感じに開いてほしい...)

と、思ったら$mod+vや$mod+hを$mod+Enterをする前に押してみるといい感じ。そうすると予め定めた方向に分割してくれる。

f:id:opamp_sando:20131126010354p:plain

Windowを切り替えたい

実はマウスが使えるので、カーソルを移動させてActiveなWindowを切り替えることもできる。
が、せっかくタイル型WMなのでそんなことせずに切り替えたい。
というときは、$modに加えてj,k,l,;でそれぞれの方向に動くようになっている。
viはhjklだけどなぜかi3はjkl;になっている。

多分hjklにしてしまうと$mod+hとかぶってしまうからだと思うがviの操作が一個右にずれた形になっている。
これはコレでいいかもしれないが、不満なら多分設定を書き換えればなんとかなる気もする。
その辺は要検証って感じ。

コンテナレイアウトの変更

このへんはi3のDocumentの軽い翻訳みたいになのだけど、i3には3つのレイアウトがあるようだ。

1 splith/splitv
多分これは今まで使ってた形式で、windowがすべて同じサイズになるヤツ。
splithは水平分割、splitvは垂直分割。

2 stacking
これはactiveなwindow(focused window)だけが画面いっぱいに表示されて、その他のwindowの一覧が画面の上側に表示されるようなlayout

3 tabbed
これはstackingと似ているんだけど、stackingとの違いは上側のwindow一覧が垂直に分割されてタブのように表示されるってところかな

で、これらのレイアウトはそれぞれ、$mod+e,$mod+s,$mod+wで切り替えることができる。
ちなみに$mod+eは押すたびにsplith/splitvがトグルで切り替わるようになってるようだ。

フルスクリーンの仕方

フルスクリーンは $mod+f とするとできるらしい。

ターミナル以外のアプリケーションを開きたい

$mod+Enterでターミナルが開くことは分かったがターミナル以外のアプリケーションが開きたい。
例えばfirefoxとか...
そんな場合は、$mod+dを押すことでdmenuを呼び出すことができる。
ただし、dmenuはi3の依存関係としてインストールされないので、入っていない場合は

$ (sudo) pacman -S dmenu

としてインストールする。
これでdmenuが動くので、$mod+dでdmenuを呼び出して起動したいアプリケーション名を入力すると起動することができる。
おそらくこの辺もいろいろいじくれるけど今回はとりあえず初歩ってことでそんなことはしない。

Windowが増えてきたのでそろそろ閉じたい

ということで、Windowの閉じ方は $mod+Shift+q で閉じることができる。
ちなみにこれも設定ファイルを書き換えると変更できる。あくまでデフォルトでの閉じ方。
あとこれはWM_DELETEという手段を使ってプロセスを落とすようになっているらしい。
コレがサポートされたアプリケーションなら、正しく保存ダイアログなどが出てきて終了できる。

ワークスペースが使いたい

ワークスペースというのはデフォルトで左下にでている数値のこと...
要は複数の画面を切り替えれるアレ。
切り替えは $mod+num ということで、例えば$mod+1とか$mod+2とか... そんな感じで切り替えができるようだ。

Windowのワークスペースを変更したい

例えば、ワークスペース1で動いてるFirefoxワークスペース2に移したいと思ったら、移動させたいWindow上で $mod+Shift+num でnumの番号のワークスペースにWindowを移動できる。
上の例だと$mod+Shift+2を押せばいいことになる。

i3を再起動したい

i3を再起動したい場合は $mod+Shift+r とする。

i3を終了したい

i3を終了したい場合は $mod+Shift+e とする。
確認のバーらしくものが出てきて、YESを押すと終了する。

Floating mode

Floating modeというモードがあるらしい。
試しに、適当なWindow上で$mod+Shift+spaceをしてみると...

f:id:opamp_sando:20131126013212p:plain

という感じになる。
i3によるwindowのサイズ管理から逃れて普通の(タイル型でない)WMのように振る舞うモードのようだ。
documentによると、これはタイル型の精神に反するが、"Save as"dialogや、GIMPのようなアプリケーションでは役に立つモードだ。 とのこと。

終わり

とりあえず、最低限度動かせるくらいにはなったのではないだろうか。
あと、documentには"Tree"と呼ばれる章があったが、これのメモ(翻訳)はまた今度ということで

※Treeはi3がコンテナと呼ばれる概念を用いてX11 windowを制御している話で
このブログに書くとすれば本当にただのドキュメントの日本語訳にしか
ならないような気がするので割愛する。  
"Container"という用語だけ説明すると、i3においてContainerはX11 Window(例えばブラウザなど)
あるいは、Containerそのものをホストすることができるもの。
簡単な例だと、ワークスペースもContainer。
何もないワークスペースで$mod+Enterでターミナルを2つ開いたとすると以下のような状態になる。  

Workspace ----- Left terminal
            |
            +-- Right terminal

多分ドキュメントでは、このContainerに更にContainerが入る様子を
木(Tree)で表現しているという話。

ちなみに、私は英語力皆無なので何か間違えて捉えてる部分などもあるかもなので、そのような場所があった場合は遠慮なくご指摘くださると幸いです。

Firefox ブラウザ無料ダウンロード