Как к полноэкранному приложению через оба монитора двойного главного дисплея?

У меня есть две машины Ubuntu 10.4 (и Ubuntu продолжает скрывать все больше конфигурации xorg.conf, таким образом, что я больше не знаю, где найти его). Каждый - ноутбук, работающий двойной возглавляемый - DP1 является внутренним экраном, и VGA1 является внешним монитором; оба работают в 1600x900. Другая машина является рабочим столом, выполняющим и VGA1 и HDMI1 (который является на самом деле портом дисплея с адаптером DVI) в 1600x900. Таким образом в обоих экземплярах мой рабочий стол 3200x900. Я выполняю сервер VNC на ноутбуке и подключении к нему (через туннель SSH) от рабочего стола - когда я нажимаю полноэкранную горячую клавишу, я добираюсь 1600x900 представление удаленной машины на одном мониторе и половины моего локального рабочего стола на другом мониторе - "полный экран" только расширяется для заполнения одного локального монитора.

Обычно это точно, что Вы хотите когда Вы полный экран веб-браузер, почтовый клиент или другое приложение. Я уверен, что существует приблизительно X волшебства прояснить, что на самом деле влечет за собой полный экран, и vnc клиентское приложение просто покорно принимает то, что это сказано. В то время как я хотел бы сохранить нормальное полноэкранное поведение для регулярных применений, но когда я - VNCing другому 3200x900 машина, я действительно хотел бы, чтобы полный экран простирался через оба локальных дисплея. Изменение размеров окна, чтобы быть "близким" не довольно достаточно хорошо, так как у меня все еще есть локальные панели в верхней части и нижняя часть одного дисплея (хотя я могу установить их для автоскрытий), плюс граница окна клиентского приложения VNC (так как это, кажется, не уважает-notitle).

Там какой-либо хороший путь состоит в том, чтобы иметь X, лгут отдельному приложению о "полноэкранном" размере? Я могу заставить это лгать всем приложениям? xrandr --noprimary кажется, не имеет никакого эффекта.

2
задан 17.02.2011, 22:47

1 ответ

Я сделал некоторое рытье. Современная версия волшебства X11, я выдвинул гипотезу, является волшебством на самом деле менеджера окон, _NET_WM_STATE_FULLSCREEN. Мой клиент VNC на самом деле использует тот запрос и расширяется до единственного монитора. Кажется, что это должно сначала устанавливать _NET_WM_FULLSCREEN_MONITORS для описания, какие мониторы использовать в качестве превышать/понимать/оставлять/правых краев, но это не. Однако я вытянул источник от dpkg и закопал, чтобы изрубить его. Даже с _NET_WM_FULLSCREEN_MONITORS я не мог выявить корректное поведение. Клиент VNC действительно знает, что это хочет добраться до 3200x900, и это несколько раз пытается (30) для изменения размеров к тому (устанавливающий и основные и макс. ширины и высоты в XA_WM_NORMAL_HINTS и затем использующий XResizeWindow ()) на главном окне, но это всегда игнорируется. Возможно, compiz неправильно себя ведет?

Но у клиента VNC также есть код для контакта с X непосредственно вместо того, чтобы пройти менеджер окон. Когда я отключил код обнаружения WM, он изменяет корневое окно более непосредственно (XtNoverrideRedirect, XReparentWindow к вершине, XMapRaised, и т.д.), и это работает как очарование (как долго, поскольку я также отключаю код обнаружения в неполноэкранной функции). Это возможно работает еще лучше - alt-tab и другое окно, руководящие ключи теперь идут до удаленной машины пока я неполный экран клиентское окно VNC.

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

*: un-fullscreening правильно не перерисовывает корневое окно или другие окна, которые были покрыты. Но переключение на другую область просмотра и затем переключение назад вызывают перерисовку, которая является приемлемым обходным решением.

3
ответ дан 08.12.2019, 07:27

Теги

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