713 lines
10 KiB
HTML
713 lines
10 KiB
HTML
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Implementation</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
|
"><LINK
|
|
REL="HOME"
|
|
TITLE="KDE Kiosk Mode HOWTO"
|
|
HREF="index.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="Motivation"
|
|
HREF="motivation.html"></HEAD
|
|
><BODY
|
|
CLASS="SECT1"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
SUMMARY="Header navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>KDE Kiosk Mode HOWTO</TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="motivation.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
></TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
> </TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="SECT1"
|
|
><H1
|
|
CLASS="SECT1"
|
|
><A
|
|
NAME="IMPLEMENTATION">3. Implementation</H1
|
|
><DIV
|
|
CLASS="SECT2"
|
|
><H2
|
|
CLASS="SECT2"
|
|
><A
|
|
NAME="PATCHES">3.1. Source Code Patches</H2
|
|
><P
|
|
>Some files in kdebase-2.1.1 have to be patched:
|
|
</P
|
|
><P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
>appletop_mnu.cpp.patch: Applets on the panel can be moved and removed, but
|
|
the Preferences dialog is disabled.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>k_mnu.cpp.patch: <SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Run Command...</SPAN
|
|
> and
|
|
<SPAN
|
|
CLASS="GUISUBMENU"
|
|
>Configure Panel</SPAN
|
|
> entries are
|
|
removed from the standard <SPAN
|
|
CLASS="GUIMENU"
|
|
>K</SPAN
|
|
> Menu</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>khc_man.cc.patch: Online Help is completely disabled. This would
|
|
open konqueror.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>konq_popupmenu.cc.patch: right-mouse menu on icons on the desktop
|
|
are reduced to <SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Cut</SPAN
|
|
>,
|
|
<SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Copy</SPAN
|
|
>, <SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Paste</SPAN
|
|
>,
|
|
<SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Delete</SPAN
|
|
>, ... but no <SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Open With
|
|
...</SPAN
|
|
>,
|
|
no <SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Edit File Type...</SPAN
|
|
> and no
|
|
<SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Poperties...</SPAN
|
|
> dialogs. </P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>pagerapplet.cpp.patch: on minipager selection of type
|
|
(<SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Preview</SPAN
|
|
>,
|
|
<SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Number</SPAN
|
|
>,
|
|
<SPAN
|
|
CLASS="GUIMENUITEM"
|
|
>Name</SPAN
|
|
>) is disabled. this caused trouble in
|
|
multihead environment. </P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>panel.cpp.patch: right mouse menu on Panel is disabled.</P
|
|
></LI
|
|
></UL
|
|
></DIV
|
|
><DIV
|
|
CLASS="SECT2"
|
|
><H2
|
|
CLASS="SECT2"
|
|
><A
|
|
NAME="GLOBAL-MODIFICATION">3.2. Global modifications</H2
|
|
><P
|
|
> Instead of a dcop call, a program <B
|
|
CLASS="COMMAND"
|
|
>screensaver</B
|
|
> is
|
|
executed, which must be found in the <TT
|
|
CLASS="ENVAR"
|
|
>PATH</TT
|
|
>. Just create
|
|
a script called <B
|
|
CLASS="COMMAND"
|
|
>screensaver</B
|
|
>
|
|
with the following contents:
|
|
|
|
<TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>#!/bin/bash
|
|
|
|
dcop kdesktop KScreensaverIface lock
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
|
|
make it executable and put it in <TT
|
|
CLASS="FILENAME"
|
|
>$KDEDIR/bin</TT
|
|
>.
|
|
|
|
</P
|
|
><P
|
|
> Instead of the normal procedure, a program <B
|
|
CLASS="COMMAND"
|
|
>klogout</B
|
|
>
|
|
is called, which must be found in the <TT
|
|
CLASS="ENVAR"
|
|
>PATH</TT
|
|
>. Create a
|
|
script called <B
|
|
CLASS="COMMAND"
|
|
>klogout</B
|
|
> with the following contents:
|
|
|
|
<TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>#!/bin/bash
|
|
|
|
dcop kdesktop KDesktopIface logout</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
make it executable and put it in <TT
|
|
CLASS="FILENAME"
|
|
>$KDEDIR/bin</TT
|
|
>,
|
|
where <TT
|
|
CLASS="FILENAME"
|
|
>$KDEDIR</TT
|
|
> is the install directory of KDE and
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>$KDEDIR/bin</TT
|
|
> is found in your
|
|
<TT
|
|
CLASS="ENVAR"
|
|
>PATH</TT
|
|
>.
|
|
</P
|
|
><P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
>krootwm.cc.patch: klogout is executed instead of a dcop call</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>systemtrayapplet.cpp.patch: again call of klogout and screensaver
|
|
instead of dcop calls.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>workspace.cpp.patch: call of klogout instead of dcop call.</P
|
|
></LI
|
|
></UL
|
|
><P
|
|
>Everything else can be done with normal configuration, that is:
|
|
|
|
(Configuration files can be found in <TT
|
|
CLASS="FILENAME"
|
|
>$KDEDIR/share/config</TT
|
|
>)
|
|
|
|
Remove Trash, Templates and Autostart Icons from the desktop and disable
|
|
<B
|
|
CLASS="KEYCAP"
|
|
>Alt</B
|
|
>+<B
|
|
CLASS="KEYCAP"
|
|
>F2</B
|
|
>
|
|
by modifying <TT
|
|
CLASS="FILENAME"
|
|
>kdeglobals</TT
|
|
>. Make sure the following
|
|
entries exist:
|
|
|
|
<TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>[Paths]
|
|
|
|
Trash=$HOME/.kde2/Trash/
|
|
|
|
Autostart=$HOME/.kde2/Autostart/
|
|
|
|
Templates=$HOME/.kde2/Templates/
|
|
|
|
Desktop=$HOME/.kde2/Desktop/
|
|
|
|
|
|
[Global Keys]
|
|
|
|
Execute command=</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
|
|
(it may be <TT
|
|
CLASS="FILENAME"
|
|
>.kde</TT
|
|
> instead of <TT
|
|
CLASS="FILENAME"
|
|
>.kde2</TT
|
|
>) </P
|
|
><P
|
|
>disable Desktop menu and tips on start. Make sure the following entry
|
|
exists in <TT
|
|
CLASS="FILENAME"
|
|
>kdesktoprc</TT
|
|
>:
|
|
|
|
<TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>[Mouse Buttons]
|
|
|
|
Right=
|
|
|
|
[General]
|
|
|
|
TipsOnStart=false</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
|
|
You could also login as the special user, and configure it only for
|
|
him, then the config files are found in <TT
|
|
CLASS="FILENAME"
|
|
>$KDEHOME/share/config</TT
|
|
> where
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>$KDEHOME</TT
|
|
> is normally <TT
|
|
CLASS="FILENAME"
|
|
>$HOME/.kde</TT
|
|
>. </P
|
|
></DIV
|
|
><DIV
|
|
CLASS="SECT2"
|
|
><H2
|
|
CLASS="SECT2"
|
|
><A
|
|
NAME="KDE-MODE">3.3. How to set the variable KDE_MODE</H2
|
|
><P
|
|
>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 <TT
|
|
CLASS="ENVAR"
|
|
>KDE_MODE</TT
|
|
>. There is a script called
|
|
<B
|
|
CLASS="COMMAND"
|
|
>Xsession</B
|
|
> under <TT
|
|
CLASS="FILENAME"
|
|
>/etc/X11/xdm</TT
|
|
> or
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/usr/X11R6/lib/xdm</TT
|
|
>, which you could modify, or
|
|
<B
|
|
CLASS="COMMAND"
|
|
>startkde</B
|
|
>, that is located under
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>$KDEDIR/bin</TT
|
|
>. Note however, that the variable
|
|
must be set prior to calling the kde processes.</P
|
|
><P
|
|
>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
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>.env.sh</TT
|
|
> in a user's home directory, that will be
|
|
sourced in <B
|
|
CLASS="COMMAND"
|
|
>Xsession</B
|
|
>. That is what you could do. So
|
|
you could put in <TT
|
|
CLASS="FILENAME"
|
|
>.env.sh</TT
|
|
> of that specific user's
|
|
home directory:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>#!/bin/sh
|
|
|
|
KDE_MODE="restricted"
|
|
|
|
export KDE_MODE</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>and add to Xsession, somewhere prior to calling startkde:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>if [ -f $HOME/.env.sh ]; then
|
|
|
|
. $HOME/.env.sh
|
|
|
|
fi</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>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
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>share/applnk</TT
|
|
> and set the variable
|
|
<TT
|
|
CLASS="ENVAR"
|
|
>KDEDIR</TT
|
|
> (under KDE 2 the variable <TT
|
|
CLASS="ENVAR"
|
|
>KDEDIRS</TT
|
|
>
|
|
was introduced but <TT
|
|
CLASS="ENVAR"
|
|
>KDEDIR</TT
|
|
> is still used). The files
|
|
under <TT
|
|
CLASS="FILENAME"
|
|
>share/applnk</TT
|
|
> make up the menu. Caution, you
|
|
cannot just remove all files there, because some are needed to
|
|
initialize KDE.</P
|
|
><P
|
|
>You also set the Variable <TT
|
|
CLASS="ENVAR"
|
|
>KDEDIR</TT
|
|
> in
|
|
<B
|
|
CLASS="COMMAND"
|
|
>Xsession</B
|
|
>, after sourcing
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>.env.sh</TT
|
|
> like this:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>case "$KDE_MODE" in
|
|
|
|
restricted)
|
|
|
|
KDEDIR=/usr/local/kde/restricted_kdedir
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
KDEDIR=/usr/local/kde
|
|
|
|
esac
|
|
|
|
export KDEDIR</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>Replace <TT
|
|
CLASS="FILENAME"
|
|
>/usr/local/kde</TT
|
|
> with the install directory
|
|
of your KDE. The contents of
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/usr/local/kde/restricted_kdedir</TT
|
|
> looks like:
|
|
|
|
<TABLE
|
|
BORDER="1"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="SCREEN"
|
|
> bin -> ../bin
|
|
|
|
cgi-bin -> ../cgi-bin
|
|
|
|
etc -> ../etc
|
|
|
|
lib -> ../lib
|
|
|
|
share </PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
> </P
|
|
><P
|
|
>only share is a real directory, every other directory is a symbolic
|
|
link pointing to original
|
|
kdedir. <TT
|
|
CLASS="FILENAME"
|
|
>/usr/local/kde/restricted_kdedir/share</TT
|
|
>
|
|
has the following contents:
|
|
|
|
<TABLE
|
|
BORDER="1"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="SCREEN"
|
|
> 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 </PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
> </P
|
|
><P
|
|
>only applnk is a real directory. As a minimal requirement remove
|
|
everything except:
|
|
|
|
<TABLE
|
|
BORDER="1"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="SCREEN"
|
|
> Settings/Peripherals/mouse.desktop
|
|
|
|
Settings/LookNFeel/background.desktop
|
|
|
|
/colors.desktop
|
|
|
|
/kwinoptions.desktop
|
|
|
|
/style.desktop
|
|
|
|
/virtualdesktops.desktop </PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
|
|
under <TT
|
|
CLASS="FILENAME"
|
|
>/usr/local/kde/restricted_kdedir/share/applnk</TT
|
|
> </P
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
SUMMARY="Footer navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="motivation.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="index.html"
|
|
ACCESSKEY="H"
|
|
>Home</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
> </TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>Motivation</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
> </TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
> </TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |