Skip to main content

Client Tray App Configuration

Overview

The Client application is installed in the Windows system tray and communicates with the Server application over TCP. The Client application uses the installed Wacom tablet driver to update the tablet display and receive pen input over the USB cable interface.

Installation

The installer supports all standard Microsoft Installer (MSI) files. For a list of options available for the installer, msiexec /? may be entered in the CLI.

Custom config files may be provided by the user. These may be specified by adding CONFIG=<name of your file> during installation.

Configuration Files:

On startup the Client processes the configuration files listed below. The files are located in: Program Files (x86)\Wacom Ink SDK for Multi-Display\Config.

If the config is changed via API, a modified copy of the relevant file is written to %ProgramData%\Wacom\MultiMonitor\Config. If the user needs to make manual changes, they will need to make changes in this location, copying the default files from Program Files (x86) if necessary.

info

If you use the CONFIG CLI parameter with the installer, the provided config file will overwrite the one in %ProgramData%.

app_config.json

A sample configuration is shown below:

app_config.json:

{
"UseNamedPipe": false,
"ServerEndpoint": "localhost",
"HasStepping": true,
"HasThumbnail": true,
"TcpPort": 5555,
"ZoomingFactor": 1.25,
"SecureCommunication": false, //if true look for certificate -> default false
"UseLocalCertificate": false, //if true read certificate from machine/user store -> default false, only needed when SecureCommunication: true
"ClientCertificate": "MyClient.pfx",
"ClientCertificatePassword": "password",
"DefaultDocumentFileName": "DocumentView.xaml",
"TabletWindowCheckInterval": 10,
"FatalErrorMessageBox": "NoClient",
"WindowBgColor": "",
"BrowserCachePath": null,
"MirroringConfig": {
"OperatorWindowWidth": 1024,
"LeftClickAction": "ShowImage",
"RightClickAction": "ExecuteAction",
"IndicatorPngWidth": 100,
"IndicatorHorizontalAlignment": "Center"
},
"IdleConfig": {
"MediaType": "images",
"DefaultOrCustomGroup": "default",
"SlideShowInterval": 5,
"RemoteMediaDir": "",
"BackgroundColor": ""
},
"KeyboardLayoutConfig": {
"AdditionalLayoutsDir": "%AppData%\\Wacom\\Kiosk\\Keyboards"
},
"DocumentViewConfig": {
"Thumbnails": {
"Panel": {
"PercentageOfScreen": 25,
"AlignWith": "DocumentView",
"BackgroundColor": "#FFFFFFFF",
"BorderColor": "#FFC0C0C0",
"BorderWidth": 1
},
"Count": 10,
"ShowPageNumbers": true,
"CurrentPageBorderColor": "#FF43B2FF",
"CurrentPageBorderWidth": 2
},
"PdfFormFields": {
"BorderColor": "Black",
"BorderThickness": 1,
"BorderColorRequired": "Green",
"BorderThicknessRequired": 2,
"BorderColorFocus": "Red",
"BorderThicknessFocus": 2
},
"ButtonsConfiguration": [
{
"Name": "PageSteppingBtn",
"ButtonAction": "InputStepping"
},
{
"Name": "ThumbnailsBtn",
"ButtonAction": "ToggleThumbnails"
},
{
"Name": "ZoomBtn",
"ButtonAction": "ToggleZoom",
"ToggleImageOnPath": "/zoomin.png",
"ToggleImageOffPath": "/zoomout.png"
},
{
"Name": "ScrollToTop",
"ButtonAction": "ScrollToTop"
}
]
},
"SignatureViewConfig": {
"ButtonsConfiguration": [
{
"Name": "ClearSignature",
"ButtonAction": "ClearSignature"
},
{
"Name": "AcceptSignature",
"ButtonAction": "AcceptSignature"
},
{
"Name": "CancelSignature",
"ButtonAction": "CancelSignature"
}
]
},
"TrustedServers": [
"MIGJAoGBAJkzpXgmu5TeNR5mdatFZEzaTyMvKp91rUV5IsYjyD4QiZtrslbnWYh/HYV+PggEPuBsm+jtPFdQAa5vH+d1UIH2UbQjqH20Gncdd3qHTVW++58C8gy9+8+n9YenEfdXvhLg2ETIcot/OY++Rw8/QeI4v87TR6IofLQo5GkkVRy/AgMBAAE="
],
"ClientCertificateThumbprint": "3A396124E4435F661D8B211EA5AE118C132F5B34"
}

The JSON file contains a number of sections detailed below:

BrowserCachePath

This value allows users to set the file directory to keep cached data.

The valid values are:

ValueDescription
null (default)In-memory caching, including cookies. This setting does not permit persistence to disk.
"" (empty string)caching to disk in default folder %appdata%\Wacom\Multidisplay\CEF
"<path>"caching to disk in given folder. This path can include environment variables (eg, %appdata%). It is the integrator/admin's responsibility to ensure the given path is valid, writable/creatable and is not used for anything else.

Communication

The connection with the server application is determined by the settings:

ValueDescription
UseNamedPipeboolean that controls whether TcpPort is enabled. When set to true, TcpPort is disabled.
ServerEndpoint: "localhost"Specifies the Client-Server communication connection. Normally the Client and Server will be hosted on the same PC and will use localhost.
The implementation allows the client to communicate with a server on the network and this is achieved through this setting, for example:
"ServerEndpoint": "192.250.0.10"
TcpPort : 5555Defines a port which is available for TCP use. The port number can be changed but must match the Server connection, see:
private static MQServer mq = new MQServer(certificate: "MyServer.pfx", certificatePassword: "password", port:5555, local: true);
Make sure that the port is free on the system, e.g. use the netstat command.
If the endpoint is not the localhost, check that the port is allowed in the Firewall.
SecureCommunicationBoolean value that when true, will look for a certificate.
UseLocalCertificateBoolean value that when true, reads a certificate from a machine/user store. NB: Only needed when SecureCommunication is set to true.
ClientCertificate : "MyClient.pfx"PFX certificate used for the encrypted TCP communication. The same certificate is used by the Server and Client applications.
ClientCertificatePassword: "password"The password required for the PFX certificate
ClientCertificateThumbprint: "3A396124E4435F661D8B211EA5AE118C132F5B34"The thumbprint of the certificate, allowing for additional security
TrustedServersWhitelist of server instances (see below)
TabletWindowCheckIntervalEnables periodic checking that no non-kiosk windows are displayed on the pen tablet device. Non-zero, integer value is interval, in seconds, between running the check. Value of 0 disables checking
Default = 0
TabletScreenMapping*Gets or sets a value indicating which screen belongs to the Wacom tablet.
Values: Auto (default), Last, First, Right, Left.
FatalErrorMessageBox: "Always"Controls the display of the message box when the tray app closes itself down
Always - Message box always displayed (default)
Never - Message box never displayed (app exits silently)
NoClient – Displayed if there is no client app connected; not displayed if a client app is connected
WindowBgColorAssigns a color to the window's background

*For use in remote/virtual environments where Kiosk may not be able to identify the Wacom tablet screen.

Certificate Thumbprints: A certificate is used to encrypt the data between the server and client applications. As an extra layer of security, the Client app is configured with a whitelist of trusted certificates, thereby ensuring that a rogue Server application cannot connect with the Client. This is more relevant to installations where the Client and Server are hosted on different machines. A certificate Thumbprint can be displayed using the Windows certutil utility.

Document Display

A number of settings are required for the document display function:

ValueDescription
ZoomingFactor : 2Zooming Factor to apply when the zoom button is clicked (if present on the DocView Xaml definition)
ControlBorderBrush: "#FF000000"Border color for the document display controls (textbox, signature. checkbox etc.)
ControlBorderThickness: 1Border thickness for the document display controls (textbox, signature. checkbox etc.)
DefaultDocumentFileName: "DocumentView.xaml"Default Xaml document view to be used when the parameter is not supplied in OpenDocumentPageMessage
DocumentViewConfigDefines the active buttons in the Document View window. The names link the Client app actions to the Server receive messages. See Document View and below for further details

Document Button Binding

DocumentViewConfig:

   "DocumentViewConfig": {
"Thumbnails": {
"Panel": {
"PercentageOfScreen": 25, // the height of the panel as a percentage of the screen height
"AlignWith": "DocumentView", // may be set to "DocumentView", where the bottom of the panel is aligned with the bottom of the document,
// or "Screen", where the panel is displayed along the bottom of the screen
"BackgroundColor": "#FFFFFFFF", // the background colour of the panel
"BorderColor": "#FFC0C0C0", // the border colour of the panel
"BorderWidth": 1 // the border width of the panel
},
"Count": 10, // the number of page thumbnails displayed at the bottom for navigation at a time
"ShowPageNumbers": true, // boolean value to toggle display of page numbers
"CurrentPageBorderColor": "#FF43B2FF", // the border colour of the thumbnails
"CurrentPageBorderWidth": 2 // the border width of the thumbnails
},
"PdfFormFields": {
"BorderColor": "Black", // the border colour of fields
"BorderThickness": 1, // the border thickness of fields
"BorderColorRequired": "Green", // the border colour of required fields
"BorderThicknessRequired": 2, // the border thickness of required fields
"BorderColorFocus": "Red", // the border colour when a field is selected
"BorderThicknessFocus": 2 // the border thickness when a field is selected
},
"ButtonsConfiguration": [
{
"Name": "PageSteppingBtn", // used internally
"ButtonAction": "InputStepping" // used internally to bind the virtual keyboard input field step key.
},
{
"Name": "ThumbnailsBtn", // the name expected in the Document View xaml definition data
"ButtonAction": "ToggleThumbnails" // identifies the button to toggle the thumbnail display
},
{
"Name": "ZoomBtn", // the name expected in the Document View xaml definition data
"ButtonAction": "ToggleZoom", // identifies the button to zoom the page display
"ToggleImageOnPath": "/zoomin.png", // image filename for zoom+ in \Wacom Ink SDK for Multi-Display\Resources\DefinitionResources
"ToggleImageOffPath": "/zoomout.png" // image filename for zoom- in \Wacom Ink SDK for Multi-Display\Resources\DefinitionResources
},
{
"Name": "ScrollToTop", // the name expected in the Document View xaml definition data
"ButtonAction": "ScrollToTop" // identifies the button to scroll to top of document display
}
]
},

Defines the connection between Buttons shown in the Document View window UI and the built-in action. See Button Action in Document View for details of the button binding.

Mirroring

A number of settings determine the Mirror's behaviour.

ValueDescription
OperatorWindowWidth: 1024Screen width of the Mirror windows - height is adjusted to maintain the tablet aspect ratio
LeftClickAction: "ShowImage"Action for Left click:
"ShowImage" - displays an icon image on the tablet display - for instructional use, or
"ExecuteAction" - performs the same action as pen on tablet (except signing is not supported in the Mirror window)
RightClickAction: "ExecuteAction"Action for Right click (as above)
IndicatorPngWidth: 100Icon Size of Pointer.
The pointer image file is included in the Client installation as
Wacom Ink SDK for Multi-Display\Resources\Mirroring\mirroringPointer.png
IndicatorHorizontalAlignment: "Center"The Mirror icon alignment: "Left", "Center" or "Right"

Idle Config

A number of settings determine the default Idle mode behaviour.

See Idle Mode for a full description of the media file tree structure:

media\
images
custom
demo
default
videos
custom
demo
default
ValueDescription
"MediaType": "videos"Selects the display of "videos" or "images" from the media file tree
"DefaultOrCustomGroup": "default"Selects the media source
"SlideShowInterval": 1Number of seconds between slides. Suggested values: 1 for images, 5+ for videos
"RemoteMediaDir": ""Sets an alternative folder for media files, e.g. "network-drive:\\media\\" or "C:\\Media\\"
If unspecified, media files are read from: Wacom Ink SDK for Multi-Display\Resources\media
"ForceSoftwareOnlyRender": trueForces software-only rendering of videos to workaround an issue in .NET Framework 4.0 with H.264 codec video files. From MS: "The issue occurs when a synchronization between WPF and the underlying WMP control have to resynchronize when the display changes occur."
Default = True.

Signature Capture Config

Defines the connection between Buttons shown in the Signature Capture window UI and the built-in action. See Signature View - Button Binding for details of the button mapping.

SignatureViewConfig:

"SignatureViewConfig": {
"ButtonsConfiguration": [
{
"Name": "ClearSignature", // the name expected in the signature definition data
"ButtonAction": "ClearSignature" // identifies the Clear function
},
{
"Name": "AcceptSignature", // the name expected in the signature definition data
"ButtonAction": "AcceptSignature" // identifies the OK function
},
{
"Name": "CancelSignature", // the name expected in the signature definition data
"ButtonAction": "CancelSignature" // identifies the Cancel function
}
]

log_config.json

Log files are supported using the SiriLog library. The log file format and location can be modified in the configuration file shown below:

log_config.json:

{
"Serilog": {
"Using": [
"Serilog.Sinks.Console",
"Serilog.Sinks.File"
],
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "Console",
"Args": { "outputTemplate": "[{Timestamp:HH:mm:ss:ms} {Level:u3}] {Message:lj}{NewLine}{Exception}" }
},
{
"Name": "Debug",
"Args": { "outputTemplate": "[{Timestamp:HH:mm:ss:ms} {Level:u3}] {Message:lj}{NewLine}{Exception}" }
},
{
"Name": "File",
"Args": {
"path": "%localappdata%\\Wacom\\MultiMonitor\\Logs\\kiosk_sdk_.log",
"outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}",
"rollingInterval": "Day"
}
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"Properties": {
"Application": "Wacom.Kiosk.App"
}
}
}