「I3」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
タグ: visualeditor
20行目: 20行目:
 
i3 が公表している目標は、わかりやすいドキュメント、適切なマルチモニタサポート、ウィンドウのツリー構造、[[vim]] のような様々なモードなどです。
 
i3 が公表している目標は、わかりやすいドキュメント、適切なマルチモニタサポート、ウィンドウのツリー構造、[[vim]] のような様々なモードなどです。
   
== インストール ==
+
==インストール==
   
 
[[公式リポジトリ]]から {{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}} が含まれています。
26行目: 26行目:
 
追加のパッケージは [[Arch User Repository]] から利用可能です。例は[[#パッチ|パッチ]]セクションを見てください。
 
追加のパッケージは [[Arch User Repository]] から利用可能です。例は[[#パッチ|パッチ]]セクションを見てください。
   
=== ディスプレイマネージャ ===
+
===ディスプレイマネージャ===
   
 
{{Pkg|i3-wm}} はウィンドウマネージャを起動する [[Xsession]] として {{ic|i3.desktop}} を含んでいます。{{ic|i3-with-shmlog.desktop}} はログを有効にします (デバッグに役立ちます)。{{AUR|i3-gnome}} は {{ic|i3}} を [[GNOME]] に統合します。
 
{{Pkg|i3-wm}} はウィンドウマネージャを起動する [[Xsession]] として {{ic|i3.desktop}} を含んでいます。{{ic|i3-with-shmlog.desktop}} はログを有効にします (デバッグに役立ちます)。{{AUR|i3-gnome}} は {{ic|i3}} を [[GNOME]] に統合します。
   
=== xinitrc ===
+
===xinitrc===
   
 
[[xinitrc]] を編集して、次の行を追加してください:
 
[[xinitrc]] を編集して、次の行を追加してください:
44行目: 44行目:
 
$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
 
$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
   
== 使用方法 ==
+
==使用方法==
   
 
詳しい情報は [https://i3wm.org/docs 公式のドキュメント]、すなわち [https://i3wm.org/docs/userguide.html i3 User’s Guide] を見て下さい。
 
詳しい情報は [https://i3wm.org/docs 公式のドキュメント]、すなわち [https://i3wm.org/docs/userguide.html i3 User’s Guide] を見て下さい。
   
=== キーバインド ===
+
===キーバインド===
   
 
i3 では修飾キー ({{ic|$mod}} と表記されます) を使ってコマンドを呼び出します。デフォルトでは {{ic|Alt}} (Mod1) ですが、{{ic|Super}} (Mod4) も良く使われます。大抵のキーボードでは Super は Windows アイコンが印されたキーになります。Apple キーボードなら Command キーです。
 
i3 では修飾キー ({{ic|$mod}} と表記されます) を使ってコマンドを呼び出します。デフォルトでは {{ic|Alt}} (Mod1) ですが、{{ic|Super}} (Mod4) も良く使われます。大抵のキーボードでは Super は Windows アイコンが印されたキーになります。Apple キーボードなら Command キーです。
56行目: 56行目:
 
Qwerty 以外のキーボード配列を使っている場合は[[#設定ウィザードとキーボードレイアウト|設定ウィザードとキーボードレイアウト]]に書かれているように設定ウィザードを迂回すると良いでしょう。
 
Qwerty 以外のキーボード配列を使っている場合は[[#設定ウィザードとキーボードレイアウト|設定ウィザードとキーボードレイアウト]]に書かれているように設定ウィザードを迂回すると良いでしょう。
   
=== コンテナ ===
+
===コンテナ===
   
 
i3 はコンテナを基本単位としたツリー構造でウィンドウを管理します。この構造は縦や横に分岐していきます。デフォルトではコンテナはタイル状に並べられますが、タブでまとめたり積み重ねるレイアウトに設定したり、フロートさせることもできます (ダイアログウィンドウのように)。フローティングウィンドウは常に一番上に表示されます。
 
i3 はコンテナを基本単位としたツリー構造でウィンドウを管理します。この構造は縦や横に分岐していきます。デフォルトではコンテナはタイル状に並べられますが、タブでまとめたり積み重ねるレイアウトに設定したり、フロートさせることもできます (ダイアログウィンドウのように)。フローティングウィンドウは常に一番上に表示されます。
62行目: 62行目:
 
詳しくは [https://i3wm.org/docs/userguide.html#_tree i3 Tree] や [https://www.youtube.com/watch?v=AWA8Pl57UBY Containers and the tree data structure] を見て下さい。
 
詳しくは [https://i3wm.org/docs/userguide.html#_tree i3 Tree] や [https://www.youtube.com/watch?v=AWA8Pl57UBY Containers and the tree data structure] を見て下さい。
   
=== アプリケーションランチャー ===
+
===アプリケーションランチャー===
   
 
i3 はアプリケーションランチャーとして [[dmenu]] を使っており、デフォルトでは {{ic|$mod+d}} で呼び出せます。dmenu の代わりに、透過機能や xft フォントのサポートなどが搭載されている AUR の {{AUR|dmenu2}} を使うこともできます。
 
i3 はアプリケーションランチャーとして [[dmenu]] を使っており、デフォルトでは {{ic|$mod+d}} で呼び出せます。dmenu の代わりに、透過機能や xft フォントのサポートなどが搭載されている AUR の {{AUR|dmenu2}} を使うこともできます。
68行目: 68行目:
 
{{Pkg|i3-wm}} には ''dmenu'' の [[Wikipedia:ja:Perl|Perl]] ラッパーである ''i3-dmenu-desktop'' が含まれており、[[デスクトップエントリ]]を利用してインストールされている全てのアプリケーションのリストを作成します。また、{{AUR|j4-dmenu-desktop-git}} パッケージを使うこともできます。こちらは ''i3-dmenu-desktop'' とほぼ同様に使える上に、高速に動作します [https://github.com/enkore/j4-dmenu-desktop/blob/master/README.md]。
 
{{Pkg|i3-wm}} には ''dmenu'' の [[Wikipedia:ja:Perl|Perl]] ラッパーである ''i3-dmenu-desktop'' が含まれており、[[デスクトップエントリ]]を利用してインストールされている全てのアプリケーションのリストを作成します。また、{{AUR|j4-dmenu-desktop-git}} パッケージを使うこともできます。こちらは ''i3-dmenu-desktop'' とほぼ同様に使える上に、高速に動作します [https://github.com/enkore/j4-dmenu-desktop/blob/master/README.md]。
   
== 設定 ==
+
==設定==
   
 
詳しくは [https://i3wm.org/docs/userguide.html#configuring Configuring i3] を参照。この記事では ''i3'' の設定ファイルは {{ic|~/.config}} に置くことにします (''i3-config-wizard'' では {{ic|~/.i3/config}} に作成されます)。
 
詳しくは [https://i3wm.org/docs/userguide.html#configuring Configuring i3] を参照。この記事では ''i3'' の設定ファイルは {{ic|~/.config}} に置くことにします (''i3-config-wizard'' では {{ic|~/.i3/config}} に作成されます)。
   
=== 設定ウィザードとキーボードレイアウト ===
+
===設定ウィザードとキーボードレイアウト===
   
 
''i3'' を最初に起動したとき、設定ウィザードの ''i3-config-wizard'' が実行されます。このツールは {{ic|/etc/i3/config.keycodes}} にあるテンプレート設定ファイルを書き換えることで {{ic|~/.i3/config}} を作成します。デフォルトテンプレートには以下の2つの変更が加えられます:
 
''i3'' を最初に起動したとき、設定ウィザードの ''i3-config-wizard'' が実行されます。このツールは {{ic|/etc/i3/config.keycodes}} にあるテンプレート設定ファイルを書き換えることで {{ic|~/.i3/config}} を作成します。デフォルトテンプレートには以下の2つの変更が加えられます:
   
# ウィザードはデフォルトの修飾キーを何にするかユーザーに尋ねます。{{ic|set $mod Mod1}} のような行がテンプレートに追加されます。
+
#ウィザードはデフォルトの修飾キーを何にするかユーザーに尋ねます。{{ic|set $mod Mod1}} のような行がテンプレートに追加されます。
# ユーザーの現在のキーボードレイアウトにあわせて ''bindcode'' 行をすべて ''bindsym'' 行で置き換えます。
+
#ユーザーの現在のキーボードレイアウトにあわせて ''bindcode'' 行をすべて ''bindsym'' 行で置き換えます。
   
 
後者が実行されることで、4つのナビゲーションショートカット {{ic|j}}, {{ic|k}}, {{ic|l}} と Qwerty キーボードの"セミコロン"が正しいキーシムにマッピングされます。例えば [[Dvorak]] キーボードなら {{ic|h}}, {{ic|t}}, {{ic|n}}, {{ic|s}} になります。ただし副作用として他のキーシムのマッピングが変更されるため Dvorak ユーザーはむしろ混乱してしまうかもしれません。"再起動"は {{ic|$mod1+r}} ではなく {{ic|$mod1+p}} に、"横に分割"は {{ic|$mod1+h}} ではなく {{ic|$mod1+d}} にバインドされます。チュートリアルに記載されているバインドと同じ、覚えやすいキーバインドを使いたい場合は {{ic|/etc/i3/config}} を {{ic|~/.config/i3/config}} (または {{ic|~/.i3/config}}) にコピーしてください。
 
後者が実行されることで、4つのナビゲーションショートカット {{ic|j}}, {{ic|k}}, {{ic|l}} と Qwerty キーボードの"セミコロン"が正しいキーシムにマッピングされます。例えば [[Dvorak]] キーボードなら {{ic|h}}, {{ic|t}}, {{ic|n}}, {{ic|s}} になります。ただし副作用として他のキーシムのマッピングが変更されるため Dvorak ユーザーはむしろ混乱してしまうかもしれません。"再起動"は {{ic|$mod1+r}} ではなく {{ic|$mod1+p}} に、"横に分割"は {{ic|$mod1+h}} ではなく {{ic|$mod1+d}} にバインドされます。チュートリアルに記載されているバインドと同じ、覚えやすいキーバインドを使いたい場合は {{ic|/etc/i3/config}} を {{ic|~/.config/i3/config}} (または {{ic|~/.i3/config}}) にコピーしてください。
83行目: 83行目:
 
キーボードレイアウトを頻繁に変更するユーザーなどに対応するために、キーコードによる設定も可能です。
 
キーボードレイアウトを頻繁に変更するユーザーなどに対応するために、キーコードによる設定も可能です。
   
=== カラースキーム ===
+
===カラースキーム===
   
 
設定ファイルを使ってウィンドウ装飾の色をカスタマイズすることができますが、構文のためにテーマを作成したり共有するのは現実的ではありません。ユーザーが様々なテーマを作るのを楽にさせるプロジェクトが複数存在します。
 
設定ファイルを使ってウィンドウ装飾の色をカスタマイズすることができますが、構文のためにテーマを作成したり共有するのは現実的ではありません。ユーザーが様々なテーマを作るのを楽にさせるプロジェクトが複数存在します。
   
 
* {{App|i3-style|JSON オブジェクトで保存されたテーマによって所定の設定を変更します。テーマは何度もカラースキームを調整・修正できるように作られています。|https://github.com/acrisci/i3-style|{{Aur|nodejs-i3-style}}{{Broken package link|{{aur-mirror|nodejs-i3-style}}}}}}
 
* {{App|i3-style|JSON オブジェクトで保存されたテーマによって所定の設定を変更します。テーマは何度もカラースキームを調整・修正できるように作られています。|https://github.com/acrisci/i3-style|{{Aur|nodejs-i3-style}}{{Broken package link|{{aur-mirror|nodejs-i3-style}}}}}}
  +
 
* {{App|j4-make-config|あなたの設定をテーマのコレクションや個人用の設定パーツ (たとえばホスト用の設定) と組み合わせます。テーマの簡単な変更や、柔軟でダイナミックな設定のカスタマイズを可能にします。|https://github.com/okraits/j4-make-config|{{Aur|j4-make-config-git}}}}
 
* {{App|j4-make-config|あなたの設定をテーマのコレクションや個人用の設定パーツ (たとえばホスト用の設定) と組み合わせます。テーマの簡単な変更や、柔軟でダイナミックな設定のカスタマイズを可能にします。|https://github.com/okraits/j4-make-config|{{Aur|j4-make-config-git}}}}
   
=== i3bar ===
+
===i3bar===
   
 
i3bar はワークスペースの情報を表示するほかに、次のセクションで説明している、i3status などに入力を行うこともできます。例:
 
i3bar はワークスペースの情報を表示するほかに、次のセクションで説明している、i3status などに入力を行うこともできます。例:
114行目: 115行目:
 
urgent_workspace #ffffff #900000
 
urgent_workspace #ffffff #900000
 
}
 
}
  +
<nowiki>}</nowiki>
}
 
 
}}
 
}}
   
 
詳しくは [https://i3wm.org/docs/userguide.html#_configuring_i3bar Configuring i3bar] を見て下さい。
 
詳しくは [https://i3wm.org/docs/userguide.html#_configuring_i3bar Configuring i3bar] を見て下さい。
   
==== i3bar の代替 ====
+
====i3bar の代替====
   
 
旧来の[[デスクトップ環境]]に入っているようなパネルを使いたいというユーザーもいるかもしれません。起動時に i3 の中でパネルアプリケーションを起動することで他のパネルを使うことができます。
 
旧来の[[デスクトップ環境]]に入っているようなパネルを使いたいというユーザーもいるかもしれません。起動時に i3 の中でパネルアプリケーションを起動することで他のパネルを使うことができます。
138行目: 139行目:
 
この方法では好きなようにバーを表示したり隠したりできます。
 
この方法では好きなようにバーを表示したり隠したりできます。
   
=== i3status ===
+
===i3status===
   
 
デフォルトの設定ファイルをホームディレクトリにコピーしてください:
 
デフォルトの設定ファイルをホームディレクトリにコピーしてください:
146行目: 147行目:
 
デフォルトの設定では定義されていないプラグインがあり、いくつかの設定はあなたのシステムでは無効かもしれません。そのためシステムに応じて設定を更新する必要があります。詳しくは {{ic|man 1 i3status}} を見て下さい。
 
デフォルトの設定では定義されていないプラグインがあり、いくつかの設定はあなたのシステムでは無効かもしれません。そのためシステムに応じて設定を更新する必要があります。詳しくは {{ic|man 1 i3status}} を見て下さい。
   
==== i3status の代替 ====
+
====i3status の代替====
   
 
* {{App|[[conky]]|拡張性の高いシステムモニター。i3bar で使用する場合は [https://i3wm.org/docs/user-contributed/conky-i3bar.html このチュートリアル] を見て下さい。|https://github.com/brndnmtthws/conky|{{Pkg|conky}}}}
 
* {{App|[[conky]]|拡張性の高いシステムモニター。i3bar で使用する場合は [https://i3wm.org/docs/user-contributed/conky-i3bar.html このチュートリアル] を見て下さい。|https://github.com/brndnmtthws/conky|{{Pkg|conky}}}}
  +
 
* {{App|i3blocks|シェルスクリプトで拡張することができます。クリックイベントや割り込み、ブロックごとによるリフレッシュ間隔の定義などを管理可能。|https://github.com/vivien/i3blocks|{{Pkg|i3blocks}}}}
 
* {{App|i3blocks|シェルスクリプトで拡張することができます。クリックイベントや割り込み、ブロックごとによるリフレッシュ間隔の定義などを管理可能。|https://github.com/vivien/i3blocks|{{Pkg|i3blocks}}}}
  +
 
* {{App|i3phtatus|PHP で書かれた i3status の代替。簡単に拡張できます。|https://github.com/mwgg/i3phtatus}}
 
* {{App|i3phtatus|PHP で書かれた i3status の代替。簡単に拡張できます。|https://github.com/mwgg/i3phtatus}}
  +
 
* {{App|goi3bar|Go で書かれた i3status の代替。コンポーネントを自由にアップデートすることができます。|https://github.com/denbeigh2000/goi3bar}}
 
* {{App|goi3bar|Go で書かれた i3status の代替。コンポーネントを自由にアップデートすることができます。|https://github.com/denbeigh2000/goi3bar}}
  +
 
* {{App|i3pystatus|デフォルトで多数のプラグインと設定オプションがある拡張可能な Python 3 ステータスバー。|https://github.com/enkore/i3pystatus i3pystatus|{{AUR|i3pystatus-git}}}}
 
* {{App|i3pystatus|デフォルトで多数のプラグインと設定オプションがある拡張可能な Python 3 ステータスバー。|https://github.com/enkore/i3pystatus i3pystatus|{{AUR|i3pystatus-git}}}}
  +
 
* {{App|i3situation|もうひとつの Python 3 ステータスバージェネレータ。|https://github.com/HarveyHunt/i3situation|{{Aur|i3situation-git}}}}
 
* {{App|i3situation|もうひとつの Python 3 ステータスバージェネレータ。|https://github.com/HarveyHunt/i3situation|{{Aur|i3situation-git}}}}
  +
 
* {{App|j4status|C で書かれており、プラグインで設定ができる、ステータスラインを提供します。追加プラグインは {{Aur|j4status-plugins-git}} に入っています。|http://j4status.j4tools.org/|{{Aur|j4status-git}}}}
 
* {{App|j4status|C で書かれており、プラグインで設定ができる、ステータスラインを提供します。追加プラグインは {{Aur|j4status-plugins-git}} に入っています。|http://j4status.j4tools.org/|{{Aur|j4status-git}}}}
   
==== i3status のラッパー ====
+
====i3status のラッパー====
   
 
* {{App|[[en2:h2status|h2status]]|i3status の Bash ラッパー、カスタム json エントリを入力として、非同期のステータスバーの更新だけでなくクリックイベントの処理が可能。|https://wiki.archlinux.org/index.php/H2status|{{Aur|h2status}}{{Broken package link|{{aur-mirror|h2status}}}}}}
 
* {{App|[[en2:h2status|h2status]]|i3status の Bash ラッパー、カスタム json エントリを入力として、非同期のステータスバーの更新だけでなくクリックイベントの処理が可能。|https://wiki.archlinux.org/index.php/H2status|{{Aur|h2status}}{{Broken package link|{{aur-mirror|h2status}}}}}}
  +
 
* {{App|i3cat|[[go]] ベースのラッパーで外部の複数のソースからの入力を繋げることができます。クリックイベントの処理、ユーザーが定義した信号を子プロセスに転送することが可能。|http://vincent-petithory.github.io/i3cat/|{{AUR|i3cat-git}}}}
 
* {{App|i3cat|[[go]] ベースのラッパーで外部の複数のソースからの入力を繋げることができます。クリックイベントの処理、ユーザーが定義した信号を子プロセスに転送することが可能。|http://vincent-petithory.github.io/i3cat/|{{AUR|i3cat-git}}}}
  +
 
* {{App|py3status|Python による拡張可能な i3status ラッパー。|https://github.com/ultrabug/py3status|{{Pkg|py3status}}}}
 
* {{App|py3status|Python による拡張可能な i3status ラッパー。|https://github.com/ultrabug/py3status|{{Pkg|py3status}}}}
   
==== ステータスバーにアイコンフォント ====
+
====ステータスバーにアイコンフォント====
   
 
''i3bar'' には XBM アイコンサポートの[[#パッチ|パッチ]]をあてることができますが、代わりにアイコンフォントを使うこともできます。
 
''i3bar'' には XBM アイコンサポートの[[#パッチ|パッチ]]をあてることができますが、代わりにアイコンフォントを使うこともできます。
   
 
* {{App|ttf-font-awesome|CSS でカスタマイズできるスケーラブルなベクターアイコン。それぞれの記号の Unicode を記した [http://fortawesome.github.io/Font-Awesome/cheatsheet/ チートシート] があります。|http://fortawesome.github.io/Font-Awesome/|{{Pkg|ttf-font-awesome}}}}
 
* {{App|ttf-font-awesome|CSS でカスタマイズできるスケーラブルなベクターアイコン。それぞれの記号の Unicode を記した [http://fortawesome.github.io/Font-Awesome/cheatsheet/ チートシート] があります。|http://fortawesome.github.io/Font-Awesome/|{{Pkg|ttf-font-awesome}}}}
  +
 
* {{App|ttf-font-icons|Awesome と Ionicons の重複をなくしてサイズを合わせたミックス。DejaVu Sans と Awesome が重複しないようにします。|http://kageurufu.net/icons.pdf|{{AUR|ttf-font-icons}}}}
 
* {{App|ttf-font-icons|Awesome と Ionicons の重複をなくしてサイズを合わせたミックス。DejaVu Sans と Awesome が重複しないようにします。|http://kageurufu.net/icons.pdf|{{AUR|ttf-font-icons}}}}
   
175行目: 185行目:
 
font pango:DejaVu Sans Mono, Icons 8
 
font pango:DejaVu Sans Mono, Icons 8
 
...
 
...
  +
<nowiki>}</nowiki>
}
 
 
}}
 
}}
   
182行目: 192行目:
 
最後に、アイコングラフをフォーマット文字列にして {{ic|~/.config/i3status/config}} に入力します。入力するために、上でリンクしているチートシートを見てユニコード番号を使います。入力方法はテキストエディタによって異なります。例えば "ハート" アイコン (ユニコード番号 f004) を入力するには:
 
最後に、アイコングラフをフォーマット文字列にして {{ic|~/.config/i3status/config}} に入力します。入力するために、上でリンクしているチートシートを見てユニコード番号を使います。入力方法はテキストエディタによって異なります。例えば "ハート" アイコン (ユニコード番号 f004) を入力するには:
   
* 様々な GUI のテキストエディタ (例: [[gedit]] や Leafpad) とターミナル (例: GNOME Terminal, xfce4-terminal): {{ic|ctrl+shift+u}}, {{ic|f004}}, {{ic|Enter}}
+
*様々な GUI のテキストエディタ (例: [[gedit]] や Leafpad) とターミナル (例: GNOME Terminal, xfce4-terminal): {{ic|ctrl+shift+u}}, {{ic|f004}}, {{ic|Enter}}
* [[Emacs]]: {{ic|ctrl+x}}, {{ic|8}}, {{ic|Enter}}, {{ic|f004}}, {{ic|Enter}}
+
*[[Emacs]]: {{ic|ctrl+x}}, {{ic|8}}, {{ic|Enter}}, {{ic|f004}}, {{ic|Enter}}
* [[Vim]] (挿入モード): {{ic|Ctrl+v}}, {{ic|uf004}}
+
*[[Vim]] (挿入モード): {{ic|Ctrl+v}}, {{ic|uf004}}
* [[urxvt]]: {{ic|Ctrl+Shift}} を押して、{{ic|f004}} を入力
+
*[[urxvt]]: {{ic|Ctrl+Shift}} を押して、{{ic|f004}} を入力
   
=== ターミナルエミュレータ ===
+
===ターミナルエミュレータ===
   
 
デフォルトでは {{ic|$mod+Return}} を押すとターミナルを呼び出すスクリプトの {{ic|i3-sensible-terminal}} が起動します。ターミナルを呼び出す順番については {{ic|man i3-sensible-terminal}} を見て下さい。
 
デフォルトでは {{ic|$mod+Return}} を押すとターミナルを呼び出すスクリプトの {{ic|i3-sensible-terminal}} が起動します。ターミナルを呼び出す順番については {{ic|man i3-sensible-terminal}} を見て下さい。
199行目: 209行目:
 
$ export TERMINAL=''yourterminal''
 
$ export TERMINAL=''yourterminal''
   
== ヒントとテクニック ==
+
==ヒントとテクニック==
   
=== 高度なウィンドウナビゲーション ===
+
===高度なウィンドウナビゲーション===
   
 
[http://www.slackword.net/?p=657 i3 window Navigation Tips] を見て下さい。
 
[http://www.slackword.net/?p=657 i3 window Navigation Tips] を見て下さい。
   
=== Jump to open window ===
+
===Jump to open window===
  +
  +
*{{App|quickswitch-i3|i3 でウィンドウを素早く切り替え・確認するための Python ユーティリティ。|https://github.com/OliverUv/quickswitch-for-i3/|{{Aur|quickswitch-i3}}}}
   
*{{App|quickswitch-i3|i3 でウィンドウを素早く切り替え・確認するための Python ユーティリティ。|https://github.com/proxypoke/quickswitch-for-i3|{{Aur|quickswitch-i3}}}}
 
 
*{{App|i3-wm-scripts|正規表現にマッチする名前を持ったウィンドウを検索してジャンプ。|https://github.com/yiuin/i3-wm-scripts||}}
 
*{{App|i3-wm-scripts|正規表現にマッチする名前を持ったウィンドウを検索してジャンプ。|https://github.com/yiuin/i3-wm-scripts||}}
  +
 
*{{App|winmenupy|クライアントのリストと一緒に dmenu を起動、ワークスペースの後にソートされます。クライアントを選択するとそのウィンドウにジャンプ。|https://github.com/ziberna/i3-py/blob/master/examples/winmenu.py||}}
 
*{{App|winmenupy|クライアントのリストと一緒に dmenu を起動、ワークスペースの後にソートされます。クライアントを選択するとそのウィンドウにジャンプ。|https://github.com/ziberna/i3-py/blob/master/examples/winmenu.py||}}
  +
 
*{{App|rofi|スクラッチパッドウィンドウを検索してジャンプして開く。|https://davedavenport.github.io/rofi/|{{Pkg|rofi}}}}
 
*{{App|rofi|スクラッチパッドウィンドウを検索してジャンプして開く。|https://davedavenport.github.io/rofi/|{{Pkg|rofi}}}}
   
=== Jump to urgent window ===
+
===Jump to urgent window===
   
 
{{ic|.i3/config}} に次を追加: [https://faq.i3wm.org/question/853/how-to-jump-to-urgent-workspace/]
 
{{ic|.i3/config}} に次を追加: [https://faq.i3wm.org/question/853/how-to-jump-to-urgent-workspace/]
218行目: 231行目:
 
bindsym $mod+x [urgent=latest] focus
 
bindsym $mod+x [urgent=latest] focus
   
=== ウィンドウレイアウトの保存と復元 ===
+
===ウィンドウレイアウトの保存と復元===
   
 
バージョン 4.8 から、''i3'' のワークスペースレイアウトの保存・復元が可能になっています。これを行うには、次のパッケージが必要です: [[公式リポジトリ]]の {{Pkg|perl-anyevent-i3}} と {{Pkg|perl-json-xs}}。
 
バージョン 4.8 から、''i3'' のワークスペースレイアウトの保存・復元が可能になっています。これを行うには、次のパッケージが必要です: [[公式リポジトリ]]の {{Pkg|perl-anyevent-i3}} と {{Pkg|perl-json-xs}}。
224行目: 237行目:
 
{{note|このセクションではワークスペースの現在のウィンドウレイアウトを保存して後から復元する方法だけを説明します。詳細は [https://i3wm.org/docs/layout-saving.html 公式ドキュメント] を参照してください。}}
 
{{note|このセクションではワークスペースの現在のウィンドウレイアウトを保存して後から復元する方法だけを説明します。詳細は [https://i3wm.org/docs/layout-saving.html 公式ドキュメント] を参照してください。}}
   
==== ワークスペースの現在のウィンドウレイアウトを保存 ====
+
====ワークスペースの現在のウィンドウレイアウトを保存====
   
 
現在のウィンドウレイアウトを保存するには、以下の手順を実行:
 
現在のウィンドウレイアウトを保存するには、以下の手順を実行:
   
# まず、様々なコマンドを使ってワークスペースにウィンドウを開いて適当にリサイズしてください。それぞれのウィンドウを開くのに実行したコマンドを書き出します。
+
#まず、様々なコマンドを使ってワークスペースにウィンドウを開いて適当にリサイズしてください。それぞれのウィンドウを開くのに実行したコマンドを書き出します。
# 次に、新しいワークスペースで、ターミナルを開いて次を実行: {{bc|i3-save-tree --workspace N > ~/.i3/workspace_N.json}}N は保存したいワークスペースの番号に置き換えてください。これで N 番目のワークスペースのレイアウトが {{ic|~/.i3/workspace_N.json}} ファイルに保存されます。
+
#次に、新しいワークスペースで、ターミナルを開いて次を実行: {{bc|i3-save-tree --workspace N > ~/.i3/workspace_N.json}}N は保存したいワークスペースの番号に置き換えてください。これで N 番目のワークスペースのレイアウトが {{ic|~/.i3/workspace_N.json}} ファイルに保存されます。
# 作成したファイルを編集してください。次のコマンドで行うことができます: {{bc|<nowiki>tail -n +2 ~/.i3/workspace_N.json | fgrep -v '// splitv' | sed 's|//||g' > ~/.i3/workspace_N.json</nowiki>}}
+
#作成したファイルを編集してください。次のコマンドで行うことができます: {{bc|<nowiki>tail -n +2 ~/.i3/workspace_N.json | fgrep -v '// splitv' | sed 's|//||g' > ~/.i3/workspace_N.json</nowiki>}}
   
==== ワークスペースのウィンドウレイアウトを復元 ====
+
====ワークスペースのウィンドウレイアウトを復元====
   
 
ワークスペースのレイアウトを復元する方法は2つ存在します: スクリプトを書くか、あるいは {{ic|~/.i3/config}} を編集して自動的にレイアウトをロードするかです。このセクションでは前者だけを説明します。後者については [https://i3wm.org/docs/layout-saving.html#_restoring_the_layout 公式ドキュメント] を参照。
 
ワークスペースのレイアウトを復元する方法は2つ存在します: スクリプトを書くか、あるいは {{ic|~/.i3/config}} を編集して自動的にレイアウトをロードするかです。このセクションでは前者だけを説明します。後者については [https://i3wm.org/docs/layout-saving.html#_restoring_the_layout 公式ドキュメント] を参照。
238行目: 251行目:
 
前のセクションで保存したレイアウトを復元するには、以下の内容で {{ic|load_layout.sh}} というファイルを作成します:
 
前のセクションで保存したレイアウトを復元するには、以下の内容で {{ic|load_layout.sh}} というファイルを作成します:
   
* 最初の行:
+
*最初の行:
   
 
{{hc|head=~/load_layout.sh|output=
 
{{hc|head=~/load_layout.sh|output=
247行目: 260行目:
 
M は保存したレイアウトをロードしたいワークスペースの番号に、N は前のセクションで保存したワークスペースの番号に置き換えてください。
 
M は保存したレイアウトをロードしたいワークスペースの番号に、N は前のセクションで保存したワークスペースの番号に置き換えてください。
   
* 前のセクションでウィンドウを開くのに使用したコマンド (コマンドは括弧で括り、閉じ括弧の前にアンパサンドを追加します)。
+
*前のセクションでウィンドウを開くのに使用したコマンド (コマンドは括弧で括り、閉じ括弧の前にアンパサンドを追加します)。
   
 
例えば、3つの {{ic|uxterm}} ウィンドウを開く場合:
 
例えば、3つの {{ic|uxterm}} ウィンドウを開く場合:
275行目: 288行目:
 
{{note|上のスクリプトが上手く動作しない場合、[https://i3wm.org/docs/layout-saving.html#_editing_layout_files 公式ドキュメント] を参照してください。{{ic|~/.i3/workspace_N.json}} の ''swallows'' セクションを手動で編集する必要があります。}}
 
{{note|上のスクリプトが上手く動作しない場合、[https://i3wm.org/docs/layout-saving.html#_editing_layout_files 公式ドキュメント] を参照してください。{{ic|~/.i3/workspace_N.json}} の ''swallows'' セクションを手動で編集する必要があります。}}
   
=== スクラッチパッドコンテナ ===
+
===スクラッチパッドコンテナ===
   
 
デフォルトでは、[https://i3wm.org/docs/userguide.html#_scratchpad スクラッチパッド] は一つのウィンドウしか含んでいません。しかしながら、コンテナをスクラッチパッドにすることが可能です。
 
デフォルトでは、[https://i3wm.org/docs/userguide.html#_scratchpad スクラッチパッド] は一つのウィンドウしか含んでいません。しかしながら、コンテナをスクラッチパッドにすることが可能です。
289行目: 302行目:
 
マルチスクラッチパッドについては [https://faq.i3wm.org/question/138/multiple-scratchpad/i3] も参照してください。
 
マルチスクラッチパッドについては [https://faq.i3wm.org/question/138/multiple-scratchpad/i3] も参照してください。
   
=== スクリーンセーバーと電源管理 ===
+
===スクリーンセーバーと電源管理===
   
 
[[電源管理#xss-lock|xss-lock]] を使うことで i3 セッションの画面ロッカーを登録することが可能です。
 
[[電源管理#xss-lock|xss-lock]] を使うことで i3 セッションの画面ロッカーを登録することが可能です。
299行目: 312行目:
 
[[DPMS]] も参照。
 
[[DPMS]] も参照。
   
=== シャットダウン, 再起動, 画面ロック ===
+
===シャットダウン, 再起動, 画面ロック===
   
 
シャットダウン、再起動、画面ロックのキーコンビネーションを {{ic|~/.config/i3/config}} に追加することができます。以下の例では[[systemd#電源管理|電源管理]]コマンドを実行する権限がないユーザーに権限を与えるために {{Pkg|polkit}} をインストールする必要があります。
 
シャットダウン、再起動、画面ロックのキーコンビネーションを {{ic|~/.config/i3/config}} に追加することができます。以下の例では[[systemd#電源管理|電源管理]]コマンドを実行する権限がないユーザーに権限を与えるために {{Pkg|polkit}} をインストールする必要があります。
332行目: 345行目:
 
他の画面ロッカーについては、[[アプリケーション一覧/セキュリティ#スクリーンロック]]を参照。
 
他の画面ロッカーについては、[[アプリケーション一覧/セキュリティ#スクリーンロック]]を参照。
   
=== 外部ディスプレイの手動管理 ===
+
===外部ディスプレイの手動管理===
   
 
[[xrandr]] を使うことで簡単にディスプレイを管理することができます。以下は i3 の設定ファイルを使って統合する例で、上記の電源管理セクションと同じように振る舞います。
 
[[xrandr]] を使うことで簡単にディスプレイを管理することができます。以下は i3 の設定ファイルを使って統合する例で、上記の電源管理セクションと同じように振る舞います。
362行目: 375行目:
 
利用可能なオプションについては [[xrandr]] のページや man ページ、[https://i3wm.org/docs/userguide.html i3 ユーザーガイド] や [https://www.reddit.com/r/i3wm i3 reddit の FAQ] を見てください。
 
利用可能なオプションについては [[xrandr]] のページや man ページ、[https://i3wm.org/docs/userguide.html i3 ユーザーガイド] や [https://www.reddit.com/r/i3wm i3 reddit の FAQ] を見てください。
   
=== タブまたはスタックによるウェブブラウジング ===
+
===タブまたはスタックによるウェブブラウジング===
   
 
タブの管理はブラウザの仕事ではなく、ウィンドウマネージャの仕事だとして、故意にタブを実装していないウェブブラウザというのが存在します。
 
タブの管理はブラウザの仕事ではなく、ウィンドウマネージャの仕事だとして、故意にタブを実装していないウェブブラウザというのが存在します。
376行目: 389行目:
 
for_window [class="Uzbl-core"] focus child, layout tabbed, focus
 
for_window [class="Uzbl-core"] focus child, layout tabbed, focus
   
=== ワークスペース変数 ===
+
===ワークスペース変数===
   
 
i3 ではワークスペースを複数定義するので、ワークスペース変数を指定すると便利です。例えば [https://github.com/dkeg/bloat2.0/blob/master/i3config#L55]:
 
i3 ではワークスペースを複数定義するので、ワークスペース変数を指定すると便利です。例えば [https://github.com/dkeg/bloat2.0/blob/master/i3config#L55]:
394行目: 407行目:
 
詳しくは [https://i3wm.org/docs/userguide.html#_changing_named_workspaces_moving_to_workspaces Changing named workspaces] を見て下さい。
 
詳しくは [https://i3wm.org/docs/userguide.html#_changing_named_workspaces_moving_to_workspaces Changing named workspaces] を見て下さい。
   
=== フロートするダイアログを正しく扱う ===
+
===フロートするダイアログを正しく扱う===
   
 
デフォルトではダイアログはフロートモードで開かれることになっていますが [https://i3wm.org/docs/userguide.html#_floating]、ダイアログはタイルモードで開いてしまうこともあります。この挙動を変更するには {{pkg|xorg-xprop}} でダイアログの {{ic|WM_WINDOW_ROLE}} をチェックして適切なルールを {{ic|~/.i3/config}} に追加してください:
 
デフォルトではダイアログはフロートモードで開かれることになっていますが [https://i3wm.org/docs/userguide.html#_floating]、ダイアログはタイルモードで開いてしまうこともあります。この挙動を変更するには {{pkg|xorg-xprop}} でダイアログの {{ic|WM_WINDOW_ROLE}} をチェックして適切なルールを {{ic|~/.i3/config}} に追加してください:
409行目: 422行目:
 
for_window [class="(?i)mplayer"] floating enable
 
for_window [class="(?i)mplayer"] floating enable
   
=== ネットワークのダウンロード・アップロード速度をステータスバーに表示 ===
+
===ネットワークのダウンロード・アップロード速度をステータスバーに表示===
   
 
上流の [http://code.stapelberg.de/git/i3status/tree/contrib/measure-net-speed.bash スクリプト] を編集して使うことができます。
 
上流の [http://code.stapelberg.de/git/i3status/tree/contrib/measure-net-speed.bash スクリプト] を編集して使うことができます。
   
* システムに応じて両方のネットワークカードをリネームしてください ({{ic|ip addr}} を使ってください)。
+
*システムに応じて両方のネットワークカードをリネームしてください ({{ic|ip addr}} を使ってください)。
* {{ic|/sys/devices}} でネットワークカードを検索して適切に置き換えます:
+
*{{ic|/sys/devices}} でネットワークカードを検索して適切に置き換えます:
  +
 
$ find /sys/devices -name ''network_interface''
 
$ find /sys/devices -name ''network_interface''
   
421行目: 435行目:
 
スクリプトを適切な場所 (例: {{ic|~/.config/i3}}) に保存して、ステータスプログラムから実行するように設定してください。
 
スクリプトを適切な場所 (例: {{ic|~/.config/i3}}) に保存して、ステータスプログラムから実行するように設定してください。
   
== パッチ ==
+
==パッチ==
   
 
上流にマージされてないパッチがあてられたパッケージが [[AUR]] には存在します:
 
上流にマージされてないパッチがあてられたパッケージが [[AUR]] には存在します:
   
 
* {{App|i3bar-icons-git|i3bar で XBM アイコンを表示|https://github.com/ashinkarov/i3-extras|{{AUR|i3bar-icons-git}}{{Broken package link|{{aur-mirror|i3bar-icons-git}}}}}}
 
* {{App|i3bar-icons-git|i3bar で XBM アイコンを表示|https://github.com/ashinkarov/i3-extras|{{AUR|i3bar-icons-git}}{{Broken package link|{{aur-mirror|i3bar-icons-git}}}}}}
  +
 
* {{App|i3-smart-border|スマートボーダー|https://github.com/ashinkarov/i3-extras|{{AUR|i3-smart-border}}{{Broken package link|{{aur-mirror|i3-smart-border}}}}}}
 
* {{App|i3-smart-border|スマートボーダー|https://github.com/ashinkarov/i3-extras|{{AUR|i3-smart-border}}{{Broken package link|{{aur-mirror|i3-smart-border}}}}}}
  +
 
* {{App|i3-wm-iconpatch|タイトルバーアイコンのサポート|https://github.com/ashinkarov/i3-extras|{{AUR|i3-wm-iconpatch}}}}
 
* {{App|i3-wm-iconpatch|タイトルバーアイコンのサポート|https://github.com/ashinkarov/i3-extras|{{AUR|i3-wm-iconpatch}}}}
   
== トラブルシューティング ==
+
==トラブルシューティング==
   
=== 一般 ===
+
===一般===
   
 
多くの場合、開発版である {{AUR|i3-git}} と {{AUR|i3status-git}} でバグは修正されているため、上流では開発版を使ってエラーが再現できるかどうか訊いてきます [https://i3wm.org/docs/debugging.html]。[[デバッグ - トレースを取得#一般]]も見てください。
 
多くの場合、開発版である {{AUR|i3-git}} と {{AUR|i3status-git}} でバグは修正されているため、上流では開発版を使ってエラーが再現できるかどうか訊いてきます [https://i3wm.org/docs/debugging.html]。[[デバッグ - トレースを取得#一般]]も見てください。
   
=== i3 メッセージバーのボタンが動作しない ===
+
===i3 メッセージバーのボタンが動作しない===
   
 
{{ic|i3-nagbar}} の "Edit config" などのボタンは {{ic|i3-sensible-terminal}} を呼び出します。[[#ターミナルエミュレータ|ターミナルエミュレータ]]が i3 によって認識されていることを確認してください。
 
{{ic|i3-nagbar}} の "Edit config" などのボタンは {{ic|i3-sensible-terminal}} を呼び出します。[[#ターミナルエミュレータ|ターミナルエミュレータ]]が i3 によって認識されていることを確認してください。
   
=== タイル化されたターミナルで行の折り返しがおかしい ===
+
===タイル化されたターミナルで行の折り返しがおかしい===
   
 
i3 v4.3 以上ではタイル配置したウィンドウのサイズ増加ヒントは無視されます [https://www.mail-archive.com/i3-discuss@i3.zekjur.net/msg00709.html]。これによってターミナルで行が早いところで折り返されてしまうなどの問題が生じます。解決方法としては、問題のウィンドウをフロートさせてから、もう一度タイル化してください。
 
i3 v4.3 以上ではタイル配置したウィンドウのサイズ増加ヒントは無視されます [https://www.mail-archive.com/i3-discuss@i3.zekjur.net/msg00709.html]。これによってターミナルで行が早いところで折り返されてしまうなどの問題が生じます。解決方法としては、問題のウィンドウをフロートさせてから、もう一度タイル化してください。
   
=== マウスカーソルが待機状態のままになる ===
+
===マウスカーソルが待機状態のままになる===
   
 
起動通知をサポートしていないスクリプやアプリケーションを起動すると、マウスカーソルは60秒間の間、ビジー/砂時計状態になります。
 
起動通知をサポートしていないスクリプやアプリケーションを起動すると、マウスカーソルは60秒間の間、ビジー/砂時計状態になります。
453行目: 469行目:
 
このアニメーションを全てのアプリケーションで無効にするには、[[カーソルテーマ]]を見て下さい。
 
このアニメーションを全てのアプリケーションで無効にするには、[[カーソルテーマ]]を見て下さい。
   
=== キーバインドが反応しない ===
+
===キーバインドが反応しない===
   
 
標準のキーバインド (キーを押して実行) を使っている場合、[[スクリーンショットの取得#scrot|scrot]] などのツールが動作しないことがあります。そのようなときは、{{ic|--release}} でキーをリリースしてからコマンドを実行してください:
 
標準のキーバインド (キーを押して実行) を使っている場合、[[スクリーンショットの取得#scrot|scrot]] などのツールが動作しないことがあります。そのようなときは、{{ic|--release}} でキーをリリースしてからコマンドを実行してください:
462行目: 478行目:
 
[https://i3wm.org/docs/userguide.html#keybindings] を参照。
 
[https://i3wm.org/docs/userguide.html#keybindings] を参照。
   
=== ティアリング ===
+
===ティアリング===
   
 
i3 は [http://bugs.i3wm.org/report/ticket/661 ダブルバッファをちゃんと実装していない] ためにティアリングやちらつきが発生することがあります。問題を修正したいときは、[[Xorg#コンポジット|コンポジットマネージャ]]を使ってみて下さい。
 
i3 は [http://bugs.i3wm.org/report/ticket/661 ダブルバッファをちゃんと実装していない] ためにティアリングやちらつきが発生することがあります。問題を修正したいときは、[[Xorg#コンポジット|コンポジットマネージャ]]を使ってみて下さい。
   
=== トレイアイコンが表示されない ===
+
===トレイアイコンが表示されない===
   
 
デフォルトの {{ic|tray_output primary}} ディレクティブでは ''xrandr'' でプライマリ出力を設定する必要があります。明示的に出力を指定するか、ディレクティブを削除してください [https://github.com/i3/i3/issues/1144]。詳しくは [[Xrandr]] を参照。i3 のバージョン 4.12 から、i3-config-wizard によって作成されるデフォルト設定ではディレクティブが追加されないようになりました。
 
デフォルトの {{ic|tray_output primary}} ディレクティブでは ''xrandr'' でプライマリ出力を設定する必要があります。明示的に出力を指定するか、ディレクティブを削除してください [https://github.com/i3/i3/issues/1144]。詳しくは [[Xrandr]] を参照。i3 のバージョン 4.12 から、i3-config-wizard によって作成されるデフォルト設定ではディレクティブが追加されないようになりました。
   
== 参照 ==
+
==参照==
   
* [http://i3wm.org 公式ウェブサイト]
+
*[http://i3wm.org 公式ウェブサイト]
* [http://www.funtoo.org/I3_Tiling_Window_Manager funtoo Wiki]
+
*[http://www.funtoo.org/I3_Tiling_Window_Manager funtoo Wiki]
* [http://code.stapelberg.de/git/i3 i3 ソースコード]
+
*[http://code.stapelberg.de/git/i3 i3 ソースコード]
* [https://github.com/ashinkarov/i3-extras i3-extras] - スクリプトとパッチのコレクション
+
*[https://github.com/ashinkarov/i3-extras i3-extras] - スクリプトとパッチのコレクション
* [https://github.com/acrisci/i3ipc-glib i3ipc-glib] - i3 拡張のためのライブラリ
+
*[https://github.com/acrisci/i3ipc-glib i3ipc-glib] - i3 拡張のためのライブラリ
* [https://github.com/veelenga/i3ipc-ruby i3ipc-ruby] - An improved library for i3 extensions in Ruby
+
*[https://github.com/veelenga/i3ipc-ruby i3ipc-ruby] - An improved library for i3 extensions in Ruby
* [http://www.j4tools.org/ j4tools] - non-official tools designed to work with i3
+
*[http://www.j4tools.org/ j4tools] - non-official tools designed to work with i3
   
 
'''Arch Linux フォーラム'''
 
'''Arch Linux フォーラム'''
  +
* [https://bbs.archlinux.org/viewtopic.php?id=99064 The i3 thread] - A general discussion about i3
 
* [https://bbs.archlinux.org/viewtopic.php?id=103369 i3 desktop screenshots and config sharing]
+
*[https://bbs.archlinux.org/viewtopic.php?id=99064 The i3 thread] - A general discussion about i3
  +
*[https://bbs.archlinux.org/viewtopic.php?id=103369 i3 desktop screenshots and config sharing]
   
 
'''スクリーンキャスト'''
 
'''スクリーンキャスト'''
  +
* [https://www.youtube.com/watch?v=Wx0eNaGzAZU i3 ウィンドウマネージャの v4.1 スクリーンキャスト]
 
* [https://www.youtube.com/watch?v=j1I63wGcvU4&index=1&list=PL5ze0DjYv5DbCv9vNEzFmP6sU7ZmkGzcf i3 window manager v4.1X screencasts]
+
*[https://www.youtube.com/watch?v=Wx0eNaGzAZU i3 ウィンドウマネージャの v4.1 スクリーンキャスト]
  +
*[https://www.youtube.com/watch?v=j1I63wGcvU4&index=1&list=PL5ze0DjYv5DbCv9vNEzFmP6sU7ZmkGzcf i3 window manager v4.1X screencasts]

2019年7月15日 (月) 09:13時点における版

関連記事

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[リンク切れ: アーカイブ: aur-mirror]
  • 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 || i3blocks
  • 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[リンク切れ: アーカイブ: aur-mirror]
  • i3catgo ベースのラッパーで外部の複数のソースからの入力を繋げることができます。クリックイベントの処理、ユーザーが定義した信号を子プロセスに転送することが可能。
http://vincent-petithory.github.io/i3cat/ || i3cat-gitAUR
  • py3status — Python による拡張可能な i3status ラッパー。
https://github.com/ultrabug/py3status || py3status

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

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

  • ttf-font-awesome — CSS でカスタマイズできるスケーラブルなベクターアイコン。それぞれの記号の Unicode を記した チートシート があります。
http://fortawesome.github.io/Font-Awesome/ || ttf-font-awesome
  • 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

ヒントとテクニック

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

i3 window Navigation Tips を見て下さい。

Jump to open window

  • quickswitch-i3 — i3 でウィンドウを素早く切り替え・確認するための Python ユーティリティ。
https://github.com/OliverUv/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

ノート: このセクションではワークスペースの現在のウィンドウレイアウトを保存して後から復元する方法だけを説明します。詳細は 公式ドキュメント を参照してください。

ワークスペースの現在のウィンドウレイアウトを保存

現在のウィンドウレイアウトを保存するには、以下の手順を実行:

  1. まず、様々なコマンドを使ってワークスペースにウィンドウを開いて適当にリサイズしてください。それぞれのウィンドウを開くのに実行したコマンドを書き出します。
  2. 次に、新しいワークスペースで、ターミナルを開いて次を実行:
    i3-save-tree --workspace N > ~/.i3/workspace_N.json
    N は保存したいワークスペースの番号に置き換えてください。これで N 番目のワークスペースのレイアウトが ~/.i3/workspace_N.json ファイルに保存されます。
  3. 作成したファイルを編集してください。次のコマンドで行うことができます:
    tail -n +2 ~/.i3/workspace_N.json | fgrep -v '// splitv' | sed 's|//||g' > ~/.i3/workspace_N.json

ワークスペースのウィンドウレイアウトを復元

ワークスペースのレイアウトを復元する方法は2つ存在します: スクリプトを書くか、あるいは ~/.i3/config を編集して自動的にレイアウトをロードするかです。このセクションでは前者だけを説明します。後者については 公式ドキュメント を参照。

前のセクションで保存したレイアウトを復元するには、以下の内容で load_layout.sh というファイルを作成します:

  • 最初の行:
~/load_layout.sh
#!/bin/bash
i3-msg "workspace M; append_layout ~/.i3/workspace_N.json"

M は保存したレイアウトをロードしたいワークスペースの番号に、N は前のセクションで保存したワークスペースの番号に置き換えてください。

  • 前のセクションでウィンドウを開くのに使用したコマンド (コマンドは括弧で括り、閉じ括弧の前にアンパサンドを追加します)。

例えば、3つの uxterm ウィンドウを開く場合:

~/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 &)

それからファイルに実行可能属性を付与:

$ chmod u+x ~/load_layout.sh

最後に、スクリプトを実行して N 番目のワークスペースのレイアウトを M 番目のワークスペースにロードします:

$ ~/load_layout.sh
ヒント: ~/.i3/configbindsym $mod+g exec ~/load_layout.sh を追加して i3 を再起動することで Mod+g で上記のスクリプトを実行できるようになります。
ノート: 上のスクリプトが上手く動作しない場合、公式ドキュメント を参照してください。~/.i3/workspace_N.jsonswallows セクションを手動で編集する必要があります。

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

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

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

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

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

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

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

xss-lock を使うことで i3 セッションの画面ロッカーを登録することが可能です。

もしくは、xautolock-lockaftersleep オプションを使って、スリープやハイバネーションから復帰した後に画面をロックすることができます。-time オプションは指定時間後に画面をロックします。

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

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"

追加したら $mod+pause を押すことでプロンプトが表示されます。より複雑な動作をさせたい場合は、スクリプトに分離し、mode の中で参照してください [4]

ノート:
  • sleep 1 で小さなディレイを追加することで、サスペンドにより起こりうる競合状態を防いでいます [5]
  • systemctl poweroff-i 引数は、たとえ他のユーザーがログインしていたり (polkit を必要とします)、logind が (誤って) そのように認識していてもシャットダウンを行います [6]

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

外部ディスプレイの手動管理

xrandr を使うことで簡単にディスプレイを管理することができます。以下は i3 の設定ファイルを使って統合する例で、上記の電源管理セクションと同じように振る舞います。

VGA と HDMI 出力が存在するノートパソコンでメニューを使ってオンオフを切り替えます:

## 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"

オフになったディスプレイで表示していたウィンドウは自動的に他のアクティブなディスプレイに移動されます。

デバイスの名前を確認したいときは、使用したいデバイスを接続して次を実行してください:

$ xrandr --query

利用可能なオプションについては xrandr のページや man ページ、i3 ユーザーガイドi3 reddit の FAQ を見てください。

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

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

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

ネットワークのダウンロード・アップロード速度をステータスバーに表示

上流の スクリプト を編集して使うことができます。

  • システムに応じて両方のネットワークカードをリネームしてください (ip addr を使ってください)。
  • /sys/devices でネットワークカードを検索して適切に置き換えます:
$ find /sys/devices -name network_interface
ヒント: /sys/class/net/interface/statistics/ を使うことで PCI の位置に依存しなくなります。

スクリプトを適切な場所 (例: ~/.config/i3) に保存して、ステータスプログラムから実行するように設定してください。

パッチ

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

  • i3bar-icons-git — i3bar で XBM アイコンを表示
https://github.com/ashinkarov/i3-extras || i3bar-icons-gitAUR[リンク切れ: アーカイブ: aur-mirror]
  • i3-smart-border — スマートボーダー
https://github.com/ashinkarov/i3-extras || i3-smart-borderAUR[リンク切れ: アーカイブ: aur-mirror]
  • 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 フォーラム

スクリーンキャスト