Provided by: libx11-protocol-other-perl_31-1_all bug

NAME

       X11::Protocol::Ext::XINERAMA - multi-monitor display information

SYNOPSIS

        use X11::Protocol;
        my $X = X11::Protocol->new;
        $X->init_extension('XINERAMA')
          or print "XINERAMA extension not available";

DESCRIPTION

       Xinerama puts together two or more physical monitors to make a single large screen.  The XINERAMA
       extension allows clients to enquire about the setup.

       The 1.0 "PanoramiX" requests take a $window parameter apparently to allow for more than one X screen made
       up of multiple physical monitors, but in practice the servers have only made one screen this way and the
       1.1 "Xinerama" requests don't have that.

       See examples/xinerama-info.pl for a sample program dumping the Xinerama state information.

REQUESTS

       The following requests are made available with an "init_extension()" per "EXTENSIONS" in X11::Protocol.

           my $bool = $X->init_extension('XINERAMA');

   Xinerama 1.0
       "($server_major, $server_minor) = $X->PanoramiXQueryVersion ($client_major, $client_minor)"
           Negotiate  a  protocol  version  with the server.  $client_major and $client_minor is what the client
           would like, the returned $server_major and $server_minor is what the server will do, which  might  be
           less than requested (but not more).

           The  current  code  in  this  module  supports  up  to  1.1.  The intention would be to automatically
           negotiate within "init_extension()" if/when necessary,

       "$flag = $X->PanoramiXGetState ($window)"
           Return non-zero if Xinerama is active on the screen of $window (an XID).

       "$count = $X->PanoramiXGetScreenCount ($window)"
           Return the number of physical monitors on the screen of $window (an XID).

       "($width, $height) = $X->PanoramiXGetScreenSize ($window, $monitor)"
           Return the size in pixels of physical monitor number $monitor (integer, 0 for the first  monitor)  on
           the screen of $window (an XID).

   Xinerama 1.1
       "$bool = $X->XineramaIsActive ()"
           Return non-zero if Xinerama is active on the $X server.

       "@rectangles = $X->XineramaQueryScreens ()"
           Return the rectangular areas made up by the physical monitors.  The return is a list of arrayrefs,

               [ $x,$y, $width,$height ]

           $x,$y is the top-left corner of the monitor in the combined screen.

BUGS

   "Xsun"
       Rumour  has  it  the  "Xsun"  server  with  Xinerama  1.0  had  a  different  request  number  4 than the
       "XineramaIsActive" of Xinerama 1.1 above.

           <http://blogs.sun.com/alanc/entry/xinerama_protocol_clashes_on_solaris>

       There's no attempt to do anything about this here, as yet.  If "PanoramiXQueryVersion()" reports 1.0 then
       you shouldn't use "XineramaIsActive()" anyway, so no clash.  If you do and it's the  "Xsun"  server  then
       expect  either  a  Length  error reply, or the server to adapt itself to the request length and behave as
       "XineramaIsActive".

   "PanoramiXGetScreenSize()" Buffer Overrun
       Early server code such as X11R6.4 might not range check the monitor number in "PanoramiXGetScreenSize()".
       Did big values read out fragments of arbitrary memory, or cause a segfault?  Don't do that.

           X.org   some   time   post   1.5.x,   "Prevent   buffer   overrun   in   ProcPanoramiXGetScreenSize",
           <http://cgit.freedesktop.org/xorg/xserver/commit/?id=2b266eda6e23d16116f8a8e258192df353970279>

OTHER NOTES

       To  simulate some Xinerama for testing the "Xdmx" server can multiplex together two or more other servers
       to present one big screen.  Those sub-servers can even be "Xnest" or "Xephyr" windows on  an  existing  X
       display.  For example running up "Xdmx" as display ":102",

           Xephyr :5 -screen 200x100 &
           Xephyr :6 -screen 190x110 &
           sleep 1
           Xdmx -display :5 -display :6 +xinerama -input :5 -input :6 :102

       "Xephyr"  implements  some extensions natively, whereas "Xnest" relies on the target server capabilities.
       Or to run up without bothering to look at anything "Xvfb" in memory or a disk file.

SEE ALSO

       X11::Protocol

       Initial technical details "http://www.kernel.org/doc/als1999/Conference/IMcCartney/xinerama.html"

HOME PAGE

       <http://user42.tuxfamily.org/x11-protocol-other/index.html>

LICENSE

       Copyright 2011, 2012, 2013, 2014, 2017 Kevin Ryde

       X11-Protocol-Other is free software; you can redistribute it and/or modify it under the terms of the  GNU
       General  Public  License  as  published  by  the  Free Software Foundation; either version 3, or (at your
       option) any later version.

       X11-Protocol-Other is distributed in the hope that it will be useful, but WITHOUT ANY  WARRANTY;  without
       even  the  implied  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
       Public License for more details.

       You should have received a copy of the GNU General Public License along with X11-Protocol-Other.  If not,
       see <http://www.gnu.org/licenses/>.

perl v5.28.1                                       2019-08-26                  X11::Protocol::Ext::XINERAMA(3pm)