i3 wm タイル型ウィンドウマネージャを使う

CLI などキーボード操作主体で便利な i3

i3 Window Manager ‘Improved Tiling WM’

i3 wm は X11で動くタイル型ウィンドウマネージャ。wmiiというウィンドウマネージャにインスパイアされて作られたものらしい。

i3 とだけきくとインテルコアのことかと思うし、検索すればちっちゃい自動車の写真がいっぱいでてくるので、ググッと調べるときには ‘i3 wm’ などとしなくちゃいけない。i3 は、そんないい感じのマイナー感を醸し出す、堂々のタイル型ウィンドウマネージャなのだ。

i3_wm_demo_tiling.jpg

公式サイトには “improved tiling wm” という表現がある。

i3 – improved tiling wm

Linux のタイル型ウィンドウマネージャには Xmonad や Awesome あるいは Ratpoison やその後継 StumpWM などといったスグレモノがあるわけだけれど、今日これらはやや古くなってきたかもしれない。その点、i3 はまだ少し若くて開発が活発なようだ。

タイル型といえばカスタマイズだろう。i3 もこの例にもれずカスタマイズにほぼ制限がない。

設定ファイルはプレーンなテキストで、書式はそんなに難しいものではなく、プログラミング経験など必要ないだろう。思いついたらエディタで書いて即反映できるし、シェルスクリプトなどと組み合わせるのも容易だ。 デフォルトのキーバインドは vi によく似たものだが、これも自由にカスタマイズできる。 Emacs ライクなキーバインドも可能だ。

タイル型を使おうという人の多くはCLIが好物なんじゃなかろうか、というのは自分勝手な推測だけれど、Linuxユーザはシェルコマンドに親しむ(?)事が多いはずだから、こういった仕様はよりフレンドリーな魅力を持っているかと思う。

タイル型ウィンドウマネージャ

GNOME や Xfce あるいはマックやウィンドウズみたいな GUI をオーバーラップウィンドウ方式という。ウィンドウの形が可変で重ねられて、マウスポインタでつまんでどうこうするというおなじみのやつ。

一方、それらマジョリティの対極にタイル型ウィンドウマネージャがあって、こちらの方が歴史は長く昔の低性能CPUでも描画がラクだった。

タイル型は画面を分割した中に起動したアプリを表示してくる。

整然と並ぶものだから地味な印象だけれども、画面内にあるべくして存在するウィンドウの全てが見えていて、当然それらは重なったりしないし、マウスでつかむのは許されない。

しかし、マウスで操作できないというわけではなく、マウスを使うアプリではちゃんと使える。ただ、操作のほとんどをキーボードでやるのが前提なのだ。

そして、キーボード操作が主体ということは、細かなカスタマイズが容易でなければならないということでもある。なぜなら、コンピュータキーボードの大きさやキー配置は多様で、メニューキーやモディファイアキーのあり方などは千差万別であり、それらにあわせた押しやすいキー操作も百人百様となるからだ。

私はウィンドウズなどですぐ Alt+Space x とやってウィンドウを最大化して使うものだから、それならタイル型を使っても同じだろうと単純に考えた。それで Emacs をよく使うので似たキーバインドの StumpWM に手を出したのだった。

これはとても便利で、CLI 主体のオペレーションと見事に符合し、自由なカスタマイズによって手足のように自在に動かせるようだった。

そうしたキーボード操作主体でのコンピューティングは、マウスばかりを使うことがいかに生産性をスポイルしているかということに気付かせてもくれる。得心した者の眼には世界が違って見えるのだ。

このStumpWM、とても重宝したのだけれど、タイル型でないウィンドウマネージャにも魅力的なものは多いし、そちらで魅惑の小ツールとの組み合わせを楽しんだりしているうちに、あまり利用しなくなっていた。なんだその程度かと言わないで欲しい。だってそれは私の浮気心がいけないのだから。

それでもまたタイル型が恋しくなってきた頃、たまたま Manjaro Linuxの コミュニティ 版をインストールしてちょっと遊んだ。これはなんだかすごくいいかもしれない、わかりやすくて素早いな、と思った同梱のウィンドウマネージャが i3 だった。

私はこの i3 を Arch Linux にインストールして使ってみたのだけれど、そのときのメモをちょっとまとめた。

i3 のインストール

Arch Linux に X と i3 をインストール

すでに使っている Arch Linux へ i3 をインストールするのであれば pacman -S i3 dmenu ですむ。あとはディスプレイマネージャに任せるか、~/.xinitrc あたりに exec i3 などと記述して startx

あるいは、

Arch Linux をインストールしたけれど X や WM はまだこれからという状態ならば以下のようにインストールする。

さしあたり、日本語版ArchWikiの「ビギナーズガイド – ArchWiki」で、ネットワーク設定以外を終えているものとして。ビデオドライバについては Xorg / Driver – ArchWiki を参照のこと。なお、 DM は LightDM 、ネットワーク接続管理は NetworkManager にした。

wifi-menu    # 有線でなければこれでつなぐ
#----
pacman -S xf86-video-intel    # nvidiaならxf86-video-nouveauなど適宜
pacman -S xorg-server xorg-server-utils xorg-xinit xorg-xclock xterm
pacman -S i3-wm i3status dmenu rofi compton lxappearance ttf-dejavu otf-ipafont
pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
pacman -S networkmanager network-manager-applet gnome-keyring wpa_supplicant
systemctl enable lightdm
systemctl reboot    # 再起動

i3 のカスタマイズに便利なものをいくつか入れてある。

dmenu は i3 標準指定のメニューソフト。初めて i3 をインストールするなら必ず入れておいた方がいい。

rofi は便利なウィンドウスイッチャーで dmenu のかわりとしても使える。

compton はウィンドウの透過と影を生成する(タイリングで、なぜ透過や影が必要かって?)。

i3_wm_demo_transparency.jpg

lxappearance は軽量の GTK+ テーマスイッチャー。

lightdm-gtk-greeter-settings はログイン画面のテーマやアイコンなどをカスタマイズするアプリ。

再起動

インストールの後は再起動してLightDMの画面が表示されるのでログイン。

最初のログイン後に i3 が2つの質問をしてくる。

  • config をつくる? : ~/.config/i3/config が作成される。
  • $mod キーはどれ? : 私のデフォルトでは Mod4 ( Super / Windows キー) だった。

config はつくっておいて後でカスタマイズする。 $mod には Windows キーをあてれば迷いがなくていい。この $mod に指定したキーと何かを組み合わせて i3 に命令する。

Netwoork Manager と nm-applet

まずはなにより Network Manager でネットワーク接続を確保する。

$mod+Enter で xterm が起動するので、以下の要領で sytemd に任せるようにする。

systemctl enable NetworkManager
systemctl start NetworkManager
nm-applet &

nm-applet を起動するとステータスバーにアイコンが表示されるので、マウスでクリックして設定する。

なお、再起動した後でも nm-applet を表示させたいのならば以下の一行を ~/.config/i3/config の最後でいいので、追記しておく。

exec --no-startup-id nm-applet

ロケールの設定

GUI環境をいれたばかりなら、ロケール変更の必要もあるかもしれない。そうしなくても使えるけれど。

まずエディタで /etc/locale.gen を開いて ja_JP.UTF-8 UTF-8 という行を探し、アンコメント(頭の # をとる)する。

次に localectl でロケールを変更する。

localectl set-locale LANG="ja_JP.UTF-8"
source /etc/locale.conf

端末エミュレータ xterm の設定

$mod+Enter で起動される端末エミュレータは xterm だが、そのままだと白い。好き好きはあるのだろうけれども、私は黒っぽくいきたいと思うので以下のような設定をした。

!! ================================================================
!! Xterm
!! ================================================================

!! General
XTerm*termName: xterm-256color
XTerm*scrollBar: False
XTerm*cursorBlink: True

!! Fonts and Encoding
XTerm*utf8: True
XTerm*locale: True
XTerm*utf8Title: True
XTerm*faceName: xft:DejaVu Sans Mono
XTerm*faceNameDoublesize: xft:IPAGothic
XTerm*faceSize: 9
XTerm*scaleHeight: 1.08

!! Color Scheme : Tomorrow Night
!! https://github.com/chriskempson/tomorrow-theme

XTerm*background: #1D1F21
XTerm*foreground: #C5C8C6
! black
XTerm*color0: #282A2E
XTerm*color8: #373B41
! red
XTerm*color1: #A54242
XTerm*color9: #CC6666
! green
XTerm*color2: #8C9440
XTerm*color10: #B5BD68
! yellow
XTerm*color3: #DE935F
XTerm*color11: #F0C674
! blue
XTerm*color4: #5F819D
XTerm*color12: #81A2BE
! magenta
XTerm*color5: #85678F
XTerm*color13: #B294BB
! cyan
XTerm*color6: #5E8D87
XTerm*color14: #8ABEB7
! white
XTerm*color7: #707880
XTerm*color15: #C5C8C6

以上を ~/.Xresources に書いて、

xrdb -merge ~/.Xresources

などとしてリソース登録する。

~/.Xdefaults に書いた場合、リソースマネージャを利用すると設定が読まれなくなるとかあるようなので、ちゃんと ~/.Xresources に書いておいて xrdb コマンドでリソースマージするのがいいと思う。

あと、 xterm もいいのだけれど rxvt-unicode (urxvt) も軽くていい。インストールすれば i3 が urxvt を優先して使ってくれるもよう。

フォントレンダリングパッチ Infinality について

従前、ここでは Infinality bundle & fonts を使ってフォント表示を美麗にする方法を採っていたのだけれど、この infinality-bundle が更新されなくなってて、freetype2 の新バージョンに追いつかなくなってる。

そのまま使うといわゆる harfbuzz エラーをおこして PyGTKなどが動かず、著しい不自由に陥る。先行き不透明な状態でもあるので、infinality-bundle の利用はしばらく控えたほうがいいかもしれない。

アンインストールと代替案については「infinality-bundle アップデート停止中なので、とりあえずアンインストールするメモ」に書いたので参照してみて下さい。

i3 のフォント設定

デフォルトのままだと、ウィンドウタイトルやステータスバーのフォントがあんまりうまくない。先のインストールで入れた DejaVu と IPAゴシック を設定してみる。

nano ~/.config/i3/config

まずはウィンドウタイトルのフォント。

15〜16行目あたりに font pango:monospace 〜 という行があるので、これを以下のように書き換える。

font pango:DejaVu Sans, IPAGothic 12px

次にステータスバーのフォント。

設定ファイルの終わりの方に bar { 〜〜 } という記述が数行ある部分を書き換える。

bar {
        status_command i3status
        font pango:DejaVu Sans 11px
}

そして i3 を再起動 ( Shift+$mod+r ) すればいい。

今回はポピュラーな DejaVu と IPA ゴシックを設定したが、私がおすすめしたいのは Nasuフォント

もともとかっこいい源ノ角ゴシック(adobe-source-han-sans-jp-fonts)をもとに、I と l や濁点・半濁点などの区別がつきやすいよう様々な改良が施されており、特に等幅の NasuM はエディタで使うのにいい。VLゴシックがなんか丸すぎてダメだと思っている人にもおすすめです。

ダウンロードして ~/.local/share/fonts~/.fonts でもいい)の下に解凍し fc-cache -fv すれば使えるようになる。

i3 操作の基本

端末起動 / アプリ起動 / ログアウト

さきほどのように $mod+Enter を押すと端末エミュレータが起動する。もう一度押すと画面が分割されてウィンドウが増える。どんどん押すとどんどん分割されてウィンドウが増殖していく。

減らす (閉じる) には exit するか Shift+$mod+q を押す。この Shift+$mod+q ではどんなウィンドウでも閉じることができるので覚えておく。

i3 を終了してログアウトするには Shift+$mod+e を押す。画面上部にメッセージダイアログ(横棒ってかんじ)が出てくるので “Yes, exit i3” をクリックする。 DM まかせなら DM のログイン画面に戻る。

端末エミュレータからアプリを起動してもいいが、 i3 標準指定の dmenu を使うと便利だ。ドコモみたいな名前だけれど、シンプルで軽く優れたメニューアプリだ。インストールしてあれば $mod+d で起動できる。最上部に現れ、名称を入力していくとインクリメンタルに検索してくれる。カーソルキーで選択も可能だ。 Enter で起動。

i3 の再起動は Shift+$mod+r で行う。i3 が upgrade したり、設定ファイルを書き換えたときなどに。

キー 動作
$mod+Enter 端末エミュレータを起動する
Shift+$mod+q ウィンドウを閉じる
$mod+d アプリの起動メニュー (dmenu)
Shift+$mod+e ログアウト
Shift+$mod+r i3 の再起動

ウィンドウを縦横に構成する

ウィンドウを開くと右に開かれていくが(縦長ディスプレイでは下方向らしい)、この方向を変えるにはウィンドウを開く前に $mod+h あるいは $mod+v を押して、方向を決めておく。

例えば、あるウィンドウを選んでいる状態で $mod+v を押してから $mod+Enter を押すと、もとのウィンドウの垂直方向(下)に新しい端末が開く。また $mod+h を押した後であれば水平方向(右)に開く、という具合だ。

キー 動作
$mod+h (+ウィンドウ作成) 水平方向つまり右にウィンドウを作成する
$mod+v (+ウィンドウ作成) 垂直方向つまり下にウィンドウを作成する

ウィンドウの切り替え

複数のウィンドウがあれば切り替えないと使えない。$mod と j k l ; のキーの組み合わせで切り替える。

キー 動作
$mod+j 左のウィンドウ
Smod+k
$mod+l
$mod+;

ウィンドウの大きさ

$mod+f でフルスクリーン表示になる。ウィンドウタイトル欄もステータスバーも、そして枠までも消してくれる。別名没入モードとも言うか。ビデオの再生なんかにこれはいいと思った。

キー 動作
$mod+f フルスクリーン表示

ウィンドウのリサイズは、マウスでウィンドウの境界をドラッグするとできる。

リサイズをキーボードで行うには $mod+r でリサイズモードに入ってから行う。

キー 動作
$mod+r リサイズモードへと突入

リサイズモードに入ったらあとは方向キーかjkl;で。

$mod+r mode 動作
j または 水平方向に縮小
k または 垂直方向に拡大
l または 垂直方向に縮小
; または 水平方向に拡大

リサイズすると、タイル型に並んでいるのだから当然、片方を大きくすれば片方が小さくなるということだ。

おわりに

簡単に基本的な使い方までを記したけれども、本格的な操作の説明は i3 タイル型ウィンドウマネージャを使う (2) に。

Sources and Revisions

スポンサードリンク

コメント

  1. […] i3 wm タイル型ウィンドウマネージャを使う【Jenemal Notes】 […]