LCDHost

My G19 project, LCDHost, is in open alpha status, meaning it’s going to lack features, and may have bugs. If you want to try it out, you can download it from here.

LCDHost is a compositing plugin manager for secondary output devices. It’s primarily useful for Logitech G19 owners, but it’ll work with Z10, G13 and G15 devices too. It uses a plugin architecture for drivers (for output devices) and plugins (to render different pieces of data), so it can be extended to support pretty much any device or piece of software.

You can create your own layouts with it (the default G19 layout is shown to the right) using it’s drag-and-drop editor. You can then share your layouts with other users in the forum. If you want to include images with your layout, place them in the same directory as the layout file and then zip them together. To install another users zipped layout, unzip it in the ‘layouts’ directory and load it using ‘File->Open’.

Source code for several of the plugins are included, so if you’re a programmer, you can use them as templates to write your own plugins. The included plugins are written in C++ using Qt, except for the LH_Image plugin which is written in pure C (just as an example). You can write a plugin in any language you want, as long as it can create standard DLL’s.

Technical information:

LCDHost is built with Nokia’s Qt, an open-source C++ framework. LCDHost currently builds and runs fine under both Windows, Linux and OS/X.

The plugin architecture is very robust – LCDHost will survive it’s plugins crashing, either from segmentation violations or from hanging themselves. It will load and unload plugins on the fly, without stopping rendering operations. On reloading a plugin with exisiting instances, it will rebind those instances to the plugin seamlessly.

LCDHost uses more memory than it’s little sibling LCDSirReal. Unfortunately, that’s the price of using Qt – all that flexibility and multiplatform goodness costs a couple dozen megabytes. The CPU usage is still very low, thanks to some clever tricks.