Running Chromium as a Dashboard
On my desk I have a dashboard (an “information radiator”) that displays various useful things, such as the build status of various Jenkins jobs, clocks showing important timezones (Electric Imp is a distributed company), and so on.
It’s built from an Acer nettop, and it runs Chromium in kiosk mode. Here’s how I got it to start everything automatically.
Dashboard Web Server
The dashboard is implemented using dashing, and I use an
upstart script (in
/etc/init/dashing.conf) to ensure that it’s running at
#!upstart description "Dashing dashboards" author "Roger Lipscombe" respawn start on runlevel  setuid dashboard setgid dashboard script cd /home/dashboard/dashboard/ dashing start end script
Note that the script assumes that you have a
dashboard user, and that dashing
is installed in
Great! I’ve got a web server running the dashboard software; now I need to display it somewhere. To do this I run an X session on the box.
This is done with two files:
/etc/init/startx.conf starts X:
#!upstart description "Start X without a display manager or a window manager" author "Roger Lipscombe" # start/stop lifted from Mint's mdm.conf: start on ((filesystem and runlevel [!06] and started dbus and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1 or stopped udev-fallback-graphics)) or runlevel PREVLEVEL=S) stop on runlevel  script USER="dashboard" exec /bin/su -s /bin/sh -l -c "/usr/bin/startx" $USER end script
Chromium is then run from
#!/bin/sh # Turn off screen blanking and power saving xset s off xset -dpms # Rotate the screen (optional) xrandr --output HDMI-1 --rotate left # Hide the mouse cursor. unclutter -grab & # Start the web browser, with an address... while true; do # Sleep for a bit; this gives the network a chance to recover, and # also allows us to do stuff remotely (like clear the cache) before # Chrome restarts. sleep 5 # See http://stackoverflow.com/q/9792667/8446 sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' \ ~/.config/chromium/Default/Preferences # This doesn't go into the background, which is good. chromium-browser --kiosk http://localhost:3030/ done