[Pkg-xfce-devel] Bug#861584: xfwm4: xfmw4 dual-monitor (landscape+portrait) new xterm on "other" monitor incorrectly resized

Zenaan Harkness zen at freedbms.net
Mon May 1 03:49:59 UTC 2017


Package: xfwm4
Version: 4.10.1-3
Severity: normal
Tags: upstream

Dear Maintainer,

See original email here:
https://mail.xfce.org/pipermail/xfce/2017-April/035547.html

Two monitors, each 1920x1200 resolution, LHS monitor in landscape
RHS in portrait.

So the total "X desktop" space (e.g. on xrandr) is
actually:
(1920+1200) by 1920 :== 3120 x 1920
but of course some of the "X desktop" area on the left is not usable.

xfwm4 is reasonably capable in its awareness of this situation, but
insufficient.

xfwm4 naturally has a built in compensation for this "unavailable area",
both resizing, maximising and moving, new windows which are created with
parameters "out of limits".

Unfortunately its algorithm for "fixing up the location and size of
'badly' located and sized new X windows" is not correct in the config
above, as follows:

When the mouse pointer is on the LHS (e.g. over an xterm from which we
launch a new xterm), and a new xterm is launched with geometry
targetting the RHS, this works for new xterms which have size which is
within the "visible size" of the LHS monitor.

But if the newly created xterm, targetting the RHS monitor, is e.g.
taller than the actual physical height of the LHS monitor (and the mouse
cursor is within the LHS monitor), then xfwm INCORRECTLY resizes the
newly created xterm before displaying it.

Example:
 - have two monitors, LHS in landscape, RHS in portrait

 - make sure mouse cursor is within the bounds of LHS monitor

 - launch from LHS monitor a new xterm, with geometry:
    - height "too large" for LHS monitor, but within RHS monitor
      "height"
    - width within width of RHS monitor
    - e.g. if using a 6x10 font, and 1920x1200 monitors as above, then:

      xterm -geometry 128x150+1920+0

 - xfwm incorrectly assesses the new window as "too tall for the current
   monitor" (rather than "actually, the new window is to be displayed on
   that second RHS monitor, and it's not too tall for that montor")

 - next, xfwm "reduces" the height of the new window to the maximum for
   "the on which it is to be displayed", in this case the RHS monitor,
   which effectively INCREASES the height of the newly created xterm!

 - finally, the new window is displayed (on the 2nd/RHS monitor)

Now, to check what SHOULD happen:
 - same as above, but move the mouse cursor to the RHS monitor, before
   launching the new xterm

 - xfwm displays and sizes it correctly

The inverse/vice-versa problem also happens (e.g. with mouse cursor on
RHS monitor, try to create new xterm "too wide for RHS monitor" but not
too wide for LHS monitor, and to be displayed on LHS monitor).


When (again, in above lanscape+portrait monitor config):
 - starting xterms from a shell script,
 - for both LHS and RHS monitors,
 - and at least one RHS term is too tall if it were placed on LHS
 - and at least one LHS term is too wide if it were placed on RHS

then there is no way to run this shell script and get the desired xterms
layout, which is most definitely a bug.


Finally I note that the wmctrl program could possibly be figured out and
used to come in and mop up after xfwm fails to properly lay out the new
xterm(s), but that looks quite complicated to me (hey, I haven't used it
before :) and certainly this should be unnecessary to do, since I know
the exact geometry I want, and I specify the exact, CORRECT geometry
when starting my xterms from my script!

One shouldn't have to apply the desired geometry twice, once after the
window is created, just to mop up (even if this can be done).

Regards,
Zenaan



-- System Information:
Debian Release: 8.7
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.9.0-0.bpo.2-amd64 (SMP w/4 CPU cores)
Locale: LANG=zen.UTF-8, LC_CTYPE=zen.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to zen.UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages xfwm4 depends on:
ii  libc6                     2.19-18+deb8u7
ii  libdbus-glib-1-2          0.102-1
ii  libgdk-pixbuf2.0-0        2.31.1-2+deb8u5
ii  libglib2.0-0              2.42.1-1+b1
ii  libgtk2.0-0               2.24.25-3+deb8u1
ii  libpango-1.0-0            1.36.8-3
ii  libstartup-notification0  0.12-4
ii  libwnck22                 2.30.7-2
ii  libx11-6                  2:1.6.2-3
ii  libxcomposite1            1:0.4.4-1
ii  libxdamage1               1:1.1.4-2+b1
ii  libxext6                  2:1.3.3-1
ii  libxfce4ui-1-0            4.10.0-6
ii  libxfce4util6             4.10.1-2
ii  libxfconf-0-2             4.10.0-3
ii  libxfixes3                1:5.0.1-2+b2
ii  libxrandr2                2:1.4.2-1+b1
ii  libxrender1               1:0.9.8-1+b1

Versions of packages xfwm4 recommends:
ii  librsvg2-common  2.40.5-1+deb8u2

Versions of packages xfwm4 suggests:
ii  xfce4         4.10.1
ii  xfwm4-themes  4.10.0-2

-- no debconf information



More information about the Pkg-xfce-devel mailing list