Инициировать событие изменения размера для окна X

Итак, у меня есть окно X (которое принадлежит другому процессу), и я хочу инициировать событие изменения размера для этого окна, желательно без фактического изменения его размера.

Мой первый подход заключался в том, чтобы просто изменить размер окна дважды, вернувшись к исходному размеру во второй раз, но у меня ничего не вышло. Проблема в том, что рассматриваемое окно отображается в полноэкранном режиме, и, по-видимому, вызов XResizeWindow или XMoveResizeWindow ничего не делает (что в некотором роде имеет смысл). Он отлично работает, если окно не в полноэкранном режиме.
Поскольку это было только для быстрого тестирования, я начал задаваться вопросом, можно ли подделать/внедрить событие изменения размера для этого окна на X-сервере. Для MS Windows это кажется довольно простым, нашел много примеров при поиске в Google, но для X, похоже, мне не повезло.

Предыстория (как люди, вероятно, все равно спросят ;)): я запускаю экземпляр VMware Player в полноэкранном режиме, и в некоторых случаях после загрузки гость Windows не меняет свое разрешение в зависимости от хоста (но в основном это происходит, спасибо к VMware Tools, устанавливаемым в гостевой системе). Виртуальная машина используется на нескольких машинах с подключенными экранами разного размера, поэтому я не могу предварительно настроить изображение для правильного разрешения. В настоящее время пользователям предлагается выйти и снова войти в полноэкранный режим, если разрешение неправильное, но это довольно неудобно. Итак, моя идея состояла в том, чтобы просто сказать VMplayer, что его размер только что изменился после загрузки, но, возможно, вообще есть лучший подход...


person Simon    schedule 04.07.2013    source источник
comment
Принудительно отключите полноэкранный режим окна, а затем снова включите его. Вам нужно отправить сообщение клиенту, см. пример, например. здесь.   -  person n. 1.8e9-where's-my-share m.    schedule 05.07.2013


Ответы (1)


Используйте функцию XSendEvent. Он существует именно по этой причине.

person johnfound    schedule 06.07.2013