Control room situation | Virtual window manager Classroom situation

# Control room situation

Control systems like traffic control systems require very flexible configuration options and a very high availability.

## Dynamic operator desk configuration

In a 24-hour control room it may be valuable to combine two operator places for the night shift, when only half of the staff controls the system.

The configuration for the day shift for two adjacent dual-headed workstations looks like:

    options +DynamicServer
    metaScreen .0
     width (2*2*1278)
    screen localLeft display :1.0
     followPointerX 9999
     followPointerMode jump
     followPointerRestrict control
    screen localRight display :1.1
     followPointerX 9999
     followPointerMode jump
     followPointerRestrict control
    serverCommand /usr/bin/X11/X :1

This configuration lets the two screens together pan (Dynamic position of a screen) on a double width meta screen (Dimensions of a meta screen), if the operator touches the appropriate monitor border while pressing the Control key.

When changing to the night shift both screens of the workstation on the right are added to the XmetaX configuration of the left workstation:

    #!/bin/sh
    # /etc/opt/XSOXmetaX/nightShift

    usage="Usage: $0 remoteDisplayHostname"
    if [ $# != 1 ]
    then
     echo $usage 1>&2; exit 1
    fi
    /opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
     screen localLeft clipX 0
    /opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
     screen localRight offsetX 0
    /opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
     screen remoteLeft display "$1":1.0 \
    	priority 1 0 \
     screen remoteRight display "$1":1.1 \
    	priority 1 0

After shifting the local screens to the left border of the meta screen, the screens of the right workstation are added. The priority configuration statement lets the XmetaX proxy of the right workstation release both screens (Priority).

In the morning the configuration of the right workstation is reset to the normal configuration:

    #!/bin/sh
    # /etc/opt/XSOXmetaX/dayShift

    usage="Usage: $0 remoteDisplayHostname"
    if [ $# != 1 ]
    then
     echo $usage 1>&2; exit 1
    fi
    /opt/XSOXmetaX/bin/xmetaxtool -nogui -display "$1":0.0 \
     screen localLeft display "$1":1.0 \
    	followPointerX 9999 \
    	followPointerMode jump \
    	followPointerRestrict control \
    	priority 1 0 \
     screen localRight display "$1":1.1 \
    	eastOf localLeft \
    	followPointerX 9999 \
    	followPointerMode jump \
    	followPointerRestrict control \
    	priority 1 0

The XmetaX proxy of the left workstation is driven out from the screens of the right workstation.

When changing the configurations there is no need to exit the X11 sessions on the workstations. The applications are not disturbed by the changes.

## Wall display in alarm situations: simple configuration

The priority mechanism (Priority) is useful also in the following scenario: in case of an emergency each operator should be able to mirror his meta screen onto a large wall display without coordination with his colleagues.

The configuration of the single-headed workstations specifies the screen tag static (Screen tags) to avoid the execution of the XmetaX resource manager (Resource manager) in spite of the configured DynamicServer option:

    options +DynamicServer +Vario
    screen local display :1.0
     tags static
    serverCommand /usr/bin/X11/X :1

The following shell script incorporates a screen on the wall display wall:0.0 into the local XmetaX configuration, automatically zooming the screen contents (Zooming a screen), or deletes it:

    #!/bin/sh
    # /etc/opt/XSOXmetaX/wall

    usage="Usage: $0 alarmLevel"
    if [ $# != 1 ]
    then
     echo $usage 1>&2; exit 1
    fi
    case "$1"
    in 0)
     sub=delete
    ;; [0-9]*)
     sub="direction same relativeTo local
    	clipWidth 1278 clipHeight 1022
    	displayWidth 1918 displayHeight 1438
    	pointer allowEnter off
    	priority $1 `expr $1 - 1`"
    ;; *)
     echo $usage 1>&2; exit 1
    ;; esac
    /opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
     screen wall:0.0 $sub

The argument may be used to specify the severeness of the emergency situation, for instance in the configuration of hot keys:

    Meta<Key>F1 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 1&"
    Meta<Key>F2 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 2&"
    Meta<Key>F3 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 3&"
    Meta<Key>F4 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 4&"
    Meta<Key>F10 root|icon|window f.exec "/etc/opt/XSOXmetaX/wall 0&"

At any time there is only one screen on the wall display. If an other screen has to be displayed, all its resources must be transferred to the wall display. This and the potential scaling of the screen contents yield a switch-over break of several seconds, which may be not acceptable in emergency situations.

## Wall display in alarm situations: fast switch-over

Here, all resources once displayed on the wall display remain in the X Window server. This is achieved by not deleting the screens displayed on the wall display from the configurations of the workstations. To let the wall display manage multiple XmetaX screens, the InWindow option (Screen of type window) is needed:

    options +DynamicServer +Failsafe +InWindow +Vario
    screen local display :1.0
        tags static
    serverCommand /usr/bin/X11/X :1

A screen of the wall display is a window screen (Screen) and can be raised on top of the other screens using the screen tag onTop (Screen tags). Since there is no window manager on the wall display, the screen needs the screen tag notManaged (Screen tags), too. The following shell script incorporates a screen on the wall display wall:0.0 into the local XmetaX configuration or raises an already configured screen:

    #!/bin/sh
    # /etc/opt/XSOXmetaX/wall

    usage="Usage: $0"
    if [ $# != 0 ]
    then
        echo $usage 1>&2; exit 1
    fi
    /opt/XSOXmetaX/bin/xmetaxtool -nogui -display :0.0 \
        window wall:0.0 \
    	failsafeTimeout 10 \
    	sameAs local \
    	clipWidth 1278 clipHeight 1022 \
    	displayWidth 1918 displayHeight 1438 \
    	pointer allowEnter off \
    	tags notManaged onTop

This yields a switch-over break of a fraction of a second and increased resource utilization of the wall display. There is no way to define priority levels.

If the meta screens of all operators' workstations are mirrored onto the wall display, like in the configuration above, in case of a failure of the wall display all workstations will break down. This can be remedied by the Failsafe option (Failsafe operation). The configuration of a screen of the wall display specifies the failsafe timeout. If the wall display does not react to X11 requests for at least ten seconds, it is deleted from the XmetaX configuration automatically without disturbing the X Window clients.

top
Virtual window manager
Classroom situation

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