「I3」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(翻訳)
147行目: 147行目:
 
$ cp /etc/i3status.conf ~/.config/i3status/config
 
$ cp /etc/i3status.conf ~/.config/i3status/config
   
デフォルトの設定では定義されていないプラグインがあり、いくつかの設定あなたのシステムでは無効かもしれません。
+
デフォルトの設定では定義されていないプラグインがあり、いくつかの設定あなたのシステムでは無効かもしれません。
 
そのためシステムに応じて設定を更新する必要があります。詳しくは {{ic|man 1 i3status}} を見て下さい。
 
そのためシステムに応じて設定を更新する必要があります。詳しくは {{ic|man 1 i3status}} を見て下さい。
   

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

関連記事

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"

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

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

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

上流の スクリプト を編集します。

  • システムに応じて両方のネットワークカードをリネームしてください (ip addr を使ってください)
  • /sys/devices にあるそれらを見つけて適切に置き換えます:
$ find /sys/devices -name network_interface
ヒント: PCI の位置に依存しない為に /sys/class/net/interface/statistics/ を使います。

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

パッチ

上流にマージされてないパッチがあてられたパッケージが 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 フォーラム

スクリーンキャスト