web-dev-qa-db-ja.com

i3のワークスペースを複数のディスプレイに割り当てる

Linuxラップトップでi3の使用をオンにしました。私は通常、ラップトップの内部モニター(ディスプレイeDP1)ですが、仕事中はセカンダリモニターをコンピューターのHDMIポート(ディスプレイHDMI2)。これまでのところ、これらのコマンドを私のi3構成ファイルに追加することで、これをうまく機能させています。

# use workspaces on different monitors
workspace "1: P1" output eDP1
workspace "2: P2" output eDP1
workspace "3: P3" output eDP1
workspace "4: P4" output eDP1
workspace "5: P5" output eDP1
workspace "6: S1" output HDMI2 
workspace "7: S2" output HDMI2
workspace "8: S3" output HDMI2
workspace "9: S4" output HDMI2
workspace "10: S5" output HDMI2

# add HDMI monitor when connected
exec --no-startup-id xrandr --output HDMI2 --right-of eDP1
bindsym $mod+m exec --no-startup-id xrandr --output HDMI2 --auto --right-of eDP1

つまり、HDMIディスプレイを接続するときは、 Mod+M i3にそれを検出させ、プライマリディスプレイの右側に配置し、5つの名前付きワークスペース(6-10)を委任します。

これが問題です:自宅で、VGA(ディスプレイDP2)。上記のxrandrコマンドを実行して、このディスプレイをプライマリディスプレイの右側に配置することもできますが、replaceしない限り、デフォルトでワークスペースをこのディスプレイに割り当てることができません。私が私のHDMIモニターに対して既に持っているルール。どちらのモニターを使用しても、これらの両方のワークスペースを同じように機能させたいので、これはオプションではありません。

TL; DR接続されているディスプレイに応じて、ワークスペースを2つの異なるディスプレイに割り当てる方法はありますか(同時に接続されることはないと仮定して)?

16
Frxstrem

複数の出力を単一のワークスペースに割り当てることはできません。以下を参照してください https://github.com/i3/i3/issues/555

したがって、唯一の方法は、i3構成を動的に変更することです。次の2つのことを行うホットキースクリプトに割り当てることができます。xrandrによるモニター出力の変更とi3-msgによるワークスペースの移動:

xrandr --output DP2 --auto --right-of eDP1
i3-msg "workspace 6, move workspace to output DP2"
...
i3-msg "workspace 10, move workspace to output DP2"

上記のスクリプトを使用して、6〜10個のワークスペースをDP2に移動し、ワークスペース10にとどまります。

Update 2019:複数の出力割り当てがv4.16から実装されました https://i3wm.org/docs/userguide.htmlを参照) #workspace_screen 。今、あなたはそれらをそのように使うことができました:

workspace "6: S1" output HDMI2 VGA

次に、最初に利用可能な出力が使用されます。

22
anlar

ユーザーズガイド によると、構文:

workspace 1 output eDP1
...
workspace 6 output HDMI2 VGA

うまくいくはずです。

または、設定されていない場合は、マシンでプライマリ出力を定義できます(xrandr --output <output> --primary)、次の構文を使用します:

workspace 1 output primary
...
workspace 6 output secondary
3
caseneuve