概要
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が異常な大きさになる
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

