Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: hidden windows with dual displays



Good write up. On the XonX forums there are discussions of this issue, but this is the clearest one I've seen. FWIW, the X11 extension that informs applications what parts of the screen are usable is called Xinerama. If an X11 client is not "Xinerama aware" it will assume the whole screen is useful and commonly try to place windows at (0,0). Note that the window manager is the X client that is ultimately responsible for enforcing window placement. You don't mention your window manager, but I assume it is quartz-wm. quartz-wm is Xinerama aware IIRC and could be made to never let clients place their windows outside the useable screen area.

--Torrey

At 1:45 PM -0700 10/4/04, Young Hyun wrote:
After many hours of investigating, we've figured it out.  This should
really be added to Apple's X11 FAQ (I'll forward a note to Apple),
so that others won't have to waste so many frustrating hours.

The short answer:

  If the absolute (0, 0) coordinates of the logical screen that X uses
  internally in a dual display setup is outside the visible area of
  both displays, then application windows that open near the absolute
  (0, 0) coordinates may not show up on any display.


The long answer:

  The following diagram shows my dual display setup:

      +------------+------------------+
      |XXXXXXXXXXXX|                  |
      |XXXXXXXXXXXX|     external     |
      |XXXXXXXXXXXX|     display      |
      +------------+   (1600x1200)    |
      |   laptop   |                  |
      |   display  +------------------+
      | (1280x854) |XXXXXXXXXXXXXXXXXX|
      |            |XXXXXXXXXXXXXXXXXX|
      +------------+------------------+

  For this situation, X11.app creates a "screen" with the dimensions
  2880x1696 (2880 = 1280 + 1600; 1696 = 854 + 1200 - overlap).  You
  can see this in the output of xdpyinfo.  Because of the staggered
  arrangement of the two displays (and because the display dimensions
  differ), there are areas (indicated with X's) of this logical screen
  that don't appear on either display.  The upper-left corner of this
  logical screen, having absolute coordinates (0, 0), lies within such
  an area.  Hence, if an application opens a relatively small window near
  (0, 0), then the window may not show up on either display.  It seems
  some X applications are smart enough to open windows only in visible
  areas (e.g., xeyes and xemacs) while others are not (e.g., piano and
  xmgrace).

  The workarounds are

    (1) arrange the displays so that the area near absolute (0, 0)
        is visible, or

    (2) use the standard '-geometry' command line option to override
        the initial location of windows; for example,

          xmgrace -geometry 640x480+1280

        will ensure that the xmgrace window opens within the visible
        area of my external display.


This certainly is not a bug in X11.app, but it is an unsatisfying situation, nonetheless. X applications really need to be smart about situations like this, but expecting this from all X applications is probably asking too much, which is a shame.

 --Young


On Sun, 3 Oct 2004, Young Hyun wrote:

 I'm running X11.app v1.0 (XFree86 4.3.0) on a PowerBook G4 running 10.3.5.
 I have a dual display setup, with a Dell 2000FP set up as the primary
 display and the laptop display set as the secondary display.  (Setting the
 primary display to the laptop display doesn't fix my problem.)

 If I disconnect the Dell LCD and launch X applications, everything works
 fine.  I can see the windows of the X applications on the laptop display.
 Now, if I connect the Dell LCD and launch X applications, the windows for
 some X applications don't show up on either display.  Turning on display
 mirroring brings back those hidden windows, so clearly the X applications
 are running.  Also, all hidden windows show up in the "Window" menu of
 X11.app, and neither selecting a hidden window from that menu, nor
> selecting "Bring All to Front" unhides any window. Hidden windows don't
 show up with Expose.  (And the hidden X windows aren't simply minimized;
 they don't show up on the Dock.)

 Toggling full-screen mode in X doesn't help.  Even with full-screen mode
 turned on, if I have both displays connected, some windows don't show up
 on either display.  I've tried restarting X11.app to no avail;  nor does
 restarting the computer fix this.  It's very repeatable and extremely
 irritating.

 Note that some applications work correctly even with the dual display
 setup.  For example, xemacs (from DarwinPorts) works fine.  The standard
 xeyes and xclock work; the standard 'piano' application doesn't.  The
 xmgrace from DarwinPorts doesn't work, although the exact same build of
 the program works perfectly fine on my home desktop with the same version
 of MacOS X and X11.app.  I've uninstalled and re-installed DarwinPorts
 several times to make sure it wasn't the culprit.  Since the problem
 affects standard X applications, I'm pretty confident that the problem is
 with X11.app/X11.

 Has anyone come across this before?

--Young
_______________________________________________
Do not post admin requests to the list. They will be ignored.
X11-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/x11-users/email@hidden


This email sent to email@hidden

_______________________________________________ Do not post admin requests to the list. They will be ignored. X11-users mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/x11-users/email@hidden

This email sent to email@hidden
References: 
 >hidden windows with dual displays (From: Young Hyun <email@hidden>)
 >Re: hidden windows with dual displays (From: Young Hyun <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.