ウィンドウマネージャを EXWM にしてみた

HIGASHI Taiju
4 min readFeb 25, 2018

--

EXWM は、Emacs をタイル型ウィンドウマネージャにしてしまおうという、Emacs as an Operationg System を地で行く、野心のあるプロダクトで、Emacs 好きな自分としては非常に気になっていた存在だった。

ただ、reddit 等の下馬評で「素直に i3wm 使えよ」みたいな意見があったり、不安定という意見があったりしたので、過度な期待はしていなかった。しかしながら、使ってみると全然いい感じだったので、最初に入れた StumpWM からスイッチすると思う。

インストールは非常に簡単だった。

Emacs で package-list-packages を開いて exwm をインストールし、パッケージのヘルプに記載の通り、~/.emacs.d/init.el に下記の設定を記述して、

(require 'exwm-config)
(exwm-config-default)

ダウンロードしたパッケージの中に入っている xinitrc の内容を ~/.xinitrc にコピーしたら、ログアウト後にすぐに使えるようになった。

個人の端末でやることと言えば、大体 Emacs と Google Chrome のウィンドウの横断で事足りているし、ミニマルな人間なので、これで必要十分な気がする。

アプリケーションの起動

shell-commandasync-shell-command またはターミナルエミュレータ等から直接対象アプリケーションの実行ファイルを叩けばアプリケーションが起動できるが、トラブルの元らしいので s-& というキーバインドで起動するのが良いとのこと。Google Chrome を起動する場合は s-& google-chrome RET のような感じ。

ウィンドウのモード

EXWM は当然 Emacs ライクなウィンドウマネージャ(というか Emacs そのもの)なので、普段どおりの操作でバッファの切り替えをすることがウィンドウの切り替えに相当する。

EXWM のウィンドウには line-modechar-mode という2つのキーバインド形態がある。ちょうど term モード(そして、EXWM では xterm がそのまま使える!)の操作のような感じで、この辺も既存の文脈が効いてくるので、学習コストが低くて良い。

line-mode がいわゆる Emacs 操作が可能なモードで、C-x 0 とか C-x 1 とかでメインウィンドウを消したり、サブウィンドウを消したり、 C-x o で別のウィンドウに切り替えたりなど普段どおりの操作でウィンドウ操作ができる。

line-mode の時はいくつかのキーが Emacs ライクなキーバインドでエミュレーションされていて、例えば Google Chrome を line-mode で操作すると、 C-n で下にスクロールでき、C-p で上に、C-f で右に、C-b で左に、C-a で先頭に、C-e で後尾にスクロールできた。

char-mode の時は、対象のアプリケーションのキー操作が利用できる。

両者のモードは s-rC-c C-k などで切り替えができる。

ワークスペース

EXWM にはワークスペースという概念があって、 s-w で対象のワークスペースを選択できる。ワークスペースはデフォルトで4つあるが、設定で増やしたり、減らしたりできる。

Emacs とは異なる IDE でプログラミングしたりする時は、キーバインドの混乱が煩わしいので、ワークスペースを一つ潰して、char-mode + フルスクリーン (C-c C-f) で作業した方が良い。

まだ何もカスタマイズしていないし、慣れてもいないけど、Emacs のバックグラウンドで理解が進むので、すぐに慣れると思う。

また、StumpWM を利用していた時に比べて、余計な処理が動かないためか、Emacs のパフォーマンスがすこぶる良い。

ウィンドウマネージャを EXWM にするということは、Emacs のパフォーマンスが OS 全体のパフォーマンスに直結するので、このままトラブルに出会わなければ、ウィンドウマネージャは EXWM というのが自分的に定着しそうな気配。

i3wm 等の新しめなタイル型ウィンドウマネージャを使ったことがないので、いろいろツッコミどころ満載な評価だとは思います ; p

SEE ALSO

--

--