ctys-configuration-Gnome

Configuration of Personal CloudComputing-Workspaces
August, 2010



.

Abstract

The UnifiedSessionsManager is currently first of all a command line application, but designed for the application of complex multi-vendor and multi-screen environments of physical and virtual facilities. Thus it is a sessions management utility of modern workspaces, thus basically a graphics-control application.

The lifecycle of the UnifiedSessionsManager is going to evolve to the migration towards the extension for a graphical user interface in current versions. The first step for providing an additional graphical interface is the integration of the generated cache database into the Gnome based starter application. The first application here is a simple list based starter application for intermixed hypervisors, physical machines, and additionally the combination with the functionality for native logins into OSs by provided HOSTs plugins.

Initially two basic interfaces are provided from now own. The CREATE list element for the start of virtual machines, and physical machines either by Wake-On-LAN or (next) by IPMI. Second the LOGIN list element for native logins - either into Host-OSs running on the physical machines, or GuestOSs running within virtual machines.

Both applications are implemented quite simple in order to demostrate

The following steps show the blueprint for the realworld application - these are actually almost the complete resulting application steps. These are described within the following chapters with additional application examples.

The following menu is provided as a basic menu and starting point as customisation pattern for automated installation by a script.


Gnome menu template


The next figure depicts the display of the database entries by the list 'ctys-CREATE-ALL', which contains all the complete unfiltered set of database record. The entry number '477' is selected for start, the resulting execution call is offered by the dialog box 'ctys-Selection' either for modification, or for execution by confirmation.


Gnome starter - CREATE


The internal data of the operational data storage, is integrated here by just a few lines of scripting with zenity into the Gnome based desktop, providing a graphical starter application. The scope of managed entities within the displayed list comprises here all supported VMs and PMs, including native logins by CLI, X11-Terminals, VNC, and RDP. Due to stored defaults, in addition to hypervisor consoles also the preconfigured native login applications could be started automatically.

This demonstrates the combination and setup of ctys-vdbgen(1) for automatic creation of the cacheDB and the gnome-starter(1) application for graphical presentation of the data within some minutes. The presented test environment on a medium-range machine for example contains about 350VMs used by NFS on several machines resulting in about 1400entries for VMs and PMs by multipath-access. The whole automated initial creation of the cacheDB takes some Minutes for scanning filesystems and presents than the shown graphical interface with a startup in the range of seconds for each selected VM.


Database creation and application



The database contains the hypervisors KVM, QEMU, VBOX, VMW, and XEN, additionally PMs. For each entry also default login desktops or commandline applications are stored for automation of console interconnection as well as native logins - based on CLI, X11, VNC, and RDP. Additionally a first minor version of customisable menus for Gnome based desktops is integrated. These offer either for private menus, or shared common menus with a pattern for simple customisation.

The next important aspect when working with huge amounts of machines and consoles - either physical, or virtual, or just ordinary remote desktops - is the usability of the workspace on the desktop. This frequently requires the application of multiple displays.


Gnome Xinerama




The Xinerama mode is provided by a specific extension for logical addressing of the standard X11 functionality.


The previous examples are just performed by a mouse-click - within seconds - no longer by painful manual execution or enduring custom-scripts development.

Overview


REMARK:
This part and related specific utilities are temporary pre-releases for demonstration of first draft graphical integration due to requests. Thus these are in alpha-state, and are planned to be replaced by a graphical application in future versions.

The current version supports the manual integration of ctys into menu entries of any X11 based desktop. This document describes the manual setup of ctys based menu entries for Gnome desktops.

The additional standard Gnome utility required for GUI based start of VMs is zenity, which offers an easy-to-use minimalistic graphical interface particularly for list-elements. This simply could be called from a shell script and returns the selected data. Another zenity widget e.g. provides a text-box for modification and confirmation of the current call.

Gnome - Automated menu Creation with Templates

The following menu is provided as a pattern to be installed either as a private, or as a shared menu. The configuration files and install scripts are installed within the directory $HOME/.ctys/xdg.d.


Gnome menu template


The private installation is performed by ctys-xdg --menu-create , whereas the shared installation is performed by the script ctys-xdg --menu-create --menu-shared The shared installation is stored within the common system directories and therefore requires root permissions. For the private installation the user permissions are sufficient.

The private base directories used are the standard directories as defined by the Desktop Menu Specification-1.0 from freedesktop.org. These are $HOME/.config, $HOME/.icons, $HOME/.local/share/applications, and $HOME/.local/share/desktop-directories.

The following description offers a simple and fast setup of the predefined menus by just one script-call. But the whole process could be performed manually by the property menus too as described within the specific chapters.

Gnome - Private and Shared menus

Gnome offers facilities for the creation of custom menus, which could be either setup individually within a private environment, or as a shared menus for all users on a specific machine. The resulting functional possibilities are basically similiar, thus the intention of usage and flexibility is the major aspect for the design choice.

Whereas the resulting functionality is quite similiar, the physical storage of the configuration infomation is obviously different. The common shared menu entries for the machine are stored within the system directories, with write operations requiering root permissions. The private environments are stored commonly within individual subdirectories of the specific user, thus frequently are visible just for the owner.

The configuration decision here is to use the custom files for static setups as defined by Gnome, even though some configuration with toolsets for runtime dynamic configuration might be applicable. Nevertheless, due to the contibous automatic synchronisation of the Gnome desktop with it's configuration files, some - almost unlimited - runtime dynamic is available inherently by default.

The applied directory structures are designed and named in order to minimize the deviation between the shared and private variant.

Private menus

Customization-Hook - gnome-applications.menu

The menu structure of Gnome is defined by a basically tree based data structure, which is defined by XML syntax within a nested file structure. The configuration syntax is a powerful set of language elements particularly offering for file and directory based inclusion configuration data extension. This is extended by means of decisive syntax elements for suppression, additional, exclusive, and non-exclusive extension of present menu configuration data.

The UnifiedSessionsManager menus are hooked-in into the configuration file:

  $HOME/.config/menus/gnome-applications.menu

This is done by the entry

  	<MergeFile>applications-merged/ctys-UnifiedSessionsManager.menu</MergeFile>

The entry is located within the file for example as depicted in the following figure, where the file itself is contained within a subdirectoy 'applications-merged' and addressed by a relative path:

  
  <!DOCTYPE Menu
    PUBLIC '-//freedesktop//DTD Menu 1.0//EN'
    'http://standards.freedesktop.org/menu-spec/menu-1.0.dtd'>
  <Menu>
    <Name>Applications</Name>
    <MergeFile type="parent">/etc/xdg/menus/gnome-applications.menu</MergeFile>
  
  <!-- *** HOOK-START *** -->
  
    <MergeFile>applications-merged/ctys-UnifiedSessionsManager.menu</MergeFile>
  
  <!-- *** HOOK-END *** -->
  
          <Menu>
                  <Name>alacarte-made</Name>
                  <Directory>alacarte-made.directory</Directory>
                  <Include>
                         <Filename>alacarte-made.desktop</Filename>
                  </Include>
  
                  ...
                  ...
                  ...
  

The file is actually located within the pathname:

  $HOME/.config/menus/applications-merged/ctys-UnifiedSessionsManager.menu


The menu definition is hereby assembled by the following file types in accordance to the standard Gnome and Common Desktop definitions:

Custom menu - ctys-UnifiedSessionsManager.menu

The hooked-in file contains the current version the whole structure definition of the ctys-menu-hierarchy as single standalone structure-definition file. The menu UnifiedSessionsManager is here included as a sub-menu of the Applications menu.

  
  <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
  	  "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
  <!-- Do not edit manually - generated and managed by xdg-desktop-menu -->
  <Menu>
    <Name>Applications</Name>
  
    <AppDir>/homen/acue/.gnome/ctys/applications/</AppDir>
    <DirectoryDir>/homen/acue/.gnome/ctys/desktop-directories/</DirectoryDir>
  
  
    <Menu>
      <Name>UnifiedSessionsManager</Name>
      <Directory>ctys-UnifiedSessionsManager.directory</Directory>
      <Include>
        <Filename>ctys-help.desktop</Filename>
        <Filename>ctys-CREATE-CONSOLE.desktop</Filename>
        <Filename>ctys-LOGIN-CONSOLE.desktop</Filename>
      </Include>
  
  
      <Layout>
        <Merge type="all"/>
        <Filename>ctys-help.desktop</Filename>
        <Menuname>ctys-admin</Menuname>
        <Merge type="menus"/>
        <Merge type="files"/>
        <Separator/>
        <Filename>ctys-CREATE-CONSOLE.desktop</Filename>
        <Filename>ctys-LOGIN-CONSOLE.desktop</Filename>
        <Separator/>
        <Menuname>Sysadmin</Menuname>
        <Separator/>
        <Menuname>Desktops</Menuname>
      </Layout>
  
  
       <Menu>
         <Name>Sysadmin</Name>
         <Directory>ctys-Administrator.directory</Directory>
  
         <Menu>
  	 <Name>hosts</Name>
  	 <Directory>ctys-hosts.directory</Directory>
  	 <Include>
             <Filename>ctys-localhost.desktop</Filename>
  	 </Include>
         </Menu>
  
         <Directory>ctys-Administrator.directory</Directory> 
         <Include>
           <Filename>ctys-root-term-localhost.desktop</Filename>
         </Include>
       </Menu>
  
       <Menu>
         <Name>Desktops</Name>
         <Directory>ctys-Desktops.directory</Directory>
  
         <Menu>
  	 <Name>hosts</Name>
  	 <Directory>ctys-hosts.directory</Directory>
  	 <Include>
             <Filename>ctys-localhost.desktop</Filename>
  	 </Include>
         </Menu>
  
         <Directory>ctys-Desktops.directory</Directory> 
         <Include>
           <Filename>ctys-localhost.desktop</Filename>
         </Include>
       </Menu>
  
  
      <Menu>
        <Name>ctys-admin</Name>
        <Directory>ctys-admin.directory</Directory>
        <Include>
          <Filename>ctys-CONFIG.desktop</Filename>
          <Filename>ctys-GROUPS.desktop</Filename>
          <Filename>ctys-MACROS.desktop</Filename>
          <Filename>ctys-SCRIPTS.desktop</Filename>
        </Include>
      </Menu>
  
    </Menu>
  </Menu>
  


.

Custom desktop-directories

The following entry depicts as an example representation the data for the entry node of the configuration submenu for the UnifiedSessionsManager itself.

  
  [Desktop Entry]
  Name=ctys configuration
  Name[de]=ctys Konfiguration
  Name[en_GB]=ctys configuration
  Comment=Configuration Files
  Comment[de_DE]=Konfigurations Dateien
  Comment[en_GB]=Configuration Files
  Type=Directory
  Icon=applications-utilities
  Encoding=UTF-8
  


Custom applications

The following entry depicts as an example representation the data for the entry node of the configuration for the gnome-starter(1) with CREATE. submenu for the UnifiedSessionsManager itself.

  
  [Desktop Entry]
  Type=Application
  Version=1.0
  Encoding=UTF-8
  Name=ctys Create Console
  Comment=ctys Create Console
  Name[en_CA]=ctys Create Console
  Name[en_GB]=ctys Create Console
  Name[de_DE]=ctys Start-Konsole
  Comment[de]=ctys Start-Konsole
  #Possible absolute PATH:
  #  Exec=/homen/acue/utils/gnome-starter CREATE CONSOLE ALL
  Exec=gnome-starter CREATE CONSOLE ALL
  #Possible absolute PATH:
  #  Icon=/opt/i4p/patches/icons/misc-collection/ctys-exe.svg
  #Possible absolute PATH:
  #  ~/.icons
  Icon=ctys-exe
  Terminal=true
  Categories=System;
  


Custom pixmaps

The pixmaps could be stored within several directories in multiple formats and resolution. The current choice for the UnifiedSessionsManager is svg and stored in a pixmaps directory coallocated with the directories applications and desktop-directories in accordance to the standard sub-structure of /usr/shared directory tree. This simplifies the common installation procedure for private and shared installs.

Shared menus

The share instalation is basically the same, the deviation is basically just within the root nodes for installation. The applications, desktop-directories, and pixmaps directories are allocated within the /usr/shared directory tree.

The applications-merged files are just copied into the /etc/xdg/menus/applications-merged subdirectory. Due to present inclusion of all files within this directory no file-patch is required in this case.

Gnome - Basic Manual menu Creation

The first step is to open the dialog box for the menu entries by mouse context menu by right-mouse-click.


Manual Gnome menu creation - Open context


The dialogue box enables the creation and setting of submenus and entries.


Manual Gnome menu creation - Dialogue


Entries for Scripts

A script is a shell executable, which could contain ctys calls intermixed with native shell calls. Thus this is particularly suitable for desktops containing various local applications. The setup of a script is quite easy due to simple syntax as well as by tool support with configurable standard editors. The following example shows the 'manuals01.sh' entry for the creation of the complete desktop for editing the manuals of ctys.


Script Entries


The setup is given as:

  manuals01.sh

Where the content is:

  
  #!/bin/bash
  
  
  #
  #Prepare environment
  #
   . $(dirname ${0})/common.sh
  
  
  #
  #Start environment
  #
  if [ "$1" != "SETENV" ];then
      gnome-terminal --geometry=$(getGeometry  -g  180x20+0+0:A10) \
          --working-directory="$DOC_BLD_ROOT" \
          --title="DOC_BLD_ROOT" -x $0 SETENV&
  
      gnome-terminal --geometry=$(getGeometry  -g  180x10+0+350:A10) \
          --working-directory="$DOC_BLD_ROOT" \
          --title="DOC_BLD-01" -x $0 SETENV&
  
      gnome-terminal --geometry=$(getGeometry  -g  180x10+0+550:A10) \
          --working-directory="$DOC_BLD_ROOT" \
          --title="DOC_BLD-02" -x $0 SETENV&
  
      gnome-terminal --geometry=$(getGeometry  -g  180x10+0+750:A10) \
          --working-directory="$DOC_BLD_ROOT" \
          --title="DOC_BLD-03" -x $0 SETENV&
  
      nautilus --geometry=$(getGeometry  -g  1280x700+0+0:A20) $DOC_ALL&
  
      konq\u\eror --geometry=$(getGeometry  -g  1280x1048+0+0:A31) \
         $DOC_ALL_EN $DOC_ALL_DE&
  
      konq\u\eror --geometry=$(getGeometry  -g  1280x1048+0+0:A30) \
         $DOC_LIST_EN&
  
      konq\u\eror --geometry=$(getGeometry  -g  1280x1048+0+0:A00) \
         $DOC_BLD_ROOT $DOC_BLD_EN $DOC_BLD_DE &
  
      cd $BLD_ROOT && ctys desktops/dev/ctys/manuals01
  else
      #
      #Set environment
      #
      if [ -z "$CTYS_ENVSET" ];then
          export CTYS_ENVSET=1
  	exec bash -i
      fi
  fi
  exit 0
  



The result is depicted in the following figure.

Script Entries - Resulting Desktop

Entries for GROUPs

GROUPS are sets of hosts and virtual machines for ctys only. This are particularly suitable for desktops build up by remote applications only, including remote desktops and consoles. The setup of groups allows for various specific parameters for each connection and executed desktop. In addition an overall task control is setup for a GROUP, which also could be setup by reusable modular includes for various purposes. The setup of a GROUP called by 'ctys' could be created in the same manner as script entries. The following example shows the 'ctys admin/admin0' group entry for the creation of the complete desktop for administration of some servers.


GROUP Entries - menu Entries


The menu entry could be setup as following, in this example:

  /homen/acue/bin/ctys admin/admin0

With the content of the GROUP:

  
  #  -*- mode: conf; -*-
  #
  #This groups contains all machines in the management group of the
  #server group.
  #
  
  #
  #fileserver - CentOS-5.4 - VMware-Server
  root@delphi'( -t vnc -a create=l:DELPHI,reuse -g 1268x994:A00:ALL  -b 1,2)'
  
  #
  #backup-server - CentOS-5.4
  root@olymp'(  -t vnc -a create=reuse,l:OLYMP  -g 1268x964:A10:ALL  -b 1,2)'
  
  #
  #database-server - CentOS-5.4 - KVM
  root@app1'(   -t vnc -a create=reuse,l:APP1   -g 1268x994:A01:ALL  -b 1,2)'
  
  #
  #CUDA-server - CentOS-5.4 - KVM
  root@app2'(   -t vnc -a create=reuse,l:APP2   -g 1268x994:A21:ALL  -b 1,2)'
  



GROUP Entries


The result is depicted in the following figure.


Script Entries - Resulting Desktop


ctys-help-on

The online help menu could be basically created with any tool from the package. The usage is:

  ctys -H html=base

or

  ctys -H html=doc

This opens a browser with the provided help file 'doc.html'. The preconfigured browser is konqueror by default for now, when not available firefox is used. Any browser could be customized by the user.

The script could be integrated into Gnome by just configuring a menu item and using the call for openning a (now still) draft online help by html and pdf files. Additionally the commandline interface man pages are available.


ctys-help-on - Online Help


GROUPS(ctys-groups)

The GROUPS objects are represented by files containing multiple host entries. These could be edited by a preconfigured editor with the following call, which could be used within menu entries.

  ctys-groups -e

The started editor or filebrowser opens by default all configured directories within the CTYS_GROUPS_PATH. The preconfigured default is the Emacs editor, if not present vi, vim, konqueror, or nautilus are called. The user can customize any browser or filemanager as required.


GROUPs - Emacs editor


This could be varied call-by-call e.g. by

  CTYS_GROUPSEDIT=konqueror ctys-groups -e




GROUPs - konqueror browser with tabs


MACROS(ctys-macros)

The MACROS are represented by files containing the set of definitions to be applied. These could be edited by a preconfigured editor with the following call, which could be used within menu entries.

  ctys-macros -e

The started editor or filebrowser opens by default all configured directories within the CTYS_MACROS_PATH. The preconfigured default is the Emacs editor, if not present vi, vim, konqueror, or nautilus are called. The user can customize any browser or filemanager as required.


MACROS - Emacs editor


SCRIPTS(ctys-scripts)

The SCRIPTS are contained in within the defined search path CTYS_SCRIPTS_PATH similar to the systems PATH variable. These could be edited by a preconfigured editor with the following call, which could be used within menu entries.

  ctys-scripts -e

The started editor or filebrowser opens by default all configured directories within the CTYS_SCRIPTS_PATH. The preconfigured default is the Emacs editor, if not present vi, vim, konqueror, or nautilus are called. The user can customize any browser or filemanager as required.


SCRIPTS - Emacs editor


This could be varied call-by-call e.g. by

  CTYS_SCRIPTEDIT=konqueror ctys-scripts -e




SCRIPTS - konqueror browser with tabs


CONFIGURATION(ctys-config)

The configuration files could be browsed by konqueror with the following call:

  ctys-config -e

The started editor or filebrowser opens by default all configured directories within the standard paths. The preconfigured default is the Emacs editor, if not present vi, vim, konqueror, or nautilus are called. The user can customize any browser or filemanager as required.


CONFIGURATION - konqueror browser


Graphical VM and PM Starter

The following example shows the configuration of a graphical starter based on zenity.

This is based on some pre-requirements in order to work. The main requirement is the presence of a cacheDB, which could be generated by the utility ctys-vdbgen(1) , for further information refer to the man pages of the tool. The second requirement is the static definition of the call parameters of the start call, which relies on the defaults of each plugin. These could be modified by the related configuration files, but may suffice the basic initial creation and reconnection(by REUSE) for each VM.

This works for all supported hypervisors due to the unique interface for all - providing basic features for each. Additional parameters such as the screen position and windows size are not provided for current version.

It is recomended to set the type of the menu entry to 'Start application in terminal' because some user interaction may be required. For example in case of SSH first time connection the new key has to be confirmed.

gnome-starter

The temporary utility gnome-starter accepts the parameters PM, VM, and LIST. The parameter PM sets the start of a PM login by usage of VNC, this also restricts the displayed choice-list to PMs only and additionally assures that the displayed records are unique each. The parameter VM works similiar for VMs, where only VMs, but of all supported types are displayed. Due to the generic standard-interface and apropriate defaults delivered, each could be started in the same manner.

The standard call syntax fo selection of subsets from the database is

  gnome-starter <ACTION> <TARGET-TYPE> <SCOPE>

ACTION could be CREATE, LOGIN, or LIST. TARGET-TYPE is CONSOLE. SCOPE could be ALL, VM, or PM.

The current version does support for native access UNIX systems only. Thus even though guest systems could contain any OS supported by the hypervisor are successfully collected into the database, the selection in the starter for LOGIN actions may fail for non-supported systems. Specific parameters e.g. for individual screen positions are not provided by this version.



CREATE - PM and VM Starter

The PM starter could be configured in the same manner as any menu item. The required call is

  gnome-starter CREATE CONSOLE PM

The generated standard call is:

  
  ctys -t <type> \
       -a create=dbrec:<database-index>,reuse,CONSOLE:<current-default> \
       -Y  -c local <username>@<hostname>
  

This opens now 2 windows, the zenity list window and in addition a terminal window.

ATTENTION: The terminal window is required in cases, where user interaction is requiered. In some cases the system may even hang in an non-reachable console dialog, when a terminal is missing.


Gnome starter menu




Gnome starter


After a specific entry is selected a second window is opened for call confirmation. This text-box allows for modification of the generated call if required. The confirmation of this second window starts the entry.


Call confirmation


The requested user interaction is here to confirm new host entry for OpenSSH.


Gnome starter - SSH-Confirmation


The result is depicted in the following figure.


Gnome starter - Resulting Desktop


The VM starter could be configured in the same manner as any menu item. The required call is

  gnome-starter CREATE CONSOLE VM



LOGIN - HOSTs Starter

The starter for LOGIN is similar but slightly different. This is due to required additional information related to the guest OS, such as the ip address of the contained guest system. Also the preconfigured default HOSTs CONSOLE is displayed and used instead of the CONSOLE to be attached to the hypervisor. In addition some helpful information related to the contained guest OS distribution are presented.


Gnome starter - LOGIN list


The resulting call is a complete call due to the much simpler structure for a simple login, than in case of CREATE, where additional data may be fetched form the database.


Gnome starter - Gnome starter - LOGIN confirmation


Troubleshooting

In case of difficulties call the interface manually from the command line. The main prerequirement is an existing cacheDB (refer to ctys-vdbgen(1) ), which may not contain redundant entries. This could be verified by ctys-vhost(1) with the -M option.

When a call does not start from the menu entry the required PATH may not be complete. Thus one solution is to enter absolute pathnames for the executable, for example:

  /home/yourHome/bin/ctys ...



Multiple Monitors - Xinerama Setup

The most important practical usability aspect when working with huge amounts of machines and consoles - either physical, or virtual, or just ordinary remote desktops - is the usability of the workspace on the desktop. The key for the usability is here the application of multiple display environments, where these could be either combined locally, or virtually from local and remote sites.


Gnome Xinerama




These local and remote pyhsical screens could be combined to a virtual screen by e.g. Xinerama (or distributed e.g. by Xrdb) what is supported by the UnifiedSessionsManager particularly through the extension of the geometry option of X11. This extension provided - beneath others - for an overlay of a virtual grid of screens on top of the combined displays, thus the physical screens could be addressed by user-defined labels, the required pixel-calculations are encapsulated by the mapping-functions of the UnifiedSessionsManager.


The following screenshot represents the logical view of the combined displays.


Gnome Xinerama


Another benefit from handling of logical addresses only is the independent addressing from physical changes, which occurs frequently when the hardware is exchanged. This is due to the automatic enumeration of components by the system, which varies widely by seemingly minor changes.

The mapping and address calculations are described in depth within the User-Manual of the DOC-Package(Remember the CCL-3.0 Licensing).


Physical and Logical Screens - A Sumup

Physical screens are by default supported for the X11 based desktops as independent terminal sessions. This particularly excludes the mouse movement between the screens by default.

One appropriate facility for the combination of pyhsical screens into on superpositined-screen as a combination is the so called Xinerama mode. This simply adds the pixel-arrays together and produces a resulting array of size by the overall sum of pixels. Therefore the new address range changes to the new screen size. In practical cases the order of the screens - meaning the actual physical position of a specific pixel-area - may change e.g. due to initialization or hardware-exchange. Particularly the hardware exchange, even the exchange of the slot position of a specific graphics card, may change the whole setup dramitically. Therefore the persistent storage of desktop scripts with geometry-positions should address logically without physical dependency.


Logical Display Addressing by the UnifiedSessionsManager

The applied scheme for logical addressing is - as the main philosophy - kept as simple as possible, therefore just relies on the standard means of the X11 configuration files. The specific approach is to utilize the X11 feature of user specific section/screen address labels for multiple display. These could be simply registered by editing the file

  /etc/X11/xorg.conf

The custom labels are from then on valid screen aliasses for the specific array of pixels of the defined screen. Particularly in case of hardware changes the only thing to change is the label within the xorg.conf file, the bunch of user specific desktop configurations could remain unchanged.

An extract from an example file is given in the following figure. The Section ServerLayout is the logical overall screen, whereas the Screen sub-sections represent specific pixel-arrays mapped to a physical position. Thus by exchange of physical pixel arrays a re-positioning of physical devices could be adapated to previous definitions, and the legacy desktop configurations could be kept unchanged. In this particular case the screen names are defined in accordance to the 2-dimension array-like matrice-layout of the virtual screen. This eases the sddressing e.g. by '100x100+766+531:A21', which meand the positions are relative to the screen A21. instead of calculating '100x100+2146+1811', which may change completely for HW changes, without physical changes of the screen-position. This result from a logically double-level-remapping of pixels. For further details refer to the User-Manual(Remember the CCL-3.0 License with the full scope of commercial restrictions).


  
  # nvidia-xconfig: 
  #    X configuration file generated by nvidia-xconfig
  # nvidia-xconfig:  
  #    version 1.0  (buildmeister@builder58)  Tue Oct 20 21:25:04 PDT 2009
  
  Section "ServerLayout"
      Identifier     "ALL"
      Screen      0  "A11" 1280 1024
      Screen      1  "A21" 2560 1024
      Screen      2  "A30" 3840 0
      Screen      3  "A01" 0 1024
      Screen      4  "A00" 0 0
      Screen      5  "A31" 3840 1024
      Screen      6  "A10" 1280 0
      Screen      7  "A20" 2560 0
      InputDevice    "Keyboard0" "CoreKeyboard"
      InputDevice    "Mouse0" "CorePointer"
      Option         "Xinerama" "1"
  EndSection
  
  
  Section "Files"
      FontPath        "unix/:7100"
  EndSection
  
  Section "Module"
      Load           "dbe"
      Load           "extmod"
      Load           "type1"
      Load           "freetype"
      Load           "glx"
  EndSection
  
  Section "ServerFlags"
  
  # Removed Option "Xinerama" "1"
  # Removed Option "Xinerama" "0"
      Option         "Xinerama" "1"
  EndSection
  
  Section "InputDevice"
  
      # generated from default
  




The following (independent) example depicts the resulting mapping required for actually unchanged virtual display positions in case of pyhsical re-ordering of pixels.


Physical Xinerama-Mapping




Examples

The following examples show some additional examplary cases of convenience integration into gnome by simple menus.

Demo-Desktop

The following desktop demonstrates the automated setup of a complex runtime environment. There are just some positioning restrictions due to limits of some propriatery client applications.

The required menu entry for starting is:

  /home/userName/bin/ctys demo/vm-desktop-01




Gnome starter - Demo Desktop


The following extract from the GROUPs file shows the configuration parts for XEN and VBOX.


Gnome starter - Extract from GROUP


The ctys-groups(1) command could be used to resolv the entries within the GROUP for cut-and-paste operations.


Gnome starter - Display of resolved GROUP


Single Machine Entry

This example shows an entry for a single VM. The actual menu entry is written within one line:

  
  /homen/acue/bin/ctys 
     delphi'(
      -t vmw 
      -a create=reuse,l:office001,b:/mntn/vmpool/vmpool03/vmw/office,user:acue 
      -g 1268x994:A11:ALL 
      -b 1 
      -c local
     )'
  




Gnome starter single entry - Menu


This menu entry starts a VM for example here on a VMware Server-2(TM). It has to be recognised that the whole command line is visible in clear text by 'ps' command on the local machine, and at least partially on the target machine. The intermediate connection is encrypted by OpenSSH. Additonally menu entries are stored within files, which must not contain any serious passwords at all. Thus for security reasons in this case the username is provided only, the password is entered interactively.


Gnome starter - Gnome starter LOGIN - VMWRC Login


The started Windows2000(TM) desktop in this case could be seen as 'second level menu entry' for virtual applications.


Gnome starter LOGIN - Started W2K desktop


PABX with VLAN-Gateway

This example shows an entry for a the maintenance of two PABXs, where one is an Asterisk PABX on a distinct VoIP VLAN.


Gnome starter PABX - Interconnection Structure


The interconnection is setup by an intermediate gateway, which is passed by the utility 'ctys-beamer'.

  
  ctys-beamer -Y --x11 -R root@tserv00 -b async --beam-this \
    ctys -Y -a create=l:PABX2,reuse root@192.168.50.1
  

The resulting starter script is


Gnome starter PABX - Script


The actual menu entry is:

  pabx.sh

which could be started as:


Gnome starter PABX - menu


This opens the two views, on the left the VM containing the legacy configuration and monitoring utily from the '90s' running on the local segment interconnected by an RS232 on one gateway. The right view shows the Asterisk master PABX which is running on the VoIP gateway within another VLAN, thus has to be interconnected by a TCP/IP gateway.


Gnome starter PABX - Script


REMARK: Due to some limits by OpenSSH for handling of specific interfaces on the targeted TCP/IP gateway, evantually some static routing for specific hosts on different VLANs is required.



SEE ALSO

ctys(1) , ctys-config(1) , ctys-groups(1) , ctys-macros(1) , ctys-scripts(1) , gnome-starter(1) , ctys-xdg(1) , ctys-vdbgen(1) , ctys-vhost(1) , zenity(1)

For standards:
Freedesktop: <http://www.freedesktop.org>
Xorg: <http://www.x.org>

For implementations:
FVWM: <http://www.fvwm.org>
Gnome: <http://www.gnome.org>
KDE: <http://www.kde.org>
XFCE: <http://www.xfce.org>




AUTHOR

Written and maintained by Arno-Can Uestuensoez:

Maintenance: <<acue_sf1 (a) users sourceforge net>>
Homepage: <https://arnocan.wordpress.com>
Sourceforge.net: <http://sourceforge.net/projects/ctys>
Project moved from Berlios.de to OSDN.net: <https://osdn.net/projects/ctys>
Commercial: <https://arnocan.wordpress.com>




COPYRIGHT

Copyright (C) 2008, 2009, 2010, 2011 Ingenieurbuero Arno-Can Uestuensoez

For BASE package following licenses apply,

This document is part of the DOC package,

For additional information refer to enclosed Releasenotes and License files.