Pool Video Switch 2 ====================================================== Developer and Integrator documentation ------------------------------------------------------ ### Configuration File The configuration file should be saved as `/opt/openslx/pvs2/pvs2.ini`. As this extension is stateless the same set of files is used by both client and manager. A sample configuration can be found in `sample_configuration`. #### General settings * rooms: list all rooms that should be available to users * allowClientQuit: If set to true, users can shut down the client by clicking on "Quit" in the toolbar of pvsclient. * showLockDesktopButton: If set to true there will be a button "Lock" that when clicks calls the script "lockDesktop.sh". #### Room settings A room section represents a physical or virtual room where clients are placed on defined positions. Viable configuration options are: MUST: * mgrIP: The ip of the instructor's PC * client: An array containing all clients and their positions. For the exact syntax compare with the provided sample configuration CAN: * tutorIP: The ip of a client in this room which should be set as tutor by default. Usually the instructor's PC. * backgroundImage: Path to an image file that will be drawn as a background behind the room window * gridSize: size of the grid, defaults to minimal size to fit all clients on the screen * clientSize: size of the clients on the grid. In combination with a big grid. This allows you to create well-detailed room configurations. * priority: Important for the auto-connect feature, but also affects the sorting in the connect window of the client. ### Lock/Unlock Scripts The functionality of PVS client(`pvsclient`) can be extended by providing additional shell scripts that are executed on certain events. When the PVS client receives the message from the manager to lock the screen it executes `kb-lock.sh` in the configuration directory (`/opt/openslx/pvs2`). When it receives an unlock message the client executes `kb-unlock.sh` in the same directory. We suggest to implement additional locking measures in these files. In the `sample_configuration` folder of this repository you can find 2 scripts that use `xinput` to disable (enable) the keyboard so that users cannot (even when the keyboard input is grabbed by VMWare Player) type while the screen is locked. ### Switch-Scripts For some deployments it can make sense to run `pvsmgr` on a regular instance (with a running VM) instead of a dedicated manager computer. If `pvsclient` detects that it is running on a instructor's computer it shows the button "Switch" with which the user can switch to a running pvsmgr window. To perform the window switching `pvsclient` calls the pair of shell scripts `switchToManager.sh` and `switchBack.sh`. See the sample configuration which uses `wmctrl` to perform the switching. ### Lock-Desktop-Script To allow users to lock their workstations (and not just the VM) we add a button "Lock" (when in [general]showLockDesktopButton=true) that when clicked causes the script /opt/openslx/pvs2/lockDesktop.sh. In this script you should call something like "xscreensaver-command --lock" or similar. ### Network Setup # FOR CONTRIBUTORS ## Code Style Please check the file `.astylerc` for details. We recommend to install a pre-commit hook to make sure that one only commit complying code. Such a hook can be found in scripts/astyle-check.sh Steps to install the hook: # install `astyle` apt-get install astyle cd pvs2 cd .git/hooks ln -s ../../scripts/astyle-check.sh pre-commit chmod +x pre-commit If a staged file does not comply to our coding style, you can use `astyle --options=./.astylerc ` to correct the style.