「I3」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(英語と同期(未翻訳を含む))
24行目: 24行目:
 
[[公式リポジトリ]]から {{Grp|i3}} [[Pacman#パッケージグループのインストール|パッケージグループ]]を[[インストール]]してください。このグループにはウィンドウマネージャの {{Pkg|i3-wm}} と、[[Wikipedia:ja:標準ストリーム#標準出力 (stdout)|標準出力]]によってステータスラインに書き込みを行う {{Pkg|i3status}}、そして画面ロッカーの {{Pkg|i3lock}} が含まれています。
 
[[公式リポジトリ]]から {{Grp|i3}} [[Pacman#パッケージグループのインストール|パッケージグループ]]を[[インストール]]してください。このグループにはウィンドウマネージャの {{Pkg|i3-wm}} と、[[Wikipedia:ja:標準ストリーム#標準出力 (stdout)|標準出力]]によってステータスラインに書き込みを行う {{Pkg|i3status}}、そして画面ロッカーの {{Pkg|i3lock}} が含まれています。
   
開発版の {{AUR|i3-git}} など、他のパッケージは [[Arch User Repository]] からインストールきます。多くの場合、バグ開発版で修正されているため上流では開発版使っエラーが再現できるかどうか訊てきます [http://i3wm.org/docs/debugging.html]
+
追加のパッケージは [[Arch User Repository]] から利用可能です。 [[#パッチ|パッチ]] セクションください。
   
 
=== ディスプレイマネージャ ===
 
=== ディスプレイマネージャ ===
   
{{AUR|i3-gnome}} は [[GNOME]] と {{Grp|i3}} をウィンドウマネージャとする X-session を追加します。ウィンドウマネージャだけを起動する Xsession {{Grp|i3}} まれています。[[ディスプレイマネージャ]]を参照してください
+
{{Pkg|i3-wm}} はウィンドウマネージャを起動する [[Xsession]] として {{ic|i3.desktop}} んでいます。
  +
{{ic|i3-with-shmlog.desktop}} はログを有効にします (デバッグに役立ちます)。
  +
{{AUR|i3-gnome}} は {{ic|i3}} を [[GNOME]] に統合します。
   
 
=== xinitrc ===
 
=== xinitrc ===
36行目: 38行目:
 
exec i3
 
exec i3
   
i3 からの出力を記録したいときは (デバッグに役立ちます)、代わりに次の行を追加してください:
+
i3 からの出力を記録したいときは、代わりに次の行を追加してください:
   
 
exec i3 -V >> ~/.config/i3/i3log-$(date +'%F-%k-%M-%S') 2>&1
 
exec i3 -V >> ~/.config/i3/i3log-$(date +'%F-%k-%M-%S') 2>&1
126行目: 128行目:
   
 
exec --no-startup-id xfce4-panel --disable-wm-check
 
exec --no-startup-id xfce4-panel --disable-wm-check
 
lxqt-panel を使いたい場合、[[LXQt]] をインストールして、{{ic|~/.config/lxqt/session.conf}} で以下を設定してください:
 
 
window_manager=''i3''
 
   
 
{{Note|[[デスクトップ環境]]固有のパネル機能は基本的に動作しません (例: ワークスペースやセッションを管理するウィジェット)、ただし i3 の機能がそれによって影響を受けることはないはずです。}}
 
{{Note|[[デスクトップ環境]]固有のパネル機能は基本的に動作しません (例: ワークスペースやセッションを管理するウィジェット)、ただし i3 の機能がそれによって影響を受けることはないはずです。}}
   
 
{{ic|~/.config/i3/config}} の {{ic|<nowiki>bar{ }</nowiki>}} セクションをコメントアウトすることで i3bar は無効にできます。
 
{{ic|~/.config/i3/config}} の {{ic|<nowiki>bar{ }</nowiki>}} セクションをコメントアウトすることで i3bar は無効にできます。
  +
もしくは以下を使ってください:
  +
  +
{{hc|~/.config/i3/config|
  +
# bar toggle, hide or show
  +
bindsym $mod+m bar mode toggle
  +
}}
  +
  +
この方法では好きなようにバーを表示したり隠したりできます。
   
 
=== i3status ===
 
=== i3status ===
141行目: 147行目:
 
$ cp /etc/i3status.conf ~/.config/i3status/config
 
$ cp /etc/i3status.conf ~/.config/i3status/config
   
デフォルトの設定では定義されていないプラグインあります詳しくは {{ic|man 1 i3status}} を見て下さい
+
デフォルトの設定では定義されていないプラグインあり、つかの設定あなたのシステムで無効かもしれません
  +
そのためシステムに応じて設定を更新する必要があります。詳しくは {{ic|man 1 i3status}} を見て下さい。
 
{{Note|サンプルの設定ファイルではインターフェイスの名前として {{ic|eth0}} や {{ic|wlan0}} を使っています、あなたの環境ではこれらを使っていない場合は[[ネットワーク設定#デバイス名]]を見て下さい。バッテリーのパスなど、他にも食い違っているところがあったときは {{ic|man i3status}} を見て下さい。}}
 
   
 
==== i3status の代替 ====
 
==== i3status の代替 ====
177行目: 182行目:
 
}}
 
}}
   
カンマで区切ったフォントファミリーのリストを記述してそれから一番後ろにサイズをひとつだけ指定してください。(たとえ同じサイズだとしても)フォントファミリーごとにサイズを設定したり複数のフォントディレクティブを使って同じようなことをしようとはしないで下さい。i3bar の様々なコンポーネントの縦位置や高さが想定外に崩れることになるからです。正しい pango の記述子の構文は上で示した通りです
+
[https://developer.gnome.org/pango/stable/pango-Fonts.html#pango-font-description-from-string pango syntax] に従って、カンマで区切ったフォントファミリーのリストを記述してそれから一番後ろにサイズをひとつだけ指定してください。
  +
各フォントにサイズを設定するのは最後のフォントを除いて無視される原因となります。
   
最後に、アイコングラフをフォーマット文字列にして {{ic|~/.config/i3status/config}} に入力します。入力するために、上でリンクしているチートシートを見てユニコード番号を使います。例えば、vim を使っている場合、挿入モドで {{ic|Ctrl+v}} の後にグリフの十六進数のユニコード番号を入れま
+
最後に、アイコングラフをフォーマット文字列にして {{ic|~/.config/i3status/config}} に入力します。入力するために、上でリンクしているチートシートを見てユニコード番号を使います。入力方法はテキストエディタによって異なります。例えば "ハト" アイコン (ユニコード番号 f004) を入るには:
   
  +
* 様々な GUI のテキストエディタ (例: [[gedit]] や Leafpad) とターミナル (例: GNOME Terminal, xfce4-terminal): {{ic|ctrl+shift+u}}, {{ic|f004}}, {{ic|Enter}}
[[urxvt]] では、{{ic|Ctrl+Shift}} を押して、適当な Unicode ポイントを記入します。
 
  +
* [[Emacs]]: {{ic|ctrl+x}}, {{ic|8}}, {{ic|Enter}}, {{ic|f004}}, {{ic|Enter}}
  +
* [[Vim]] (挿入モード): {{ic|Ctrl+v}}, {{ic|uf004}}
  +
* [[urxvt]]: {{ic|Ctrl+Shift}} を押して、{{ic|f004}} を入力
   
 
=== ターミナルエミュレータ ===
 
=== ターミナルエミュレータ ===
214行目: 223行目:
 
bindsym $mod+x [urgent=latest] focus
 
bindsym $mod+x [urgent=latest] focus
   
=== 現在のセッショ保存する ===
+
=== ウィドウレイアウトの保存と復元 ===
   
バージョン 4.8 から、''i3'' ワークスペースレイアウトの保存・復元が可能になっています。詳しくは [http://i3wm.org/docs/layout-saving.html layout saving in i3] を見て下さい
+
バージョン 4.8 から、''i3'' ワークスペースレイアウトの保存・復元が可能になっています。これを行うに、次のパッケージが必要です: [[公式リポジトリ]]から {{Pkg|perl-anyevent-i3}} と {{Pkg|perl-json-xs}}
   
  +
{{note| This section only provides quick tutorial on how to save the current window layout of a single workspace and how to restore it for later use. Refer to the [http://i3wm.org/docs/layout-saving.html official documentation] for more details}}
完全なセッションを保存・再起動するには、[[AUR]] から {{Aur|i3session-git}} をインストールしてください。
 
  +
  +
==== Save the current window layout of a single workspace ====
  +
  +
To save the current window layout, follow these steps:
  +
  +
# First, execute various commands to open windows in a preferred workspace and resize them if needed. Make sure to write down each executed command for each window.
  +
# Now, in a new workspace, open a terminal and run the following: {{bc|i3-save-tree --workspace N > ~/.i3/workspace_N.json}} where N is the number of the preferred workspace. This will save the current layout of workspace N to the file {{ic|~/.i3/workspace_N.json}}.
  +
# The newly created file needs to be edited, however this may be done with the following commands: {{bc|<nowiki>tail -n +2 ~/.i3/workspace_N.json | fgrep -v '// splitv' | sed 's|//||g' > ~/.i3/workspace_N.json</nowiki>}}
  +
  +
==== Restore the window layout of the workspace ====
  +
  +
There are two ways to restore the layout of the workspace: by writing a script, or by editing {{ic|~/.i3/config}} to automatically load the layout. In this section only the first case will be considered, refer to the [http://i3wm.org/docs/layout-saving.html#_restoring_the_layout official documentation] for the second case.
  +
  +
To restore the saved layout in the previous section, write a file named {{ic|load_layout.sh}} with the following contents:
  +
  +
* The starting lines:
  +
  +
{{hc|head=~/load_layout.sh|output=
  +
#!/bin/bash
  +
i3-msg "workspace M; append_layout ~/.i3/workspace_N.json"
  +
}}
  +
  +
where M is the number of the workspace in which you would like to load the previously saved layout and N is the number of workspace saved in the previous section.
  +
* And the commands used in the previous section to get the preferred windows, but enclosed in parentheses and with an ampersand appended before the last parentheses.
  +
  +
For example, if the saved layout contained three {{ic|uxterm}} windows:
  +
  +
{{hc|head=~/load_layout.sh|output=
  +
#!/bin/bash
  +
  +
# First we append the saved layout of worspace N to workspace M
  +
i3-msg "workspace M; append_layout ~/.i3/workspace_N.json"
  +
  +
# And finally we fill the containers with the programs they had
  +
(uxterm &)
  +
(uxterm &)
  +
(uxterm &)
  +
}}
  +
  +
Then set the file as executable:
  +
  +
chmod u+x ~/load_layout.sh
  +
  +
And finally, the layout of worskpace N can be loaded onto to workspace M by running:
  +
  +
~/load_layout.sh
  +
  +
{{tip|Adding {{ic|bindsym $mod+g exec ~/load_layout.sh}} to {{ic|~/.i3/config}} and restarting i3 will bind Mod+g to run the above script.}}
  +
  +
{{note|If the above script does not work properly, refer to the [http://i3wm.org/docs/layout-saving.html#_editing_layout_files official documentation]. The ''swallows'' sections of {{ic|~/.i3/workspace_N.json}} needs to be manually edited.}}
   
 
=== スクラッチパッドコンテナ ===
 
=== スクラッチパッドコンテナ ===
236行目: 295行目:
 
=== スクリーンセーバーと電源管理 ===
 
=== スクリーンセーバーと電源管理 ===
   
  +
With [[電源管理#xss-lock]] you can register a screenlocker for your i3 session.
[[DPMS]] を使って画面を消したりモニタをサスペンド・電源オフにすることができます。次の行を {{ic|~/.config/i3/config}} に追加すると10分後にモニターがサスペンド状態になります:
 
   
  +
Alternatively, ''xautolock'' can lock the screen after awakening from sleep or hibernation with the {{ic|-lockaftersleep}} option. The {{ic|-time}} option locks the screen after a given time period.
exec --no-startup-id xset dpms 600
 
 
{{AUR|xss-lock-git}} を使うことで i3 セッションの画面ロッカーを登録することが可能です。xss-lock は systemd のイベント {{ic|suspend}}, {{ic|hibernate}}, {{ic|lock-session}}, {{ic|unlock-session}} に適当なアクションを設定します (ロッカーを起動してユーザーがロックを解除するかロッカーをキルするのを待つ)。また、[[Display Power Management Signaling#xset スクリーンセーバーコントロール|X screensaver]] に反応して x-server の信号に応じてロッカーを起動・終了します。以下のように xss-lock を起動するようにしてください:
 
 
xss-lock -- i3lock -n -i ''background_image.png'' &
 
 
もしくは、{{Pkg|xautolock}} を使って指定時間後に画面をロックするように設定することもできます:
 
   
 
xautolock -time 10 -locker "i3lock -i 'background_image.png'" -lockaftersleep &
 
xautolock -time 10 -locker "i3lock -i 'background_image.png'" -lockaftersleep &
   
  +
See also [[DPMS]].
[[#シャットダウン, 再起動, 画面ロック]] も参照。
 
   
 
=== シャットダウン, 再起動, 画面ロック ===
 
=== シャットダウン, 再起動, 画面ロック ===
   
シャットダウン、再起動、画面ロックのボタンは存在しないため、ホットキーコンビネーションを追加することでそれらの操作を実現できます。まず以下のスクリプトを作成して {{ic|i3exit}} として保存してください。{{ic|chmod +x}} で忘れず実行可能属性を付けて {{ic|$PATH}} が通っているところに配置します。スクリプトでは[[systemd#電源管理|電源管理]]コマンドを実行する権限がないユーザーに権限を与えるために {{Pkg|polkit}} をインストールする必要があります。
+
シャットダウン、再起動、画面ロックのキーコンビネーションを {{ic|~/.config/i3/config}} に追加すができます。以下では[[systemd#電源管理|電源管理]]コマンドを実行する権限がないユーザーに権限を与えるために {{Pkg|polkit}} をインストールする必要があります。
   
{{bc|<nowiki>
+
{{bc|
  +
set $Locker i3lock && sleep 1
#!/bin/sh
 
  +
lock() {
 
  +
set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
i3lock
 
  +
mode "$mode_system" {
  +
bindsym l exec --no-startup-id $Locker, mode "default"
  +
bindsym e exec --no-startup-id i3-msg exit, mode "default"
  +
bindsym s exec --no-startup-id $Locker && systemctl suspend, mode "default"
  +
bindsym h exec --no-startup-id $Locker && systemctl hibernate, mode "default"
  +
bindsym r exec --no-startup-id systemctl reboot, mode "default"
  +
bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default"
  +
  +
# back to normal: Enter or Escape
  +
bindsym Return mode "default"
  +
bindsym Escape mode "default"
 
}
 
}
   
  +
bindsym $mod+Pause mode "$mode_system"
case "$1" in
 
  +
}}
lock)
 
lock
 
;;
 
logout)
 
i3-msg exit
 
;;
 
suspend)
 
lock && systemctl suspend
 
;;
 
hibernate)
 
lock && systemctl hibernate
 
;;
 
reboot)
 
systemctl reboot
 
;;
 
shutdown)
 
systemctl poweroff
 
;;
 
*)
 
echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}"
 
exit 2
 
esac
 
   
  +
Once completed, you will be presented with a prompt whenever you press {{ic|$mod+pause}}. For more complex behaviour, use a separate script, and refer to it in the mode. [https://gist.github.com/anonymous/c8cd0a59bf4acb273068]
exit 0
 
</nowiki>}}
 
   
{{Note|
+
{{Note|1=<br>
  +
* {{ic|sleep 1}} adds a small delay to prevent possible race conditions with suspend [https://bugs.launchpad.net/ubuntu/+source/unity-2d/+bug/830348]
* {{AUR|xss-lock-git}} を使う場合、{{ic|xset s activate}} を呼び出してロッカーを起動します。
 
  +
* The {{ic|-i}} argument for {{ic|systemctl poweroff}} causes a shutdown even if other users are logged-in (this requires {{Pkg|polkit}}), or when ''logind'' (wrongly) assumes so. [https://bugs.freedesktop.org/show_bug.cgi?id=62676]
* {{Pkg|xautolock}} を使う場合、コマンドは {{ic|xautolock -locknow}} です。
 
 
}}
 
}}
   
  +
他の画面ロッカーについては、[[アプリケーション一覧/セキュリティ#スクリーンロック]]を参照。
そして以下の行を {{ic|~/.config/i3/config}} に追加してください。追加したら {{ic|$mod+pause}} を押すことでプロンプトが表示されます。
 
  +
  +
===External displays manual management===
  +
  +
Thanks to [[xrandr]] there are many ways to easily manage systems displays. The below example integrates it in the i3 config file, and behave as the Power Management section above.
  +
  +
Here a laptop with both VGA and HDMI outputs will use a menu selection to switch them On/Off:
   
  +
## Manual management of external displays
set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
 
  +
# Set the shortcuts and what they do
mode "$mode_system" {
 
  +
set $mode_display Ext Screen (v) VGA ON, (h) HDMI ON, (x) VGA OFF, (y) HDMI OFF
bindsym l exec --no-startup-id i3exit lock, mode "default"
 
  +
mode "$mode_display" {
bindsym e exec --no-startup-id i3exit logout, mode "default"
 
bindsym s exec --no-startup-id i3exit suspend, mode "default"
+
bindsym v exec --no-startup-id xrandr --output VGA1 --auto --right-of LVDS1, mode "default"
bindsym h exec --no-startup-id i3exit hibernate, mode "default"
+
bindsym h exec --no-startup-id xrandr --output HDMI1 --auto --right-of LVDS1, mode "default"
bindsym r exec --no-startup-id i3exit reboot, mode "default"
+
bindsym x exec --no-startup-id xrandr --output VGA1 --auto --off, mode "default"
bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
+
bindsym y exec --no-startup-id xrandr --output HDMI1 --auto --off, mode "default"
 
 
 
# back to normal: Enter or Escape
 
# back to normal: Enter or Escape
307行目: 355行目:
 
bindsym Escape mode "default"
 
bindsym Escape mode "default"
 
}
 
}
  +
# Declare here the shortcut to bring the display selection menu
bindsym $mod+Pause mode "$mode_system"
 
  +
bindsym $mod+x mode "$mode_display"
   
  +
Any window that is still open in a switched Off display will automatically come back to the remaining active display.
他の画面ロッカーについては、[[アプリケーション一覧/セキュリティ#スクリーンロック]]を参照。
 
   
  +
The simplest way to determine names of your devices is to plug the device you wish to use and run:
=== タブまたはスタックによるウェブブラウジング ===
 
   
  +
$ xrandr --query
{{Warning|Tabbed browsing is unstable when used with assigned workspaces. [http://bugs.i3wm.org/report/ticket/1338]}}
 
  +
  +
which will output the available, recognized devices and their in-system names to set your config file appropriately.
  +
  +
Refer to the [[xrandr]] page or man page for the complete list of available options, the [http://i3wm.org/docs/userguide.html i3 userguide] and/or the [https://www.reddit.com/r/i3wm i3 FAQ on reddit] for more info.
  +
  +
=== タブまたはスタックによるウェブブラウジング ===
   
 
タブの管理はブラウザの仕事ではなく、ウィンドウマネージャの仕事だとして、故意にタブを実装していないウェブブラウザというのが存在します。
 
タブの管理はブラウザの仕事ではなく、ウィンドウマネージャの仕事だとして、故意にタブを実装していないウェブブラウザというのが存在します。
359行目: 414行目:
   
 
for_window [class="(?i)mplayer"] floating enable
 
for_window [class="(?i)mplayer"] floating enable
  +
  +
=== Network Download/Upload speed on statusbar ===
  +
  +
You might adapt this upstream [http://code.stapelberg.de/git/i3status/tree/contrib/measure-net-speed.bash script]. For that,
  +
  +
* rename both network cards according to your system (use {{ic|ip addr}})
  +
* find them on {{ic|/sys/devices}} then replace them appropriately:
  +
$ find /sys/devices -name ''network_interface''
  +
  +
{{Tip|Use {{ic|/sys/class/net/''interface''/statistics/}} to not depend on PCI location.}}
  +
  +
Now, just save the script in a suitable place (for example {{ic|~/.config/i3}}) and point your status program to it.
   
 
== パッチ ==
 
== パッチ ==
369行目: 436行目:
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
  +
  +
=== 一般 ===
  +
  +
多くの場合、バグは開発版である {{AUR|i3-git}} と {{AUR|i3status-git}} で修正されているため上流では開発版を使ってエラーが再現できるかどうか訊いてきます。 [http://i3wm.org/docs/debugging.html] [[デバッグ - トレースを取得#一般]]も見てください。
   
 
=== i3 メッセージバーのボタンが動作しない ===
 
=== i3 メッセージバーのボタンが動作しない ===

2016年6月24日 (金) 00:48時点における版

関連記事

i3wmii にインスパイアされて開発された動的タイル型ウィンドウマネージャで、主に開発者や上級ユーザーをターゲットにしています。

i3 が公表している目標は、わかりやすいドキュメント、適切なマルチモニタサポート、ウィンドウのツリー構造、vim のような様々なモードなどです。

目次

インストール

公式リポジトリから i3 パッケージグループインストールしてください。このグループにはウィンドウマネージャの i3-wm と、標準出力によってステータスラインに書き込みを行う i3status、そして画面ロッカーの i3lock が含まれています。

追加のパッケージは Arch User Repository から利用可能です。例は パッチ セクションを見てください。

ディスプレイマネージャ

i3-wm はウィンドウマネージャを起動する Xsession として i3.desktop を含んでいます。 i3-with-shmlog.desktop はログを有効にします (デバッグに役立ちます)。 i3-gnomeAURi3GNOME に統合します。

xinitrc

xinitrc を編集して、次の行を追加してください:

exec i3

i3 からの出力を記録したいときは、代わりに次の行を追加してください:

exec i3 -V >> ~/.config/i3/i3log-$(date +'%F-%k-%M-%S') 2>&1

キーのマッピングに問題が起こるときは (例: セミコロンの ;)、xorg-xev を使うか、または特別なキーボードキーを見て下さい。

$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

使用方法

詳しい情報は 公式のドキュメント、すなわち i3 User’s Guide を見て下さい。

キーバインド

i3 では修飾キー ($mod と表記されます) を使ってコマンドを呼び出します。デフォルトでは Alt (Mod1) ですが、Super (Mod4) も良く使われます。大抵のキーボードでは Super は Windows アイコンが印されたキーになります。Apple キーボードなら Command キーです。

デフォルトのキーバインドについては i3 リファレンスカードUsing i3 を見て下さい。新しくショートカットを追加する方法は Keyboard bindings に載っています。

Qwerty 以外のキーボード配列を使っている場合は設定ウィザードとキーボードレイアウトに書かれているように設定ウィザードを迂回すると良いでしょう。

コンテナ

i3 はコンテナを基本単位としたツリー構造でウィンドウを管理します。この構造は縦や横に分岐していきます。デフォルトではコンテナはタイル状に並べられますが、タブでまとめたり積み重ねるレイアウトに設定したり、フロートさせることもできます (ダイアログウィンドウのように)。フローティングウィンドウは常に一番上に表示されます。

詳しくは i3 TreeContainers and the tree data structure を見て下さい。

アプリケーションランチャー

i3 はアプリケーションランチャーとして dmenu を使っており、デフォルトでは $mod+d で呼び出せます。dmenu の代わりに、透過機能や xft フォントのサポートなどが搭載されている AUR の dmenu2AUR を使うこともできます。

i3-wm には dmenuPerl ラッパーである i3-dmenu-desktop が含まれており、デスクトップエントリを利用してインストールされている全てのアプリケーションのリストを作成します。また、j4-dmenu-desktop-gitAUR パッケージを使うこともできます。こちらは i3-dmenu-desktop とほぼ同様に使える上に、高速に動作します [1]

設定

詳しくは Configuring i3 を参照。この記事では i3 の設定ファイルは ~/.config に置くことにします (i3-config-wizard では ~/.i3/config に作成されます)。

設定ウィザードとキーボードレイアウト

i3 を最初に起動したとき、設定ウィザードの i3-config-wizard が実行されます。このツールは /etc/i3/config.keycodes にあるテンプレート設定ファイルを書き換えることで ~/.i3/config を作成します。デフォルトテンプレートには以下の2つの変更が加えられます:

  1. ウィザードはデフォルトの修飾キーを何にするかユーザーに尋ねます。set $mod Mod1 のような行がテンプレートに追加されます。
  2. ユーザーの現在のキーボードレイアウトにあわせて bindcode 行をすべて bindsym 行で置き換えます。

後者が実行されることで、4つのナビゲーションショートカット j, k, l と Qwerty キーボードの"セミコロン"が正しいキーシムにマッピングされます。例えば Dvorak キーボードなら h, t, n, s になります。ただし副作用として他のキーシムのマッピングが変更されるため Dvorak ユーザーはむしろ混乱してしまうかもしれません。"再起動"は $mod1+r ではなく $mod1+p に、"横に分割"は $mod1+h ではなく $mod1+d にバインドされます。チュートリアルに記載されているバインドと同じ、覚えやすいキーバインドを使いたい場合は /etc/i3/config~/.config/i3/config (または ~/.i3/config) にコピーしてください。

キーボードレイアウトを頻繁に変更するユーザーなどに対応するために、キーコードによる設定も可能です。

カラースキーム

設定ファイルを使ってウィンドウ装飾の色をカスタマイズすることができますが、構文のためにテーマを作成したり共有するのは現実的ではありません。ユーザーが様々なテーマを作るのを楽にさせるプロジェクトが複数存在します。

  • i3-style — JSON オブジェクトで保存されたテーマによって所定の設定を変更します。テーマは何度もカラースキームを調整・修正できるように作られています。
https://github.com/acrisci/i3-style || nodejs-i3-styleAUR
  • j4-make-config — あなたの設定をテーマのコレクションや個人用の設定パーツ (たとえばホスト用の設定) と組み合わせます。テーマの簡単な変更や、柔軟でダイナミックな設定のカスタマイズを可能にします。
https://github.com/okraits/j4-make-config || j4-make-config-gitAUR

i3bar

i3bar はワークスペースの情報を表示するほかに、次のセクションで説明している、i3status などに入力を行うこともできます。例:

~/.config/i3/config
bar {
    output            LVDS1
    status_command    i3status
    position          top
    mode              hide
    workspace_buttons yes
    tray_output       none
    
    font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1

    colors {
        background #000000
        statusline #ffffff

        focused_workspace  #ffffff #285577
        active_workspace   #ffffff #333333
        inactive_workspace #888888 #222222
        urgent_workspace   #ffffff #900000
    }
}

詳しくは Configuring i3bar を見て下さい。

i3bar の代替

旧来のデスクトップ環境に入っているようなパネルを使いたいというユーザーもいるかもしれません。起動時に i3 の中でパネルアプリケーションを起動することで他のパネルを使うことができます。

XFCE パネルの場合、次の行を ~/.config/i3/config のどこかに追加してください:

exec --no-startup-id xfce4-panel --disable-wm-check
ノート: デスクトップ環境固有のパネル機能は基本的に動作しません (例: ワークスペースやセッションを管理するウィジェット)、ただし i3 の機能がそれによって影響を受けることはないはずです。

~/.config/i3/configbar{ } セクションをコメントアウトすることで i3bar は無効にできます。 もしくは以下を使ってください:

~/.config/i3/config
# bar toggle, hide or show 
bindsym $mod+m bar mode toggle

この方法では好きなようにバーを表示したり隠したりできます。

i3status

デフォルトの設定ファイルをホームディレクトリにコピーしてください:

$ cp /etc/i3status.conf ~/.config/i3status/config

デフォルトの設定では定義されていないプラグインがあり、いくつかの設定あなたのシステムでは無効かもしれません。 そのためシステムに応じて設定を更新する必要があります。詳しくは man 1 i3status を見て下さい。

i3status の代替

https://github.com/brndnmtthws/conky || conky
  • i3blocks — シェルスクリプトで拡張することができます。クリックイベントや割り込み、ブロックごとによるリフレッシュ間隔の定義などを管理可能。
https://github.com/vivien/i3blocks || i3blocksAUR
  • i3phtatus — PHP で書かれた i3status の代替。簡単に拡張できます。
https://github.com/mwgg/i3phtatus || パッケージが存在しないか AUR で検索
  • goi3bar — Go で書かれた i3status の代替。コンポーネントを自由にアップデートすることができます。
https://github.com/denbeigh2000/goi3bar || パッケージが存在しないか AUR で検索
  • i3pystatus — デフォルトで多数のプラグインと設定オプションがある拡張可能な Python 3 ステータスバー。
https://github.com/enkore/i3pystatus i3pystatus || i3pystatus-gitAUR
  • i3situation — もうひとつの Python 3 ステータスバージェネレータ。
https://github.com/HarveyHunt/i3situation || i3situation-gitAUR
  • j4status — C で書かれており、プラグインで設定ができる、ステータスラインを提供します。追加プラグインは j4status-plugins-gitAUR に入っています。
http://j4status.j4tools.org/ || j4status-gitAUR

i3status のラッパー

  • h2status — i3status の Bash ラッパー、カスタム json エントリを入力として、非同期のステータスバーの更新だけでなくクリックイベントの処理が可能。
https://wiki.archlinux.org/index.php/H2status || h2statusAUR
  • i3catgo ベースのラッパーで外部の複数のソースからの入力を繋げることができます。クリックイベントの処理、ユーザーが定義した信号を子プロセスに転送することが可能。
http://vincent-petithory.github.io/i3cat/ || i3cat-gitAUR
  • py3status — Python による拡張可能な i3status ラッパー。
https://github.com/ultrabug/py3status || py3statusAUR

ステータスバーにアイコンフォント

i3bar には XBM アイコンサポートのパッチをあてることができますが、代わりにアイコンフォントを使うこともできます。

  • ttf-font-awesome — CSS でカスタマイズできるスケーラブルなベクターアイコン。それぞれの記号の Unicode を記した チートシート があります。
http://fortawesome.github.io/Font-Awesome/ || ttf-font-awesomeAUR
  • ttf-font-icons — Awesome と Ionicons の重複をなくしてサイズを合わせたミックス。DejaVu Sans と Awesome が重複しないようにします。
http://kageurufu.net/icons.pdf || ttf-font-iconsAUR

フォントを混ぜ合わせるには、設定ファイルにフォントのフォールバックを定義してください、以下のように , でフォントを区切ります:

~/.config/i3/config
bar {
  ...
  font pango:DejaVu Sans Mono, Icons 8
  ...
}

pango syntax に従って、カンマで区切ったフォントファミリーのリストを記述してそれから一番後ろにサイズをひとつだけ指定してください。 各フォントにサイズを設定するのは最後のフォントを除いて無視される原因となります。

最後に、アイコングラフをフォーマット文字列にして ~/.config/i3status/config に入力します。入力するために、上でリンクしているチートシートを見てユニコード番号を使います。入力方法はテキストエディタによって異なります。例えば "ハート" アイコン (ユニコード番号 f004) を入力するには:

  • 様々な GUI のテキストエディタ (例: gedit や Leafpad) とターミナル (例: GNOME Terminal, xfce4-terminal): ctrl+shift+u, f004, Enter
  • Emacs: ctrl+x, 8, Enter, f004, Enter
  • Vim (挿入モード): Ctrl+v, uf004
  • urxvt: Ctrl+Shift を押して、f004 を入力

ターミナルエミュレータ

デフォルトでは $mod+Return を押すとターミナルを呼び出すスクリプトの i3-sensible-terminal が起動します。ターミナルを呼び出す順番については man i3-sensible-terminal を見て下さい。

他のターミナルを起動するには、~/.config/i3/config の次の行を変更してください:

bindsym $mod+Return exec i3-sensible-terminal

または、$TERMINAL 変数をローカルで定義してください:

$ export TERMINAL=yourterminal

Tips and tricks

高度なウィンドウナビゲーション

i3 window Navigation Tips を見て下さい。

Jump to open window

  • quickswitch-i3 — i3 でウィンドウを素早く切り替え・確認するための Python ユーティリティ。
https://github.com/proxypoke/quickswitch-for-i3 || quickswitch-i3AUR
  • i3-wm-scripts — 正規表現にマッチする名前を持ったウィンドウを検索してジャンプ。
https://github.com/yiuin/i3-wm-scripts ||
  • winmenupy — クライアントのリストと一緒に dmenu を起動、ワークスペースの後にソートされます。クライアントを選択するとそのウィンドウにジャンプ。
https://github.com/ziberna/i3-py/blob/master/examples/winmenu.py ||
  • rofi — スクラッチパッドウィンドウを検索してジャンプして開く。
https://davedavenport.github.io/rofi/ || rofi

Jump to urgent window

.i3/config に次を追加: [2]

bindsym $mod+x [urgent=latest] focus

ウィンドウレイアウトの保存と復元

バージョン 4.8 から、i3 ワークスペースレイアウトの保存・復元が可能になっています。これを行うには、次のパッケージが必要です: 公式リポジトリから perl-anyevent-i3perl-json-xs

ノート: This section only provides quick tutorial on how to save the current window layout of a single workspace and how to restore it for later use. Refer to the official documentation for more details

Save the current window layout of a single workspace

To save the current window layout, follow these steps:

  1. First, execute various commands to open windows in a preferred workspace and resize them if needed. Make sure to write down each executed command for each window.
  2. Now, in a new workspace, open a terminal and run the following:
    i3-save-tree --workspace N > ~/.i3/workspace_N.json
    where N is the number of the preferred workspace. This will save the current layout of workspace N to the file ~/.i3/workspace_N.json.
  3. The newly created file needs to be edited, however this may be done with the following commands:
    tail -n +2 ~/.i3/workspace_N.json | fgrep -v '// splitv' | sed 's|//||g' > ~/.i3/workspace_N.json

Restore the window layout of the workspace

There are two ways to restore the layout of the workspace: by writing a script, or by editing ~/.i3/config to automatically load the layout. In this section only the first case will be considered, refer to the official documentation for the second case.

To restore the saved layout in the previous section, write a file named load_layout.sh with the following contents:

  • The starting lines:
~/load_layout.sh
#!/bin/bash
i3-msg "workspace M; append_layout ~/.i3/workspace_N.json"

where M is the number of the workspace in which you would like to load the previously saved layout and N is the number of workspace saved in the previous section.

  • And the commands used in the previous section to get the preferred windows, but enclosed in parentheses and with an ampersand appended before the last parentheses.

For example, if the saved layout contained three uxterm windows:

~/load_layout.sh
#!/bin/bash

# First we append the saved layout of worspace N to workspace M
i3-msg "workspace M; append_layout ~/.i3/workspace_N.json"

# And finally we fill the containers with the programs they had
(uxterm &)
(uxterm &)
(uxterm &)

Then set the file as executable:

chmod u+x ~/load_layout.sh

And finally, the layout of worskpace N can be loaded onto to workspace M by running:

~/load_layout.sh
ヒント: Adding bindsym $mod+g exec ~/load_layout.sh to ~/.i3/config and restarting i3 will bind Mod+g to run the above script.
ノート: If the above script does not work properly, refer to the official documentation. The swallows sections of ~/.i3/workspace_N.json needs to be manually edited.

スクラッチパッドコンテナ

デフォルトでは、スクラッチパッド は一つのウィンドウしか含んでいません。しかしながら、コンテナをスクラッチパッドにすることが可能です。

新しいコンテナを作成して (例えば、Mod+Enter)、コンテナを分割し (Mod+v) 別のコンテナを作成します。親にフォーカスして (Mod+a)、反対方向に分割し (Mod+h)、もう一度作成します。

最初のコンテナにフォーカスして (必要なら親にもフォーカス)、ウィンドウをフロートさせ (Mod+Shift+Space)、スクラッチパッドに移動します (Mod+Shift+-)。これで自由にコンテナを分割できます。

ノート: フロートしているウィンドウでコンテナのサイズを個別に変更することはできません。ウィンドウをフロートさせる前にコンテナのサイズを変えて下さい。
ヒント: ターミナルアプリケーションしか使わない場合は、代わりに tmux などのマルチプレクサを使っても良いでしょう。

マルチスクラッチパッドについては [3] も参照してください。

スクリーンセーバーと電源管理

With 電源管理#xss-lock you can register a screenlocker for your i3 session.

Alternatively, xautolock can lock the screen after awakening from sleep or hibernation with the -lockaftersleep option. The -time option locks the screen after a given time period.

xautolock -time 10 -locker "i3lock -i 'background_image.png'" -lockaftersleep &

See also DPMS.

シャットダウン, 再起動, 画面ロック

シャットダウン、再起動、画面ロックのキーコンビネーションを ~/.config/i3/config に追加することができます。以下の例では電源管理コマンドを実行する権限がないユーザーに権限を与えるために polkit をインストールする必要があります。

set $Locker i3lock && sleep 1

set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
mode "$mode_system" {
    bindsym l exec --no-startup-id $Locker, mode "default"
    bindsym e exec --no-startup-id i3-msg exit, mode "default"
    bindsym s exec --no-startup-id $Locker && systemctl suspend, mode "default"
    bindsym h exec --no-startup-id $Locker && systemctl hibernate, mode "default"
    bindsym r exec --no-startup-id systemctl reboot, mode "default"
    bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default"  

    # back to normal: Enter or Escape
    bindsym Return mode "default"
    bindsym Escape mode "default"
}

bindsym $mod+Pause mode "$mode_system"

Once completed, you will be presented with a prompt whenever you press $mod+pause. For more complex behaviour, use a separate script, and refer to it in the mode. [4]

ノート:
  • sleep 1 adds a small delay to prevent possible race conditions with suspend [5]
  • The -i argument for systemctl poweroff causes a shutdown even if other users are logged-in (this requires polkit), or when logind (wrongly) assumes so. [6]

他の画面ロッカーについては、アプリケーション一覧/セキュリティ#スクリーンロックを参照。

External displays manual management

Thanks to xrandr there are many ways to easily manage systems displays. The below example integrates it in the i3 config file, and behave as the Power Management section above.

Here a laptop with both VGA and HDMI outputs will use a menu selection to switch them On/Off:

## Manual management of external displays
# Set the shortcuts and what they do
set $mode_display Ext Screen (v) VGA ON, (h) HDMI ON, (x) VGA OFF, (y) HDMI OFF
mode "$mode_display" {
    bindsym v exec --no-startup-id xrandr --output VGA1 --auto --right-of LVDS1, mode "default"
    bindsym h exec --no-startup-id xrandr --output HDMI1 --auto --right-of LVDS1, mode "default"
    bindsym x exec --no-startup-id xrandr --output VGA1 --auto --off, mode "default"
    bindsym y exec --no-startup-id xrandr --output HDMI1 --auto --off, mode "default"

    # back to normal: Enter or Escape
    bindsym Return mode "default"
    bindsym Escape mode "default"
}
# Declare here the shortcut to bring the display selection menu
bindsym $mod+x mode "$mode_display"

Any window that is still open in a switched Off display will automatically come back to the remaining active display.

The simplest way to determine names of your devices is to plug the device you wish to use and run:

$ xrandr --query

which will output the available, recognized devices and their in-system names to set your config file appropriately.

Refer to the xrandr page or man page for the complete list of available options, the i3 userguide and/or the i3 FAQ on reddit for more info.

タブまたはスタックによるウェブブラウジング

タブの管理はブラウザの仕事ではなく、ウィンドウマネージャの仕事だとして、故意にタブを実装していないウェブブラウザというのが存在します。

uzbl など、タブのないウェブブラウザを i3 で管理するには、次の行を ~/.config/i3/config に追加して下さい:

for_window [class="Uzbl-core"] focus child, layout stacking, focus

これはスタックのウェブブラウジング用で、ウィンドウは縦に表示されます。タブブラウジングと違って、たとえブラウザのウィンドウを大量に開いていても、ウィンドウのタイトルを全て見ることができます。

水平方向のタブブラウジングの方が良い場合は ('タブ')、次を使って下さい:

for_window [class="Uzbl-core"] focus child, layout tabbed, focus

ワークスペース変数

i3 ではワークスペースを複数定義するので、ワークスペース変数を指定すると便利です。例えば [7]:

set $WS1 term
set $WS2 web
set $WS3 misc
set $WS4 media
set $WS5 code

次にワークスペースの名前を対応する変数で置き換えます:

bindsym $mod+1          workspace $WS1
...
bindsym $mod+Shift+1    move container to workspace $WS1

詳しくは Changing named workspaces を見て下さい。

フロートするダイアログを正しく扱う

デフォルトではダイアログはフロートモードで開かれることになっていますが [8]、ダイアログはタイルモードで開いてしまうこともあります。この挙動を変更するには xorg-xprop でダイアログの WM_WINDOW_ROLE をチェックして適切なルールを ~/.i3/config に追加してください:

for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable

また、タイトルルールと正規表現を使うこともできます:

for_window [title="Preferences$"] floating enable

または WM_CLASS:

for_window [class="(?i)mplayer"] floating enable

Network Download/Upload speed on statusbar

You might adapt this upstream script. For that,

  • rename both network cards according to your system (use ip addr)
  • find them on /sys/devices then replace them appropriately:
$ find /sys/devices -name network_interface
ヒント: Use /sys/class/net/interface/statistics/ to not depend on PCI location.

Now, just save the script in a suitable place (for example ~/.config/i3) and point your status program to it.

パッチ

上流にマージされてないパッチがあてられたパッケージが AUR には存在します:

  • i3bar-icons-git — i3bar で XBM アイコンを表示
https://github.com/ashinkarov/i3-extras || i3bar-icons-gitAUR
  • i3-smart-border — スマートボーダー
https://github.com/ashinkarov/i3-extras || i3-smart-borderAUR
  • i3-wm-iconpatch — タイトルバーアイコンのサポート
https://github.com/ashinkarov/i3-extras || i3-wm-iconpatchAUR

トラブルシューティング

一般

多くの場合、バグは開発版である i3-gitAURi3status-gitAUR で修正されているため上流では開発版を使ってエラーが再現できるかどうか訊いてきます。 [9] デバッグ - トレースを取得#一般も見てください。

i3 メッセージバーのボタンが動作しない

i3-nagbar の "Edit config" などのボタンは i3-sensible-terminal を呼び出します。ターミナルエミュレータが i3 によって認識されていることを確認してください。

タイル化されたターミナルで行の折り返しがおかしい

i3 v4.3 以上ではタイル配置したウィンドウのサイズ増加ヒントは無視されます [10]。これによってターミナルで行が早いところで折り返されてしまうなどの問題が生じます。解決方法としては、問題のウィンドウをフロートさせてから、もう一度タイル化してください。

マウスカーソルが待機状態のままになる

起動通知をサポートしていないスクリプやアプリケーションを起動すると、マウスカーソルは60秒間の間、ビジー/砂時計状態になります。

特定のアプリケーションでこの問題を解決するには、--no-startup-id パラメータを使って下さい、例えば:

exec --no-startup-id ~/script
bindsym $mod+d exec --no-startup-id dmenu_run

このアニメーションを全てのアプリケーションで無効にするには、カーソルテーマを見て下さい。

キーバインドが反応しない

標準のキーバインド (キーを押して実行) を使っている場合、scrot などのツールが動作しないことがあります。そのようなときは、--release でキーをリリースしてからコマンドを実行してください:

bindsym --release Print exec --no-startup-id scrot '%Y-%m-%d$
bindsym --release Shift+Print exec --no-startup-id scrot '%Y$

[11] を参照。

ティアリング

i3 は ダブルバッファをちゃんと実装していない ためにティアリングやちらつきが発生することがあります。問題を修正したいときは、コンポジットマネージャを使ってみて下さい。

トレイアイコンが表示されない

デフォルトの tray_output primary ディレクティブでは xrandr でプライマリ出力を設定する必要があります。明示的に出力を指定するか、ディレクティブを削除してください [12]。詳しくは Xrandr を参照。i3 のバージョン 4.12 から、i3-config-wizard によって作成されるデフォルト設定ではディレクティブが追加されないようになりました。

参照

Arch Linux フォーラム

スクリーンキャスト