Tag Archives: Kiosk

Meet ADMBrowser

It’s been a snowy week like Tennessee hasn’t seen in decades, so with a couple of extra down-days on my hands I decided to work on a project that’s been on my docket for some time: porting WCGBrowser to a new web-rendering engine.

WCGBrowser has been my most popular open-source project by far, and between blog posts I’ve seen and emails I’ve received, it seems to be powering kiosks and signage from New England to the Netherlands, Germany, and Australia. I’ve found it quite useful within my own organization, but it’s Achille’s heel for many years has been QtWebKit.

QtWebKit is, basically, dead, and starting to stink a little. Its performance is slow, it’s buggy with some websites, and it tends to leak memory like a seive. The Qt community has been working for the last couple year to integrate Chrome/Chromium’s Blink browser engine into Qt, and recently with the release of 5.4 this new “QtWebEngine” library is now available for me to play with on Arch Linux.

So I’ve begun porting the browser to QtWebEngine. It became immediately obvious that this was going to break a lot of things in WCGBrowser, and I’ve been wanting to change the name for a while, so I decided to fork WCGBrowser and start a new project.

I give you ADMBrowser.

Yeah, I went full ego on the name. Mostly I just want to avoid a name collision with a commercial browser, since there is a new one being bankrolled by VC every five minutes.


So far ADMBrowser is a quick-n-dirty port of WCGBrowser to QtWebEngine, basically discarding any features that couldn’t be easily ported with a search-and-replace. Sadly, that’s a lot of important features so far:

  • Plugin support
  • External File (PDF, etc) support
  • Privacy mode
  • Proxy support
  • Certificate handling

That’s just the quick core-features test findings. I haven’t tried all the more obscure features yet. Needless to say, don’t swap your production rig to ADMBrowser just yet.

Apart from the WebEngine move, I plan to clean up some of the redundant configuration options and maybe organize things a little better. I’ll also be dropping support for Python 2 (or at least not going far out of my way to support it).

Hopefully QtWebEngine will mature quickly, or workarounds will come to light. I can tell already that many rendering and performance bugs from the old WCGBrowser are tidied by by the new renderer.

If you’re Python & Qt coder who might be able to help me fix some of these things, please feel free to fork and submit pull requests.

State of WCGBrowser

While I realize that wcgbrowser isn’t exactly the most exciting or groundbreaking piece of software ever created, I’ve been having fun improving it bit by bit over the last few months since I opened the source code.  If I keep hacking away at this pace, I’ll easily have the most feature-packed kiosk browser around, for whatever that’s worth.

Here’s a quick rundown of new features, if you haven’t been watching the git logs closely:


KiLauncher and Qt Stylesheets

The default theme of KiLauncher

The default theme for KiLauncher. Ok, so it kind of looks like your gramma’s formica breakfast table from the 1970s.

I’ve been doing a lot of tinkering on my KiLauncher project over the last week or so, and it’s not only shaping up into a nice useful little application, but an educational opportunity as well

My goals for KiLauncher were to make it both theme-able, and configurable with plain-text files.  The natural mechanism for this (for the theme, anyway) was CSS, a format with which any self-respecting UI designer is familiar.  Fortunately, Qt supports a subset of CSS to style its GUI classes, sometimes referred to as QSS.


New project:KiLauncher

Last night i uploaded a new project to my github page, KiLauncher.  It’s a fullscreen, static (as in not auto-updating) launcher menu aimed at kiosks, kids computers, corporate systems, and any other situation where an administrator wants to be able to both provide a simple interface and exercise some control over what applications are available to the user.

The software is still in the early stages, of course; I’m still working out the best way to structure the config file; yet it meets all its primary goals at this point and works just fine.  It’s built in python and QT of course, and after my positive experience using YAML in wcgbrowser, I’m of course using it for KiLauncher too. Unlike wcgbrowser, I don’t have a real-world use for this software yet, but maybe someone who does can give me some feedback on it.

WCGBrowser updated

I’ve been wanting for some time to update my wcgbrowser code to be python3 compatible, but I’ve been held back by the ambiguity surrounding the configobj library — in a nuthshell, the official project isn’t 3.x compatible, but there is a fork that is. Unfortunately the fork maintainer isn’t putting real effort into a release, and Debian won’t include it until they do.

So fed up with that, I got a wild idea last night to port the code to something more supported. I considered JSON and XML, but settled on YAML, since it seems to be reasonably hand-hackable, well supported, and handles about any data types I need.

I thought this would be a big deal, but surprisingly it only took about 20 minutes to get things working. I decided to keep going with my momentum by adding the remaining command-line configuration parameters to the config file and making sure the whole thing worked with python 3.

I also fixed some logic bugs in the process. Nice.

If anyone out there is actually using it, you can get the latest code on github.  Naturally, the conversion to YAML will break any existing configuration; sorry in advance.  To make up for it, I’ve fully commented the config file so it should be pretty simple to figure out how to port it over.  Also, bear in mind that it’s now looking for a config file called “wcgbrowser.yaml”, not “wcgbrowser.conf”.

WCGBrowser, meet world…

After conversing a bit with one reader of my kiosk how-to, I was reminded how tricky it can be to really lock-down a modern web browser for kiosk use.  It’s so tricky, that for my own needs I ended up writing my own browser.

Well, I figure it’s time to stop being stingy, so I am releasing the code to that browser under the GPL.  You can find it on github, here:


Contributions would be welcome, as the code has some stupidities and shortcomings.  It does work for my needs, and may work in a wide variety of situations, so feel free to make use of it.

I will, of course, appreciate code contributions from those so inclined!

Creating a kiosk with Linux and X11: 2011 edition

Back around 2006 our public library was in need of a cheap way for patrons to browse its web-based INNOPAC catalog. Thin clients running Windows CE had been purchased for this purpose, but they turned out to be buggy and limited. I was tasked with finding a solution to the problem “on the cheap”, and being a fairly new Linux fanatic at the time, I figured I’d see what I could do using free software. This led to my first kiosk project.

Since then, I’ve refined my approach time and again, deploying kiosks throughout my organization just about anywhere a web-browser kiosk can be put to use. The original library system has been completely rebuilt with newer hardware and software, but is fundamentally the same system I set up five years ago.

I often see people asking about how to set up a kiosk system with Linux, and like me they usually start out going about it the wrong way; so I thought I’d write this tutorial based on my years of experience to help those getting started.