Разделите WorkSpace для второго экрана

Я хотел бы достигнуть поведения как это: Когда я использую свой экран ноутбука, моя первая рабочая область используется. Когда я включаю второй экран (с помощью HDMI), вторая рабочая область используется, и все новые открытые окна на этом втором экране приземлятся во втором пространстве, кроме я переключаю рабочую область на втором экране к другой рабочей области.

Когда я отключу свой второй экран, все окна останутся в рабочих областях, в которых они были созданы, и я могу переключить рабочие области на своем ноутбуке для наблюдения их.

Это поведение уже возможно?

16
задан 12 October 2016 в 01:55

1 ответ

Это поведение уже возможно?

Все возможно в Linux. Вам будут нужны некоторые элементарные знания о Xserver, некоторое время и система для тестирования на, так как Вы смешиваете со своими X, и Вам, конечно, нужно выполнение браузера, если Вы нуждаетесь в помощи :-)

По-моему, существует три возможных решения:

  • Установки мультимонитора используют Xinerama. Простое решение, о котором я могу думать, состоит в том, чтобы добавить третий виртуальный экран к Вашей конфигурации и просто переместить окна туда с помощью xdotool. Существуют некоторые оборотные стороны к этому решению, но оно не потребовало бы усилию по необходимости переместить окна между другим Xservers, который в целом не возможен.

  • Так как не возможно переместить окна между другим Xservers, нам нужен своего рода прокси как xmove или Xpra, чтобы сделать это для нас. Я думаю, что окна затем живут на отдельной сессии Xfvb для сокрытия окон. Можно присоединить и отсоединиться к сессии.

  • Независимо от того, какой метод Вы используете, Вам нужно событие, когда монитор отключается. Событие должно быть инициировано, когда экран разъединяется и также при повторном подключении. Вы можете daemonize сценарий для наблюдения за событием.

Я предпочел бы использование решения Xpra по различным причинам. Я могу только дать Вам некоторые подсказки того, как сделать это. Решения не полны, но должны запустить Вас.

Решение Xinerama

Установка

Установка Xinerama должна быть расширена, чтобы иметь статическую конфигурацию: См. https://help.ubuntu.com/community/XineramaHowTo

см. также поддельный третий экран и Xdummy

получите затронутые окна

Мы можем использовать xdotool для поиска окон. Впоследствии мы можем проверить их положение и переместить их. Я принимаю два монитора с 1920x1080 конфигурация. Следующее переместит все окна справа налево xinerama экран.

while read xwindowid; do
    eval $(xdotool getwindowgeometry --shell "$xwindowid")
    if (( X > 1920 && X <= (1920 * 2))); then
        xdotool windowmove --relative $WINDOW -1920 y
    fi
done <<< "$(xdotool search --screen 0 '.*')"

Можно теперь переместить все окна от экрана (screen0) ноутбука до третьего (виртуального) экрана, если монитор присоединяется. В то же время можно переместить любое окно, которое хранится на третьем экране на первый экран.

Решение XPRA

Для использования Xpra для перемещения окон всеми окнами должен управлять предшествующий Xpra. Необходимо запустить целое настольное использование Xpra на системном запуске. Два раза каждый - Ваш основной рабочий стол, где Вы работаете, и другой главным образом виртуальный рабочий стол.

xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach

Теперь у Вас может быть Windows для разъединенного экрана, работающего на отдельной xpra сессии и присоединении/отсоединении от нее, когда монитор переключается.

xpra attach :99
xpra detatch :99

Существует также прекращенное расширение оболочки гнома, которое могло быть полезно, если Вы хотите вручную переместить окно от скрытого :99 к нормальному :0 между запущенными дисплеями xpra.

Событие

  • Можно наблюдать за разъединением/повторно подключением определенного дисплея

  • возможно, наблюдайте за измененными размерами своего xinerama, использующего xwininfo, чтобы иметь его независимый от отключенного монитора, если Вы хотите т.е. расширить Вашу установку до 3 мониторов и отключить произвольное устройство. Обратите внимание, что это будет только работать на xpra решение.

    xwininfo -display :0 -root | grep -e "-geometry"

    -geometry 5760x2160+0+0

1
ответ дан 23 November 2019 в 02:37

Другие вопросы по тегам:

Похожие вопросы: