Monday, July 18, 2011

Linux Kiosk

Some days ago I saw this video on youtube (Linux Kiosk Intro) I thought it was a great idea! Sometime we would like to give to an user the possibility to surf the net but nothing else, or anyway you need a computer ONLY to use the same program and nothing else! (Can be a program to sell tickets, or to see what table are busy in your restaurant and what they order at this table, or whatever)
Usually you buy a computer, then you usually pay for a Windows OS and you put the program on this system.
What's wrong with that?
  • You pay for a computer probably too powerfull for your needs.
  • You pay for an OS you probably you will not use for real
  • Maybe you must pay for some software to lock windows options to have a better security.
How can we solve that?
We can use Linux! Linux is free, well supported, and you can control everything you want! And with this method you don't need a powerful computer. A 10year old computer could be powerful enough.

How can we use Linux?
That's my solution! (The solution on the youtube video is good, my way is only different!)

--------------------------------------------------------------------------------------

I used ubuntu x64 11.04
Like you I used only basic system then i installed (with all dependencies):
  • Xorg is the graphics environment you need to start every GUI programs, there are other programs but I barely know that one so I used this.
  • Chromium-browser is the program I want to run, it's a version of Chrome browser, but you can use Firefox, or a special program like a python program you made.
  • Slim is a desktop-independent graphical login manager for X11
Then I set slim like that:
PS: my username is "media"

#Path, X server and arguments (if needed)
# Note: -xauth $authfile is automatically appended
default_path /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
default_xserver /usr/bin/X11/X
xserver_arguments -nolisten tcp

# Commands for halt, login, etc.
halt_cmd /sbin/shutdown -h now
reboot_cmd /sbin/shutdown -r now
console_cmd /usr/bin/xterm -C -fg white -bg black +sb -T "Console login" -e /bin/sh -c "/bin/cat /etc/issue.net; exec /bin/login"
#suspend_cmd /usr/sbin/suspend

# Full path to the xauth binary
xauth_path /usr/bin/X11/xauth

# Xauth file for server
authfile /var/run/slim.auth


# Activate numlock when slim starts. Valid values: on|off
# numlock on

# Hide the mouse cursor (note: does not work with some WMs).
# Valid values: true|false
# hidecursor false

# This command is executed after a succesful login.
# you can place the %session and %theme variables
# to handle launching of specific commands in .xinitrc
# depending of chosen session and slim theme
#
# NOTE: if your system does not have bash you need
# to adjust the command according to your preferred shell,
# i.e. for freebsd use:
# login_cmd exec /bin/sh - ~/.xinitrc %session
[b]login_cmd exec /bin/bash -login /etc/X11/Xsession chromium-browser[/b]

# Commands executed when starting and exiting a session.
# They can be used for registering a X11 session with
# sessreg. You can use the %user variable
#
# sessionstart_cmd    some command
# sessionstop_cmd    some command

# Start in daemon mode. Valid values: yes | no
# Note that this can be overriden by the command line
# options "-d" and "-nodaemon"
# daemon    yes

# Available sessions (first one is the default).
# The current chosen session name is replaced in the login_cmd
# above, so your login command can handle different sessions.
# see the xinitrc.sample file shipped with slim sources
sessions default,startxfce4,openbox,ion3,icewm,wmaker,blackbox,awesome

# Executed when pressing F11 (requires imagemagick)
screenshot_cmd scrot /root/slim.png

# welcome message. Available variables: %host, %domain
welcome_msg Welcome to %host

# Session message. Prepended to the session name when pressing F1
# session_msg Session:

# shutdown / reboot messages
shutdown_msg The system is halting...
reboot_msg The system is rebooting...

# default user, leave blank or remove this line
# for avoid pre-loading the username.
[b]default_user media[/b]

# Focus the password field on start when default_user is set
# Set to "yes" to enable this feature
#focus_password no

# Automatically login the default user (without entering
# the password. Set to "yes" to enable this feature
[b]auto_login yes[/b]


# current theme, use comma separated list to specify a set to
# randomly choose from
current_theme debian-spacefun

# Lock file
lockfile /var/run/slim.lock

# Log file
logfile /var/log/slim.log


IMPORTANT:

# NOTE: if your system does not have bash you need
# to adjust the command according to your preferred shell,
# i.e. for freebsd use:
# login_cmd exec /bin/sh - ~/.xinitrc %session
login_cmd exec /bin/bash -login /etc/X11/Xsession chromium-browser


# default user, leave blank or remove this line
# for avoid pre-loading the username.
default_user media

# Automatically login the default user (without entering
# the password. Set to "yes" to enable this feature
auto_login yes

You can leave %session on login_cmd if you change the possible sessions in sessions.

And it works not bad at all, maybe i have to fix some stuff with mouse and size of the windows, and last if I close the last tab it goes back to login page, but i don't need openbox!