= Xorg Server Setup = == Xorg == Xorg is a server for graphical user interface used in most Linux distributions. Usually, its configuration can be tough when you have more than 1 monitor. Each tile computer runs 18 monitors, so the configuration is really extreme. To configure the Xorg server, ''/etc/X11/xorg.conf'' file is used. This approach is now legacy, but is still supported and most people still use it. Configuration file for Xorg used by PSNC tile computers can be found in repo. == xorg.conf sections == ''xorg.conf'' file consist os four main section types: * ''Monitor'', * ''Device'', * ''Screen'', * ''!ServerLayout''. Let's take a look at what each section is responsible for. Tile computers run on ATI cards and some of the settings mentioned below can be platform-specific. === Monitor === This section describes single monitor connected to a computer. Most important options used in configuration on PSNC tile computers are: * DPMS false - one of two parts needed for disabling screen blanking, * !PreferredMode 1920x1200 - preferred resolution, * Position x y - x and y offset of monitor in a single ''Screen'' * Paning WxH+Xo+Yo/wxh+xo+yo - making the display on each monitor slightly larger to compensate the frames on neighbouring monitors. Therefore, a little part of the display is not visible, but straight line displayed through multiple monitors will still be straight. Parameters of panning are: * W, H - new width and height of bigger display, * Xo, Yo - x and y offset of display; needs to be the same as in ''Position'', * w,h,xo,yo - larger screen can be scrolled to show areas that are outside monitor's resolution; these parameters describe the bounding box of where mouse position is tracked to to scroll the screen, therefore, to keep the display in one position, the minimal bounding box is applied in our configuration. ''Monitor'' section describes single monitor type, not single physical monitor. As all monitors use in our wall are identical, we only need 6 ''Monitor'' section to describe monitors running same ''Screen'', connected to one ''Device'' (upper-left, lower-left, upper-middle, lower-middle, upper-right and lower-right). The only difference in these sections are ''Position'' and ''Panning'' parameters. === Device === ''Device'' section describes single GPU in a computer. Because there are multiple cards in one computer, each needs to have its own ''Device'' section. To determine which section is connected to which card, GPU's physical address is used (which can be read using ''lspci'' command - usually lower address number is connected to PCI port located higher on motherboard) as ''BusID'' parameter. Each ''device'' needs to know what monitors are connected to it and on which port. Therefore, the use of DFP-![1-6] parameters is needed. DFP-![1-6] are ports on GPU. In ATI cards they are numbered starting from the one located furthest from the mainboard. In ATI cards with mixed miniDP and DVI ports, DFP-![1-4] are miniDP and DFP-![5-6] are DVI ports, also starting from the furthest from the mainboard. When you want to display multiple ''Screen''s on a single GPU, you need to define multiple ''Device'' sections - one for each ''Screen''. Then to distinguish them, you have to use ''Screen'' parameter in ''Device'' section, having values starting from 0. The number is not connected to ''Screen'' name, it is only information that one GPU runs multiple ''Screen''s. === Screen === ''Screen'' section is responsible for displaying a single desktop picture. Its main part is ''Device'' parameter, which is the name of ''Device'' section used to display the ''Screen''. === !ServerLayout === This section is the highest level in Xorg configuration. It describes the positioning of each ''Screen'' section. One ''Screen'' needs to be anchored, usually at (0,0). Others can be placed relatively to each other using Below, Above, RightOf or LeftOf keywords. == Disabling screen blanking == To disable screen blanking, additional ''!ServerFlags'' section is used. It sets !BlankTime, !StandbyTime, !SuspendTime and !OffTime to 0 to disable them. However, when no window is displayed on any ''Screen'', it is reset and brought back to default values. This means, that something needs to be displayed at all times. Therefore, on each ''Screen'' in a corner 1 by 1 pixel ''xclock'' is displayed. To run Xorg on each tile computer with ''"xclock feature"'' it is best to use ''runxall'' script from access machine.