|KDE Kiosk Mode HOWTO|
Some files in kdebase-2.1.1 have to be patched:
appletop_mnu.cpp.patch: Applets on the panel can be moved and removed, but the Preferences dialog is disabled.
k_mnu.cpp.patch: Run Command... and Configure Panel entries are removed from the standard K Menu
khc_man.cc.patch: Online Help is completely disabled. This would open konqueror.
konq_popupmenu.cc.patch: right-mouse menu on icons on the desktop are reduced to Cut, Copy, Paste, Delete, ... but no Open With ..., no Edit File Type... and no Poperties... dialogs.
pagerapplet.cpp.patch: on minipager selection of type (Preview, Number, Name) is disabled. this caused trouble in multihead environment.
panel.cpp.patch: right mouse menu on Panel is disabled.
Instead of a dcop call, a program screensaver is executed, which must be found in the PATH. Just create a script called screensaver with the following contents:
#!/bin/bash dcop kdesktop KScreensaverIface lock
Instead of the normal procedure, a program klogout is called, which must be found in the PATH. Create a script called klogout with the following contents:
#!/bin/bash dcop kdesktop KDesktopIface logout
krootwm.cc.patch: klogout is executed instead of a dcop call
systemtrayapplet.cpp.patch: again call of klogout and screensaver instead of dcop calls.
workspace.cpp.patch: call of klogout instead of dcop call.
Everything else can be done with normal configuration, that is: (Configuration files can be found in $KDEDIR/share/config) Remove Trash, Templates and Autostart Icons from the desktop and disable Alt+F2 by modifying kdeglobals. Make sure the following entries exist:
[Paths] Trash=$HOME/.kde2/Trash/ Autostart=$HOME/.kde2/Autostart/ Templates=$HOME/.kde2/Templates/ Desktop=$HOME/.kde2/Desktop/ [Global Keys] Execute command=
disable Desktop menu and tips on start. Make sure the following entry exists in kdesktoprc:
[Mouse Buttons] Right= [General] TipsOnStart=false
To answer this, you must understand what happens after you successfully authorized yourself to the system: Depending on your distribution, some scripts are executed, from which one should be modified to set KDE_MODE. There is a script called Xsession under /etc/X11/xdm or /usr/X11R6/lib/xdm, which you could modify, or startkde, that is located under $KDEDIR/bin. Note however, that the variable must be set prior to calling the kde processes.
Since we had the need to make a setup for a big environment (now reaching 300 users) we wrote an application that enables us to administer. It also creates the KDE Menus. It writes a file called .env.sh in a user's home directory, that will be sourced in Xsession. That is what you could do. So you could put in .env.sh of that specific user's home directory:
#!/bin/sh KDE_MODE="restricted" export KDE_MODE
and add to Xsession, somewhere prior to calling startkde:
if [ -f $HOME/.env.sh ]; then . $HOME/.env.sh fi
We also have two kdedirs that looks like to separate installations of KDE, this was neccessary so "normal" users could still have a full-featured KDE. So we have an original kdedir, and a restricted kdedir, in which we removed entries under share/applnk and set the variable KDEDIR (under KDE 2 the variable KDEDIRS was introduced but KDEDIR is still used). The files under share/applnk make up the menu. Caution, you cannot just remove all files there, because some are needed to initialize KDE.
You also set the Variable KDEDIR in Xsession, after sourcing .env.sh like this:
case "$KDE_MODE" in restricted) KDEDIR=/usr/local/kde/restricted_kdedir ;; *) KDEDIR=/usr/local/kde esac export KDEDIR
Replace /usr/local/kde with the install directory of your KDE. The contents of /usr/local/kde/restricted_kdedir looks like:
bin -> ../bin cgi-bin -> ../cgi-bin etc -> ../etc lib -> ../lib share
only share is a real directory, every other directory is a symbolic link pointing to original kdedir. /usr/local/kde/restricted_kdedir/share has the following contents:
aclocal -> ../../share/aclocal applnk apps -> ../../share/apps autostart -> ../../share/autostart config -> ../../share/config doc -> ../../share/doc fonts -> ../../share/fonts icons -> ../../share/icons locale -> ../../share/locale mimelnk -> ../../share/mimelnk services -> ../../share/services servicetypes -> ../../share/servicetypes sounds -> ../../share/sounds templates -> ../../share/templates wallpapers -> ../../share/wallpapers
only applnk is a real directory. As a minimal requirement remove everything except:
Settings/Peripherals/mouse.desktop Settings/LookNFeel/background.desktop /colors.desktop /kwinoptions.desktop /style.desktop /virtualdesktops.desktop