Screen

Screens describe the available, real entities, which are associated to virtual meta screens.

The statement

screen name

declares a screen, where name is an arbitrary string.

A screen is totally controlled by the XbigX proxy as are the other screens of the X Window server. X Window clients must connect through the proxy only. Thus, the proxy takes over total control of the X Window server.

If there are no screens defined, the xbigx program tries to control the screens with the display names :1.0 and :1.1. All screens must belong to the same X Window server (the related product XmetaX removes this restriction). If one, three or more screens have to be controlled, they must be configured explicitly.

The screen statement introduces sub-statements, which specify additional parameters of the screen.

The sub-statement

    display display_name

specifies the display, on which the screen has to be displayed. The display_name is formatted as usual with X11:

[protocol/][hostname]:display_number[.screen_number]

If the protocol is not specified, the XbigX proxy chooses the fastest available transport mechanism. The default value is the name of the screen.

The sub-statement

    delete

removes a screen from a configuration.

Association between screen and meta screen

Each screen has to be associated to a meta screen (Meta screen). A screen without the statement

    ofMetaScreen name_of_a_meta_screen

belongs to the most recently defined meta screen.

Position of a screen

A screen may be arbitrarily positioned inside the display area of the associated meta screen (Dimensions of a meta screen), either relative to an other screen of the same meta screen or absolute. Furthermore, the screen may follow the motion of the pointer (Dynamic position of a screen).

The relative position is specified similar to the position of a meta screen:

    northOf|northEastOf|eastOf|sourthEastOf|southOf|southWestOf|westOf|northWestOf|sameAs
name_of_a_screen
[horizontal_offset_in_pixels vertical_offset_in_pixels]

The term sameAs means that the two referred screens are positioned at the same location of the meta screen displaying the same contents. Thus, partially or totally overlapping screens are allowed. Cyclic definitions are not allowed. The offset parameters default to the value 0. A screen without a position specification is positioned right to the preceding one, with the exception of the first one of the meta screen.

The sub-statements

    absoluteX horizontal_position_in_pixels
absoluteY vertical_position_in_pixels

specify a screen position relative to the origin, i.e. the upper left corner, of the display area of the associated meta screen. If only one parameter is defined, the other gets the value 0.

Each screen must lie totally within the display area of the associated meta screen. Therefore during initialization each screen is moved to non-negative coordinates within the corresponding meta screen and each meta screen is enlarged at the right and bottom sides to comprise all associated screens.

In most cases only partly displaying a meta screen yields no problems. However, only for total compliance with the X11 protocol, the whole display area of the meta screen should be covered by screens, and it should be visible. The mouse pointer cannot be positioned on invisible areas, except using dynamic positioning of a screen (Dynamic position of a screen). Furthermore, some X Window clients show bugs, if they should draw to invisible areas (Drawing actively) (Ignoring Expose events).

Dynamic position of a screen

A screen can be configured to follow the motion of the pointer. In this case the positioning sub-statements (Position of a screen) define the starting position of the screen.

The sub-statements

    followPointerX horizontal_step_in_pixels
followPointerY vertical_step_in_pixels

specify whether the screen should follow the pointer motion and the amount of screen movement. The default value of 0 for both parameters denotes a fixed position of the screen. If only one step value is defined, it is valid for both directions.

If the pointer reaches a screen border, the display area of the screen is shifted on the virtual area of the associated meta screen in the direction of the pointer motion, unless a fixed screen can be reached directly. If multiple screens are defined to follow the pointer, they are moved together as group without changing the relative position to each other.

The sub-statement

    followPointerMode continuous|jump

distinguishes two kinds of pointer and screen movement:

With the default value continuous the logical pointer position remains at the screen border and the screen movement is not stopped until the pointer is moved in the opposite direction.

With jump the pointer is moved back to its logical position automatically and the screen movement is stopped immediately.

The sub-statement

    followPointerRestrict {shift|lock|control
|mod1|mod2|mod3|mod4|mod5|none}...

lets the screen follow the mouse only if certain modifier keys or at least one mouse button are pressed. This helps avoiding unintentional screen movements. The restriction is switched off by default.

Dimensions of a screen

The display area of a screen may be smaller than the area of the monitor. This is useful when regularly arranging monitors with different dimensions in one meta screen. The unused areas are controlled by the X Window server, but may be displayed in black color using the borderWidth sub-statement (Border width of a screen). The position and the dimensions of the viewable display area are specified by the sub-statements

    displayX horizontal_position_in_pixels
displayY vertical_position_in_pixels
displayWidth width_in_pixels
displayHeight height_in_pixels
displayGeometry widthxheight
[+horizontal_position+vertical_position]

The default value of 0 for all scalar parameters and 0x0+0+0 for displayGeometry, respectively, mean that the screen fills the whole display area of the monitor. Since the XbigX proxy needs a border, which is at least one pixel wide, on every screen (Border width of a screen), the maximum dimensions of a screen are two pixels smaller than the real dimensions of the monitor, for instance 1278×1022 instead of 1280×1024 pixels.

If the parameters displayWidth or displayHeight are negative, the maximum values — under consideration of the displayX and displayY parameters — of width and height are reduced by their absolute values, respectively.

Border width of a screen

In the simple cases of regularily arranged screens of same dimensions (measured in pixels) the XbigX proxy does not need to control the mouse pointer and may rely on the X Window server (Screen arrangement). In all other cases each screen has a black border of at least one pixel width.

The sub-statement

    borderWidth width_in_pixels

specifies the width of the border. The default value of -1 lets the XbigX proxy decide whether the screen needs a border (of width 1) or not.

The border is drawn outside the display area defined by the parameters displayX, displayY, displayWidth, and displayHeight (Dimensions of a screen).

GLXplus

The sub-statement

    glxPlus [on|off]

enables or disables (default) the GLXplus functionality for OpenGL hardware acceleration (Option GLXplus: Tunneling OpenGL through GLX) and introduces sub-sub-statements which further configure the option.

The sub-sub-statement

        libraryPath file_name[{:file_name}...]

specifies how to find the OpenGL library to be used. A library can be specified as a fully qualified path to a file, a fully qualified path to search for a matching library, or a file to search for in the default library search path. The first valid library found will be used. The default value of GL searches in the default library search path for a library with a name containing the string GL.

X Window clients using OpenGL have to be started through the glxPlus script.

Mouse pointer

The sub-statement

    pointer

introduces sub-sub-statements, which configure the mouse pointer on the screen.

The sub-sub-statements

        wrapX on|off
wrapY on|off

determine, whether the pointer should be warped to the horizontally or vertically opposite border when touching the visible border of the respective meta screen or not (default).

The sub-sub-statement

        zoom factor

defines an integer zoom factor for all pointer images of a screen. The smoothing algorithm works best with a power of two as factor. The default value is 1. Some X Window servers clip or even distort large cursor images.

Screen tags

Screen tags can be switched on or off for each screen by configuring a list (Lists) of tags.

The xbigx program sends most X11 request to multiple screens of a meta screen. Nevertheless, using the first set of tags

    tags {[+|-]color|[+|-]glx|none}...

individual screens can be tagged and distinguished:

The color screen (color) is used for lookup of color names. Each meta screen has its own color screen.

Certain GLX protocol extension inquiries are sent to the GLX screen (glx).

The screen with the worst color resolution (significant bits in color specification) must be the color screen. If only one of the screens has only static visuals (StaticGray, StaticColor, DirectColor), this screen should be specified as color screen.

The sub-statement

    tags {[+|-]optimizedDraw|none}

denotes that certain optimizations during drawing requests should be carried out in any case. Otherwise, by default, the XbigX proxy automatically determines if these optimizations would break the X11 protocol.

Emulation of visuals

The option VisEmu (Options) emulates PseudoColor visuals of depths 4 and 8 on a 24 bits deep TrueColor visual. Thus it is possible to display X Window clients designed for older graphics systems of lower depths on modern hardware often supporting 24 bits depth only.

The sub-statement

  emulateVisual {PseudoColor4|PseudoColor8|none}...

enables a specific emulation or totally disables the emulation (default).

Copyright © 2018 X-Software GmbH
info@x-software.com