Picture of Setting Up Ubuntu as a Kiosk Web Appliance
At work we have the frequent need for a machine that will allow students to access the internet without having full access to a computer.  To accomplish this task we previously resorted to creating AutoHotKey scripts on a Windows XP machine.  Many of the students and the staff who monitored these computers took issue with the computer's slow boot and running speed.  To cope with this we started to explore alternatives to Windows.  This is where we combined Ubuntu (a fast operating system) with Chromium-browser (one of the fastest browsers).  Now we have really old machines running as web kiosks that boot in 20 seconds or less and are very responsive to clicks, typing, and even flash videos and animations.

Follow the steps in this Instructable to set up Ubuntu, and Chromium if you haven't already.

Some potential uses for this type of system:
    * Web Kiosk
    * Information Booth
    * Subsonic Guest Interface
    * X10 House Control

Step 1: Add XScreensaver & Ubuntu Restricted Extras

Picture of Add XScreensaver & Ubuntu Restricted Extras
Fullscreen capture 742010 54736 PM.bmp
Fullscreen capture 742010 55341 PM.bmp
On our systems we found that even LCD monitors got burnt in after time.  They are not supposed to be able to do this, but they were.  To remedy this, we tried to get the default screensavers to come up.  They were not great at running from a script.  Instead the best option for this is to install the xscreensaver packages.  I like to do this from the command line so click Applications, highlight Accessories, and click Terminal.  From there enter the command "sudo apt-get install xscreensav* -y" without the quotation marks.  The asterisk at the end allows aptitude to install all of the packages that start with xscreensav, thus installing all the additional screensavers available.
If you will be using flash you will need to install the plugin for it.  The best way I've found to do this is similar to adding xscreensaver.  In the terminal window enter "sudo apt-get isntall ubuntu-restricted-extras -y".  Once this is done close the Terminal window.
« Previous41-80 of 185Next »
balno2 years ago
Great instructable. I've recently installed some computers as described in our local library and it works like a charm ! Thanks thanks thanks ! By the way, the part of the script used for setting the initial window size didn't work here, I used this one instead :


# we get screen resolution

res=$(xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}')
resx=$(echo $res | awk '{split($0,array,"x")} END{print array[1]}')
resy=$(echo $res | awk '{split($0,array,"x")} END{print array[2]}')

# starting xscreensaver

xscreensaver -nosplash &

while true;
        do chromium-browser %u --incognito --window-size=$resx,$resy
        sleep 5s;

Thanks again for the good work.

François. (Agneaux. France)
balno balno2 years ago
as you can see, window size isn't saved anywhere here, it is set by a flag on the command line used to run chromium.
natrinicle (author)  balno2 years ago
Beautiful code! Thanks for the update on that!
scottdn2 years ago
Excellent instructable. I was successful in configuring everything and the Kiosk is working as expected except for one minor issue. While in the kiosk the mouse pointer displays a black X as opposed to a white pointer. What is causing this and how can it be resolved?
natrinicle (author)  scottdn2 years ago
That's the default X Cursor, it looks like you can change it by following the instructions Beastie explains here: http://forums.freebsd.org/showthread.php?t=27920
Like the instructable but what in the world made you think lcd screens would not burn in????
natrinicle (author)  ghostbust5552 years ago
I accounted for that, hence the xscreensaver installation and portion of the script.
noob2ub2 years ago
Does anyone know the correct way to get my kiosk screen to go full screen? I tried many of the methods on this site and I still have a 1/2 inch of uncovered screen at the bottom of my kiosk. My settings are 1000 bottom and 1280 right. Any help is greatly appreciated.
nmartin122 years ago
I GOT IT!!!! Once logged into kiosk I navigated in the file browser to the files I created and executed kiosk.desktop. Now chrome launches the kiosk when started as a regular program from the sidebar (unity launcher)
nmartin122 years ago
Ok so I redid the two lines in the bash file to fix the issue but chromium will not autostart or even start in kiosk mode for that other user. I am at a loss as to why. I have redone the steps several times and copy pasted to prevent typos.
natrinicle (author)  nmartin122 years ago
Can you check who the script is owned by and what the permissions on it are by running an "ls -al" in the terminal while in the same directory as the script?
nmartin122 years ago
I even thought about reworking the chromeKiosk.sh file. Though I have no Idea exactly how any of the scripting works yet. I am running 12.04 if that changes anything, I noticed some steps don't exist anymore.
rpace19062 years ago
Thank you for posting this! I found it useful. You wouldn't happen to know anything about bell - merivale would you? Any insight would be great!
natrinicle (author)  rpace19062 years ago
No problem rpace1906. I'm afraid the only things I know about Bell is what I can Google on it. I live in the U.S., not Canada.
chuydb2 years ago
Im using ubuntu 12.04 LTS, finllay got working the kiosk with autologin. Couple of things, how do I switch back? If I force reboot the autologin gets me right back to the kiosk mode, hence I cant do anything.

chuydb chuydb2 years ago
Been playing around with the terminal to see if i could force out of the kiosk, still nothing.
Clr362 years ago
Where might I have gone, followed the directions but now even when using the admin or master account it loads the kiosk mode? Now I can't change any setting. Thanks
natrinicle (author)  Clr362 years ago
You will need to edit the ~/.dmrc file's Session= line. I use KDE by default on my system (not loaded with standard Ubuntu) and my line is Session=kde-plasma.
Just guessing, but I think if you set that line to Session=gnome that it should go back to the gnome desktop for you.
mrazem4 years ago
Is there a way to force Chrome or Chromium start in Full-Screen mode?
natrinicle (author)  mrazem4 years ago
You have to use the xrandr super long command in the chromeKiosk.sh creation step. From what I understand the file that the resolution is stored in has changed locations as well and I haven't had a chance to look at and repair that script. If you can find the location of the file you should be able to just change the file name in those two commands.
Hi, thanks for your quick response but that did not work, Is anybody experiencing the same situation. i guess there is no way to gain access to the Pc from this other than a re build of the Ubuntu Os.
Those settings for fullscreen are now located in ~/.config/chromium/Default/Preferences

width=`xrandr | grep \* | head -n1 | cut -d' ' -f4 | cut -d'x' -f1`
height=`xrandr | grep \* | head -n1 | cut -d' ' -f4 | cut -d'x' -f2`

echo $width,$height

cat ~/.config/chromium/Default/Preferences | perl -pe "s/\"work_area_bottom.*/\"work_area_bottom\": $height,/" > /tmp/tmp.$$
cp /tmp/tmp.$$ ~/.config/chromium/Default/Preferences
cat ~/.config/chromium/Default/Preferences | perl -pe "s/\"bottom.*/\"bottom\": $height,/" > /tmp/tmp.$$
cp /tmp/tmp.$$ ~/.config/chromium/Default/Preferences
cat ~/.config/chromium/Default/Preferences | perl -pe "s/\"work_area_right.*/\"work_area_right\": $width,/" > /tmp/tmp.$$
cp /tmp/tmp.$$ ~/.config/chromium/Default/Preferences
cat ~/.config/chromium/Default/Preferences | perl -pe "s/\"right.*/\"right\": $width,/" > /tmp/tmp.$$
mv /tmp/tmp.$$ ~/.config/chromium/Default/Preferences

mikefoes2 years ago
I have re built the system in case i had missed something in the set up. But it is exactly the same. The kiosk works fantastically only allowing users use of the web browser, but I can't gain access to the admin user as the settings are in force here. I log on as my admin user but no access to any menu's etc. if you could find the time to point me in the right direction it would be very helpful.

great tutorial, easy to follow and very informative.

best regards

natrinicle (author)  mikefoes2 years ago
After intensively searching the internet, I finally found the config file that tells GDM which desktop environment to load. You will need to edit the ~/.dmrc file's Session= line. I use KDE by default on my system (not loaded with standard Ubuntu) and my line is Session=kde-plasma.
Just guessing, but I think if you set that line to Session=gnome that it should go back to the gnome desktop for you.
mikefoes2 years ago
when switching to the Administrator the kiosk mode is still active, no menus etc, how do i over come this as i want to change some settings for the restricted user

mikefoes2 years ago
Tutorial is well thought out and explained exceptionally with the Ade of the screen shots. However Chromium wont start automatically on the users account, could you point me in the wright direction what to look for. I entered the script as shown. i am new to linux and this a great project to get me started.

also is there a way of disabling the Gnome panel for the user, I just want to really lock the system down.

best regards

natrinicle (author)  mikefoes2 years ago
I would check the .desktop file creation step and make sure that the correct file permissions are set. This will take care of disabling the Gnome panel as well.
natrinicle (author)  natrinicle2 years ago
Step 6 actually, sorry I didn't include it in my last comment
nhoncoop2 years ago
I have almost everything working (great tutorial!), only the webpage is faster than the internet connection, what results in a page cannot found message. So I have to wait for just 2 a 3 seconds hit F5 and it is working but is there a better solution?

Also i did something wrong and it is not possible to go back to the normal login screen so i can login as administrator or user in unity? I use ubuntu 12.04.
natrinicle (author)  nhoncoop2 years ago
Thanks! I'm guessing it's probably that you're using DHCP and that the DHCP server is taking too long to hand out an address. You can set a static address and that should help.

My guess on the user is in step 7 not having set a time that you can log in as another user before the auto login. Unfortunately, I'm not sure where this is set so I don't know how to unset it.
I have installed Ubuntu again but I can't find the Login Screen Settings in Ubuntu 12.04. Is ther another way to set some time to login as an another user? I have tried to fix it in in the lightdm.conf but both versions login in the default interface without some time to login as someone else.

autologin-session=Kiosk Mode
user-session=Kiosk Mode

natrinicle (author)  nhoncoop2 years ago
Looks like Ubuntu changed their greeter to LightDM which is what you're trying to set here. If it's not accepting the config file then you might need to file a bug with the developers. I believe at the time I wrote this article they were using GDM.
I found a alternative gdm greeter tool called MDM (http://askubuntu.com/questions/143192/how-can-i-replace-lightdm-with-mdm). In MDM is it possible to Timed Login, what fixed the problem.
matais4 years ago
Hi, iv followed your brilliant guide and works perfecty with chromium but iv altered it for Opera and only having one issue getting it full screen (you can see the background, round the sides of the opera window), with Chromium i managed to drag the windows to full screen and it holds even after a reboot but with Opera i cant seem to do the same or find another way of doing it, any help would be greatly appricated, iv attached an image of what im getting
natrinicle (author)  matais4 years ago
I haven't tried Opera yet, but a quick Google search has led me to the Opera Kiosk Mode documentation. I quickly glanced through it and it appears that there are a series of command line options to set the screen height and width. Take a look at the following url for more info: http://www.opera.com/support/mastering/kiosk/
Hi, thanks for your reply natrinicle, i wish it was that easy, iv had a read through that site in my google travels and tried
opera %U -k -ScreenWidth 800 -ScreenHeight 600
opera %U -k /ScreenWidth 800 /ScreenHeight 600
and tried other combinations

here what im using:
#! /bin/bash
xscreensaver -nosplash &
While true; do opera %U --kioskresetstation --nomail --nomaillinks --nosave --nodownload --reseronexit --nocontectmenu --nomenu --noprint --nokeys ; sleep 2s; done

im having no luck at all, using ubuntu 10.04 LTS and opera 11.50
is there anyway to start xrandr so opera can pick the screen resolution and go actual full screen?
natrinicle (author)  matais4 years ago
Xrandr actually is just a command line utility that dumps a lot of info about the screena that xwindows are displayed on. You might be able to take a chunk out of the xrandr code I have and put it in $() which runs a command and uses the output for that section of input. It would look something like this below, filling in the xrandr command line portion of course.

Opera %U -k -screenwidth $(xrandr command line) -screenheight $(xrandr command line)
Tried that command line with no luck but managed to figure it out after many hours

Opera -geometry 1280x1024-1-1

thanks for you help, was a nice challenge, knew there would be a way
menuchin matais2 years ago
thanks for your instructions. I also tried the Opera Kiosk Mode. Everything works fine but there is one small problem. As for the keyboard. There is no Polish fonts in kiosk mode. Where can I change the code page layout in kiosk mode?
natrinicle (author)  menuchin2 years ago
See if this helps you: https://help.ubuntu.com/community/LocaleConf
« Previous41-80 of 185Next »