CLI などキーボード操作主体で便利なウィンドウマネージャ「i3」
GNOME や Xfce 、あるいはマックOSやウィンドウズみたいな GUI をオーバーラップウィンドウ方式という。ウィンドウの形が可変で、重ねられて、マウスポインタでつまんでどうこうするというおなじみのタイプ。
一方、それらをマジョリティとした対極にタイル型ウィンドウマネージャというのがあって、こっちの方が歴史は長くて昔の低性能CPUでも描画がラクだった。
このタイル型というのは、画面を格子で分割したその中に起動したアプリなんかを表示する。整然と並ぶものだから地味な印象だけれど、画面内のウィンドウは重なったりしないし、下に隠れるなんてこともなく、各々の主張をしっかりと受け止める。
マウスでつかんでずらしたりというのも許されないのだが、マウス操作を受け付けないというわけではなく、マウスを使うアプリではちゃんと使える。ただ、ウィンドウ操作のほとんどをキーボードでやるのが前提なのだ。
以前、私はウィンドウズなどですぐ Alt+Space x とやってウィンドウを最大化して使うものだから、だったらタイル型でも同じだろうと考えた。それで Emacs をよく使うので、似たキーバインドの StumpWM に手を出したのだった。
これはとても便利で、CLI 主体のオペレーションと見事に符合し、カスタマイズすると手足のように自在に操作できるようだった。
そういう、キーボード操作主体でのコンピューティングというのは、マウスばかりを使うことがいかに生産性をスポイルしているかということに気付かせてもくれる。得心した者の眼には世界が違って見えるのだ。
この StumpWM 、とても重宝したのだけれど、タイル型でないウィンドウマネージャにも魅力的なものは多いし、そちらで魅惑の小ツールとの組み合わせを楽しむうちにあまり利用しなくなっていた。なんだその程度かと言わないで欲しい。だってそれは私の浮気心がいけないのだ。
あるときたまさか Manjaro Linuxの コミュニティ 版をインストールしてちょっと遊んだ。これはなんだかすごくいいかもしれない、わかりやすくて素早いな、と思った同梱のウィンドウマネージャが「i3」だった。これを機に私のタイル型ブームが再燃したのだった。
私はこの i3 を Arch Linux にインストールして使ってみたのだけれど、そのときのメモをちょっとまとめた。
目次
i3 ウィンドウマネージャとは
i3 wm は X11 で動くタイル型ウィンドウマネージャだ。 wmii というウィンドウマネージャにインスパイアされて作られたものだという。
i3 とだけきくとインテルコアのことかと思うし、検索すればちっちゃい自動車の写真がいっぱいでてくる。だからググッと調べるときには ‘i3 wm’ としなくちゃならない。 i3 はそういう、いい感じにマイナー感を醸し出しているが堂々のタイル型ウィンドウマネージャなのだ。
公式サイトには “improved tiling wm” と表現されてある。
タイル型ウィンドウマネージャには Xmonad や Awesome あるいは Ratpoison とその後継の StumpWM などといったスグレモノがあるわけだけれど、今日これらはやや古くなってきたかもしれない。その点、 i3 はまだ少し若くて開発が活発なようだ。
タイル型といえばカスタマイズだろう。 i3 もこの例にもれずカスタマイズにほぼ制限がない。
キーボード操作が主体ということは、細かなカスタマイズが容易でなければならないということでもある。なぜなら、コンピューターキーボードの大きさやキー配置が多様であるばかりでなく、メニューキーやモディファイアキーのあり方、操作法というのは人それぞれ、千差万別だからである。加えて、マウスボタンよりもはるかに多くのキーがあるわけだから、便利な工夫はやり放題とも言える。むしろこの容易なカスタマイズ性が目的でタイル型を利用する向きも多い。
i3 の設定ファイルはプレーンなテキストで、そんなに難しいものでないからプログラミング経験なども必要ないだろう。思いついたらエディタで書いて即反映できるし、シェルスクリプトなどと組み合わせるのも容易だ。
デフォルトのキーバインドは vi によく似たものだが、これも自由にカスタマイズできる。 Emacs ライクなキーバインドも可能だろう。
タイル型を使おうという人の多くは CLI が好物なんじゃなかろうか、というのは勝手な推測だけれど、 Linux ユーザはシェルコマンドに親しむ(?)事が多いはずだから、こういった仕様はよりフレンドリーな魅力をもたらしているかと思う。
i3 のインストール
すでに使っている Arch Linux へ i3 をインストールするのであれば pacman -S i3 dmenu
ですむ。あとはディスプレイマネージャに任せるか、 ~/.xinitrc
に exec i3
などと記述して startx
。
あるいは、
Arch Linux をインストールしたけれど X や Window Manager (または Desktop Environment)はまだこれからという状態からは、以下の手順でインストールする。
さしあたり、 ArchWiki の インストールガイド – ArchWiki で、ネットワーク設定以外を終えているものとする。まだ再起動はしない。
※以前は ArchWiki 英語版、日本語版ともに Beginners’ Guide があったけれど、今は Installation Guide へ転送となっているのでそれに合わせてちょっと書き換えました。
永続的ネット接続の確保
ArchWiki のガイド に沿って進めてきたなら、既に有線接続か wifi-menu なんかでネットに接続していることであろう。このネットへの接続は明示的に永続化しておく必要がある。
ケース1) 有線接続の場合 dhcpcd が接続を確立しているだろう。 dhcpcd は base パッケージのインストールに含まれているから、あとはこれを永続化すればいい。すなわち以下のようにしておく。
systemctl enalbe dhcpcd
ケース2) Wi-Fi 接続あるいは Wi-Fi と有線の両方を設定したいということなら NetworkManager をインストールする(念の為 wifi-menu を動かせるよう dialog も入れる)。
pacman -S networkmanager network-manager-applet gnome-keyring wpa_supplicant dialog systemctl enable NetworkManager
いまここで systemctl start
をかますと接続中の dhcpcd や wifi-menu とかぶってしまうのでやらない。
なお dhcpcd と NetworkManager の両方を enable
するのはトラブルのもとなので同時に設定などしない。ちなみに設定をもどしたいなら systemctl disable
を使う。
network-manager-applet( nm-applet
)はマウス操作でネットワーク接続を設定できるようにするが、当の Window Manager がないと使えやしないので、このまま再起動せずに次項の X と i3 のインストールまでやってしまう。
X と i3 をインストール
ここでインストールするものは Xウィンドウシステムとビデオドライバ(xf86-video-*)、ウィンドウマネージャ(i3)、 デスクトップマネージャ(LightDM)である。ビデオドライバについては Xorg / Driver – ArchWiki を参照のこと。
以下のようにインストールして、 LightDM を有効化しておく。
pacman -S xf86-video-intel # nvidiaならxf86-video-nouveauなど適宜 pacman -S xorg-server xorg-xinit xterm i3-wm i3status pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings pacman -S dmenu compton lxappearance ttf-dejavu otf-ipafont systemctl enable lightdm
i3 の設定なんかで便利なものをいくつか入れてある。
lightdm-gtk-greeter-settings
はログイン画面のテーマやアイコンなどをカスタマイズするアプリ。
dmenu
は i3 標準指定のメニューソフト。初めて i3 をインストールするなら入れておいた方がいい。
compton
はウィンドウの透過と影を生成する(タイリングで、なぜ透過や影が必要かって?)。
lxappearance
は軽量の GTK+ テーマスイッチャー。
ttf-dejavu
は欧文書体 DejaVu、 otf-ipafont
は日本語書体 IPAゴシック と IPA明朝。
さて、そうしておいてから再起動。
systemctl reboot
再起動の後
再起動すると LightDM の画面が表示されるのでログインする。
最初のログイン後に i3 が2つの質問をしてくる。
- config をつくるか?
~/.config/i3/config
が作成される。$mod
キーは何か?- 私のデフォルトでは
Mod4
(Super
/Windows
キー) だった。
~/.config/i3/config
は後でカスタマイズに使う。 yes
しておく。
$mod
キーは別のキーと組み合わせて i3 に命令するときに使う。 Windows
キーをあてるのが迷いがなくていい。
Wi-Fi 接続
有線接続なら既にネットに接続されているはずである。けれど Wi-Fi 接続の場合はいま一度ネットワーク接続を確保しなければならない。
$mod+d
を押すと最上段の一行に dmenu という小さなランチャが立ち上がるので、そこで nm-applet
を起動する。
すると最下段のステータスバーにネットワーク接続のアイコンが表示されるので、マウスでクリックしてネットワークに接続する(SSID とパス入力)。これでネットワーク接続を永続化出来たはずだ。
なお、再起動した後でもネットワーク接続アイコンを表示させたいから、 exec --no-startup-id nm-applet
の一行をさきほど作成されたばかりの ~/.config/i3/config
に追記しておく。
$mod+Enter
を押すと端末エミュレータが起動するから、 nano
や vi
で ~/.config/i3/config
を開いて書き加えるか、あるいはコマンドラインで
printf "\n%s\n" "exec --no-startup-id nm-applet" >>~/.config/i3/config
などとしておく。
端末エミュレータ 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
に書く方法もあるが、リソースマネージャでの定義がある場合に ~/.Xdefaults
は読まれないので、普通は上記のように ~/.Xresources
を書いて(書き換えて)、都度 xrdb
コマンドでリソース定義しておくのが無難でいいと思う。
また、 xterm もいいのだけれど rxvt-unicode (urxvt) も軽くていい。インストールすれば i3 が urxvt を優先して使ってくれるもよう。
フォントレンダリングパッチ Infinality について
従前、ここでは Infinality bundle & fonts を使ってフォント表示を美麗にする方法を採っていたのだけれど、この infinality-bundle が更新されなくなってて、freetype2 の新バージョンに追いつかなくなってる。
そのまま使うといわゆる harfbuzz エラーをおこして PyGTKなどが動かず、著しい不自由に陥る。先行き不透明な状態でもあるので、infinality-bundle の利用はしばらく控えたほうがいいかもしれない。
アンインストールと代替案については「infinality-bundle アップデート停止中なので、とりあえずアンインストールするメモ」に書いたので参照してみて下さい。
i3 のフォント設定
i3 のデフォルトでは monospace
が指定されており、ウィンドウタイトルやステータスラインは等幅フォントで表示される。例えば ttf-dejavu
がインストールされていれば DejaVu Sans Mono なんかが使われたりする。日本語ロケールで IPAGothic
をインストールしていれば等幅のIPAゴシックが使われるかもしれない。
自分好みのフォントがあるだろうから、これを書き換える例としてプロポーショナルな DejaVu Sans と IPAゴシック の設定をする。
i3 の設定は ~/.config/i3/config
に記されているので、これをちょっと改変する。
nano ~/.config/i3/config
15〜16行目あたりに font pango:monospace 〜
という行があるので、これを以下のように書き換える。
font pango:DejaVu Sans,IPAPGothic 9
これで Shift+$mod+r
で i3 を再起動すれば、ウィンドウタイトルとステータスバーの両方がプロポーショナル書体に変わるだろう。
フォント設定書式は font pango:<font>,<font>,... <style> <font-size>
という様に指定する。スタイルも指定できるから、
font pango:DejaVu Sans,IPAPGothic Italic 9
などとすると斜体で表示される。
なお、サイズは 12px
というようにピクセルでも指定できるもよう。
また、ステータスバーのフォントをウィンドウタイトルとは違うものにも設定できる。試しに今度は monospace の DejaVu Sans Mono を指定してみる。
設定ファイル ~/.config/i3/config
の最後に bar { 〜〜 }
という記述が数行あるところへ、フォントの設定を書き加える。
bar { status_command i3status font pango:DejaVu Sans Mono 12px }
これで i3 を再起動( Shift+$mod+r
)すればステータスバーのフォントが変わる。
さて、ここではポピュラーなフォントとして DejaVu と IPA ゴシックを設定したが、個人的におすすめしたいのは Nasuフォント 。
もともとかっこいい源ノ角ゴシックをもとに、I と l や濁点・半濁点などの区別がつきやすいよう改良されており、特に等幅の NasuM はエディタで使うのにいい。VLゴシックがなんか丸すぎてダメだと思っている人にもおすすめです。
ダウンロードして ~/.local/share/fonts
の下に解凍し fc-cache -fv ~/.local/share/fonts
とすれば使えるようになる。
i3 操作の基本
簡易的だが i3 の基本操作について記す。
端末起動 / アプリ起動 / ログアウト
キー | 動作 |
---|---|
$mod+Enter |
端末エミュレータを起動する |
Shift+$mod+q |
ウィンドウを閉じる |
$mod+d |
アプリランチャー (dmenu) |
Shift+$mod+e |
ログアウト |
Shift+$mod+r |
i3 の再起動 |
$mod+Enter
を押すと端末エミュレータが起動する。もう一度押すと画面が分割されて端末エミュレータのウィンドウが増える。どんどん押すとどんどん分割されてウィンドウが増殖していく。
減らす (閉じる) には exit
コマンドを実行するか Shift+$mod+q
を押す。この Shift+$mod+q
ではどんなウィンドウでも閉じることができる。
アプリの起動はもちろん端末エミュレータからやってもいいけれど、 i3 標準指定の dmenu を使うのが便利だ。 $mod+d
を押すと最上部に現れ、コマンドを入力していくと逐次検索してくれる。カーソルをあわせて Enter
で起動。
i3 を終了してログアウトするには Shift+$mod+e
を押す。画面上部にメッセージダイアログ(横棒ってかんじ)が出てくるので “Yes, exit i3” をクリックする。 DM まかせだったなら DM のログイン画面に戻っていく。
i3 の再起動は Shift+$mod+r
で行う。i3 が upgrade したり、設定ファイルを書き換えたときなどに。
ウィンドウを縦横に構成する
ウィンドウを開くと右に開かれていくが(縦長ディスプレイでは下方向らしい)、この方向を変えるにはウィンドウを開く前に $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+r |
リサイズモードへと突入 |
$mod+f
でフルスクリーン表示になる。ウィンドウタイトル欄もステータスバーも、そして枠までも消してくれる。ビデオの再生なんかにいい。
ウィンドウのリサイズは、マウスでウィンドウの境界をドラッグする。あるいは、これをキーボードで行うには $mod+r
でリサイズモードに入ってから行う。
リサイズモードに入ったらあとは方向キーか j
k
l
;
で。
タイル型に並んでいるのだから、片方を大きくすれば片方が小さくなるということだ。
ESC
を押すとリサイズモードを終了する。
$mod+r mode | 動作 |
---|---|
j または ← |
水平方向に縮小 |
k または ↓ |
垂直方向に拡大 |
l または ↑ |
垂直方向に縮小 |
; または → |
水平方向に拡大 |
ESC | リサイズモードを終了 |
おわりに
$mod+Enter
で起動する端末エミュレータは i3-sensible-terminal
というシェルスクリプトを介して実行される。端末エミュレータが複数インストールされている場合に妥当なものが起動されるようなスクリプトのようだ。
rxvt-unicode (urxvt) をインストールした場合には xterm
よりは優先するが、 x-terminal-emulator
を起動できる場合はそれを優先することとなっている。つまり Ubuntu や Debian に i3 をインストールした場合は、 x-terminal-emulator
が起動されてしまう。この場合 i3/config
を書き換える(例: bindsym $mod+Return exec urxvt
)ことでもいいが、環境変数 TERMINAL
が設定されてあればこれの内容を最優先するもよう(関係の記述が 別投稿 にあり)。
以上、ここでは i3 のインストールと基本的な使い方を記したけれども、もう少し詳しい操作説明やカスタマイズについては別に記した。
Sources and Revisions
- i3 Official web site
- GitHub : i3
- i3 User’s Guide
- Other references
- i3 – ArchWiki
- How to customise your Linux desktop: i3 Window Manager | ZDNet
- Your guide to a damn light Arch Linux with i3 and text apps — Avalanche of sheep
- Nasuフォント : 見た目が似ている文字を判別しやすくするフリーフォント – itouhiroはてなブログ
- インストールガイド – ArchWiki
- xorg-server-utils removed from official repositories / Installation / Arch Linux Forums
- Revisions
- xtermを 追記 / 使い方に追記
- i3 のフォント設定を追加
- i3 インストールに追記/写真追加/ほか
- インストールに詳細を加えた
- Infinality 更新不具合のためその節をカット
- Installl Guide にあわせて i3 のインストールを書き換えた
コメント
[…] i3 wm タイル型ウィンドウマネージャを使う【Jenemal Notes】 […]
[…] i3 wm タイル型ウィンドウマネージャを使うことのメモ | Jenemal Notes i3 – ArchWiki i3 Window Manager を使ってみて分かったおすすめ設定集 – Qiita i3: i3 User’s Guide […]
[…] 参考サイト – i3+Arch Linux初期環境構築まとめ – i3 wm タイル型ウィンドウマネージャを使うことのメモ […]