i3 Window Manager を使ってみて分かったおすすめ設定集

# i3 Window Manager とは
タイル型のWindow Managerです。というのは、1つのワークスペースにウィンドウが1個しかなければ画面全体を占領して、2つになったら半分、・・・・みたいな具合にウィンドウを配置するタイプのWMのことです。
もちろん、縦分割、横分割などは指定できますし、ウィンドウをタブのようにしたり、普通のWindowsやMacのウィンドウのような、マウスで動かせるフロート型のウィンドウを作ることもできます。

![a.png](https://qiita-image-store.s3.amazonaws.com/0/88256/33fad03f-8b61-343b-d607-d6534ff3c93b.png)


ウィンドウの切り替えや移動がマウスを使わずにキーボードで出来ます。とっつきにくいものの、慣れると非常に快適に操作が出来ます。

日本語の情報なら、Arch Linux wikiに充実しています。
https://wiki.archlinuxjp.org/index.php/I3
また、英語なら、本家のユーザガイドがおすすめです。
https://i3wm.org/docs/userguide.html

また、何かに困ってググる際は、i3だけだとノイズ入りまくりなので、i3-wmなどとすることをおすすめします。

# おすすめ設定
デフォルトでも慣れたら使いやすいのですが、設定を追加・変更できるのが醍醐味です。
できるだけ、デフォルトのキーバインドは壊さない方針で設定しています。

一応、私の.config/i3/config は[ここ](https://gist.github.com/gyu-don/552d8100a0e9bea80d541bae44285b68)にアップロードしました。

## デフォルトの .config/i3/config に、追加してよかった設定

### 哀れなWindowsユーザのために、Alt+F4でウィンドウを閉じるようバインド
`bindsym Mod1+F4 kill`
Alt+F4がベストかは諸説あるかもしれませんが、デフォルトのウィンドウを閉じるキーバインドはMod+Shift+Qと、手がつりそうになるキーバインドのため、デフォルトとは別で使いやすいものを設定した方がいいような気がしています。

### Mod+PageUp/Mod+PageDownで前の/次のワークスペースへ
```
bindsym $mod+Prior workspace prev
bindsym $mod+Next workspace next
```

PageUp, PageDownはPrior, Nextと書くらしいです。わかんないですね。

### キーボードのマルチメディアキーやスリープキー、液晶の輝度設定に関するもの
ノートパソコンや、そういうのついたキーボードの使い手の人は、この設定はほしいと思います。
コメントアウトされてる設定は、私のノートパソコンにないためです。

音量調整には別途 pactl コマンドが必要です。(PulseAudioの場合)
サスペンドのために systemctl 使うのは、もしかするとディストリビューションによっては違うコマンドになるかもしれません。(Arch Linuxの場合はこれでOKです)
スクリーンの輝度調整には別途 xbacklight コマンドが必要です。
マルチメディアの再生・停止関連には別途 playerctl コマンドが必要です。
なければ、pacmanなり、apt-getなり、yumなりでインストールしてください。

```
# Multimedia keys
# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound

# Sleep key
bindsym XF86Sleep exec --no-startup-id systemctl suspend

# Screen brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 10 # increase screen brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 10 # decrease screen brightness

# Media player controls
# bindsym XF86AudioPlay exec playerctl play
# bindsym XF86AudioPause exec playerctl pause
# bindsym XF86AudioNext exec playerctl next
# bindsym XF86AudioPrev exec playerctl previous
```

### Mod+Shift+Eを押したときの終了コマンドを豪華にする
デフォルトでは、ログアウトしか用意されてなかったと思います。
`bindsym $mod+Shift+e` の行を探して、以下に書き換えてください。

```
bindsym $mod+Shift+e exec --no-startup-id \
        "i3-nagbar -t warning -m 'Do you really want to exit i3?' -b 'Shutdown' 'systemctl poweroff' -b 'Reboot' 'systemctl reboot' -b 'Logout' 'i3-msg exit'"
```

Shutdown, Reboot, Logout を用意するようにしました。
Shutdown, Reboot のためのコマンドはシステムによって異なる場合がありますので、動かなさそうなときは適宜書き換えてください。(Arch Linuxではこれで動きます。)

### dmenuをi3-dmenu-desktopに変える
デフォルトの設定ファイルに、ゴタゴタとコメントが書いてありますが。
要約すると、こっちの方がいいんです。
`bindsym $mod+d exec --no-startup-id i3-dmenu-desktop`
何がいいかというと。こっちを使うと、Mod+dで現れるランチャーでの補完対象が、/usr/share/applications/などの下にあるdesktopファイルに限られるようになります。

### ウィンドウタイトルバーをマウスでホイールクリックしたとき、ウィンドウを閉じる設定
`bindsym button2 kill`

どんだけウィンドウ閉じる設定好きなんだよ！って言わないでください。
マウスの設定は、Modを押しながらクリックの設定や、タイトルバーだけじゃなくウィンドウ全体で有効な設定などもできますので、マウス周りの設定をがんばりたい人は
https://i3wm.org/docs/userguide.html#mousebindings
もご参考に。

### 壁紙を設定する
`exec --no-startup-id "feh --bg-scale $HOME/.config/i3/wallpaper.jpg"`
$HOME... の部分は、適宜、壁紙へのパスを入れてください。入ってない場合はfehコマンドが必要です。
i3に慣れるまでの間は、i3のチートシートなどを壁紙にしたらいいかも。(私はそうしてました)

### ウィンドウの半透明化を可能にする
`exec --no-startup-id compton -cbm 0.75`
comptonは、i3と共存できるコンポジットマネージャです。詳細は
https://wiki.archlinuxjp.org/index.php/Compton
などにあります。

### その他、i3起動時に開始する設定にしているアプリケーション
みなさん、薄々気づいているとは思いますが。execから始まる行は、起動時のコマンド実行です。
--no-startup-idについては、ユーザガイドに意味が載っていますが、おまじない程度に思っていただければ。

```
exec --no-startup-id nm-applet
exec --no-startup-id dunst
exec --no-startup-id fcitx
exec --no-startup-id parcellite
exec --no-startup-id volumeicon
```

nm-applet: パネルに表示される、ネットワークマネージャのアプレットです。特にノートパソコンのように移動を前提にした機器を使っている方は、Wi-Fiの接続先を変えやすい[ネットワークマネージャ](https://wiki.archlinuxjp.org/index.php/NetworkManager)を使っている人が多いと思います。
dunst: 軽量な[デスクトップ通知デーモン](https://wiki.archlinuxjp.org/index.php/%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E9%80%9A%E7%9F%A5)です。dunstじゃなくても、何か通知受け取れるものは入れた方がいいと思います。
fcitx: 俗に言う日本語入力システムです。Linuxの日本語入力システムはインストールだけじゃ使えないことも多く .xprofile などにおまじないを追加するなどが必要となるので、まだ入れてない方は各種ディストリビューションの資料(Archだと[このへん](https://wiki.archlinuxjp.org/index.php/Fcitx))を参考にしながら入れるとスムーズに入れられます。
parcellite: 軽量な[クリップボードマネージャ](https://wiki.archlinuxjp.org/index.php/%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89)です。コピペしたものがどっかいっちゃう、という悩みを抱えている人は、ぜひ入れましょう。
volumeicon: 音量調整用アプレットです。

### アプリケーション固有の設定
アプリケーション固有の設定は、以下のように書きます。ここでは、動画プレーヤーのmpvはフロート表示するようにしています。
`for_window [class="mpv"] floating enable`
クラスを調べるのには`xprop`コマンドが使えます。アイコンのAAまで出てきて鬱陶しいので`xprop | grep WM_CLASS`とするのがいいです。

# .config/i3/config以外に追加している、i3を便利に使う設定

## .xprofileに以下を設定
Qt/KDE系のアプリケーションで、アイコンが全然表示されない、などの悩みを解消できます。
`export QT_QPA_PLATFORMTHEME=qt5ct`


## .Xmodmapに以下を設定
ひらがなカタカナキーをつぶしてModキーにする設定です。
ノートパソコンや小さいキーボードで、右側modキーがない場合に便利です。
`add Mod4 = Hiragana_Katakana`
i3のModキーをAltに設定している方は、Mod4ではなくMod1に割り当ててください。
理由はよくわからないのですが、i3のconfigに`xmodmap -e ...`を書いても、なぜかうまくいかないので、.Xmodmapに書いています。

# さいごに
タイル型ウィンドウマネージャとノートパソコンの相性はいいに違いない、という根拠ない確信のもと、i3を入れてみましたが。
やはり、タイル型ウィンドウマネージャとノートパソコンは相性抜群です。