NVIDIA LINUX TWINVIEW DOCUMENTATION Last modified: March 12, 2001 ----- [..] To enable TwinView, you must specify the following options in the Screen section of your XF86Config(*) file: Option "TwinView" Option "SecondMonitorHorizSync" "" Option "SecondMonitorVertRefresh" "" Option "MetaModes" "" You may also use any of the following options, though they are not required: Option "TwinViewOrientation" "" Option "ConnectedMonitor" "" Please see the detailed descriptions of each option below: TwinView - This option is required to enable TwinView; without it, all other TwinView related options are ignored. SecondMonitorHorizSync, SecondMonitorVertRefresh - You specify the constraints of the second monitor through these options. The values given should follow the same convention as the "HorizSync" and "VertRefresh" entries in the Monitor section. As the XF86Config man page explains it: the ranges may be a comma separated list of distinct values and/or ranges of values, where a range is given by two distinct values separated by a dash. The HorizSync is given in kHz, and the VertRefresh is given in Hz. MetaModes - This option is used to describe what mode(s) should be used on each display device. When the NVIDIA driver tells X what modes are available, it is really the minimal bounding box of the MetaMode that is communicated to X, while the "per display device" mode is kept internal to the NVIDIA driver. The syntax of a MetaMode is: ", ; , ; ..." Where is the name of the mode to be used on display device 0 concurrently with used on display device 1. A mode switch will then cause to be used on display device 0 and to be used on display device 1. Here is a real MetaMode entry from the XF86Config TwinView sample config file: Option "MetaModes" "1280x1024,1280x1024; 1024x768,1024x768" If you want a display device to not be active for a certain MetaMode, you can use the mode name "NULL", or simply omit the mode name entirely: "1600x1200, NULL; NULL, 1024x768" or "1600x1200; , 1024x768" Optionally, mode names can be followed by offset information to control the positioning of the display devices within the virtual screen space; e.g.: "1600x1200 +0+0, 1024x768 +1600+0; ..." Offset descriptions follow the conventions used in the X "-geometry" commandline option; i.e. both positive and negative offsets are valid, though negative offsets are only allowed when a virtual screen size is explicitly given in the XF86Config file. When no offsets are given for a MetaMode, the offsets will be computed following the value of the TwinViewOrientation option (see below). Note that if offsets are given for any one of the modes in a MetaMode, then offsets will be expected for all modes within that MetaMode; in such a case offsets will be assumed to be +0+0 when not given. When not explicitly given, the virtual screen size will be computed as the the bounding box of all MetaMode bounding boxes. MetaModes with a bounding box larger than an explicitly given virtual screen size will be discarded. A MetaMode string can be furthed modified with a "Panning Domain" specification; eg: "1024x768 @1600x1200, 800x600 @1600x1200" A panning domain is the area in which a display device's viewport will be panned to follow the mouse. Panning actually happens on two levels with TwinView: first, an individual display device's viewport will be panned within its panning domain, as long as the viewport is contained by the bounding box of the MetaMode. Once the mouse leaves the bounding box of the MetaMode, the entire MetaMode (ie all display devices) will be panned to follow the mouse within the virtual screen. Note that individual display devices' panning domains default to being clamped to the position of the display devices' viewports, thus the default behavior is just that viewports remain "locked" together and only perform the second type of panning. The most beneficial use of panning domains will probably be to eliminate dead areas -- regions of the virtual screen that are inaccessible due to display devices with different resolutions. For example: "1600x1200, 1024x768" produces an inaccessible region below the 1024x768 display. Specifying a panning domain for the second display device: "1600x1200, 1024x768 @1024x1200" provides access to that dead area by allowing you to pan the 1024x768 viewport up and down in the 1024x1200 panning domain. Offsets can be used in conjunction with panning domains to position the panning domains in the virtual screen space (note that the offset describes the panning domain, and only affects the viewport in that the viewport must be contained within the panning domain). For example, the following describes two modes, each with a panning domain width of 1900 pixels, and the second display is positioned below the first: "1600x1200 @1900x1200 +0+0, 1024x768 @1900x768 +0+1200" TwinViewOrientation - This option controls the positioning of the second display device relative to the first within the virtual X screen, when offsets are not explicitly given in the MetaModes. The possible values are: "RightOf" (the default) "LeftOf" "Above" "Below" "Clone" When "Clone" is specified, both display devices will be assigned an offset of 0,0. ConnectedMonitor - This option allows you to override what the NVIDIA kernel module detects is connected to your video card. This may be useful, for example, if any of your display devices do not support detection using Display Data Channel (DDC) protocols. Valid values for this option are "CRT" (cathode ray tube) or "DFP" (digital flatpanel); when using TwinView, this option may be a comma-separated list of display devices; e.g.: "CRT, CRT" or "CRT, DFP". Just as in all XF86Config entries, spaces are ignored and all entries are case insensitive.