1X11::Protocol::Ext::XINUEsReArMAC(o3n)tributed Perl DocuXm1e1n:t:aPtriootnocol::Ext::XINERAMA(3)
2
3
4

NAME

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

SYNOPSIS

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

DESCRIPTION

15       Xinerama puts together two or more physical monitors to make a single
16       large screen.  The XINERAMA extension allows clients to enquire about
17       the setup.
18
19       The 1.0 "PanoramiX" requests take a $window parameter apparently to
20       allow for more than one X screen made up of multiple physical monitors,
21       but in practice the servers have only made one screen this way and the
22       1.1 "Xinerama" requests don't have that.
23
24       See examples/xinerama-info.pl for a sample program dumping the Xinerama
25       state information.
26

REQUESTS

28       The following requests are made available with an init_extension() per
29       "EXTENSIONS" in X11::Protocol.
30
31           my $bool = $X->init_extension('XINERAMA');
32
33   Xinerama 1.0
34       "($server_major, $server_minor) = $X->PanoramiXQueryVersion
35       ($client_major, $client_minor)"
36           Negotiate a protocol version with the server.  $client_major and
37           $client_minor is what the client would like, the returned
38           $server_major and $server_minor is what the server will do, which
39           might be less than requested (but not more).
40
41           The current code in this module supports up to 1.1.  The intention
42           would be to automatically negotiate within init_extension() if/when
43           necessary,
44
45       "$flag = $X->PanoramiXGetState ($window)"
46           Return non-zero if Xinerama is active on the screen of $window (an
47           XID).
48
49       "$count = $X->PanoramiXGetScreenCount ($window)"
50           Return the number of physical monitors on the screen of $window (an
51           XID).
52
53       "($width, $height) = $X->PanoramiXGetScreenSize ($window, $monitor)"
54           Return the size in pixels of physical monitor number $monitor
55           (integer, 0 for the first monitor) on the screen of $window (an
56           XID).
57
58   Xinerama 1.1
59       "$bool = $X->XineramaIsActive ()"
60           Return non-zero if Xinerama is active on the $X server.
61
62       "@rectangles = $X->XineramaQueryScreens ()"
63           Return the rectangular areas made up by the physical monitors.  The
64           return is a list of arrayrefs,
65
66               [ $x,$y, $width,$height ]
67
68           $x,$y is the top-left corner of the monitor in the combined screen.
69

BUGS

71   "Xsun"
72       Rumour has it the "Xsun" server with Xinerama 1.0 had a different
73       request number 4 than the "XineramaIsActive" of Xinerama 1.1 above.
74
75           <http://blogs.sun.com/alanc/entry/xinerama_protocol_clashes_on_solaris>
76
77       There's no attempt to do anything about this here, as yet.  If
78       PanoramiXQueryVersion() reports 1.0 then you shouldn't use
79       XineramaIsActive() anyway, so no clash.  If you do and it's the "Xsun"
80       server then expect either a Length error reply, or the server to adapt
81       itself to the request length and behave as "XineramaIsActive".
82
83   PanoramiXGetScreenSize() Buffer Overrun
84       Early server code such as X11R6.4 might not range check the monitor
85       number in PanoramiXGetScreenSize().  Did big values read out fragments
86       of arbitrary memory, or cause a segfault?  Don't do that.
87
88           X.org some time post 1.5.x, "Prevent buffer overrun in
89           ProcPanoramiXGetScreenSize",
90           <http://cgit.freedesktop.org/xorg/xserver/commit/?id=2b266eda6e23d16116f8a8e258192df353970279>
91

OTHER NOTES

93       To simulate some Xinerama for testing the "Xdmx" server can multiplex
94       together two or more other servers to present one big screen.  Those
95       sub-servers can even be "Xnest" or "Xephyr" windows on an existing X
96       display.  For example running up "Xdmx" as display ":102",
97
98           Xephyr :5 -screen 200x100 &
99           Xephyr :6 -screen 190x110 &
100           sleep 1
101           Xdmx -display :5 -display :6 +xinerama -input :5 -input :6 :102
102
103       "Xephyr" implements some extensions natively, whereas "Xnest" relies on
104       the target server capabilities.  Or to run up without bothering to look
105       at anything "Xvfb" in memory or a disk file.
106

SEE ALSO

108       X11::Protocol
109
110       Initial technical details
111       "http://www.kernel.org/doc/als1999/Conference/IMcCartney/xinerama.html"
112

HOME PAGE

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

LICENSE

117       Copyright 2011, 2012, 2013, 2014, 2017 Kevin Ryde
118
119       X11-Protocol-Other is free software; you can redistribute it and/or
120       modify it under the terms of the GNU General Public License as
121       published by the Free Software Foundation; either version 3, or (at
122       your option) any later version.
123
124       X11-Protocol-Other is distributed in the hope that it will be useful,
125       but WITHOUT ANY WARRANTY; without even the implied warranty of
126       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
127       General Public License for more details.
128
129       You should have received a copy of the GNU General Public License along
130       with X11-Protocol-Other.  If not, see <http://www.gnu.org/licenses/>.
131
132
133
134perl v5.38.0                      2023-07-21   X11::Protocol::Ext::XINERAMA(3)
Impressum