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


15

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上記のコマンドを実行してこのディスプレイをプライマリディスプレイの右側に配置することもできますが、HDMIモニターの既存のルールを置き換えない限り、デフォルトでこのディスプレイにワークスペースを割り当てることはできません。どちらのモニターを使用しても、両方のワークスペースが同じように動作するようにしたいので、これはオプションではありません。

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

回答:


21

複数の出力を単一のワークスペースに割り当てることはできません。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にとどまります。

更新2019: 複数の出力割り当てがv4.16から実装されました。https: //i3wm.org/docs/userguide.html#workspace_screenを参照してください。次のように使用できます。

workspace "6: S1" output HDMI2 VGA

その後、最初に使用可能な出力が使用されます。


2

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

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

動作するはずです。

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

workspace 1 output primary
...
workspace 6 output secondary
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.