Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
X11::Protocol::Ext::XIUserMContributed Perl DocX11::Protocol::Ext::XINERAMA(3)

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.32.0			  2017-04-07   X11::Protocol::Ext::XINERAMA(3)

NAME | SYNOPSIS | DESCRIPTION | REQUESTS | BUGS | OTHER NOTES | SEE ALSO | HOME PAGE | LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=X11::Protocol::Ext::XINERAMA&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help