Linux заставить приложение на весь экран на конкретном дисплее

Для работы я разрабатываю очень специализированное программное обеспечение, которое должно запускать два полноэкранных приложения, по одному на каждом мониторе. Для простоты в настоящее время я использую 64-битную версию LUbuntu с видеокартой AMD Radeon HD (точную версию пока не могу вспомнить, но она довольно новая).

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

Итак, мой вопрос: возможно ли иметь два полноэкранных приложения, работающих на разных мониторах в Linux (и если да, то какие шаги по установке мне нужно предпринять)? Какой будет мой лучший выбор для перечисления дисплеев, чтобы получить их верхнее левое положение x / y, чтобы я мог сказать SDL, чтобы переместить мое окно на этот монитор для его полноэкранного просмотра?

Замечания: Я не публиковал это в askubuntu, потому что не уверен, что этот вопрос строго вращается вокруг платформы Ubuntu.

Обновить:

Вот вывод из xrandr -q:

Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 3200 x 3200
DFP1 disconnected (normal left inverted right x axis y axis)
DFP2 disconnected (normal left inverted right x axis y axis)
DFP3 disconnected (normal left inverted right x axis y axis)
DFP4 disconnected (normal left inverted right x axis y axis)
DFP5 disconnected (normal left inverted right x axis y axis)
DFP6 disconnected (normal left inverted right x axis y axis)
DFP7 disconnected (normal left inverted right x axis y axis)
DFP8 disconnected (normal left inverted right x axis y axis)
DFP9 connected 1920x1080+1280+0 (normal left inverted right x axis y axis) 533mm x 312mm
1280x1024      50.0 +   75.0     60.0     30.0     24.0
1920x1080      60.0 +   50.0*    59.9     30.0     25.0     30.0     24.0     30.0     30.0     24.0
1776x1000      50.0     59.9     25.0     24.0     30.0     30.0
1680x1050      50.0     60.0     30.0     24.0
1400x1050      50.0     60.0     30.0     24.0
1600x900       50.0     60.0     30.0     24.0
1440x900       50.0     59.9     30.0     24.0
1280x960       50.0     60.0     30.0     24.0
1280x800       50.0     59.8     30.0     24.0
1152x864       50.0     59.9     75.0     30.0     24.0
1280x768       50.0     59.8     30.0     24.0
1280x720       60.0     50.0     59.9     30.0     24.0
1024x768       50.0     75.0     70.1     30.0     24.0     60.0
1152x648       50.0     59.9
800x600        50.0     30.0     24.0     72.2     75.0     60.3     56.2
720x576        59.9     30.0     24.0     50.0
720x480        50.0     30.0     24.0     60.0     59.9
640x480        50.0     30.0     24.0     75.0     72.8     67.0     60.0     59.9
DFP10 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
1280x1024      60.0*+   76.0     75.0     72.0
1280x960       76.0     75.0     72.0     60.0
1152x864       75.0     60.0
1280x768       76.0     75.0     72.0     60.0
1280x720       76.0     75.0     72.0     60.0
1024x768       75.0     70.1     60.0
800x600        72.2     75.0     60.3
640x480        75.0     72.8     67.0     59.9
640x350        60.0     70.1
CRT1 disconnected (normal left inverted right x axis y axis)

Я попытался поискать на некоторых форумах для лучшего объяснения того, что делать с этой информацией, кажется, я должен сделать что-то вроде:

xrandr --output DFP9 --auto --output DFP10 --auto

Когда я это делаю, у меня остается только один дисплей («: 0»).

0

Решение

Каковы ваши настройки? У вас на самом деле есть два отдельных дисплея X, или вы используете Xinerama для их объединения?

Если вы используете 2 дисплея, они должны иметь собственную переменную -display или DISPLAY env. Вы можете использовать это для запуска нового приложения.

$ echo $DISPLAY
:0.0
$ xterm -display :0.0

Откройте оболочку на другом дисплее, чтобы получить другую переменную отображения env.

Также есть -геометрия в формате [Wth, Ht + X + Y]

$ xterm -geometry 132x80+500+0

Когда Xinerama включена, ваш другой дисплей обычно имеет смещение + X + Y.

Конечно, это требует, чтобы приложение обрабатывало аргументы командной строки. Затем он передает их в X при инициализации окна. Для xterm ширина и высота — это единицы текстовых символов, где X / Y — пиксели экрана.

1

Другие решения

Если у вас есть контроль над конфигурацией X, и если другие приложения не будут отображаться на рабочих станциях, вы можете отключить функцию «Xinerama» и настроить два экрана. Тогда вы можете просто подключить свои приложения к :0.0 а также :0.1 и получить размер экрана от каждого.

0

По вопросам рекламы [email protected]