2017年12月5日 | ブログ記事

タイル型ウインドウマネージャーが凄い - i3wm

takashi_trap

この記事はtraP Advent Calendar2017 12月5日の記事です。
この記事はLinuxユーザー或いは、Linuxに興味がある人向けの記事となっています。ご了承ください。

はじめに

どうも、寺田健二です。今年も担当日前日の夜に泣きながらAdCを書いています。最初はUnicodeを探検すると題して、Unicodeにある全てのコードブロックの文字を眺めてちょっとした話や感想を述べるのをひたすらする記事を(締め切りの数日前に)書いていましたが、あまりにも文字が多かったので挫折し、急遽内容を変更しました。そんなことはどうでもいいのでさっそく本題に移っていきます。

僕は家のデスクトップPCはWindowsと †ArchLinux† のデュアルブート構成にしていて、普段は †ArchLinux† を使っているのですが、今年の春か夏のはじめ?(全然覚えてない)あたりに、デスクトップ環境をCinnamonからデスクトップ環境無しでウインドウマネージャーをi3wmに乗り換えました。このi3wmがとても快適で素晴らしく、一生i3wmから抜け出せないんじゃないかってぐらい私にとっては便利だったので今回紹介しようと思います。

そもそもウインドウマネージャー(WM)とデスクトップ環境(DE)ってなんだよ

ウインドウマネージャーは名前の通りソフトウェアのウインドウ(GUI)を管理しているプログラムで、GUIアプリケーションはこのウインドウマネージャーにGUIの描画データを伝え、それをウインドウマネージャーが他のアプリケーションの描画も考慮しながら、実際にそれらのGUIをディスプレイ上に配置して描画します。
対してデスクトップ環境とは、統一感のあるデザイン・一貫したコンセプトの元で作られた基本アプリケーション(ファイルブラウザ、画像ビュワー・動画再生ソフト・テキストエディタ・メールソフトなど)、テーマ、サービス(音量管理、デバイス管理、ネットワーク管理など)などをパッケージとしてまとめたものであり、そのデスクトップ環境専用のウインドウマネージャーを含んでいます。デスクトップ環境のパッケージをインストールすれば、それだけで一般的なソフトウェアが一通り揃い、すぐに普段使いのコンピューターとして使いはじめることができます。

DEをインストールせず、WM単体をインストールする魅力

デスクトップ環境は必要なものが全て入ってますが、必要でない・使わないソフトウェアも一緒にインストールされてしまいます。また、デスクトップ環境の動作に必要な多くのバックグラウンドプログラム(デーモン)が動いて、その中には使わない機能を提供しているものも含んでいます。これらは使ってないのにメモリだけを消費しています。

そこで、ウインドウマネージャーです。

ウインドウマネージャーは基本的にウインドウの管理しかしません。そのため、基本アプリケーションは自分で入れなければならないし、音量管理やネットワーク管理もしてくれません。

逆に言うと、世の中にある多くのソフトウェアから自分が必要なものだけを自分で選んでインストールすることが出来ます。要らないソフトウェアや機能を入れないことで、機能がシンプルになり、ストレージを節約できるし、メモリ・CPU使用も削減することが出来ます。(ウインドウマネージャー単体はかなりメモリ消費量が少ないです)

自分でインストールしなければいけない事から、色々と調べないといけないことが出てきます。しかし、様々なソフトウェアの違いや、機能・デスクトップ環境の仕組みなどを色々知ることが出来て、楽しいし、時間も無限に溶けます。そして、自分専用の環境を作ることが出来ます。

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

ちょっと脱線しましたが、話を元に戻します。
世の中には様々なウインドウマネージャーが存在していますが、僕が使っているタイル型のウインドウマネージャーi3は非常に便利です。

VirtualBox_arch_04_12_2017_22_42_12
i3環境のスクリーンショット

特徴1:画面が綺麗に整理される

上のスクリーンショットのようにウインドウはタイルのように敷き詰められて表示されます。リサイズをしない限りは画面は等分割されて並びます。また、タイル型でない普通のデスクトップ環境にありがちな、ウインドウを開きすぎて目的のウインドウがどこにあるかわからないという問題は、基本的にウインドウ同士が重なることのないタイル型の環境では起こりません。

特徴2:ワークスペース機能

仮想デスクトップとも言いますが、仮想的に複数のディスプレイを作り、それを切り替えて表示することができるアレです。

特徴3:タブ・スタック化機能

VirtualBox_arch_05_12_2017_01_18_02
厳密にいうとi3は、主としてはタイル型ではあるんですが、動的ウインドウマネージャーという部類に入ります。その動的という意味での機能一つとして、一つのタイルに、複数のウインドウをタブ、あるいはスタックとして重ねて表示させることが出来る機能があります。重なるといっても、ウインドウタイトルは常に上部に表示されるため迷子になることはありません。

特徴4:フローティングウインドウも一応使える

VirtualBox_arch_05_12_2017_01_48_58
ウインドウをタイル状に並べるといっても、ダイアログウインドウなども一緒に並べてしまうのは不自然です。そのため、i3ではダイアログウインドウとして生成されたウインドウは普通のデスクトップ環境と同じように、画面を自由に移動できるウインドウとして表示されます。さらに、ダイアログでないウインドウもショートカットキーでフローティング化させることが可能になっています。フローティング化されたウインドウはタイルより常に前面に表示されます。
また、設定ファイルに記述を追加することによって、特定のウインドウを自動的にフローティング化させることもできます。
しかし、ダイアログでないウインドウは普通フローティング化させず、タイル状で使うのが基本ですね。

特徴5:ウインドウに関する全ての操作がキーボードのみで行える

これは僕がi3を使う最大の理由であり、快適さの所以です。
ウインドウの移動(入れ替え)・大きさの変更・整列方向の変更・フォーカスの変更(アクティブウインドウの移動)・ワークスペースの切り替えなどなどウインドウに関する操作は全てキーボードショートカットで行うことが出来ます。
例えば、僕の設定の場合、

などと、Windowsキー(Mod4キー)との組み合わせで操作が行えるようにしています。多くのソフトウェアがキーボードでも操作できるように作られていたり、ターミナルの使用頻度が高いLinuxにおいて、ウェブブラウザなどを使わない限りは、i3を使うことでほぼマウスなしで過ごすことが可能です。

また、ショートカットキーの設定はウインドウの操作だけでなく、任意のソフトウェアの実行も割り当てることが出来ます。

すごい

画面がタイル状に綺麗に並べられて、かつキーボードで操作できるということが僕の人生を変えました。しかも、ものすごい軽いです。今回の記事では具体的な導入手順等は書きませんでしたが、googleでi3wmとググれば日本語の記事もいくつか出てくるのでそれを参考にしてください。また、先程も言いましたが、i3はウインドウの管理しかしてくれないため、日本語入力メソッド・音量調整など必要な機能は全て自分で入れなければなりません。なかなか調べる必要がありますが、頑張ってみてください。とはいっても、僕がi3と一緒に使っているものをほんの少しだけ紹介しようと思います。

i3周りの話

Rofi

i3はソフトウェアを開くためのランチャー的な機能は含まれていないため、自分で用意する必要があります。
僕が使っているのはRofiと言うテキスト型のシンプルなランチャーです。
VirtualBox_arch_04_12_2017_23_06_06
上のスクリーンショットのように、アプリケーション名の一部を入力し絞り込みながら起動したいアプリケーションを選択するタイプのものとなっています。
僕はi3の設定ではWin+DでRofiが起動するようにショートカットキーを設定しており、いつでもどこからでもアプリケーションを起動することができるようになっています。

VirtualBox_arch_04_12_2017_23_17_04
またRofiは単なるランチャーではなく、独自の選択肢を表示させるようにすることもでき、例えば僕はPCの再起動・シャットダウンもRofiで選んで行えるようにしています。(これもショートカットキーを割り当てて、どこからでも呼び出せます)

Rofiの詳細については以下のページがとても参考になると思います。
Rofiでクールな軽量ミニマルランチャー | Jenemal Notes

i3status

画面上部或いは下部に表示させることができるバーです。今まで出てきたスクリーンショットの上に映っていたのがそうです。
このバーは表示する内容を設定ファイルで書き換えるでき、例えばCPU・メモリ使用率や、回線速度などをフォーマットなどを指定して表示させることが出来ます。

Polybar

実は上で言っといてなんですが、i3statusは僕のMacBookAir上の仮想のLinux環境で使ってて、本環境のデスクトップPCではi3statusではなくPolybarを使っています。Polybarはi3statusよりも見た目を柔軟に設定でき、さらに外部のスクリプトを使って任意の内容のものをバーに表示させることが出来ます。書くのが面倒なので詳しくはググってみてください。

テーマ

i3と上であげたソフトウェアはどれも設定ファイルによって外観や配色を変えることが出来ます。配色を統一することでかっこいい環境を作ることが出来ます。今まで挙げたスクリーンショットは実はgruvboxという配色テーマで統一して、設定が書き換えられてたものです。

いろんな人の設定ファイルを参考にする

Linux(あるいはUnix系)では多くのソフトウェアがテキスト形式の設定ファイルを採用しています。そのため、多くのユーザーが自身の設定ファイル群をまとめてgithubなどでdotfilesとして共有しています。i3wmやPolybarも例外ではありません。もちろん完全オリジナルな設定を書くのもありですが、色々な人の様々な設定ファイルを参考にし、いいとこ取りをすることでより良い環境にすることが出来ます。
たまたま見つけたんですが、DotShare.itと言うサイトにはユーザーがソフトウェア毎に設定ファイルを共有していて、i3の設定ファイルもあります。大体はスクリーンショット付きで共有されているので、好きなデザインなどを見つけて参考にするといいです。

まとめ

あんまり良いスクリーンショットを用意出来なかったと思いますが、皆さんも是非i3wmから自分だけの快適な環境を作って楽しんでみてください。またその際には、自分だけの環境を作るのにピッタリな†ArchLinux†と言うLinuxがあるので、もし†ArchLinux†を使ってないのであれば検討してみてください。

良い†ArchLinux†ライフを!

明日の担当は、klan氏、Achat氏、tubotu氏の3人です。お楽しみに!

この記事を書いた人
takashi_trap

kotlin書きます。最近はGoも。

この記事をシェア

このエントリーをはてなブックマークに追加

関連する記事

2018年7月7日
ますにかえる ハッカソン参加記
yusuke
2017年12月27日
Splatoon2~ボムの使い方~
shigurure
2017年12月26日
RustでMCMC(Metropolis-Hasting)
David
2017年12月26日
NinjaFlickerが完成しました
gotoh
2017年12月25日
Project Obelisk [traP Advent Calendar 2017]
nari
2017年12月25日
tobiom

活動の紹介

カテゴリ

タグ