Отдельное рабочее пространство для второго экрана

16

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

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

Такое поведение уже возможно?

ворачиваются
источник
Мне уже удалось включить рабочие пространства с помощью Внешний вид -> Поведение и отключить вертикальные рабочие пространства с помощью диспетчера настроек CompizConfig. Существуют также плагины для Expo и Viewport Switcher, которые, кажется, могут делать то, что я хочу, но я боюсь менять настройки без ведома.
ворачивается
Ваш вопрос немного сбивает с толку. Если вы просите сделать отображение в виде двух отдельных рабочих пространств, то ответ - нет, невозможно. Если вы запрашиваете автоматическое изменение количества рабочих пространств при подключении второго экрана, то это возможно. Пожалуйста, уточните / упростите то, что вы спрашиваете
Сергей Колодяжный
2
Я нашел вариант Compiz -> Desktop Wall -> Viewport Switching -> Multimonitor bahvior -> Switch отдельно. Но, видимо, это не работает.
ок.
@velop, можешь отредактировать эти комментарии в вопросе?
SDsolar

Ответы:

1

Такое поведение уже возможно?

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

На мой взгляд, есть три возможных решения:

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

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

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

Я бы предпочел решение с использованием 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

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

Событие

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

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

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

    -geometry 5760x2160+0+0

УКОС
источник