这是我记录的最终信息亭设置。

这是我记录的最终信息亭设置。

我的目标是让 i3 在双显示器设置上为每个显示器启动一个浏览器。

我找不到如何启动浏览器并将其移动到目标监视器。

我已经深入研究了文档并尝试了 ~/.i3/config

exec --no-startup-id i3-msg 'workspace 1 ; move workspace to output HDMI1 ; exec chromium --new-window "http://url/1" ; workspace 2 ; move workspace to output HDMI2 ; exec chromium --new-window "http://url/2"'

但两个窗口都出现在第一台显示器上,第二台显示器为空白。

我错过了什么 ?

Xorg 配置如下:

Section "Monitor"
  Identifier "HDMI1"
  Option     "Primary" "true"
EndSection

Section "Monitor"
  Identifier "HDMI2"
  Option     "LeftOf" "HDMI1"
EndSection

编辑:

我已经添加到〜/.i3/config

workspace 1 output HDMI1
workspace 2 output HDMI2

我试过了

exec --no-startup-id i3-msg 'workspace 1; exec xeyes'
exec --no-startup-id i3-msg 'workspace 2; exec xclock'

或者

exec --no-startup-id i3-msg 'workspace 1; exec xeyes; workspace 2; exec xeyes'

始终相同的结果,两个应用程序都在最后选择的工作区上启动。

答案1

您可以为 Chromium 实例分配特定的类名称,并将它们绑定到工作区。因此,使用 2 个显示器配置:

workspace 1 output HDMI1
workspace 2 output HDMI2

for_window [class="^chromium-no-1$"] move workspace number 1
for_window [class="^chromium-no-2$"] move workspace number 2

您需要启动 2 个具有特定类值的浏览器实例:

$ chromium-browser --class=chromium-no-1
$ chromium-browser --class=chromium-no-2

答案2

我在双显示器上使用 i3wm 和 ArchLinux 非常成功。当我启动 i3 时,我会在每台显示器上获得一个工作区。要在不同的显示器上移动工作区,我已将以下内容添加到我的~/.i3/config

bindsym $mod+Mod1+Up    move workspace to output up
bindsym $mod+Mod1+Down  move workspace to output down
bindsym $mod+Mod1+Left  move workspace to output left
bindsym $mod+Mod1+Right move workspace to output right

这允许我将工作区移动到不同的输出。但是,要在不同的工作区上有两个浏览器(除非另有配置,一个工作区仅包含一个屏幕),您可以将浏览器移动到另一个屏幕上的工作区,或者仅在另一个屏幕上使用 default $mod+Left/Right

以下是我使用的与定位窗口相关的所有绑定符号:

# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+odiaeresis move right

# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10

# move workspace to another output/monitor
bindsym $mod+Mod1+Up    move workspace to output up
bindsym $mod+Mod1+Down  move workspace to output down
bindsym $mod+Mod1+Left  move workspace to output left
bindsym $mod+Mod1+Right move workspace to output right

答案3

这是我记录的最终信息亭设置。

〜/.xinitrc我附上:

# disable screen saver
xset s off
xset -dpms

# start window-manager
i3

〜/.i3/config我附上:

# Setting workspace to monitors
workspace 1 output HDMI1
workspace 2 output HDMI2

# tie each browser to each monitor
for_window [class="^chromium-left$"] move workspace number 1
for_window [class="^chromium-right$"] move workspace number 2

exec ./start-browsers.sh

并启动浏览器

./start-browsers.sh

#!/bin/bash

left_url="http://whatever/url/for/left/monitor"
right_url="http://whatever/url/for/right/monitor"

tmpdir1=$(mktemp --directory)
tmpdir2=$(mktemp --directory)

left_target="chromium --new-window $left_url \
--user-data-dir=$tmpdir1 \
--class=chromium-left \
--no-first-run \
--disable-restore-session-state \
--no-default-browser-check \
--disable-java \
--disable-translate \
--disable-infobars \
--disable-suggestions-service \
--disable-save-password-bubble \
--start-fullscreen"
right_target="chromium --new-window $right_url \
--disable-java --user-data-dir=$tmpdir2 \
--class=chromium-right \
--no-first-run \
--disable-restore-session-state \
--no-default-browser-check \
--disable-translate \
--disable-infobars \
--disable-suggestions-service \
--disable-save-password-bubble \
--start-fullscreen"

# start app for left screen
i3-msg 'workspace 1'
$left_target &

# start app for right screen
i3-msg 'workspace 2'
$right_target &

# hide mouse pointer
unclutter &

相关内容