i3wm:単一バインディングで複数のモニターを使用してワークスペースを切り替える方法

i3wm:単一バインディングで複数のモニターを使用してワークスペースを切り替える方法

Unityでは、両方のモニターは常に同じワークスペースにあります。ワークスペース 1 から始めて Ctrl+Alt+右を押すと、両方私のモニターは右側の新しいワークスペースに移動します。この動作は私のワークフローにとって重要です。

i3に切り替えたいのですが、2つのモニターが常に同じワークスペースを指す必要はないようです。 i3で$ mod + Shift + numを押すと、フォーカスのある画面だけでなく、両方の画面が変更されるようにこの動作を変更する方法はありますか?

ベストアンサー1

この「機能」を(ある程度)エミュレートすることが可能です。 (私にとっては、ワークスペースの動作がi3主な機能の1つなので、実際にすべてをカバーしていないワークスペースを持つことができない場合はお勧めしません。モニター)状況を引き続き使用したい場合i3)。

複数のコマンドをショートカットにバインドすることで、両方のモニタのワークスペースを同時に切り替えることができます。たとえば、

# Default modifier key
set $mod Mod4

# variables for left and right monitor 
# (assuming names DP-1 and DP-3 with DP-1 being left of DP-3)
set $monL DP-1
set $monR DP-3

# variables for workpacenames; 
set $ws1L 1:A
set $ws1R 11:A
set $ws2L 2:B
set $ws2R 12:B
set $ws3L 3:C
set $ws3R 13:C

# assign workspaces to specific outputs
workspace $ws1L output $monL
workspace $ws1R output $monR
workspace $ws2L output $monL
workspace $ws2R output $monR
workspace $ws3L output $monL
workspace $ws3R output $monR

# do not toggle automatically between the current and previous 
# workspace on repeated calls to `workspace NAME` (with identical NAME)
workspace_auto_back_and_forth no

# Toggle between both monitors 
# (focus output left wraps from the leftmost to the rightmost output)
bindsym $mod+Tab focus output left

# switch two workspaces at once (the need to be on different outputs)
bindsym $mod+1 workspace $ws1L, workspace $ws1R
bindsym $mod+2 workspace $ws2L, workspace $ws2R
bindsym $mod+3 workspace $ws3L, workspace $ws3R

# move a window to a specific workpace; 
# $mod+Shift for left side, $mod+Control for right side
bindsym $mod+Shift+1 move workspace $ws1L
bindsym $mod+Control+1 move workspace $ws1R
bindsym $mod+Shift+2 move workspace $ws2L
bindsym $mod+Control+2 move workspace $ws2R
bindsym $mod+Shift+3 move workspace $ws3L
bindsym $mod+Control+3 move workspace $ws3R

bar {
    # [...]
    # Do not show workspace numbers (optional)
    strip_workspace_numbers yes
}

これは変数を使用してワークスペースと出力名を一貫して保持します。左側のモニターと右側のモニターのワークスペース名は異なる必要があります。この場合、必要に応じて隠すことができるので、別の番号を使用することを選択しました。これらの設定では、Super+は左側のモニターと右側のモニターのワークスペース1に切り替わります。混乱や不要な動作を防ぐためには無効にする必要があります。1:A11:Aworkspace_auto_back_and_forth

指示:

  • これはキーボードショートカットとしてのみ機能します。 i3barのワークスペースボタンをクリックすると、1台のモニターのワークスペースのみが変更され、同伴項目は変更されません。
  • 現在表示されていないワークスペース()にウィンドウをフォーカスするコマンドは、他の[criteria] focus出力ではなくそのワークスペースにのみ焦点を合わせます。
  • 1つのバインディングを使用して2つのワークスペースを切り替えると、2番目のワークスペースは常にフォーカスされたワークスペース(上記の例では右側のワークスペース)になります。
  • 場合によっては、ディスプレイの境界を超えて焦点を合わせて移動するには、別のコマンド/キーバインディングが必要になることがあります。 (同期化されていないワークスペースの場合も同様ですが、大きなワークスペースが予想される場合は、より目立つ、または邪魔になる可能性があります。)

コンパニオンワークスペースへの自動切り替えなど、IPCイン​​ターフェースを使用すると、警告の一部が解決される可能性があります。


個人的には、少なくともハイブリッドアプローチをお勧めします。ワークフローが絶対に必要な場合は、同期化されたワークスペースを使用し、i3他の場所ではデフォルト(用)シングルディスプレイアプローチを使用します。そうではなく、ワークスペースを常に同期する必要がある場合、または同期したい場合は、これが探しているウィンドウマネージャではない可能性がi3あります。

おすすめ記事