Назначить рабочие пространства на i3 нескольким дисплеям


15

Я включил i3 на своем ноутбуке с Linux. Я обычно использую только внутренний монитор (дисплей 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 Есть ли способ назначить рабочие пространства для двух разных дисплеев, в зависимости от того, какой дисплей подключен (при условии, что они никогда не будут подключены одновременно)?

Ответы:


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

должно сработать.

Или вы можете определить основной вывод на ваших машинах, если не set ( xrandr --output <output> --primary), и использовать этот синтаксис:

workspace 1 output primary
...
workspace 6 output secondary
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.