سؤال

So I have an X window (that belongs to another process), and I want to trigger a resize event for that window, preferably without actually resizing it.

My first approach was to just resize the window twice, going back to the original size the second time, but I failed. The problem is that the window in question is displayed fullscreen, and apparently calling XResizeWindow or XMoveResizeWindow on these does nothing (which makes sense in some way). It works fine if the window is not in fullscreen mode.
As this was only for quick testing anyways I started wondering if it is possible to fake/inject a resize event for that window in the X server. For MS Windows that seems quite easy, found a lot of examples while googling, but for X it seems I'm out of luck.

Background (as people will probably ask anyways ;)): I'm launching a VMware Player instance in fullscreen, and in some cases after bootup, the Windows guest doesn't change it's resolution according to the host (but it mostly does, thanks to the VMware Tools being installed on the guest). The VM is used on several machines having differently sized screens connected, so I can't preconfigure the image to have the correct resolution. Currently the users are told to exit and re-enter fullscreen if the resolution is wrong, but that is pretty inconvenient. So my idea was to simply tell the VMplayer that it just got resized after bootup, but maybe there is a better approach at all...

هل كانت مفيدة؟

المحلول

Use XSendEvent function. It exists exactly for this reason.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top