Mate/Marco is compiled without Xinerama support
Marco is currently being compiled without Xinerama support. This support is required for proper placement / maximization of windows on joined multihead displays (most multi-monitor configurations, even those using the modern XRandR protocol). Without it, windows tend to appear on-screen spanning multiple monitors, and maximize across the entire workspace (all available monitors).
Upon investigation, autoconf seems to be confused.
marco-1.18.1: prefix: /usr source code location: /usr/src/oi-userland/components/desktop/mate/marco/marco-1.18.1 compiler: /usr/gcc/6/bin/gcc XFree86 Xinerama: no Solaris Xinerama: no Startup notification: yes Compositing manager: yes Session management: yes Shape extension: yes Resize-and-rotate: yes Xsync: yes Render: yes Xcursor: yes
Manually hacking around to force the appropriate configuration variables, linker settings, etc results in a successful build. The tooling is all there, autoconf just doesn't turn it on. It's getting hung up on xinerama.h ...
configure:16246: checking for X11/extensions/xinerama.h configure:16246: /usr/gcc/6/bin/gcc -c -m64 -O3 -D__EXTENSIONS__ -std=gnu99 -Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare conftest.c >&5 In file included from conftest.c:47:0: /usr/include/X11/extensions/xinerama.h:42:47: error: unknown type name 'XineramaInfo' Bool XDgaGetXineramaInfo(Display *, int, XID, XineramaInfo *);
It's poking around in old Solaris (Xsun?) xinerama.h during the XFree86 Xinerama detection (which should use Xinerama.h). I think it might be failing to keep the two implementations straight.
Marco does seem to have code support for the old Solaris Xinerama implementation, but it doesn't seem to compile correctly. I don't see the point in putting effort into it when XFree86 Xinerama works just fine (aside from this auto-configuration problem).
Updated by Michal Nowak over 5 years ago
Thanks for the report, you seems to be right, MATE marco is missing Xinerama support. I think `configure` gets confused. Here's my take on the issue: https://github.com/OpenIndiana/oi-userland/pull/4163