i3wm: zwei Monitore, ein Browser pro Monitor (Dual Head Kiosk)

7

Mein Ziel ist es, dass i3 einen Browser pro Monitor auf einem Dual-Monitor-Setup startet.

Ich kann nicht finden, wie ich einen Browser starten und auf den Zielmonitor verschieben kann.

Ich habe das Dokument durchgesehen und es in ~ / .i3 / config versucht

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"'

Beide Fenster werden jedoch auf dem ersten Monitor angezeigt, während das zweite leer bleibt.

Was habe ich verpasst ?

Xorg ist wie folgt konfiguriert:

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

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

BEARBEITEN:

Ich habe zu ~ / .i3 / config hinzugefügt

workspace 1 output HDMI1
workspace 2 output HDMI2

ich habe es versucht

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

oder

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

Immer das gleiche Ergebnis, beide Apps starten am zuletzt ausgewählten Arbeitsbereich.

Nelstaar
quelle
Dort finden Sie die Erklärung, warum das, was Sie versuchen, fehlschlägt: faq.i3wm.org/question/3447/… Planen Sie, beim Start immer dieselben Websites zu öffnen?
Pierre-Alain TORET
@daftaupe, ja immer die gleiche Seite auf dem gleichen Bildschirm.
Nelstaar

Antworten:

5

Sie können Ihren Chromium-Instanzen bestimmte Klassennamen zuweisen und sie an Arbeitsbereiche binden. Also mit 2 Monitoren config:

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

Sie müssen 2 Browserinstanzen mit bestimmten Klassenwerten starten:

$ chromium-browser --class=chromium-no-1
$ chromium-browser --class=chromium-no-2
anlar
quelle
1
Unter ArchLinux workspace 1 output HDMI-0gibt mir der Befehl nur einen neuen Arbeitsbereich mit dem Namen1 output HDMI-0
msrd0
@ anlar Bullseye!
Nelstaar
1

Ich benutze i3wm mit ArchLinux auf einem Dual-Monitor-Setup ziemlich erfolgreich. Wenn ich i3 starte, bekomme ich auf jedem Monitor einen Arbeitsbereich. Um einen Arbeitsbereich auf einem anderen Monitor zu verschieben, habe ich Folgendes zu meinem hinzugefügt ~/.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

Dadurch kann ich Arbeitsbereiche auf eine andere Ausgabe verschieben. Um jedoch zwei Browser in unterschiedlichen Arbeitsbereichen zu haben (und sofern nicht anders konfiguriert, enthält ein Arbeitsbereich nur einen Bildschirm), können Sie den Browser einfach in den Arbeitsbereich auf dem anderen Bildschirm oder standardmäßig nur auf dem anderen Bildschirm verschieben $mod+Left/Right.

Hier sind alle Bindsyms, die sich auf Positionierungsfenster beziehen, die ich verwende:

# 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
msrd0
quelle
1

Hier ist mein endgültiges Kiosk-Setup für die Aufzeichnung.

In ~ / .xinitrc habe ich angehängt:

# disable screen saver
xset s off
xset -dpms

# start window-manager
i3

In ~ / .i3 / config habe ich angehängt:

# 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

Und um Browser zu starten

./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 &
Nelstaar
quelle
Unclutter ist ein Werkzeug zum Ausblenden eines stetigen Mauszeigers.
Nelstaar