概要

i3wmとはタイリングウィンドウマネージャの一種です。

基本操作がすべてキーボードででき、$mod(prefixキー)+Enterでターミナルが起動, $mod+Shift+qでウインドウをキル, $mod+Shift+rでi3wmを再起動などできます。

$modキーは大抵AltキーかSuper(Windows)キーです。

これはデフォルトですがカスタムキーバインドが自由に設定できます

他のタイリングウィンドウマネージャと違うのはフローティングウィンドウができます

フローティングウィンドウにするには$mod+Shift+spaceでできます

おすすめパッケージ

  • alacritty: ターミナル, 設定ファイルがyml
  • kitty: ターミナル
  • feh: 壁紙設定
  • nitrogen: 壁紙設定
  • flameshot: スクリーンショット(Qt)
  • scrot: コマンドラインからスクリーンショット, シンプル
  • gammastep: 画面を暖色にして目に優しく, waylandでも使える
  • redshift:画面を暖色にして目に優しく, X11のみ使える
  • gpicview: 画像ビューア
  • lximage-qt: lxqtの画像ビューア
  • gvfs-mtp: mtpデバイスをファイルマネージャーで操作, Androidなど
  • thunar, pcmanfm, nemo: ファイルマネージャー
  • pcmanfm-qt: ファイルマネージャー(Qt)
  • i3lock: i3wmのためのロック画面
  • betterlockscreen: i3lockよりきれいなロック画面, aurにある
  • i3status: アプレットなどを表示するバー
  • i3status-rust: rustで書かれたi3status、設定ファイルはtoml
  • kvantum: qt5のテーマ群, adaptaなどに似たテーマが入っていた
  • qt5ct: qt5のテーマ設定

QT_QPA_PLATFORMTHEME変数をqt5ctに設定する必要がある

~/.xprofileなどに追記

export QT_QPA_PLATFORMTHEME=qt5ct
  • lxappearance-gtk3: gtk themeの設定
  • xfce4-clipman-plugin: クリップボードマネージャー
  • pavucontrol: pulseaudioをguiで調整
  • pavucontrol-qt: pavucontrolのqt版
  • picom: コンポジター, ウィンドウ透過が設定できる, これ動かさないと画面がまともに動かないので推奨
  • rofi: dmenuの替え, テーマが豊富なのでカスタマイズがやりやすい
  • rofimoji: rofiで絵文字が打てます, 絵文字フォントが必要だと思われる
  • xfce4-notifyd: xfce4通知デーモン, これがgtkの設定尊重してくれてきれい
  • dunst: 通知デーモン, こっちのほうがシンプルかも
  • xss-lock: 画面の電源が切れた際とsuspendした際にロックしてくれる
  • light: バックライト調整
  • playerctl: 音楽コントロール
  • kate: kde付属のエディタ、kwriteというのも付いてくる
  • lxqt-archiver: xarchiverのようなもの(Qt)
  • kcalc: kdeの電卓(Qt)
  • ksysguard: GUIのタスクマネージャー(プロセスモニター)(Qt)

設定

ユーザーの設定は~/.config/i3/configです

起動するとウィザードが設定を生成してくれます

最初に$modキーを何にするか聞かれるのでお好みの方を選んでください

おすすめの設定について書きます

altキー

altキーを設定で書きやすくするために変数化してます。

i3/config

set $alt Mod1

set VAR KEY で変数定義できます

ここでは$altを定義してます

ウインドウをキル

60行目を書き変えます

i3/config

bindsym $mod+q kill

bindsym KEY BEHAVIOR でキーバインド設定できます

bindsym KEY exec COMMAND で任意のコマンドをキー割当します

上記は$mod+Shift+qはきついので$mod+qでウインドウをキルできるようにしてます

h, j, k, lでウィンドウ移動をできるようにする

i3/config

bindsym $mod+l focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+h focus right
bindsym $mod+l focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right

垂直分割のキーバインドが衝突するので変更

i3/config

bindsym $mod+b split h

fehで壁紙を設定

feh --bg-scale ~/Pictures/wallpaper.jpg

で壁紙を設定できます

画像ファイルのパスは書き換えてください

次回起動時も同じ壁紙を設定する設定

i3/config

exec --no-startup-id ~/.fehbg

exec –no-startup-id COMMAND で自動起動ができます

ワークスペースを移動

https://raw.githubusercontent.com/benkaiser/i3-wm-config/master/workspace_controller.py

これを~/.config/i3/workspace_controller.pyにダウンロード&配置

$mod+tabで次のワークスペース

$alt+tabで前のワークスペースに移動できます

i3/config

set $controlw ~/.config/i3/workspace_controller.py
bindsym $mod+Tab exec $controlw next go
bindsym $alt+Tab exec $controlw prev go

キーボードで音楽コントロール

i3/config

bindsym XF86AudioPlay exec playerctl play-pause    
bindsym XF86AudioNext exec playerctl next    
bindsym XF86AudioPrev exec playerctl previous

キーボードでバックライトコントロール

i3/config

bindsym XF86MonBrightnessUp exec light -A 5        
bindsym XF86MonBrightnessDown exec light -U 5

フローティングウィンドウ

i3/config

for_window [class="Lxappearance"] floating enable
for_window [class="GParted"] floating enable
for_window [class="Pavucontrol"] floating enable
for_window [class="fcitx5-config-qt"] floating enable
for_window [class="mpv"] floating enable resize set 1000 800
for_window [class="Gnome-system-monitor"] floating enable
for_window [class="Gpicview"] floating enable
for_window [class="Xarchiver"] floating enable

以下のコマンドでWindow classを取得できます

xprop | grep WM_CLASS

i3-gaps独自の設定

i3/config

gaps inner 14
gaps outer 7
smart_gaps on
for_window [class="^.*"] border pixel 2
focus_follows_mouse no

gaps inner num, gaps outer num でWindowの幅を調整できます

for_window [class="^.*"] border pixel 2はWindowタイトルを消せます

モニター電源が切れた, サスペンドした際にロック

xss-lockはdpmsとsystemd eventに反応してロックプログラムを起動してくれます

xss-lock -- i3lock -f -c 000000 -n

起動スクリプトなどに追記

~/.xprofile

xset s 180 120

dpmsの設定ですarchwiki

トラブルシューティング

/etc/xdg/autostartまたは~/.config/autostartのプログラムが自動起動しない

i3wmは~/.config/autostartの.desktopファイルを自動起動してくれませんので

~/.config/i3/autostart.shに書いて自動起動します

実行権限をつけてあげてください

これはi3/configから起動する必要があります

i3/config

exec --no-startup-id ~/.config/i3/autostart.sh

私のautostart.shは https://gitlab.com/takuoh/config-artix/-/blob/master/dotfiles/.config/i3/autostart.sh です

/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &はgnome-polkitを立ち上げています。これがないとgpartedが権限要求できません

/usr/lib/xfce4/notifyd/xfce4-notifyd &はxfce4通知デーモンを起動してます

2022/06/19追記 dexと言う物がありま す ~/.config/autostartと/etc/xdg/autostartの下の.desktopファイルのExecを実行してくれます

i3-wmでターミナル透過が出来ない、ティアリングが発生する

まずコンポジターという物を入れます

おすすめはpicomです

mkdir -p ~/.config/picom
cp /etc/xdg/picom.conf ~/.config/picom/picom.conf

任意のエディターで~/.config/picom/picom.confを開いて

backend = "xrender";backend = "glx";に変更して保存します

そしてpicom -bをautostart.shに追記してログアウト & ログインしたらティアリングが直ってると思います

HiDPI設定をした際にGtkFileChooserDialogが異常な大きさになる

https://gitlab.com/takuoh/config-artix/-/blob/6d64ba05df3c68a6fc4e95ab2207f04e5bc971fc/dotfiles/.config/i3/config#L234

HiDPI設定をした際にGTKのUIが小さく見える、QTのUIが大きく見える

~/.XresourcesでXft.dpiを設定している場合、UIがちゃんとスケールされるのはQTです。

~/.XresourcesでXft.dpiを設定するとGTKアプリではフォントのみ拡大されます。GDK_SCALE変数を使う方法もありますがこれは整数の値しか設定できません。

またGDK_DPI_SCALE変数はフォントしかスケールしません。

小数値を設定したい時が多分あると思います(1.25, 1.5など)。UIがスケールされなくてiconが見ずらいってことがあると思います。そのときは仕方ないのでQTアプリを使います。

一応上にQTバックエンドなアプリを挙げています。

ldd /bin/flameshot | grep -i qtなんかでQtでできているか見れます。

~/.XresourcesでXft.dpiを設定した際にQtのアプリのフォントが大きすぎる時はQT_AUTO_SCREEN_SCALE_FACTOR=0とQT_SCREEN_SCALE_FACTORS=1.5変数を設定して前述のqt5ctでフォントサイズを弄ってます。(環境変数をいじらなくともqt5ctでフォントサイズを調節することでもできます。)

https://wiki.gnome.org/Projects/GnomeShell/ScaleFactorTests ここにどのスケールで設定すればいいか例があります。

おわりに

僕のdotfilesリポジトリです

https://gitlab.com/takuoh/config-artix