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,
"UseLocalCertificate": false,
"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",
"VideoPlayingImage": "C:\Program Files\Wacom Ink SDK for Multi-Display\Resources\Definition\Resources\VideoPlaying.png",
"MirrorVideo": false
},
"IdleConfig": {
"MediaType": "images",
"DefaultOrCustomGroup": "default",
"SlideShowInterval": 5,
"RemoteMediaDir": "",
"BackgroundColor": "",
"VideoPlayer": "VLC"
},
"KeyboardLayoutConfig": {
"AdditionalLayoutsDir": "%AppData%\\Wacom\\Kiosk\\Keyboards",
"Default": "bg_BG"
},
"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",
"WebViewConfig": {
"BrowserCachePath": "%LocalAppData%\\Wacom\\Multidisplay\\Cache",
"ForceSoftwareOnlyRender": false
}
}

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.
*Important note

This function is superseded by WebViewConfig's BrowserCachePath value.

Communication

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

ValueDescription
UseNamedPipeBoolean that sets whether named pipe communication is used.
When set to true, TcpPort is disabled. When false, TCP is utilised instead.
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"
HasSteppingGets or sets a value indicating whether this instance has stepping.
HasThumbnailGets or sets a value indicating whether this instance has a thumbnail.
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, enables encrypted NamedPipe communication. The certificate used is set by ClientCertificateThumbprint.
When false, communication is unencrypted.
This setting is only applicable when SetNamedPipe is set to true. TCP connections are always secure and do not use this flag.
UseLocalCertificateBoolean value that determines how the certificate is loaded for TCP communication.
When true, the certificate is loaded based on ClientCertificateThumbprint; when false, the certificate is loaded with ClientCertificate & ClientCertificatePassword.
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 (see Certificate Thumbprints below)
TrustedServersWhitelist of server instances (see Communication Security)
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.

For information regarding configuring security on communication channels, click here.

Certificate Thumbprints:

This adds security for named pipe communication.

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"
VideoPlayingImage: "C:\Program Files\Wacom Ink SDK for Multi-Display\Resources\Definition\Resources\VideoPlaying.png"Full or relative path to the image file displayed in the mirroring window, while a video is playing on the tablet.
Ignored if video is mirrored (i.e., the player is MediaPlayer and MirrorVideo is not false).
MirrorVideo: falseBool value that determines whether idle mode video should be mirrored.
If false, the mirroring window shows a still image instead of the video playback.
Note: VLC player does not support video mirroring. In this scenario, this setting is ignored.
Note on VideoPlayingImage

Because mirroring videos does not work with VLC, VideoPlayingImage is required.

As noted above, setting images can be done by configuring the app_config like so:

"MirroringConfig": {
"VideoPlayingImage": "<<<PATH_TO_IMAGE>>>"
}

The path to the image may be full or relative.

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
"BackgroundColor": ""Sets a color to the idle mode's background.
If not present, the default color is black.
"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.
"VideoPlayer": "VLC"Sets the type of video player employed. Options are default, MediaPlayer or VLC, where MediaPlayer is the default and is also used if the setting is omitted.
For customers experiencing issues, switching to the VLC player is recommended. However, note that this will be at the expense of not being able to mirror videos.
Note on VideoPlayer
  • Due to not being supported by the Windows server, MediaPlayer does not work in Citrix environments.

Keyboard Config

A number of settings determine the keyboard configuration.

See Keyboard Config for a more detailed breakdown of the config options:

ValueDescription
AdditionalLayoutsDirA writable directory in which to store additional/custom layouts.
DefaultSets the keyboard utilized by default. Default should employ the use of the language's corresponding ISO code (e.g., it_IT for Italian).

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
}
]
}

Web view mode

A number of settings define the config settings of web view mode.

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

NB: This value supersedes BrowserCachePath at the root level, and will override whatever value given there, if present.
ForceSoftwareOnlyRender Forces 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."
This option only applies to the web view, and and previous rendering mode will be restored once the web view is closed.
Default = True.
info

Users may encounter issues with ForceSoftwareOnlyRender, due to memory issues relating to the Intel video card & WPF. If issues are encountered, the solutions are to:

  1. Set ForceSoftwareOnlyRender to False OR,
  2. Use VLC

ForceSoftwareOnlyRender addresses an issue where web pages may render only in mirror mode and not on the tablet when video rendering is enabled.

If a web page does not appear on the tablet, enable ForceSoftwareOnlyRender in the browser to ensure proper rendering.

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