You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2748 lines
92 KiB
2748 lines
92 KiB
<part id="kde-for-administrators">
|
|
<partinfo>
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Waldo</firstname>
|
|
<surname>Bastian</surname>
|
|
</personname>
|
|
<email>bastian@kde.org</email>
|
|
</author>
|
|
<othercredit role="reviewer">
|
|
&Philip.Rodrigues;
|
|
&Philip.Rodrigues.mail;
|
|
</othercredit>
|
|
</authorgroup>
|
|
</partinfo>
|
|
|
|
<title>&kde; for Administrators</title>
|
|
|
|
<chapter id="kde-internals">
|
|
<title>&kde; Internals</title>
|
|
|
|
<sect1 id="kde-for-admins-overview">
|
|
<title>Overview</title>
|
|
<para>to be written</para>
|
|
</sect1>
|
|
|
|
<sect1 id="directory-layout">
|
|
<title>Directory Layout</title>
|
|
|
|
<para>&kde; defines a filesystem hierarchy which is used by the &kde;
|
|
environment itself as well as all &kde; applications. In general &kde;
|
|
stores all its files in a directory tree with a fixed structure.
|
|
</para>
|
|
|
|
<para>By default &kde; uses two directory trees:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>One at the system level (for example <filename
|
|
class="directory">/opt/trinity</filename>).</para></listitem>
|
|
<listitem><para>One at the user level in the user's home directory
|
|
(usually <filename class="directory">
|
|
~/.kde</filename>)</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>As a system administrator you can create additional trees. Such
|
|
additional trees can be used for <link
|
|
linkend="user-profiles">profiles</link></para>
|
|
|
|
<informalexample><para>&SuSE; &Linux; for example uses:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para><filename
|
|
class="directory">$<envar>HOME</envar>/.kde</filename></para></listitem>
|
|
<listitem><para><filename
|
|
class="directory">/opt/trinity</filename>. (This is
|
|
&SuSE;-specific; other distributions may use
|
|
<filename class="directory">/usr</filename> or <filename
|
|
class="directory">/usr/trinity</filename>)</para></listitem>
|
|
<listitem><para><filename
|
|
class="directory">/etc/opt/trinity</filename>. (This was added by
|
|
&SuSE;).</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>If you have the KIOSK Admin tool v0.7 or later installed you can
|
|
check which directory trees are used with the following command:
|
|
<userinput><command>kiosktool-kdedirs</command>
|
|
<option>--check</option></userinput></para>
|
|
</informalexample>
|
|
|
|
<para>&kde; and &kde; applications look up files by scanning all the
|
|
&kde; directory trees. The directory trees are checked in order of
|
|
precedence. When a file is present in multiple directory trees, the
|
|
file from the last tree takes precedence. Normally, the tree
|
|
located in the user's home directory has the highest precedence. This
|
|
is also the directory tree to which changes are written.</para>
|
|
|
|
<informalexample>
|
|
<para>For information about the <literal>text/plain</literal> &MIME; type
|
|
the following files are searched:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para><filename
|
|
class="directory">$<envar>HOME</envar>/.kde/share/mimelnk/text/plain.desktop</filename></para></listitem>
|
|
<listitem><para><filename
|
|
class="directory">/opt/trinity/share/mimelnk/text/plain.desktop</filename></para></listitem>
|
|
<listitem><para><filename
|
|
class="directory">/etc/opt/trinity/share/mimelnk/text/plain.desktop</filename></para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>If a user makes a change, the change is written to <filename
|
|
class="directory">$<envar>HOME</envar>/.kde/share/mimelnk/text/plain.desktop</filename></para>
|
|
</informalexample>
|
|
|
|
<para>For configuration files the story is slightly different. If
|
|
there are multiple configuration files found in the directory trees
|
|
with the same name, their content is combined. The precedence order of
|
|
the directory trees plays a role here. When two files define the same
|
|
configuration key, the file with the highest precedence determines
|
|
which value is used for the key.</para>
|
|
|
|
<informalexample><para>
|
|
For example, if the following two files exist, with these contents:</para>
|
|
<variablelist>
|
|
<varlistentry><term><filename>$<envar>HOME</envar>/.kde/share/config/foobar</filename></term>
|
|
<listitem><programlisting>
|
|
Color=red
|
|
Shape=circle
|
|
</programlisting>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>/etc/opt/trinity/share/config/foobar</filename></term>
|
|
<listitem><programlisting>
|
|
Color=blue
|
|
Position=10,10
|
|
</programlisting>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>The files will be merged to result in:</para>
|
|
|
|
<programlisting>
|
|
Color=red
|
|
Shape=circle
|
|
Position=10,10
|
|
</programlisting>
|
|
|
|
</informalexample>
|
|
</sect1>
|
|
|
|
<sect1 id="specifying-directories">
|
|
<title>Specifying Directories</title>
|
|
|
|
<para>
|
|
|
|
<segmentedlist>
|
|
<segtitle>Environment Variable</segtitle>
|
|
<segtitle>Example Setting(s)</segtitle>
|
|
<segtitle>Comment</segtitle>
|
|
|
|
<seglistitem>
|
|
<seg><envar>KDEHOME</envar></seg>
|
|
<seg><filename class="directory">~/.kde</filename></seg>
|
|
<seg></seg>
|
|
</seglistitem>
|
|
|
|
<seglistitem>
|
|
<seg><envar>KDEROOTHOME</envar></seg>
|
|
<seg><filename class="directory">/root/.kde</filename></seg>
|
|
<seg>Different variable to prevent
|
|
root writing to $KDEHOME of the user after running
|
|
<command>su</command>.</seg>
|
|
</seglistitem>
|
|
|
|
<seglistitem>
|
|
<seg><envar>KDEDIR</envar></seg>
|
|
<seg><filename class="directory">/opt/trinity</filename>, <filename
|
|
class="directory">/usr</filename>, <filename
|
|
class="directory">/usr/trinity</filename></seg>
|
|
<seg>Vendor dependent. Used by &kde; 2. If not set, falls back to
|
|
compiled-in default.</seg>
|
|
</seglistitem>
|
|
|
|
<seglistitem>
|
|
<seg><envar>KDEDIRS</envar></seg>
|
|
<seg><filename class="directory">/opt/trinity</filename>, <filename
|
|
class="directory">/usr</filename>, <filename
|
|
class="directory">/usr/trinity</filename></seg>
|
|
<seg>New in &kde;3. Can list multiple locations separated by a
|
|
colon. If not set, falls back to $<envar>KDEDIR</envar></seg>
|
|
</seglistitem>
|
|
|
|
</segmentedlist>
|
|
</para>
|
|
<para>Don't <emphasis>need</emphasis> to be set, defaults work just fine.</para>
|
|
<para>Running &kde;2 next to &kde;3? Point $<envar>KDEDIR</envar> to
|
|
&kde; 2 and $<envar>KDEDIRS</envar> to &kde; 3.</para>
|
|
|
|
<informalexample>
|
|
<para>A staff member at a university could have the following
|
|
settings:</para>
|
|
<programlisting>
|
|
KDEHOME='~/.trinity'
|
|
KDEROOTHOME='/root/.trinity'
|
|
KDEDIRS='/opt/kde_staff:/opt/trinity'
|
|
</programlisting>
|
|
|
|
</informalexample>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="user-profiles">
|
|
<title>User Profiles</title>
|
|
|
|
<para>In the previous example <filename
|
|
class="directory">/opt/kde_staff</filename> contained additional settings
|
|
and applications for staff members. <quote>User Profiles</quote> allow you
|
|
to add this directory only for certain users and not for others. Add the
|
|
following to <filename>/etc/kderc</filename>:</para>
|
|
|
|
<programlisting>
|
|
[Directories-staff]
|
|
prefixes=/opt/kde_staff
|
|
</programlisting>
|
|
|
|
<para>This creates a profile named <quote>staff</quote> that adds the
|
|
<filename class="directory">/opt/kde_staff</filename> directory
|
|
tree. (Note that &SuSE; &Linux; uses
|
|
<filename>/etc/trinityrc</filename> instead of
|
|
<filename>/etc/kderc</filename>. Now that we have a named profile it
|
|
can be assigned to users.</para>
|
|
|
|
<para>To map profiles to users a mapping file needs to be specified in
|
|
<filename>/etc/kderc</filename>:</para>
|
|
|
|
<programlisting>
|
|
[Directories]
|
|
userProfileMapFile=/etc/kde-user-profile
|
|
</programlisting>
|
|
|
|
<para>It is now possible to assign a profile based on either the user name
|
|
or based on the &UNIX; group the user is part of.</para>
|
|
|
|
<para>To assign the staff profile to all users that are a member of the
|
|
&UNIX; group staff_members add the following to
|
|
<filename>/etc/kde-user-profile</filename>:</para>
|
|
|
|
<programlisting>
|
|
[General]
|
|
groups=staff_members
|
|
[Groups]
|
|
staff_members=staff
|
|
</programlisting>
|
|
|
|
<para>It is also possible to assign a profile to a single user:</para>
|
|
|
|
<programlisting>
|
|
[Users]
|
|
bastian=staff
|
|
</programlisting>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="directory-layout-revisited">
|
|
<title>Directory Layout Revisited</title>
|
|
|
|
<para>Each directory tree used by &kde; has a fixed directory structure.
|
|
Directories that are not relevant for a certain tree, or simply not used can
|
|
be left out though. For example, directories used for temporary files are
|
|
usually only found under <filename
|
|
class="directory">$<envar>KDEHOME</envar></filename> but not in any other
|
|
directory tree.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="architecture-specific-directories">
|
|
<title>Architecture-specific Directories</title>
|
|
|
|
<para>Architecture (OS and CPU type) specific directories:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><filename class="directory">bin</filename></term>
|
|
<listitem><para>Used for &kde; executables.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">lib</filename></term>
|
|
<listitem><para>Used for &kde; libraries.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">lib/trinity</filename></term>
|
|
<listitem><para>This directory contains components, plugins, and other
|
|
runtime loadable objects for use by &kde; 3.<replaceable>x</replaceable>
|
|
applications.</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="shared-directories">
|
|
<title>Shared Directories</title>
|
|
|
|
<para>Shared: Not architecture specific, can be shared between different
|
|
archs.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><filename class="directory">share/applnk</filename></term>
|
|
<listitem><para><literal role="extension">.desktop</literal> files for
|
|
&kde;-menu (old)</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/applications</filename></term>
|
|
<listitem><para><literal role="extension">.desktop</literal> files for
|
|
&kde;-menu (since &kde; 3.2)</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/apps</filename></term>
|
|
<listitem><para>Contains application-specific data files. Each
|
|
application has a sub-directory here for storing additional data
|
|
files.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/config</filename></term>
|
|
<listitem><para>Configuration files. Configuration files are normally
|
|
named after the application they belong to plus the letters
|
|
<quote>rc</quote>. A special case is <filename>kdeglobals</filename>.
|
|
This file is read by all &kde; applications.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename
|
|
class="directory">share/config/session</filename></term>
|
|
<listitem><para>This directory is used by session management and is
|
|
normally only available under <filename
|
|
class="directory">$<envar>KDEHOME</envar></filename>. At the end of a
|
|
session &kde; applications store their state here. The file names
|
|
consist of the name of the application followed by a number. The
|
|
session manager <command>ksmserver</command> stores references to
|
|
these numbers when saving a session in
|
|
<filename>ksmserverrc</filename>.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/doc/tde/HTML</filename></term>
|
|
<listitem><para>This directory contains documentation for &kde;
|
|
applications. Documentation is categorized by language and the
|
|
application it belongs to. Normally at least two files can be found in
|
|
a directory: <filename>index.docbook</filename>, which contains the
|
|
documentation in the unformatted DocBook format, and
|
|
<filename>index.cache.bz2</filename>, which contains the same
|
|
documentation formatted as <command>bzip2</command>-compressed
|
|
&HTML;. The &HTML; version is used by &khelpcenter;. If the &HTML;
|
|
version is missing, &khelpcenter; will regenerate it from the DocBook
|
|
version but this is a time-consuming process.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/icons</filename></term>
|
|
<listitem><para>Under this directory icons are stored. Icons are
|
|
categorized by theme, dimension and usage category.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/mimelnk</filename></term>
|
|
<listitem><para>In this directory,<literal
|
|
role="extension">.desktop</literal> files that describe &MIME; types
|
|
are stored. &kde; uses &MIME; types to identify the type of a
|
|
file.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/services</filename></term>
|
|
<listitem><para>This directory contains <literal
|
|
role="extension">.desktop</literal> files that describe services. Services
|
|
are like applications but are usually launched by other applications instead
|
|
of the user. Services do not appear in the &kde; menu.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/servicetypes</filename></term>
|
|
<listitem><para>This directory contains <literal
|
|
role="extension">.desktop</literal> files that describe
|
|
servicetypes. A servicetype usually represents a certain programming
|
|
interface. Applications and Services include in their <literal
|
|
role="extension">>.desktop</literal> files the servicetypes that they
|
|
provide.</para> </listitem></varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/sounds</filename></term>
|
|
<listitem><para>This directory contains sound files.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/templates</filename></term>
|
|
<listitem><para>This directory contains templates for creating files
|
|
of various types. A template consists of a <literal
|
|
role="extension">.desktop</literal> file that describes the file and
|
|
that includes a reference to a file in the <filename
|
|
class="directory">.source</filename> sub-directory. The templates in
|
|
this directory appear in the <guimenu>Create New</guimenu> menu
|
|
available on the desktop and in the file browser. When a user selects
|
|
a template from the menu its source file is copied.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename class="directory">share/wallpapers</filename></term>
|
|
<listitem><para>This directory contains images that can be used as
|
|
background picture</para></listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="host-specific-directories">
|
|
<title>Host-specific Directories</title>
|
|
|
|
<para>There are three host-specific directories that are usually
|
|
symlinked to other locations. If the directories do not already exist,
|
|
the following symlinks and directories will be created using the
|
|
<command>lnusertemp</command> utility:</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term><filename>$<envar>KDEHOME</envar>/socket-$<envar>HOSTNAME</envar></filename></term>
|
|
<listitem><para>Usually <filename
|
|
class="directory">/tmp/ksocket-$<envar>USER</envar>/</filename>, this
|
|
is used for various &UNIX; sockets.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>$<envar>KDEHOME</envar>/tmp-$<envar>HOSTNAME</envar></filename></term>
|
|
<listitem><para>Usually <filename
|
|
class="directory">/tmp/kde-$<envar>USER</envar>/</filename>, this is used for temporary files.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>$<envar>KDEHOME</envar>/cache-$<envar>HOSTNAME</envar></filename></term>
|
|
<listitem><para>Usually <filename
|
|
class="directory">/var/tmp/kdecache-$<envar>USER</envar>/</filename>,
|
|
this is used for cached files.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Since both <filename class="directory">/tmp</filename> and
|
|
<filename class="directory">/var/tmp</filename> are world writable,
|
|
there is a possibility that one of the above directories already
|
|
exists but is owned by another user. In that case the
|
|
<command>lnusertemp</command> utility will create a new directory with
|
|
an alternative name and link to that instead.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="configuration-files">
|
|
<title>Configuration Files</title> <para>&kde; uses a simple
|
|
text-based file format for all its configuration files. It consists of
|
|
key-value pairs that are placed in groups. All &kde; configuration
|
|
files use <acronym>UTF</acronym>-8 encoding for text outside the
|
|
<acronym>ASCII</acronym> range.</para>
|
|
|
|
<para>The start of a group is indicated by a group name that is placed
|
|
in square brackets. All the key-value entries that follow belong to
|
|
the group. The group ends when either another group starts or when the
|
|
end of the file is reached. Entries at the top of the
|
|
file that are not preceded by a group name belong to the default
|
|
group.</para>
|
|
|
|
<informalexample><para>The following example shows a configuration
|
|
file that consists of two groups. The first group contains the keys
|
|
<varname>LargeCursor</varname> and <varname>SingleClick</varname>, the
|
|
second group contains the keys <varname>Show hidden files</varname>
|
|
and <varname>Sort by</varname>:</para>
|
|
|
|
<programlisting>
|
|
[KDE]
|
|
LargeCursor=false
|
|
SingleClick=true
|
|
</programlisting>
|
|
|
|
<programlisting>
|
|
[KFileDialog Settings]
|
|
Show hidden files=false
|
|
Sort by=Name
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<para>Entries in a group consist of a key and value separated by an equals
|
|
sign. The key can contain spaces and may be followed by options placed in
|
|
square brackets. The part after the equals sign is the value of the
|
|
entry. Any white space surrounding the equals sign is ignored, as is any
|
|
trailing white space. Put more concisely, the format is:</para>
|
|
|
|
<programlisting>
|
|
<replaceable>entry</replaceable>=<replaceable>value</replaceable>
|
|
</programlisting>
|
|
|
|
<para>If a value is supposed to include a space at the begin or end
|
|
then this can be achieved by using a backslash followed by an
|
|
<quote>s</quote>.</para>
|
|
|
|
<para>There are several other backslash codes; here is a complete
|
|
list:
|
|
<itemizedlist>
|
|
<listitem><para><token>\s</token> can be used as space</para>
|
|
</listitem>
|
|
<listitem><para><token>\t</token> can be used to include a tab</para>
|
|
</listitem>
|
|
<listitem><para><token>\r</token> for a carriage return character</para>
|
|
</listitem>
|
|
<listitem><para><token>\n</token> for a linefeed character (new line)</para>
|
|
</listitem>
|
|
<listitem><para><token>\\</token> to include the backslash itself</para>
|
|
</listitem>
|
|
</itemizedlist></para>
|
|
|
|
<informalexample><para>In the following example the value of the
|
|
<varname>Caption</varname> entry starts with two spaces while the
|
|
<varname>Description</varname> entry contains three lines of
|
|
text. Linefeeds in backslash notation are used to separate the
|
|
different lines.</para>
|
|
|
|
<programlisting>
|
|
[Preview Image]
|
|
Caption=\s My Caption
|
|
Description=This is\na very long\ndescription.
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<para>Empty lines in configuration files are ignored, as are lines that
|
|
start with a hash mark (<quote>#</quote>). The hash mark can be used to add
|
|
comments to configuration files. It should be noted that when a &kde;
|
|
application updates a configuration file the comments are
|
|
<emphasis>not</emphasis> preserved.</para>
|
|
|
|
<para>There can be multiple configuration files with the same name in the
|
|
<filename class="directory">share/config</filename> sub-directory of the
|
|
various &kde; directory trees. In this case the information of all these
|
|
configuration files is combined on a key-by-key basis. If the same key
|
|
within a certain group is defined in more than one place, the key value read
|
|
from the directory tree with the highest precedence will be used.
|
|
Configuration files under <filename
|
|
class="directory">$<envar>KDEHOME</envar></filename> always have the highest
|
|
precedence. If a key in a certain group is defined multiple times in a
|
|
single file, the value of the last entry is used.</para>
|
|
|
|
<informalexample>
|
|
<para>If <filename>$<envar>HOME</envar>/.kde/share/config/foobar</filename>
|
|
contains:
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=red
|
|
Shape=circle
|
|
</programlisting>
|
|
and <filename>/etc/opt/trinity/share/config/foobar</filename> contains
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=blue
|
|
Position=10,10
|
|
</programlisting>
|
|
the result will be:
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=red
|
|
Shape=circle
|
|
Position=10,10
|
|
</programlisting>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<informalexample>
|
|
<para>If
|
|
<filename>$<envar>HOME</envar>/.kde/share/config/foobar</filename>
|
|
contains
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=red
|
|
Shape=circle
|
|
[MyGroup]
|
|
Color=green
|
|
</programlisting>
|
|
and <filename>/opt/kde_staff/share/config/foobar</filename> contains
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=purple
|
|
Position=20,20
|
|
</programlisting>
|
|
and <filename>/etc/opt/trinity/share/config/foobar</filename> contains
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=blue
|
|
Position=10,10
|
|
</programlisting>
|
|
the result will be:
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=green
|
|
Shape=circle
|
|
Position=20,20
|
|
</programlisting>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<para>To prevent users being able to override default settings,
|
|
settings can be marked immutable. Settings can be made immutable
|
|
individually, per group or per file. An individual entry can be locked
|
|
down by adding <userinput>[$i]</userinput> behind the key, ⪚:
|
|
<programlisting>
|
|
Color[$i]=blue
|
|
</programlisting>
|
|
</para>
|
|
<para>A group of entries can be locked down by placing
|
|
<userinput>[$i]</userinput> behind the group name, ⪚:
|
|
<programlisting>
|
|
[MyGroup][$i]
|
|
</programlisting>
|
|
</para>
|
|
<para>To lock down the entire file, start the file with
|
|
<userinput>[$i]</userinput> on a single line, &ie;:
|
|
<programlisting>
|
|
[$i]
|
|
</programlisting>
|
|
</para>
|
|
|
|
<informalexample>
|
|
<para>If
|
|
<filename>$<envar>HOME</envar>/.kde/share/config/foobar</filename>
|
|
contains:
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=red
|
|
Shape=circle
|
|
</programlisting>
|
|
and <filename>/etc/opt/trinity/share/config/foobar</filename> contains:
|
|
<programlisting>
|
|
[MyGroup][$i]
|
|
Color=blue
|
|
Position=10,10
|
|
</programlisting>
|
|
the result will be:
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=blue
|
|
Position=10,10
|
|
</programlisting>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<informalexample><para>If
|
|
<filename>$<envar>HOME</envar>/.kde/share/config/foobar</filename>
|
|
contains:
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=red
|
|
Shape=circle
|
|
</programlisting>
|
|
and <filename>/opt/kde_staff/share/config/foobar</filename> contains
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=purple
|
|
Shape=rectangle
|
|
</programlisting>
|
|
and <filename>/etc/opt/trinity/share/config/foobar</filename> contains
|
|
<programlisting>
|
|
[MyGroup][$i]
|
|
Color=blue
|
|
Position=10,10
|
|
</programlisting>
|
|
the result will be
|
|
<programlisting>
|
|
[MyGroup]
|
|
Color=purple
|
|
Shape=rectangle
|
|
Position=10,10
|
|
</programlisting>
|
|
</para>
|
|
</informalexample>
|
|
|
|
|
|
<para>So-called <quote>Shell Expansion</quote> can be used to provide more
|
|
dynamic default values. With shell expansion the value of a configuration
|
|
key can be constructed from the value of an environment variable or from the
|
|
output of a shell command. To enable shell expansion for a configuration
|
|
entry, the key must be followed by <token>[$e]</token>. Normally the
|
|
expanded form is written into the user's configuration file after first use.
|
|
To prevent that, it is recommend to lock the configuration entry down by
|
|
using <token>[$ie]</token>. The user can't change it then of course.</para>
|
|
|
|
<informalexample>
|
|
<para>In the following example the value for the <varname>Host</varname>
|
|
entry is determined by the output of the <command>hostname</command>
|
|
program. This setting is also locked down to ensure that the value is always
|
|
determined dynamically.</para>
|
|
|
|
<para>The value for the <varname>Email</varname> entry is determined by
|
|
filling in the values of the $<envar>USER</envar> and $<envar>HOST</envar>
|
|
environment variables. When <systemitem class="username">joe</systemitem> is
|
|
logged in on <systemitem class="systemname">joes_host</systemitem> this will
|
|
result in a value equal to <literal>joe@joes_host</literal>. The setting is
|
|
not locked down.</para>
|
|
|
|
<programlisting>
|
|
[Mail Settings]
|
|
Host[$ie]=$(hostname)
|
|
Email[$e]=${USER}@${HOST}
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<para>Most configuration entries can be indexed with a language code. In
|
|
this case, the language that the user has selected for use on the desktop is
|
|
used to look up the key value. If the default language (American English)
|
|
has been selected or if there is no index that corresponds to the selected
|
|
language, the key entry without index is used.</para>
|
|
|
|
<informalexample>
|
|
<para>In the following example the value of the <varname>Caption</varname>
|
|
entry depends on the language. If the user has selected French as language
|
|
(language code <literal>fr</literal>) the value of the entry will be
|
|
<quote>Ma Légende</quote>. In all other cases the value <quote>My
|
|
Caption</quote> will be used.</para>
|
|
|
|
<programlisting>
|
|
[Preview Image]
|
|
Caption=My Caption
|
|
Caption[fr]=Ma Légende
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<informalexample>
|
|
<para>In this example the value of the <varname>Caption</varname> entry
|
|
depends on the language. If the user has selected French as language
|
|
(language code <literal>fr</literal>) the value of the entry will be
|
|
<quote>Ma Légende.</quote> In all other cases the value <quote>My
|
|
Caption</quote> will be used.</para>
|
|
|
|
<programlisting>
|
|
[Preview Image]
|
|
Caption=My Caption
|
|
Caption[fr]=Ma Légende
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<para>In general the entries that can appear in a configuration file are not
|
|
documented. With &kde; 3.2 a start has been made to change this. In
|
|
<filename
|
|
class="directory">$<envar>KDEDIR</envar>/share/config.kcfg</filename>, files
|
|
can be found that provide a formal description of the possible entries in a
|
|
configuration file. These are used by the new &kde; Configuration Editor
|
|
when available.</para>
|
|
|
|
<informalexample>
|
|
<para>Here is an example &XML; configuration file:
|
|
<programlisting>
|
|
<markup>
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd">
|
|
<kcfg>
|
|
<kcfgfile name="korganizerrc"/>
|
|
<group name="General">
|
|
<entry type="Bool" key="Auto Save">
|
|
<label>Enable automatic saving of calendar</label>
|
|
<default>true</default>
|
|
</entry>
|
|
<entry type="Int" key="Auto Save Interval">
|
|
<default>10</default>
|
|
</entry>
|
|
</group>
|
|
</kcfg>
|
|
</markup>
|
|
</programlisting>
|
|
</para>
|
|
<para>It has the same effect as:
|
|
<programlisting>
|
|
[General]
|
|
Auto Save=false
|
|
Auto Save Interval=25
|
|
</programlisting>
|
|
</para>
|
|
</informalexample>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="kde-startup-sequence">
|
|
<title>&kde; Startup Sequence</title>
|
|
|
|
<sect2 id="kdm">
|
|
<title>&kdm;</title>
|
|
|
|
<para>Always runs as <systemitem class="username">root</systemitem>! Uses
|
|
<filename>$<envar>KDEDIR</envar>/share/config/kdmrc</filename> and
|
|
<filename>/etc/X11/xdm/Xservers</filename>. The latter contains entries
|
|
like:</para>
|
|
|
|
<programlisting>
|
|
:0 local /usr/X11R6/bin/X :0 vt07
|
|
</programlisting>
|
|
|
|
<para>Relevant startup files are also: </para>
|
|
<simplelist>
|
|
<member>
|
|
[X-*-Core] section in <filename>kdmrc</filename>
|
|
</member>
|
|
<member>
|
|
Setup - <filename>/etc/X11/xdm/Xsetup</filename>
|
|
</member>
|
|
<member>
|
|
User enters username & password
|
|
</member>
|
|
<member>
|
|
Startup - <filename>/etc/X11/xdm/Xstartup</filename> - prepare as root
|
|
</member>
|
|
<member>
|
|
Session - <filename>/etc/X11/xdm/Xsession</filename> - starts session as user
|
|
</member>
|
|
<member>
|
|
= For a KDE session: <command>kde</command> or <command>startkde</command>
|
|
</member>
|
|
<member>
|
|
= If present <filename>~/.xsession</filename> or <filename>~/.xinitrc</filename>
|
|
</member>
|
|
<member>
|
|
Reset - <filename>/etc/X11/xdm/Xreset</filename> - after session finished
|
|
</member>
|
|
</simplelist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="startkde">
|
|
<title>The &kde; Startup Script: <command>startkde</command></title>
|
|
|
|
<para>The &kde; startup sequence starts with the
|
|
<filename>startkde</filename> script. In most cases this script gets called
|
|
from the display manager (&kdm;) once the user has been authenticated. Their
|
|
are two very important lines in the <filename>startkde</filename>
|
|
script:</para>
|
|
|
|
<programlisting>
|
|
LD_BIND_NOW=true kdeinit +kcminit +knotify and kwrapper
|
|
ksmserver $KDEWM
|
|
</programlisting>
|
|
|
|
<para>The first line starts the <command>kdeinit</command> master process.
|
|
The <command>kdeinit</command> master process is used to start all other
|
|
&kde; processes. It show up in the output of <command>ps
|
|
<option>aux</option></command> as <computeroutput>kdeinit:
|
|
Running...</computeroutput>. The arguments after <command>kdeinit</command>
|
|
are the names of additional processes to be started. The <token>+</token>
|
|
indicates that <command>kdeinit</command> needs to wait till the process has
|
|
finished. <command>kdeinit</command> also starts
|
|
<command>dcopserver</command>, <command>klauncher</command> and
|
|
<command>kded</command>.</para>
|
|
|
|
<para>The second of the two lines asks <command>kdeinit</command> to start
|
|
the <command>ksmserver</command> session manager process. The session
|
|
manager determines the lifetime of the session. When this process exits, the
|
|
user is logged out.</para>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="background-processes">
|
|
<title>Background Processes</title>
|
|
|
|
<para>All &kde; background services are user-specific: unlike system daemons
|
|
they are not shared between users. As well as being unique per user they are
|
|
also unique per X-server display. The processes are:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><command>dcopserver</command></term>
|
|
<listitem><para>Desktop communication</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>kded</command></term>
|
|
<listitem><para>Generic service daemon.</para>
|
|
<para>Triggers <link linkend="ksycoca">Sycoca</link> database updates when
|
|
needed</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>kcminit</command></term>
|
|
<listitem><para>Initialization service</para>
|
|
<para>See <xref linkend="kcminit"/> for more information.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>klauncher</command></term>
|
|
<listitem><para>Program launch (this is <emphasis>not</emphasis> the
|
|
<keycombo action="simul">&Alt;<keycap>F2</keycap>
|
|
</keycombo>dialog!)</para>
|
|
<para>See <xref linkend="klauncher"/> for more information.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>knotify</command></term>
|
|
<listitem><para>User notifications.</para>
|
|
<para>See <xref linkend="knotify"/> for more information.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>ksmserver</command></term>
|
|
<listitem><para>Session management</para>
|
|
<para>See <xref linkend="ksmserver"/> for more information.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<sect2 id="kdeinit">
|
|
<title><command>kdeinit</command></title>
|
|
<para><command>kdeinit</command> is used to start all other &kde;
|
|
programs. <command>kdeinit</command> can start normal binary program files
|
|
as well as <command>kdeinit</command> loadable modules
|
|
(<acronym>KLM</acronym>s). <acronym>KLM</acronym>s work just like binary
|
|
program files but can be started more efficiently. <acronym>KLM</acronym>s
|
|
live in <filename
|
|
class="directory">$<envar>KDEDIR</envar>/lib/trinity</filename></para>
|
|
|
|
<para>The drawback is that programs started this way appear as
|
|
<computeroutput><command>kdeinit</command></computeroutput> in the output of
|
|
<command>top</command> and <command>ps</command>. Use <command>top
|
|
<option>-c</option></command> or <command>ps <option>aux</option></command>
|
|
to see the actual program name:</para>
|
|
|
|
<screen>
|
|
<prompt>%</prompt><userinput><command>ps <option>aux</option></command></userinput>
|
|
<computeroutput>
|
|
waba 23184 0.2 2.1 23428 11124 ? S 21:41 0:00 kdeinit: Running...
|
|
waba 23187 0.1 2.1 23200 11124 ? S 21:41 0:00 kdeinit: dcopserver --nosid
|
|
waba 23189 0.2 2.4 25136 12496 ? S 21:41 0:00 kdeinit: klauncher
|
|
waba 23192 0.7 2.8 25596 14772 ? S 21:41 0:00 kdeinit: kded
|
|
waba 23203 0.8 3.4 31516 17892 ? S 21:41 0:00 kdeinit:
|
|
knotify
|
|
</computeroutput>
|
|
</screen>
|
|
|
|
<para><computeroutput>kdeinit: Running...</computeroutput> indicates the
|
|
master <command>kdeinit</command> process. The other processes listed are
|
|
programs started as <acronym>KLM</acronym>s.</para>
|
|
|
|
<para>When <command>kdeinit</command> starts for the first time it will
|
|
launch <command>dcopserver</command>, <command>klauncher</command>, and
|
|
<command>kded</command>, as well as any additional programs specified on its
|
|
command line in the <command>startkde</command> script, normally
|
|
<command>kcminit</command> and <command>knotify</command>.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="dcopserver">
|
|
<title><command>dcopserver</command></title>
|
|
|
|
<para><command>dcopserver</command> is a daemon which provides inter-process
|
|
communication (&DCOP;) facilities to all &kde; applications. The &DCOP;
|
|
facilities are accessible from the command shell via the
|
|
<command>dcop</command> command line tool. &DCOP; is essential for all &kde;
|
|
applications.</para>
|
|
|
|
<para>Some related files:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><filename>$<envar>HOME</envar>/.DCOPserver_$<envar>HOSTNAME</envar>_$<envar>DISPLAY</envar></filename></term>
|
|
<listitem><para>⪚ <filename>.DCOPserver_linux__0</filename>. Controlled by $<envar>DCOPAUTHORITY</envar></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>/tmp/.ICE-unix/dcop<replaceable>pid</replaceable>-<replaceable>number</replaceable></filename></term>
|
|
<listitem><para>⪚ <filename>dcop7634-1069677856</filename>. This is
|
|
the file that the <filename>DCOPserver</filename> file above points to.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>$<envar>HOME</envar>/.ICEauthority</filename></term>
|
|
<listitem><para>Authorization information controlled by
|
|
$<envar>ICEAUTHORITY</envar></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="kcminit">
|
|
<title>kcminit</title>
|
|
|
|
<para><command>kcminit</command> executes initialization services during
|
|
startup. Initialization services are specified in the .desktop files of
|
|
applications or services via the <varname>X-KDE-Init</varname> line:</para>
|
|
|
|
<programlisting>
|
|
[Desktop Entry]
|
|
Encoding=UTF-8
|
|
Exec=kcmshell energy
|
|
Icon=energy_star
|
|
Type=Application
|
|
X-KDE-Library=energy
|
|
X-KDE-Init=energy
|
|
</programlisting>
|
|
|
|
<para>Initialization services are typically used for initializing
|
|
hardware based on user-specified settings.</para>
|
|
|
|
<para><userinput><command>kcminit
|
|
<option>--list</option></command></userinput> can be used to show all
|
|
initialization services and <userinput><command>kcminit
|
|
<replaceable>service</replaceable></command></userinput> can be used to
|
|
execute a single service explicitly. This can be useful when investigating
|
|
startup problems.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="klauncher">
|
|
<title><command>klauncher</command></title>
|
|
|
|
<para><command>klauncher</command> is a daemon which is responsible for
|
|
service activation within &kde;. It operates in close connection with the
|
|
<command>kdeinit</command> master process to start new processes. &kde;
|
|
applications communicate with <command>klauncher</command> over &DCOP; in
|
|
order to start new applications or services.</para>
|
|
|
|
<para>Best known from the error message: <computeroutput><errortext>
|
|
KLauncher could not be reached via DCOP </errortext></computeroutput> which
|
|
either indicates a serious problem with the <command>dcopserver</command> or
|
|
that <command>klauncher</command> crashed.</para>
|
|
|
|
<para><command>klauncher</command> can be restarted by restarting
|
|
<command>kdeinit</command> from a console window. Make sure that
|
|
$<envar>HOME</envar>, $<envar>DISPLAY</envar> and the various
|
|
$<envar>KDEDIR(S)</envar> are set correctly when doing so!</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="knotify">
|
|
<title><command>knotify</command></title>
|
|
|
|
<para>The primary task of <command>knotify</command> is to relay sound
|
|
notifications to the sound server, it also provides alternative notification
|
|
methods.</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="ksmserver">
|
|
<title>KSMServer</title>
|
|
|
|
<para><command>ksmserver</command> is &kde;'s session manager. On startup
|
|
the session manager launches auto-start applications and restores
|
|
applications from the previous session. The applications to auto-start are
|
|
indicated by <literal role="extension">.desktop</literal> files in the
|
|
<filename
|
|
class="directory">$<envar>KDEDIR</envar>/share/autostart</filename>
|
|
directory. Whether or not to auto-start an application can be made
|
|
conditional upon some configuration entry determined by the
|
|
<varname>X-KDE-autostart-condition</varname> entry in the <literal
|
|
role="extension">.desktop</literal> file.</para>
|
|
|
|
<informalexample>
|
|
<para>The <filename>ktip.desktop</filename> file for example
|
|
contains:</para>
|
|
|
|
<programlisting>
|
|
X-KDE-autostart-condition=ktiprc:TipOfDay:RunOnStart:true
|
|
</programlisting>
|
|
|
|
<para>This means that the <filename>ktiprc</filename> configuration
|
|
file is checked for a <varname>RunOnStart</varname> entry in the
|
|
<varname>[TipOfDay]</varname> section. If no such entry is found,
|
|
<literal>true</literal> is assumed, which means that
|
|
<application>ktip</application> is one of the applications that is
|
|
auto-started by default.</para>
|
|
</informalexample>
|
|
|
|
<para>Some of the applications auto-started by <command>ksmserver</command>
|
|
are:</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term><command>kdesktop</command></term>
|
|
<listitem><para>The &kde; desktop</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>&kicker;</command></term>
|
|
<listitem><para>The &kde; panel</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>ktip</command></term>
|
|
<listitem><para>A tip of the day program</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>kwrited</command></term>
|
|
<listitem><para>A utility to receive system messages sent to the user</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>&klipper;</term>
|
|
<listitem><para>A clipboard utility that docks in the panel</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>kalarm</command></term>
|
|
<listitem><para>A utility that warns about upcoming events and appointments</para>
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para><command>kdesktop</command> in its turn automatically starts
|
|
applications stored in <filename
|
|
class="directory">$<envar>KDEHOME</envar>/Autostart</filename>. <command>kdesktop</command>
|
|
will automatically open any files stored in this directory including
|
|
documents, binary files or applications in the form of <literal
|
|
role="extension">.desktop</literal> files.</para>
|
|
|
|
<para>The &kde; session manager also restores one of the previous
|
|
sessions. A session contains a collection of applications as well as
|
|
application-specific information that reflects the state of the applications
|
|
at the time the session was saved. Sessions are stored in the
|
|
<filename>ksmserverrc</filename> configuration file which contains
|
|
references to application-specific state information. The
|
|
application-specific state information is saved in <filename
|
|
class="directory">$<envar>KDEHOME</envar>/share/config/session</filename>.
|
|
The state information of &kwin; contains the location of the application
|
|
windows of all the other applications in the session.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="environment-variables">
|
|
<title>Environment variables</title>
|
|
|
|
<para>Some important environment variables used by &kde;:</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>$<envar>KDEDIR</envar></term>
|
|
<listitem><para>Has to be set if
|
|
<envar>KDEDIRS</envar> is not set and has to point to the root of the
|
|
&kde; installation tree. Allows &kde; to find its data like icons,
|
|
menus and libraries.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDEDIRS</envar></term>
|
|
<listitem><para>Overrides <envar>KDEDIR</envar> and allows you to specify
|
|
multiple directories where &kde; searches for its data. Useful if you want
|
|
or have to install some programs to a different prefix than the rest of
|
|
&kde;.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term><envar>$KDEHOME</envar></term><listitem><para>If
|
|
not set, &kde; uses <filename class="directory">~/.kde</filename> as
|
|
the directory where personal data is stored.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDEROOTHOME</envar></term><listitem><para>If
|
|
not set, &kde; uses <filename class="directory">~root/.kde</filename>
|
|
as the directory for <systemitem class="username">root</systemitem>'s
|
|
personal data. Was introduced to prevent &kde; from accidently
|
|
overwriting user data with root permissions when the user runs a &kde;
|
|
program after switching with <command>su</command> to <systemitem
|
|
class="username">root</systemitem>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDEWM</envar></term><listitem><para>If the
|
|
<envar>KDEWM</envar> environment variable has been set, then it will
|
|
be used as &kde;'s window manager within the
|
|
<command>startkde</command> script instead of &kwin;.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDE_LANG</envar></term><listitem><para>Overrides
|
|
the &kde; language configuration, ⪚ <userinput>KDE_LANG=fr kprogram
|
|
&</userinput> starts a program with French translation if the
|
|
necessary files are installed.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDE_MULTIHEAD</envar></term><listitem><para>Set
|
|
this variable to <literal>true</literal> to indicate that &kde; is running
|
|
on a multi-head system.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDE_FORK_SLAVES</envar></term>
|
|
<listitem><para>(Since &kde; 3.2.3) Set this variable to spawn
|
|
<acronym>KIO</acronym>-slaves directly from the application process
|
|
itself. By default <acronym>KIO</acronym>-slaves are spawned using
|
|
<command>klauncher</command>/<command>kdeinit</command>. This option is
|
|
useful if the <acronym>KIO</acronym>-slave should run in the same
|
|
environment as the application. This can be the case with
|
|
<application>Clearcase</application>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDE_HOME_READONLY</envar></term>
|
|
<listitem><para>Set this variable to indicate that your home directory is
|
|
mounted as read-only.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDE_NO_IPV6</envar></term><listitem><para>
|
|
(Since &kde; 3.2.3) - Set this variable to disable <acronym>IPv6</acronym>
|
|
support and <acronym>IPv6</acronym> <acronym>DNS</acronym>
|
|
lookups.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDE_IS_PRELINKED</envar></term><listitem><para>
|
|
(Since &kde; 3.2) - Set this variable to indicate that you have prelinked
|
|
your &kde; binaries and libraries. This will turn off
|
|
<command>kdeinit</command>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDE_UTF8_FILENAMES</envar></term><listitem><para>If
|
|
this environment variable is set, &kde; assumes all filenames are in
|
|
<acronym>UTF-8</acronym> encoding regardless of the current C
|
|
locale.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>TDE_FULL_SESSION</envar></term><listitem><para>
|
|
(Since &kde; 3.2) Automatically set to true by &kde; startup, it is used
|
|
by ⪚ &konqueror; to know if it should consider remaining in memory
|
|
for future re-use when being closed. If not set, &konqueror; will exit
|
|
after being closed (⪚ &kdesu; does that, it's also useful for
|
|
debugging).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDESYCOCA</envar></term><listitem><para>Allows
|
|
you to specify the path and the name of the generated &kde; system
|
|
configuration cache file.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDETMP</envar></term><listitem><para>Allows
|
|
to specify another path than <filename
|
|
class="directory">/tmp</filename> where &kde; stores its temporary
|
|
files.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>KDEVARTMP</envar></term><listitem><para>Allows
|
|
to specify another path than <filename
|
|
class="directory">/var/tmp</filename> where &kde; stores its variable
|
|
files.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>XDG_DATA_HOME</envar></term><listitem><para>
|
|
(Since &kde; 3.2) Defines the base directory relative to which user-specific
|
|
data files should be stored. Default is <filename
|
|
class="directory">$<envar>HOME</envar>/.local/share</filename></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>XDG_DATA_DIRS</envar></term><listitem><para>
|
|
(Since &kde; 3.2) Defines the preference-ordered set of base directories to
|
|
search for data files in addition to the <filename
|
|
class="directory">$<envar>XDG_DATA_HOME</envar></filename> base
|
|
directory. Default is
|
|
<literal>/usr/local/share/:/usr/share/</literal></para>
|
|
|
|
<para>&kde; adds locations from $<envar>KDEDIRS</envar> and profiles
|
|
as well. Used for <literal role="extension">.desktop</literal> and
|
|
<literal role="extension">.directory</literal> menu files. <literal
|
|
role="extension">.desktop</literal> files under <filename
|
|
class="directory">$<envar>XDG_DATA_DIRS</envar>/applications</filename>.
|
|
<literal
|
|
role="extension">.directory</literal> files under
|
|
$XDG_DATA_DIRS/desktop-directories
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>XDG_CONFIG_HOME</envar></term><listitem><para>
|
|
(&kde; 3.2) - Defines the base directory relative to which user
|
|
specific configuration files should be stored. Default is
|
|
<filename class="directory">$<envar>HOME</envar>/.config</filename>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>$<envar>XDG_CONFIG_DIRS</envar></term><listitem><para>
|
|
(&kde; 3.2) - Defines the preference-ordered set of base directories
|
|
to search for configuration files in addition to the $<envar>XDG_CONFIG_HOME</envar>
|
|
base directory. The default is <filename class="directory">/etc/xdg</filename> &kde; adds locations from
|
|
$<envar>KDEDIRS</envar> and profiles as well. Used by <literal role="extension">.menu</literal> descriptions in
|
|
<filename class="directory">$<envar>XDG_CONFIG_DIRS</envar>/menus</filename>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="the-kdeinit-mystery">
|
|
<title>The kdeinit Mystery</title>
|
|
|
|
<!-- FIXME: Add more words. Fix markup -->
|
|
|
|
<para><command>kdeinit</command> is used to start all other &kde;
|
|
programs. <command>kdeinit</command> can start normal binary program f iles
|
|
as well as <command>kdeinit</command> loadable modules
|
|
(<acronym>KLM</acronym>s). <acronym>KLM</acronym>s work just like binary
|
|
program files but can be started more efficiently. <acronym>KLM</acronym>s
|
|
live in <filename
|
|
class="directory">$<envar>KDEDIR</envar>/lib/trinity</filename></para>
|
|
|
|
<para>The drawback is that programs started this way appear as
|
|
<computeroutput><command>kdeinit</command></computeroutput> in the
|
|
output of <command>top</command> and <command>ps</command>. Use
|
|
<command>top <option>-c</option></command> or <command>ps
|
|
<option>aux</option></command> to see the actual program name:</para>
|
|
|
|
<screen>
|
|
<prompt>%</prompt> <userinput><command>ps aux | grep bastian</command></userinput>
|
|
<computeroutput>
|
|
bastian 26061 0.0 2.2 24284 11492 ? S 21:27 0:00 kdeinit: Running...
|
|
bastian 26064 0.0 2.2 24036 11524 ? S 21:27 0:00 kdeinit: dcopserver
|
|
bastian 26066 0.1 2.5 26056 12988 ? S 21:27 0:00 kdeinit: klauncher
|
|
bastian 26069 0.4 3.2 27356 16744 ? S 21:27 0:00 kdeinit: kded
|
|
bastian 26161 0.2 2.7 25344 14096 ? S 21:27 0:00 kdeinit: ksmserver
|
|
bastian 26179 1.1 3.4 29716 17812 ? S 21:27 0:00 kdeinit: kicker
|
|
bastian 26192 0.4 3.0 26776 15452 ? S 21:27 0:00 kdeinit: klipper
|
|
bastian 26195 1.0 3.5 29200 18368 ? S 21:27 0:00 kdeinit: kdesktop
|
|
</computeroutput>
|
|
</screen>
|
|
<para>As you might have noticed, this has another side effect, making it
|
|
difficult to kill a process that is causing trouble:</para>
|
|
|
|
<screen><prompt>%</prompt> <userinput><command>killall kdesktop</command></userinput>
|
|
<computeroutput>kdesktop: no process killed</computeroutput></screen>
|
|
|
|
<para>You might be tempted to try <userinput><command>killall
|
|
kdeinit</command></userinput>, but killing all kdeinit processes will have
|
|
the effect of shutting down all of &kde;. In effect, total
|
|
destruction!</para>
|
|
|
|
<para>There are two simple solutions to this:</para>
|
|
|
|
<screen><prompt>%</prompt> <userinput><command>kdekillall kdesktop</command></userinput>
|
|
or good old
|
|
<prompt>%</prompt> <userinput><command>kill 26195</command></userinput></screen>
|
|
<para><command>kdekillall</command> is part of the &kde; <acronym>SDK</acronym>
|
|
package.</para>
|
|
|
|
</sect1>
|
|
|
|
</chapter>
|
|
|
|
<chapter id="customizing-kde">
|
|
<title>Customizing &kde;</title>
|
|
|
|
|
|
<sect1 id="desktop-icons">
|
|
<title>Desktop Icons</title>
|
|
|
|
<para>&kde; uses several types of icons:</para>
|
|
<itemizedlist>
|
|
<listitem><para>Documents</para>
|
|
</listitem>
|
|
<listitem><para>Links to Websites (using <literal role="extension">.desktop</literal> file)</para>
|
|
</listitem>
|
|
<listitem><para>Links to Applications (using <literal role="extension">.desktop</literal> file)</para>
|
|
</listitem>
|
|
<listitem><para>Devices - Disks, Partitions & Peripherals:
|
|
<itemizedlist>
|
|
<listitem><para>Explicit using <literal role="extension">.desktop</literal> file</para>
|
|
</listitem>
|
|
<listitem><para>Automatic via devices:// io-slave</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>Vendor-specific (⪚ &SuSE;'s My Computer)</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<sect2 id="desktop-icons-websites">
|
|
<title>Websites</title>
|
|
<para>
|
|
Links to Websites using <literal role="extension">.desktop</literal>
|
|
file: <menuchoice><guimenu>Create
|
|
New</guimenu><guisubmenu>File</guisubmenu><guimenuitem>Link to
|
|
Location (URL)</guimenuitem></menuchoice>. Change Icon using
|
|
<guilabel>Properties</guilabel> dialogs. The resulting <literal
|
|
role="extension">.desktop</literal> file:
|
|
<programlisting>
|
|
[Desktop Entry]
|
|
Encoding=UTF-8
|
|
Icon=/opt/trinity/share/apps/kdesktop/pics/ksslogo.png
|
|
Type=Link
|
|
URL=http://www.kde.org/
|
|
</programlisting>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="desktop-icons-applications">
|
|
<title>Applications</title>
|
|
|
|
<para>Links to Applications using <literal
|
|
role="extension">.desktop</literal> file: <menuchoice><guimenu>Create
|
|
New</guimenu><guisubmenu>File</guisubmenu><guimenuitem>Link to
|
|
Application</guimenuitem></menuchoice>. You must provide details
|
|
yourself. Drag from &kde; Menu: Either copy or link (creates symlink),
|
|
much easier</para>
|
|
|
|
<!-- Perhaps legacy and translated should be the other way around, but -->
|
|
<!-- this is how it appears in Waldo's presentation. Need to check -->
|
|
<!-- this -->
|
|
|
|
<programlisting>
|
|
[Desktop Entry]<co id="boilerplate"/>
|
|
Encoding=UTF-8
|
|
GenericName=IRC Client<co id="generic-desc"/>
|
|
GenericName[af]=Irc Kliët
|
|
GenericName[de]=IRC Programm
|
|
...
|
|
GenericName[zu]=Umthengi we IRC<co id="legacy"/>
|
|
SwallowExec=<co id="translated"/>
|
|
Name=KSirc
|
|
Name[af]=Ksirc
|
|
Name[de]=KSirc
|
|
...
|
|
</programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="boilerplate"><para>Boiler plate</para>
|
|
</callout>
|
|
<callout arearefs="generic-desc"><para>Translated generic description, not used on desktop</para>
|
|
</callout>
|
|
<callout arearefs="legacy"><para>Legacy, can be removed</para>
|
|
</callout>
|
|
<callout arearefs="translated"><para>Translated name as it appears on desktop</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Desktop Icons</para>
|
|
<programlisting>
|
|
...
|
|
Name[zu]=Ksirc
|
|
MimeType=<co id="co-mimetype"/>
|
|
Exec=ksirc %i %m<co id="co-exec"/>
|
|
Icon=ksirc<co id="co-icon"/>
|
|
TerminalOptions=<co id="co-terminaloptions"/>
|
|
Path=<co id="co-path"/>
|
|
Type=Application<co id="co-type"/>
|
|
Terminal=0<co id="co-terminal"/>
|
|
X-KDE-StartupNotify=true<co id="co-x-kde-startupnotify"/>
|
|
X-DCOP-ServiceType=Multi<co id="co-x-dcop-servicetype"/>
|
|
Categories=Qt;KDE;Network<co id="co-categories"/>
|
|
</programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="co-mimetype"><para>Supported &MIME; types, not used on
|
|
desktop</para>
|
|
</callout>
|
|
<callout arearefs="co-exec"><para>The command line to execute</para>
|
|
</callout>
|
|
<callout arearefs="co-icon"><para>The icon, from icon theme or full path</para>
|
|
</callout>
|
|
<callout arearefs="co-terminaloptions"><para>Only used if terminal is
|
|
needed</para>
|
|
</callout>
|
|
<callout arearefs="co-path"><para>Working directory for command</para>
|
|
</callout>
|
|
<callout arearefs="co-type"><para>More boiler plate</para>
|
|
</callout>
|
|
<callout arearefs="co-terminal"><para>Use true if terminal is needed,
|
|
text application</para>
|
|
</callout>
|
|
<callout arearefs="co-x-kde-startupnotify"><para>Show bouncy cursor,
|
|
disable if it doesn't work.</para>
|
|
</callout>
|
|
<callout arearefs="co-x-dcop-servicetype"><para>Has app started ok?
|
|
Remove if it doesn't work</para>
|
|
</callout>
|
|
<callout arearefs="co-categories"><para>Categories for &kde; Menu, not
|
|
used on desktop</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="desktop-icons-exec">
|
|
<title>The <varname>Exec</varname> option in <literal
|
|
role="extension">.desktop</literal> files</title>
|
|
|
|
<para>Following the command, you can have several place holders which will
|
|
be replaced with the actual values when the actual program is run:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>%f</term> <listitem><para>A single file name; used when dropping
|
|
file on icon, or with file associations.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>%F</term>
|
|
<listitem><para>A list of files; use for applications that can
|
|
open several local files at once.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>%u</term>
|
|
<listitem><para>A single &URL;: if the app can
|
|
handle ⪚ &FTP; or &HTTP; &URL;s itself, otherwise &kde;.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>%U</term>
|
|
<listitem><para>A list of
|
|
&URL;s; will download the file first and pass a local file to the app
|
|
(!!)</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>%d</term>
|
|
<listitem><para>The folder of the file to open; useful if app needs to
|
|
have file in current working directory.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>%D</term>
|
|
<listitem><para>A list of folders, not very practical.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>%i</term>
|
|
<listitem><para>The icon; <option>--icon</option> option; &kde; app
|
|
will use icon from <varname>Icon</varname>= line in taskbar.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>%m</term>
|
|
<listitem><para>The mini-icon; legacy.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>%c</term>
|
|
<listitem><para>The caption; <option>--caption</option> option; &kde;
|
|
app will use name from <varname>Name</varname>= line in
|
|
taskbar.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
|
|
<informalexample>
|
|
<para>Examples:
|
|
<segmentedlist>
|
|
<segtitle><varname>Exec</varname> line</segtitle>
|
|
<segtitle>Command executed</segtitle>
|
|
<seglistitem><seg>ksirc %i</seg><seg><command>ksirc --icon ksirc</command></seg>
|
|
</seglistitem>
|
|
<seglistitem><seg>cd %d; kedit $(basename %f)</seg><seg><command>cd /tmp; kedit file.txt</command></seg>
|
|
</seglistitem>
|
|
</segmentedlist>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<!--Dont' know what this refers to: -->
|
|
<!--See What's This (Shift-F1) in Properties Dialog-->
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="desktop-icons-devices">
|
|
<title>Devices</title>
|
|
<para>
|
|
Links to Devices using <literal role="extension">.desktop</literal> file:
|
|
o Create New -> Device
|
|
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="where-to-define">
|
|
<title>Where to Define</title>
|
|
|
|
<para>Many places to define Desktop Icons:
|
|
<itemizedlist>
|
|
|
|
<listitem><para><filename class="directory">~/Desktop</filename>:
|
|
copied from <filename
|
|
class="directory">/etc/skel/Desktop</filename></para></listitem>
|
|
|
|
<listitem><para><filename
|
|
class="directory">$<envar>KDEDIR</envar>/apps/kdesktop/Desktop</filename>
|
|
(merged)</para></listitem>
|
|
|
|
<listitem><para><filename
|
|
class="directory">$<envar>KDEDIR</envar>/apps/kdesktop/DesktopLinks</filename>
|
|
(copied)</para></listitem>
|
|
|
|
<listitem><para>Device Icons (dynamically
|
|
merged)</para></listitem>
|
|
|
|
<listitem><para>Distribution Specific SUSE Linux copies certain icons
|
|
in startkde.theme from <filename
|
|
class="directory">/opt/trinity/share/config/SuSE/default/</filename></para></listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="kde-menu">
|
|
<title>&kde; Menu</title>
|
|
|
|
<sect2 id="how-it-works">
|
|
<title>How it Works</title>
|
|
|
|
<para>In &kde; 3.2 a common menu format is introduced at
|
|
<ulink
|
|
url="http://freedesktop.org/Standards/menu-spec/">http://freedesktop.org/Standards/menu-spec/</ulink></para>
|
|
<para>Before &kde; 3.2:
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Directory structure under <filename
|
|
class="directory">share/applnk</filename></para></listitem>
|
|
|
|
<listitem><para>Directory structure represents menu
|
|
structure</para></listitem>
|
|
|
|
<listitem><para>Each <literal role="extension">.desktop</literal> file
|
|
represents a single application</para></listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>It was difficult to rearrange the structure in &kde; 3.2 so the
|
|
new menu format:
|
|
<itemizedlist>
|
|
<listitem><para>Defines structure in a single .menu file</para></listitem>
|
|
<listitem><para>Is based on categories</para></listitem>
|
|
<listitem><para>is shared between <acronym>GNOME</acronym> and &kde;</para></listitem>
|
|
<listitem><para>Supports applnk style menus as well</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<informalexample>
|
|
<para>Example from <filename>kde-applications.menu</filename>:
|
|
<programlisting>
|
|
<markup>
|
|
<Menu>
|
|
<Name>Office</Name>
|
|
<Directory>suse-office.directory</Directory>
|
|
<Include>
|
|
<Filename>Acrobat Reader.desktop</Filename>
|
|
<Filename>kde-kpresenter.desktop</Filename>
|
|
<Filename>kde-kword.desktop</Filename>
|
|
</Include>
|
|
<Menu>
|
|
</markup>
|
|
</programlisting>
|
|
</para>
|
|
<para>Menu entry with 3 applications:
|
|
<itemizedlist>
|
|
|
|
<listitem><para><filename>/usr/share/applications/Acrobat
|
|
Reader.desktop</filename></para></listitem>
|
|
|
|
<listitem><para><filename>/opt/trinity/share/applications/kde/kpresenter.desktop</filename></para></listitem>
|
|
|
|
<listitem><para><filename>/opt/trinity/share/applications/kde/kword.desktop</filename></para></listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
</informalexample>
|
|
</sect2>
|
|
|
|
<sect2 id="stored-where">
|
|
<title>Stored Where?</title>
|
|
|
|
<para><literal role="extension">.menu</literal> files describing the
|
|
menu structure. The files are stored in <filename
|
|
class="directory">$<envar>KDEDIR</envar>/etc/xdg/menus</filename> and
|
|
<filename class="directory">/etc/xdg/menus</filename>. These store the
|
|
system-wide menu structure and are controlled by
|
|
$<envar>XDG_CONFIG_DIRS</envar>. <filename
|
|
class="directory">$<envar>HOME</envar>/.config/menus</filename> stores
|
|
user-specific changes to the menu structure and is controlled by
|
|
$<envar>XDG_CONFIG_HOME</envar>. For more information, see <ulink
|
|
url="http://www.freedesktop.org/Standards/basedir-spec">http://www.freedesktop.org/Standards/basedir-spec</ulink>.</para>
|
|
|
|
<para><literal role="extension">.desktop</literal> files describe the
|
|
applications and are stored in: <filename
|
|
class="directory">$<envar>KDEDIR</envar>/share/applications</filename>,
|
|
<filename class="directory">/usr/share/applications</filename>,
|
|
<filename
|
|
class="directory">/usr/local/share/applications</filename>. These are
|
|
the system-wide application <literal
|
|
role="extension">.desktop</literal> files which are controlled by
|
|
$<envar>XDG_DATA_DIRS</envar>.</para>
|
|
|
|
<para><filename
|
|
class="directory">$<envar>HOME</envar>/.local/applications</filename>
|
|
contains user-specific <literal role="extension">.desktop</literal>
|
|
files and user-specific changes. It is controlled by
|
|
$<envar>XDG_DATA_HOME</envar>. For more information, see <ulink
|
|
url="http://www.freedesktop.org/Standards/basedir-spec">http://www.freedesktop.org/Standards/basedir-spec</ulink></para>
|
|
|
|
|
|
<para><literal role="extension">.directory</literal> files describing
|
|
the sub-menus are stored in: <filename
|
|
class="directory">$<envar>KDEDIR</envar>/share/desktop-directories</filename>,
|
|
<filename class="directory">/usr/share/desktop-directories</filename>, <filename
|
|
class="directory">/usr/local/share/desktop-directories</filename>.
|
|
These are the system-wide menu <literal
|
|
role="extension">.directory</literal> files, controlled by
|
|
$<envar>XDG_DATA_DIRS</envar>. The user-specific changes are stored in <filename class="directory">$<envar>HOME</envar>/.local/desktop-directories</filename>.
|
|
These are controlled by $<envar>XDG_DATA_HOME</envar>. For more
|
|
information, see <ulink url="http://www.freedesktop.org/Standards/basedir-spec">http://www.freedesktop.org/Standards/basedir-spec</ulink></para>
|
|
|
|
<informalexample>
|
|
<para>Example from <filename>kde-applications.menu</filename>:
|
|
<programlisting>
|
|
<markup>
|
|
<Menu>
|
|
<Name>Art</Name>
|
|
<Directory>suse-edutainment-art.directory</Directory>
|
|
<Include>
|
|
<Category>X-SuSE-Art</Category>
|
|
</Include>
|
|
</Menu>
|
|
</markup>
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para><literal>Art</literal> is the internal name for this
|
|
menu. <filename>suse-edutainment-art.directory</filename> defines the
|
|
name and icon for this menu, and the menu includes all applications
|
|
that have <literal>X-SuSE-Art</literal> listed as a category, ⪚:
|
|
<programlisting>
|
|
Categories=Qt;KDE;Education;X-SuSE-Art
|
|
</programlisting></para>
|
|
|
|
<para><filename>suse-edutainment-art.directory</filename> defines the
|
|
name and icon for this menu:
|
|
<programlisting>
|
|
[Desktop Entry]
|
|
Name=Art and Culture
|
|
Icon=kcmsystem
|
|
</programlisting>
|
|
</para>
|
|
</informalexample>
|
|
</sect2>
|
|
|
|
<sect2 id="common-pitfalls">
|
|
<title>Common Pitfalls</title>
|
|
|
|
<para>Applications <emphasis>not</emphasis> in the menu do
|
|
<emphasis>not</emphasis> exist with regard to other applications or
|
|
file associations: If you remove an application from the menu, &kde; assumes you don't want to use it.</para>
|
|
|
|
<para>When applications are unwanted in the menu, either place them in
|
|
<filename>.hidden</filename> menu or a dedicated menu with
|
|
<programlisting>
|
|
NoDisplay=true
|
|
</programlisting> in the <literal
|
|
role="extension">.directory</literal> file</para>
|
|
</sect2>
|
|
|
|
<sect2 id="essential-menus">
|
|
<title>Essential Menus</title>
|
|
|
|
<para><filename
|
|
class="directory">$<envar>KDEDIR</envar>/etc/xdg/menus/applications-merged/</filename>
|
|
contains <filename>kde-essential.menu</filename> which includes some
|
|
essential menus that are normally not shown in the &kde; menu itself:
|
|
<itemizedlist>
|
|
<listitem><para>Control Center has a hidden Settings menu whose
|
|
contents are defined by <filename>kde-settings.menu</filename> and
|
|
whose icon and name are defined by <filename>kde-settings.directory</filename></para>
|
|
</listitem>
|
|
<listitem><para>Info Center has a hidden Information menu whose
|
|
contents are defined by <filename>kde-information.menu</filename> and
|
|
whose icon and name are defined by <filename>kde-information.directory</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Screensavers contains a hidden System/Screensavers menu,
|
|
whose contents are defined by
|
|
<filename>kde-screensavers.menu</filename> and whose icon and name
|
|
are defined by
|
|
<filename>kde-system-screensavers.directory</filename>.
|
|
<filename>$<envar>KDEDIR</envar>/share/desktop-directories/kde-system-screensavers.directory</filename>
|
|
contains:
|
|
<programlisting>
|
|
NoDisplay=true
|
|
</programlisting>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist></para>
|
|
</sect2>
|
|
|
|
<sect2 id="old-style-menus">
|
|
<title>Old-Style Menus</title>
|
|
|
|
<para>&kde; continues to support old-style menus that are defined by
|
|
the directory structures in <filename
|
|
class="directory">$<envar>KDEDIR</envar>/share/applnk</filename>
|
|
(system wide) and <filename
|
|
class="directory">$<envar>HOME</envar>/.kde/share/applnk</filename>
|
|
(user specific). This is observed unless the <literal role="extension">.desktop</literal> file has a <varname>Categories</varname>= line. In that case the categories determine the location in the menu.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="ksycoca">
|
|
<title><application>KSycoca</application></title>
|
|
<para><application>KSycoca</application> caches menu structure and
|
|
information about all available applications. You can rebuild the
|
|
database with
|
|
<userinput><command>kbuildsycoca</command></userinput>. The database
|
|
which is built lives in <filename
|
|
class="directory">/var/tmp/kdecache-${<envar>USER</envar>}/ksycoca</filename>.
|
|
It is automatically updated by <application>KDED</application>,
|
|
checked during &kde; login, and <application>KDED</application>
|
|
watches for changes while logged in.</para>
|
|
|
|
<para>To disable watching for changes (since it may hurt over NFS) add
|
|
the following to <filename>kdedrc</filename>:
|
|
<programlisting>
|
|
[General]
|
|
CheckSycoca=false
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>To force regeneration, run <userinput><command>touch $<envar>KDEDIR</envar>/share/services/update_ksycoca</command></userinput>.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="kmenuedit">
|
|
<title>&kmenuedit;</title>
|
|
|
|
<para>&kmenuedit; is aimed at a single user setup. Changes to menu
|
|
structure are saved to
|
|
<filename>~/.config/menus/applications-kmenuedit.menu</filename>,
|
|
changes to applications are saved in <filename
|
|
class="directory">~/.local/share/applications/</filename> and changes
|
|
to sub-menus (icon, name) are saved in <filename
|
|
class="directory">~/.local/share/desktop-directories/</filename>. The
|
|
KIOSK Admin Tool uses &kmenuedit; and copies the above changes to
|
|
profile- or system-wide locations.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<!-- This section might be redundant. If it isn't, it needs some screenies -->
|
|
<sect1 id="kde-panel">
|
|
<title>&kde; Panel</title>
|
|
|
|
<para>The &kde; panel is also known as &kicker;. It is modular and
|
|
consists of the following components:
|
|
<itemizedlist>
|
|
<listitem><para>Applets</para></listitem>
|
|
<listitem><para>Application buttons</para></listitem>
|
|
<listitem><para>Special Buttons</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>By default, the panel contains the following applets:
|
|
<itemizedlist>
|
|
<listitem><para>Pager - shows the virtual desktops</para></listitem>
|
|
<listitem><para>Taskbar</para></listitem>
|
|
<listitem><para>System Tray</para></listitem>
|
|
<listitem><para>Clock</para></listitem>
|
|
</itemizedlist>
|
|
and the following special buttons:
|
|
<itemizedlist>
|
|
<listitem><para>&kde; menu</para></listitem>
|
|
<listitem><para>Desktop Button</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>Various application buttons are also added, space permitting:
|
|
<itemizedlist>
|
|
<listitem><para>Home Button</para></listitem>
|
|
<listitem><para>Browser Button</para></listitem>
|
|
<listitem><para>KMail Button</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="file-associations">
|
|
<title>File Associations</title>
|
|
|
|
<para>File associations associate a file type with an application or
|
|
applications. The type of a file is established by determining its
|
|
&MIME; type. &MIME; types known by &kde; are stored in <filename
|
|
class="directory">$<envar>KDEDIR</envar>/share/mimelnk</filename> and
|
|
each application's <literal role="extension">.desktop</literal> file
|
|
contains a list of &MIME; types supported by that application.</para>
|
|
|
|
<informalexample>
|
|
<para><filename>kview.desktop</filename>:
|
|
<programlisting>
|
|
MimeType=image/gif;image/x-xpm;image/x-xbm;image/jpeg;
|
|
image/x-bmp;image/png;image/x-ico;image/x-portable-bitmap;
|
|
image/x-portable-pixmap;image/x-portable-greymap;
|
|
image/tiff;image/jp2
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para><filename>kuickshow.desktop</filename>:
|
|
<programlisting>
|
|
MimeType=image/gif;image/x-xpm;image/x-xbm;image/jpeg;
|
|
image/png;image/tiff;image/x-bmp;image/x-psd;image/x-eim;
|
|
image/x-portable-bitmap;image/x-portable-pixmap;
|
|
image/x-portable-greymap
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>Both can open image/gif Which one is used to open a <literal role="extension">.gif</literal> file?</para>
|
|
|
|
<para>The application with highest
|
|
preference!. <filename>kview.desktop</filename> contains
|
|
<programlisting>
|
|
InitialPreference=3
|
|
</programlisting>
|
|
whereas <filename>kuickshow.desktop</filename> contains
|
|
<programlisting>
|
|
InitialPreference=6
|
|
</programlisting>
|
|
Therefore, &kuickshow; will be used to open <literal
|
|
role="extension">.gif</literal> files.
|
|
</para>
|
|
|
|
<para>How can we make &kview; default?</para>
|
|
|
|
<para>A user can change file association in the
|
|
&kcontrolcenter;. These changes are stored in
|
|
<filename>$<envar>HOME</envar>/.kde/share/config/profilerc</filename>.
|
|
To use the same settings for multiple users, store these settings in
|
|
user profile directory or the global &kde; config directory to use as
|
|
default for multiple users.</para>
|
|
|
|
</informalexample>
|
|
|
|
</sect1>
|
|
|
|
</chapter>
|
|
|
|
<chapter id="locking-down-kde">
|
|
<title>Locking Down &kde;</title>
|
|
|
|
<sect1 id="how-it-works-the-basics">
|
|
<title>How It Works - The Basics</title>
|
|
|
|
<para>&kde;'s lock down features are centered around the following
|
|
options:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para><link linkend="immutable-configuration-options">Make
|
|
configuration options immutable</link></para></listitem>
|
|
<listitem><para><link linkend="action-restrictions">Restriction of specific
|
|
actions</link></para></listitem>
|
|
<listitem><para><link linkend="url-restrictions">Restrict access to certain
|
|
&URL;s</link></para></listitem>
|
|
<listitem><para><link linkend="configuration-modules">Restrict access to
|
|
certain configuration modules</link></para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="immutable-configuration-options">
|
|
<title>Immutable Configuration Options</title>
|
|
<subtitle>Locking Down &kde;</subtitle>
|
|
|
|
<para>Immutable options allow system administrator to provide default
|
|
settings that can not be changed by the user.</para>
|
|
|
|
<para>Pre-existing configuration options of the user will be ignored once a
|
|
configuration option is made immutable.</para>
|
|
|
|
<para>Options can be controlled either on a per entry basis, per group of
|
|
entries or on a file by file basis.</para>
|
|
|
|
<para>If a file or group is immutable, all configuration options for that
|
|
file or group are immutable, even those options for which the system
|
|
administrator has no default provided.</para>
|
|
|
|
<note><para>The support in applications for immutable options may vary from
|
|
application to application. Although the user will not be able to make
|
|
permanent changes to immutable configuration options, the user may still be
|
|
presented with an user interface option to make such change.</para></note>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="action-restrictions">
|
|
<title>Action Restrictions</title>
|
|
|
|
<para>&kde; applications are built around the action-concept. Actions can be
|
|
activated in various ways, typically via the menu-bar, one of the toolbars
|
|
or a keyboard shortcut. <action>Save Document</action> is an example of an
|
|
action. If you know the internal action name it is possible to restrict an
|
|
action. When an action is restricted it will no longer appear in the
|
|
menu-bar or toolbar. The internal name for the <action>Save
|
|
Document</action> action is <option>action/file_save</option>. The lock
|
|
down framework also provides a set of more abstract restrictions which can
|
|
be used to disable functionality not covered by a single action. An example
|
|
is the <option>shell_access</option> restriction which disables all
|
|
functionality that would offer the user access to a &UNIX; shell.</para>
|
|
|
|
<example>
|
|
<title>Restrict User Access to Shells</title>
|
|
|
|
<para>In order to prevent the user access to a command shell we can restrict
|
|
the <option>shell_access</option> action by adding the following to
|
|
<filename>kdeglobals</filename>:
|
|
</para>
|
|
|
|
<screen>[KDE Action Restrictions]
|
|
shell_access=false</screen>
|
|
|
|
<para>Since this affects the &kde; menu and the available applications, we
|
|
must force an update of the sycoca database:</para>
|
|
|
|
<screen><userinput><command>touch</command> <filename>$<envar>KDEDIR</envar>/share/services/update_ksycoca</filename></userinput></screen>
|
|
|
|
<para>Now re-login to &kde; and check the following points:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>The &kmenu;</para></listitem>
|
|
<listitem><para>In &konqueror;,
|
|
<menuchoice><guimenu>Tools</guimenu><guimenuitem>Open
|
|
Terminal</guimenuitem></menuchoice></para></listitem>
|
|
<listitem><para>The <keycombo
|
|
action="simul">&Alt;<keycap>F2</keycap></keycombo> run
|
|
command</para></listitem>
|
|
</itemizedlist>
|
|
</example>
|
|
<para>Full documentation about available actions can be found on <ulink
|
|
url="http://www.kde.org/areas/sysadmin/">http://www.kde.org/areas/sysadmin/</ulink>.</para>
|
|
|
|
<para>A few of the more interesting actions are listed below:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><option>action/options_configure</option></term>
|
|
<listitem><para>The <guimenuitem>Configure</guimenuitem> option form the
|
|
<guimenu>Settings</guimenu> menu</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>action/help_report_bug</option></term>
|
|
<listitem><para>The <guimenuitem>Report Bug</guimenuitem> option from the
|
|
<guimenu>Help</guimenu> menu.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>action/kdesktop_rmb</option></term>
|
|
<listitem><para>&RMB; mouse button menu on the desktop.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>action/kicker_rmb</option></term>
|
|
<listitem><para>&RMB; mouse button menu on the panel.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>user/root</option></term>
|
|
<listitem><para>Hide all actions or applications that require <systemitem
|
|
class="username">root</systemitem> access.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>shell_access</option></term>
|
|
<listitem><para>Hides all actions or applications that provide shell
|
|
access.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>print/system</option></term>
|
|
<listitem><para>Disables the option to select the printing system
|
|
(backend).</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>lock_screen</option></term>
|
|
<listitem><para>Whether the user will be able to lock the
|
|
screen</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>start_new_session</option></term>
|
|
<listitem><para>Whether the user may start a second X session (see also
|
|
&kdm;)</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>opengl_screensavers</option></term>
|
|
<listitem><para>Whether OpenGL screensavers are allowed to be
|
|
used.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>manipulatescreen_screensavers</option></term>
|
|
<listitem><para>Permit screensavers that do not hide the entire
|
|
screen</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="url-restrictions">
|
|
<title>&URL; Restrictions</title>
|
|
|
|
<para>There are three types of restrictions that can be applied to
|
|
&URL;s:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>list</term>
|
|
<listitem><para>To control whether a directory listing is
|
|
allowed.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>open</term>
|
|
<listitem><para>To control whether certain &URL;s can be
|
|
opened</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>Redirect</term>
|
|
<listitem><para>To control whether one &URL; can open another &URL;, either
|
|
automatically or via a hyperlink.</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Rules are checked in the order in which they are defined. The last
|
|
rule that is applicable to a &URL; defines whether the &URL; may be
|
|
accessed.</para>
|
|
|
|
<para>The following rules disable opening http and https &URL;s outside
|
|
<systemitem class="domainname">.ourcompany.com</systemitem>:</para>
|
|
|
|
<screenco><areaspec>
|
|
<area id="url_commas" coords="3"/>
|
|
<area id="url_rule1" coords="3"/>
|
|
<area id="url_rule2" coords="4"/>
|
|
</areaspec>
|
|
<screen>[KDE URL Restrictions]
|
|
rule_count=2
|
|
rule_1=open,,,,http,,,false
|
|
rule_2=open,,,,http,*.ourcompany.com,,true</screen></screenco>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="url_commas">
|
|
<para>The first four commas skip over the selection criteria with respect to
|
|
the originating &URL;. This part is only needed with redirect type
|
|
rules.</para>
|
|
</callout>
|
|
<callout arearefs="url_rule1"><para><option>rule_1</option> forbids the
|
|
opening of any http or https &URL;</para></callout>
|
|
<callout arearefs="url_rule2"><para><option>rule_2</option> allows the
|
|
opening of any http and https &URL; in the <systemitem
|
|
class="domainname">.ourcompany.com</systemitem> domain. Note the wildcard
|
|
<token>*</token> is only allowed at the start of a domain.</para></callout>
|
|
</calloutlist>
|
|
|
|
<para>The following rules makes that the user can no longer browse
|
|
directories on the local file system that are outside his
|
|
$<envar>HOME</envar> directory:</para>
|
|
|
|
<screenco><areaspec>
|
|
<area id="home_rule1" coords="3"/>
|
|
<area id="home_rule2" coords="4"/>
|
|
</areaspec>
|
|
<screen>[KDE URL Restrictions]
|
|
rule_count=2
|
|
rule_1=list,,,,file,,,false
|
|
rule_2=list,,,,file,,$HOME,true</screen></screenco>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="home_rule1"><para><option>rule_1</option> forbids the
|
|
listing of any local directory</para></callout>
|
|
<callout arearefs="home_rule2"><para><option>rule_2</option> allows listing
|
|
directories under the users own $<envar>HOME</envar>
|
|
directory.</para></callout>
|
|
</calloutlist>
|
|
|
|
<para>$<envar>HOME</envar> and $<envar>TMP</envar> are special values to
|
|
indicate the users home directory and the &kde; temporary directory of the
|
|
user, ⪚ <filename class="directory">/tmp/kde-bastian</filename></para>
|
|
|
|
<para>The following rules makes that the user can no longer open local files
|
|
that are outside his $<envar>HOME</envar> directory:</para>
|
|
|
|
<screenco><areaspec>
|
|
<area id="local_rule1" coords="3"/>
|
|
<area id="local_rule2" coords="4"/>
|
|
<area id="local_rule3" coords="5"/>
|
|
</areaspec>
|
|
<screen>[KDE URL Restrictions]
|
|
rule_count=3
|
|
rule_1=open,,,,file,,,false
|
|
rule_2=open,,,,file,,$HOME,true
|
|
rule_3=open,,,,file,,$TMP,true</screen></screenco>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="local_rule1"><para><option>rule_1</option> forbids the
|
|
opening of any local file</para></callout>
|
|
<callout arearefs="local_rule2"><para><option>rule_2</option> allows opening
|
|
files under the users own $<envar>HOME</envar> directory.</para></callout>
|
|
<callout arearefs="local_rule3"><para><option>rule_3</option> allows opening
|
|
files in the &kde; temporary directory of the user. This is needed by
|
|
certain &kde; applications that first download a file or document to the
|
|
temporary directory and then open it in an application.</para></callout>
|
|
</calloutlist>
|
|
|
|
|
|
<para>The redirection option controls whether documents from a certain
|
|
location can refer, either automatically or manually via a hyperlink, to a
|
|
certain other location. A set of default rules is present as a general
|
|
security measure. For example documents located on the Internet may not
|
|
refer to locally stored documents.</para>
|
|
|
|
<para>For example, if we want to give the intranet-server <systemitem
|
|
class="systemname">www.mycompany.com</systemitem> the possibility to refer
|
|
to local files we could add the following rule:</para>
|
|
|
|
<screen>[KDE URL Restrictions]
|
|
rule_count=1
|
|
rule_1=redirect,http,www.mycompany.com,,file,,,true</screen>
|
|
|
|
<para>Instead of listing a protocol by name, it is also possible to specify
|
|
a whole group of protocols. For that the following groups have been
|
|
defined:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>:local</term>
|
|
<listitem><para>Protocols that access locally stored information, examples
|
|
are file:/, man:/, fonts:/, floppy:/</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>:internet</term>
|
|
<listitem><para>Common internet protocols such as http and
|
|
ftp</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Information about protocols is stored in <literal
|
|
role="extension">*.protocol</literal> files stored in
|
|
<filename
|
|
class="directory">$<envar>KDEDIR</envar>/share/services</filename>.</para>
|
|
|
|
<para>The <option>Class</option>= entry defines the group a protocol is part
|
|
of:
|
|
<userinput><command>grep</command> <option>Class=</option>
|
|
<filename>$<envar>KDEDIR</envar>/share/services/*.protocol</filename></userinput></para>
|
|
|
|
<para>General rules:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>The :local protocols may refer to any other
|
|
protocol</para></listitem>
|
|
<listitem><para>It's always allowed to refer to an :internet
|
|
protocol</para></listitem>
|
|
<listitem><para>Not all protocols are part of a group, fish:/ for
|
|
example.</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="configuration-modules">
|
|
<title>Configuration Modules</title>
|
|
|
|
<para>&kde; has configuration modules to configure various aspects of the
|
|
&kde; environment. Configuration modules appear in the Control Center, in the
|
|
Configuration dialog of an application or in both.</para>
|
|
|
|
<informalexample>
|
|
<para>The proxy configuration module appears in the Control Center but also
|
|
as part of the <guilabel>Configure Konqueror</guilabel> dialog in
|
|
&konqueror;</para>
|
|
|
|
<para>Individual configuration modules can be started with
|
|
<command>kcmshell</command> <replaceable>module</replaceable></para>
|
|
|
|
<para>To start the Proxy module use:</para>
|
|
<itemizedlist>
|
|
<listitem><para><command>kcmshell</command>
|
|
<filename>kde-proxy.desktop</filename></para></listitem>
|
|
<listitem><para><command>kcmshell</command> proxy</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para><note><para>Not all applications use configuration modules, often the
|
|
configuration dialog is an integral part of the application
|
|
itself.</para></note></para>
|
|
</informalexample>
|
|
|
|
<para>All configuration modules are strictly speaking part of the &kde;
|
|
menu.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The modules that are visible in the Control Center normally
|
|
have a <literal role="extension">.desktop</literal> file in <filename
|
|
class="directory">$<envar>KDEDIR</envar>/share/applications/kde</filename>
|
|
and are sorted under the hidden <guimenu>Settings-Modules</guimenu> menu by
|
|
the <filename>kde-settings.menu</filename>, included from
|
|
<filename>kde-essential.menu</filename></para>
|
|
<screen><userinput><command>kbuildsycoca</command> <option>--menutest</option> 2> /dev/null | <command>grep</command> Settings-Modules</userinput></screen>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Application specific modules normally have a <literal role="extension">.desktop</literal> file under
|
|
<filename>$<envar>KDEDIR</envar>/share/applnk/.hidden</filename> which
|
|
corresponds to the hidden .hidden menu, included as a result of
|
|
<markup><KDELegacyDirs/></markup></para>
|
|
<screen><userinput><command>kbuildsycoca</command> <option>--menutest</option> 2> /dev/null | <command>grep</command> .hidden</userinput></screen>
|
|
</listitem>
|
|
<listitem><para>In &kde; 3.3 it is possible to edit the Control Center with
|
|
<application>kcontroledit</application>.
|
|
<application>kcontroledit</application> works just like
|
|
<application>kmenuedit</application>, changes for current user only. Use
|
|
<application>kiosktool</application> to make changes for
|
|
everyone.</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Individual configuration modules can be disables by adding the
|
|
following to <filename>kdeglobals</filename>:</para>
|
|
|
|
<screen>[KDE Control Module Restrictions]
|
|
<replaceable>module-id</replaceable>=false</screen>
|
|
<para>For example, to disable the proxy module use</para>
|
|
<screen>[KDE Control Module Restrictions]
|
|
kde-proxy.desktop=false</screen>
|
|
<para>Check the Control Center and the <guilabel>Configure
|
|
Konqueror</guilabel> dialog if the proxy configuration is still
|
|
there.</para>
|
|
|
|
</sect1>
|
|
<!--
|
|
<sect1 id="making-it-work">
|
|
<title>Making it Work</title>
|
|
|
|
Making It Work
|
|
KDE 3.2: Set $KDEDIRS from startkde script
|
|
Distribute profiles to all clients
|
|
|
|
</para>
|
|
</sect1>
|
|
-->
|
|
</chapter>
|
|
|
|
<chapter id="the-lazy-admin">
|
|
<title>The Lazy Admin</title>
|
|
|
|
<!-- This section appears to need quite a lot of additional words to -->
|
|
<!-- make sense. Perhaps it would be better to comment it out if it -->
|
|
<!-- can't be updated before the next release (Phil) -->
|
|
<!-- FIXME: Commented it out until it's got some more content fleshing it -->
|
|
<!-- out (Lauri)
|
|
|
|
<sect1 id="lazy-admin-overview">
|
|
<title>Overview</title>
|
|
|
|
<para>
|
|
The Lazy Admin
|
|
Overview
|
|
Deployment
|
|
How to get &kde; available on many clients
|
|
Remote Desktop Sharing
|
|
Take a look at someone else desktop
|
|
DCOP
|
|
The DCOP command line tool makes it possible to control &kde; applications from the command line
|
|
KDialog
|
|
A versatile tool to use standard &kde; dialogs in your own scripts
|
|
|
|
|
|
|
|
Deployment
|
|
Thin Clients
|
|
Installing Software
|
|
= AutoYaST
|
|
= KickStart
|
|
Maintaining Settings
|
|
= /etc/kderc, other settings
|
|
= Use rsync to copy files around
|
|
= Shared filesystem such as NFS
|
|
o store profiles themselves on NFS
|
|
|
|
|
|
|
|
http://www.suse.de/~nashif/autoinstall/index.html
|
|
|
|
</para>
|
|
</sect1>
|
|
-->
|
|
<sect1 id="remote-desktop-sharing">
|
|
<title>Remote Desktop Sharing</title>
|
|
|
|
<para>Remote desktop sharing allows remote users to view and optionally
|
|
control the desktop of the current user. The remote user needs to be sent
|
|
an invitation, and it is possible to create a password protected standing
|
|
invitation. This is ideal for tech support teams or administrators to gain
|
|
access to users desktops in order to troubleshoot or remedy a problem or
|
|
guide a user through a procedure.</para>
|
|
|
|
<para>Remote desktop sharing involves two applications: &krfb; (&kde; remote
|
|
frame buffer, a VNC server) and &krdc; (&kde; remote desktop connection; a
|
|
VNC client.)</para>
|
|
|
|
<para>&krfb; can be used by any user to create and manage invitations.
|
|
Invitations create a one time password that allows the recipient to connect
|
|
to your desktop. By default it is valid for only one successful connection,
|
|
and expires after one hour if not used.</para>
|
|
|
|
<para>Incoming connections are handled by the kinetd kded module. You can
|
|
use the command <userinput><command>dcop</command> kded kinetd
|
|
services</userinput> to see if it is running. &krfb; waits for connections
|
|
on port 5900 by default. When an incoming connection is made, a dialog will
|
|
appear to ask for confirmation by the current user.</para>
|
|
|
|
<!-- TODO: Write a bit more here, with a walk through maybe? -->
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="kde-diy">
|
|
<title>&kde; DIY - Building Your Own Tools</title>
|
|
|
|
<sect2 id="dcop">
|
|
<title>DCOP</title>
|
|
|
|
<para>
|
|
Desktop COmmunication Protocol, <acronym>DCOP</acronym>, is a lightweight mechanism for inter-process communication.
|
|
<acronym>DCOP</acronym> allows the user to interact with programs that are currently running.
|
|
&kde; supplies two programs to utilitize <acronym>DCOP</acronym>:
|
|
<application>dcop</application>, a command-line program, and
|
|
<application>kdcop</application>, a <acronym>GUI</acronym> program.
|
|
</para>
|
|
<para>
|
|
A few notes about using <command>dcop</command>:
|
|
</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<command>dcop</command> [options] [application [object [function [arg1] [arg2] ... ] ] ]
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Applications that can open more than one window at a time will be listed as
|
|
<application>-<acronym>PID</acronym>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
All the arguments are case-sensitve. setFullScreen and setfullscreen are two different functions.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
The regular expression token * can be used in the application and object arguments.
|
|
<screen><prompt>% </prompt><userinput><command>dcop</command><option> kon*</option></userinput>
|
|
konqueror-16006
|
|
konsole-8954
|
|
</screen>
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</para>
|
|
|
|
<para>Some example commands and their output are below:
|
|
</para>
|
|
|
|
<informalexample>
|
|
<screen><prompt>% </prompt><userinput><command>dcop</command><option> konsole*</option></userinput>
|
|
konsole-8954
|
|
</screen>
|
|
<para>One &konsole; is running with a <acronym>PID</acronym> of 8954.</para>
|
|
|
|
<screen><prompt>% </prompt><userinput><command>dcop</command><option> konsole-8954</option></userinput>
|
|
KBookmarkManager-.../share/apps/kfile/bookmarks.xml
|
|
KBookmarkManager-.../share/apps/konqueror/bookmarks.xml
|
|
KBookmarkNotifier
|
|
KDebug
|
|
MainApplication-Interface
|
|
konsole (default)
|
|
konsole-mainwindow#1
|
|
ksycoca
|
|
session-1
|
|
session-2
|
|
session-3
|
|
session-4
|
|
</screen>
|
|
<para>Here you see that there are four sessions running.</para>
|
|
|
|
<screen><prompt>% </prompt><userinput><command>dcop</command><option> konsole-8954</option><option> konsole</option></userinput>
|
|
QCStringList interfaces()
|
|
QCStringList functions()
|
|
int sessionCount()
|
|
QString currentSession()
|
|
QString newSession()
|
|
QString newSession(QString type)
|
|
QString sessionId(int position)
|
|
void activateSession(QString sessionId)
|
|
void nextSession()
|
|
void prevSession()
|
|
void moveSessionLeft()
|
|
void moveSessionRight()
|
|
bool fullScreen()
|
|
void setFullScreen(bool on)
|
|
ASYNC reparseConfiguration()
|
|
</screen>
|
|
<para>Here are the options for the main &konsole; program.
|
|
</para>
|
|
|
|
<screen><prompt>% </prompt><userinput><command>dcop</command><option> konsole-8954</option><option> session-1</option></userinput>
|
|
QCStringList interfaces()
|
|
QCStringList functions()
|
|
bool closeSession()
|
|
bool sendSignal(int signal)
|
|
void clearHistory()
|
|
void renameSession(QString name)
|
|
QString sessionName()
|
|
int sessionPID()
|
|
QString schema()
|
|
void setSchema(QString schema)
|
|
QString encoding()
|
|
void setEncoding(QString encoding)
|
|
QString keytab()
|
|
void setKeytab(QString keyboard)
|
|
QSize size()
|
|
void setSize(QSize size)
|
|
</screen>
|
|
<para>Here are the options for the first session, session-1.</para>
|
|
|
|
<screen><prompt>% </prompt><userinput><command>dcop</command><option> konsole-8954</option><option> konsole</option><option> setFullScreen</option><parameter> true</parameter></userinput>
|
|
</screen>
|
|
<para>This sets &konsole; to full screen.</para>
|
|
|
|
</informalexample>
|
|
|
|
<para>
|
|
When there is more than one application/object, which one should you use?
|
|
Got a reference?
|
|
</para>
|
|
<screen><prompt>% </prompt><userinput><command>echo</command><option> $KONSOLE_DCOP</option></userinput>
|
|
DCOPRef(konsole-7547,konsole)
|
|
|
|
<prompt>% </prompt><userinput><command>dcop</command><option> $KONSOLE_DCOP</option><option> newSession</option></userinput>
|
|
session-6
|
|
|
|
<prompt>% </prompt><userinput><command>dcopstart</command><option> konsole</option></userinput>
|
|
konsole-9058
|
|
|
|
|
|
#!/bin/sh
|
|
konsole=$(dcopstart konsole-script)
|
|
session=$(dcop $konsole konsole currentSession)
|
|
dcop $konsole $session renameSession Local
|
|
|
|
session=$(dcop $konsole konsole newSession)
|
|
dcop $konsole $session renameSession Remote
|
|
|
|
session=$(dcop $konsole konsole newSession)
|
|
dcop $konsole $session renameSession Code
|
|
dcop $konsole $session sendSession 'cd /my/work/directory'
|
|
|
|
</screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="kdialog">
|
|
<title>KDialog</title>
|
|
<subtitle>&kde; DIY - Building Your Own Tools</subtitle>
|
|
|
|
<para>You can use &kde; dialogs from your own scripts, to combine the power
|
|
of &UNIX; shell scripting with the ease of use of &kde;.</para>
|
|
|
|
<screen><userinput><command>kdialog</command> <option>--msgbox 'You have new mail!'</option></userinput></screen>
|
|
|
|
<screen><userinput><command>kdialog</command> <option>--title 'New Mail'</option> <option>--msgbox 'You have new mail!'</option></userinput></screen>
|
|
|
|
<para>The <application>KDialog</application> part can be replaced via
|
|
<option>--caption</option> option</para>
|
|
|
|
<screen><userinput><command>kdialog</command> <option>--title 'New Mail'</option> <option>--msgbox 'You have new mail!'</option> <option>--dontagain myfile:mykey</option></userinput></screen>
|
|
|
|
<para>Saves whether to show again in
|
|
<filename>$<envar>KDEHOME</envar>/share/config/myfile</filename> (by writing
|
|
into this file the following lines:</para>
|
|
|
|
<screen>[Notification Messages]
|
|
mykey=false</screen>
|
|
|
|
<para>Instead of <option>--msgbox</option> you can also use
|
|
<option>--sorry</option> and <option>--error</option>, as appropriate. For
|
|
instance, you might use <command>kdialog</command> <option>--sorry 'The
|
|
network can not be reached'</option> or <command>kdialog</command>
|
|
<option>--error 'Mail box can not be opened'</option>.</para>
|
|
|
|
<para>It is also possible to create message boxes that accept a yes or no
|
|
answer.</para>
|
|
|
|
<screen><command>kdialog</command> <option>--yesno 'Do you want to connect
|
|
to the Internet?'</option> <command>echo</command> <returnvalue>$?</returnvalue></screen>
|
|
|
|
<informaltable>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Return Value</entry>
|
|
<entry>Meaning</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row><entry>0</entry><entry>Yes, OK, Continue</entry></row>
|
|
<row><entry>1</entry><entry>No</entry></row>
|
|
<row><entry>2</entry><entry>Cancel</entry></row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Make sure to store the result in a variable if you do not use it
|
|
directly, the next command will fill $? with a new value You can use
|
|
<option>--dontagain</option> here as well, it will remember the users choice
|
|
and returns it the next times without showing the dialog any more.</para>
|
|
|
|
<para>Further variations are:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><option>--warningyesno</option></term>
|
|
<listitem>
|
|
<para>like <option>--yesno</option> but with a different
|
|
icon</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>--warningcontinuecancel</option></term>
|
|
<listitem><para>With <guibutton>Continue</guibutton> and
|
|
<guibutton>Cancel</guibutton> buttons.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>--warningyesnocancel</option></term>
|
|
<listitem><para>With <guibutton>Yes</guibutton>, <guibutton>No</guibutton>
|
|
and <guibutton>Cancel</guibutton> button. For example:</para>
|
|
<screen><command>kdialog</command> <option>--warningyesnocancel 'Do you want
|
|
to save the changes?'</option></screen>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<screen><command>kdialog</command> <option>--inputbox "Enter your name:" "YourName"</option></screen>
|
|
|
|
<para>The result is printed to stdout, to put it in a variable you can use
|
|
<userinput>name=$(kdialog --inputbox "Enter your name:"
|
|
"YourName")</userinput>. The last argument is optional, it is used to
|
|
pre-fill the dialog.</para>
|
|
|
|
<screen><userinput><varname>password</varname>=$(<command>kdialog</command> <option>--password "Enter your password:"</option>)</userinput></screen>
|
|
|
|
<para>The <option>--dontagain</option> option does not work with
|
|
<option>--inputbox</option> or <option>--password</option></para>
|
|
|
|
<para>There are two dialogs that let the user make a choice from a
|
|
list:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><option>--menu</option></term>
|
|
<listitem>
|
|
<para>Lets the user select a single item from a list.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><option>--checklist</option></term>
|
|
<listitem>
|
|
<para>Lets the user select one or more items from a list.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<screen><userinput><varname>city</varname>=$(<command>kdialog</command> <option>--menu "Select a city" a London b Madrid c Paris d Berlin</option>)</userinput></screen>
|
|
|
|
<para><varname>$city</varname> will <returnvalue>a</returnvalue>, <returnvalue>b</returnvalue>, <returnvalue>c</returnvalue> or <returnvalue>d</returnvalue>.</para>
|
|
|
|
<screen><userinput><varname>city</varname>=$(<command>kdialog</command> <option>--checklist "Select cities" a London off b Madrid on c Paris on d Berlin off</option>)</userinput></screen>
|
|
|
|
<para>Madrid and Paris will be pre-selected. The result with Madrid and
|
|
Paris selected will be <returnvalue>"b"</returnvalue>
|
|
<returnvalue>"c"</returnvalue>.</para>
|
|
|
|
<para>If you add the <option>--separate-output</option> option, it will put
|
|
<returnvalue>b</returnvalue> and <returnvalue>c</returnvalue> each on a line
|
|
of its own, making the result easier to process.</para>
|
|
|
|
<screen>file=$(kdialog --getopenfilename $HOME)
|
|
file=$(kdialog --getopenfilename $HOME "*.png *.jpg|Image Files")
|
|
file=$(kdialog --getsavefilename $HOME/SaveMe.png)
|
|
file=$(kdialog --getexistingdirectory $HOME)</screen>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
</chapter>
|
|
|
|
&groupware-with-kontact;
|
|
|
|
</part>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: xml
|
|
sgml-omittag:nil
|
|
sgml-shorttag:nil
|
|
sgml-namecase-general:nil
|
|
sgml-general-insert-case:lower
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:0
|
|
sgml-indent-data:true
|
|
sgml-parent-document:("index.docbook" "book" "part")
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
-->
|