- Kontrollraum-Situation

Virtueller Windowmanager
Lehrer-Schüler-Situation

Versionsänderungen anzeigen

# Kontrollraum-Situation

Kontrollsysteme etwa zur Verkehrssteuerung erfordern besonders flexible Konfigurationsmöglichkeiten bis hin zur Ausfallsicherheit.

## Flexible Arbeitsplatzkonfiguration

Wird ein Kontrollraum im Schichtbetrieb gefahren, ist es wünschenswert, in der Nachtschicht mit halber Besetzung zwei Arbeitsplätze zusammenzufassen.

Am Tage gilt für zwei nebeneinander stehende, dual-headed Workstations etwa die folgende Konfiguration:

    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

Damit bewegen sich die beiden Screens gemeinsam (Variable Position eines Screens) auf einem doppelt breiten Meta-Screen (Größe eines Meta-Screens), wenn der Bediener mit dem Mauszeiger am entsprechenden Bildschirmrand anstößt und die Control-Taste gedrückt hält.

Beim Schichtwechsel am Abend werden der XmetaX-Konfiguration auf der linken Workstation die beiden Bildschirme der rechten Workstation hinzugefügt:

    #!/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

Hier werden zuerst die lokalen Screens an den linken Rand des Meta-Screens bewegt und dann die Screens der rechten Workstation hinzugefügt. Die priority-Konfigurationsanweisung sorgt dafür, daß der XmetaX-Proxy der rechten Workstation die beiden Screens freigibt (Priorität).

Am Morgen wird die XmetaX-Konfiguration der rechten Workstation wieder in den normalen Zustand versetzt:

    #!/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

Hier wird der XmetaX-Proxy der linken Workstation von den Screens der rechten Workstation verdrängt.

Bei den Schichtwechseln müssen die X11-Sitzungen auf beiden Workstations nicht verlassen werden, die Applikationen bemerken die Konfigurationsänderungen nicht.

## Wand-Display in Alarm-Situationen: einfache Konfiguration

Der Prioritätsmechanismus (Priorität) läßt sich auch im folgenden Szenario nutzen: In einer Gefahrensituation soll jeder der Bediener einen Meta-Screen zusätzlich auf einem großen Wand-Display anzeigen können ohne sich mit seinen Mitarbeitern koordinieren zu müssen.

Die Konfiguration für die single-headed Arbeitsplätze definiert das Screen-Merkmal static (Screen-Merkmale), damit trotz der DynamicServer-Option (Dynamische Konfiguration) der XmetaX Ressourcemanager nicht gestartet wird:

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

Das folgende Shell-Skript nimmt in die lokale XmetaX-Konfiguration einen Screen auf dem Wand-Display wall:0.0 auf — dabei wird der Screen-Inhalt vergrößert (Vergrößerung oder Verkleinerung eines Screens) — oder entfernt ihn:

    #!/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

Über das Argument des Shell-Skripts kann der Grad des Alarms übergeben werden, also etwa bei der Konfiguration von Hotkeys:

    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&"

Auf dem Wand-Display befindet sich zu jedem Zeitpunkt nur ein Screen. Wenn ein anderer Screen dargestellt werden soll, müssen alle seine X11-Ressourcen zum Wand-Display übertragen werden. Dies sowie eine eventuelle Vergrößerung oder Verkleinerung des Screens ergibt Umschaltzeiten im Bereich von mehreren Sekunden, die in Alarm-Situationen meist nicht akzeptabel sind.

## Wand-Display in Alarm-Situationen: schnelle Umschaltung

Bei der hier vorgestellten Lösung verbleiben alle einmal auf dem Wand-Display dargestellten X11-Ressourcen im X Window Server. Dies wird dadurch erreicht, daß die auf dem Wand-Display dargestellten Screens nicht aus den Konfigurationen der einzelnen Arbeitsplätze entfernt werden. Damit auf dem Wand-Display mehrere Screens gleichzeitig verwaltet werden können, wird die Option InWindow (Screen vom Typ window) benötigt:

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

Ein Screen auf dem Wand-Display ist vom window-Typ (Screen) und kann über das Screen-Merkmal onTop (Screen-Merkmale) zu oberst — über den den anderen Arbeitsplätzen zugeordneten Screens — dargestellt werden. Da auf dem Wand-Display kein Windowmanager läuft, ist auch das Screen-Merkmal notManaged (Screen-Merkmale) zu konfigurieren. Das folgende Shell-Skript nimmt in die lokale XmetaX-Konfiguration einen Screen auf dem Wand-Display wall:0.0 auf oder bringt den bereits konfigurierten Screen nach oben:

    #!/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

Dies ergibt Umschaltzeiten von unter einer Sekunde bei erhöhtem Ressourcen-Verbrauch des Wand-Displays. Die Vergabe von Prioritätswerten ist nicht möglich.

Wenn, wie in der oben vorgestellten Konfiguration, die Meta-Screens aller Arbeitsplätze auf dem Wand-Display gespiegelt sind, fallen alle Arbeitsplätze aus, wenn das Wand-Display ausfällt. Dieser Mißstand läßt sich mit der Option Failsafe (Ausfallsicherheit) beheben. Dazu wird in der Konfiguration der Screens, die auf dem Wand-Display dargestellt werden sollen, die Ausfall-Zeitspanne angegeben. Wenn das Wand-Display zehn Sekunden lang nicht auf X11-Anweisungen reagiert, wird es automatisch aus der XmetaX-Konfiguration entfernt ohne die X Window Clients zu stören.

Nach oben
Virtueller Windowmanager
Lehrer-Schüler-Situation

Copyright © 2016 X-Software GmbH
info@x-software.com
2016-01-15 12:31:12 +0100