С несколькими мониторами я до сих пор перетаскивал окна вручную. Есть ли способ сделать окно открытым на определенном экране в установке с двумя головками? (Не путать с несколькими дисплеями X-сервера.)
Что-то вроде: SCREEN=2 firefox
или open-in-screen 2 firefox
.
Если это имеет значение, моя среда - KDE, использующая оконный менеджер KWin. Правила окна KWin могут соответствовать только некоторым свойствам, таким как title, но я не смог найти переменную окружения в качестве фильтра.
Дополнительный дисплей расширяет основной экран:
$ xrandr -q
Screen 0: minimum 320 x 200, current 3520 x 1080, maximum 32767 x 32767
LVDS1 connected 1600x900+0+0 (normal left inverted right x axis y axis) 382mm x 214mm
1600x900 60.1*+
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+1600+0 (normal left inverted right x axis y axis) 477mm x 268mm
1920x1080 60.0* 50.0 59.9
1920x1080i 60.1 50.0 60.0
1680x1050 59.9
1280x1024 75.0 60.0
1440x900 59.9
1280x960 60.0
1280x720 60.0 50.0 59.9
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
720x576 50.0
720x480 60.0 59.9
640x480 75.0 72.8 66.7 60.0 59.9
720x400 70.1
DP1 disconnected (normal left inverted right x axis y axis)
kde
desktop
multi-monitor
kwin
virtual-desktop
Lekensteyn
источник
источник
kstart
для этого, но, кажется,kstart
поддерживает только определение определенного рабочего стола, но не экран, на котором должно быть запущено приложение. Вероятно, стоит сообщить об ошибке WISHLIST на bugs.kde.org .kstart
, я тоже хотел это знать. Команда:kstart --desktop $N firefox
где$N
число от 1 до общего количества виртуальных рабочих столов.Ответы:
Нет, ты не можешь сделать это напрямую. В архитектуре X два физических монитора, которые вы видите, не различимы приложениями. Вы можете только обойти эту абстракцию, определив, какие области видимого рабочего пространства соответствуют какому монитору, а затем расположить окна с правильным смещением.
Разумные наборы инструментов поддерживают
-geometry
опцию, которая позволяет вашему приложению запрашивать размещение в определенной позиции. Если у вас нет этой опции, вы можете использовать ее,wmctrl
если у вас есть XW Manager, совместимый с EWMH / NetWM, для перемещения и изменения размера уже существующих окон (см. Wmctrl (1), вам нужны опции-r
и-e
). Я используюdevilspie
для принудительного размещения некоторых окон, и, конечно, у вашего оконного менеджера может быть свое собственное средство для принудительного размещения окон.devilspie
позволяет применять определенные действия к окнам X и может использовать свойства окна X, чтобы различать разные окна и приложения. Ключевое правило для вас будетgeometry "<width>x<height>+<xoffset>+<yoffset>"
.Тем не менее, вы всегда должны делать расчеты, когда и где другой физический монитор начинается самостоятельно. Но это не так уж сложно и
xrandr
говорит вам, как и где он использует мониторы в виде"<width>x<height>+<xoffset>+<yoffset>
каждой строки, начиная с имени выхода.Не существует надежного способа «просто будет работать», потому что реализации могут (и делают!) Различаться.
wmctrl
обычно работает над заголовком окна для определения цели.devilspie
также может ссылаться на его класс, но я не знаю ни одного инструментария, который позволял бы вам указывать класс X windows, но не его геометрию.Конечно, вы всегда можете запустить два
xephyr
экземпляра и заставить один заполнить левый экран, а другой - правый, а затем обратиться к экранам черезDISPLAY
переменную среды, но у этого решения есть и другие недостатки.Теоретически, полномочиями по управлению размещением окон является менеджер окон. Следовательно, если вы хотите что-то, чего не может сделать ваш оконный менеджер, это будет хакерским, и это также причина, почему нет общего способа сделать это.
Тем не менее, если ваш конкретный вариант использования - это ваш эмулятор Android ... который сильно отличается от запроса опции для указания
SCREEN=n fooapp
на оболочке, то этоdevilspie
может быть то, что вы ищете. Подсказка: я обнаружил, что лучше всего идентифицировать приложения по их классу окна.источник
SCREEN=x app
, возможно ли добавить свойство окна таким образом, чтобы оно могло быть отфильтровано KWin?Это конкретное решение для оконного менеджера. Вот как это сделать с помощью kwin, который является оконным менеджером KDE по умолчанию.
Если вы щелкните правой кнопкой мыши на строке заголовка приложения и выберите дополнительные настройки -> специальные настройки приложения.
Перейдите на вкладку «Соответствие окна». Нажмите кнопку «Определить свойства окна». Затем с помощью курсора мыши нажмите на главное окно приложения. Он выберет класс окна и т. Д., А также получит информацию о расположении окна и т. Д.
Затем нажмите на вкладку «Размер и положение». Щелкните Положение ящика и Размер ящика и раскрывающийся список справа от обоих и установите для запоминания.
Затем нажмите ОК.
При следующем запуске приложения оно должно быть того же размера и на том же мониторе.
Я использую это в KDE, чтобы открыть терминал uRxvt на моем левом мониторе в настройке с 3 мониторами, и это работает каждый раз.
Удачи.
источник
Это зависит от того, как настроены ваши два монитора.
Если вы используете XINERAMA для того, чтобы оба дисплея выглядели как один для X, вы можете использовать
-geometry
опцию, чтобы запросить приложения для отображения в определенном месте. Если вы настроили дисплеи как разные экраны, то вы будете использоватьDISPLAY
для этого.Дайте этим попробовать:
Если ваши мониторы имеют экран 0 и 1, это должно вызвать xterm на каждом мониторе.
источник
-geometry
не всегда работает должным образом.emulator
, на основе QEMU). Программа открывается там, где находится мой курсор мыши.Я сталкивалась с этим способом , который делает использование
xdotool
,xprop
, иwmctrl
.Вот что будет делать следующий скрипт:
скрипт
Это переместит активное окно на другой монитор. Он может справиться только бок о бок, иначе. горизонтальный, конфигурация мониторов.
Источник: Xubuntu - перемещение окон между мониторами
источник
SCREEN=2 appX
концепции, кроме какappX; sleep 1; moveWindow.sh
.app & sleep 1; moveWindow.sh
как программы не отсоединяются. Я не считаю это улучшением по сравнению с использованием оконных правил KWin. +1 за ваши усилия.Была похожая проблема. Нашел следующее:
Если другие значения по умолчанию не указаны, окна отображаются на текущем активном экране. С помощью процедуры, описанной выше, положение мыши определяет этот активный экран.
источник