From 4aed2c8219774f5d797760606b8489a92ddc5163 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- doc/userguide/kde-for-admins.docbook | 2747 ++++++++++++++++++++++++++++++++++ 1 file changed, 2747 insertions(+) create mode 100644 doc/userguide/kde-for-admins.docbook (limited to 'doc/userguide/kde-for-admins.docbook') diff --git a/doc/userguide/kde-for-admins.docbook b/doc/userguide/kde-for-admins.docbook new file mode 100644 index 000000000..f7d5d2ee0 --- /dev/null +++ b/doc/userguide/kde-for-admins.docbook @@ -0,0 +1,2747 @@ + + + + + +Waldo +Bastian + +bastian@kde.org + + +&Philip.Rodrigues; +&Philip.Rodrigues.mail; + + + + +&kde; for Administrators + + +&kde; Internals + + +Overview +to be written + + + +Directory Layout + +&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. + + +By default &kde; uses two directory trees: + + +One at the system level (for example /opt/kde3). +One at the user level in the user's home directory +(usually +~/.kde) + + +As a system administrator you can create additional trees. Such +additional trees can be used for profiles + +&SuSE; &Linux; for example uses: + + +$HOME/.kde +/opt/kde3. (This is +&SuSE;-specific; other distributions may use +/usr or /usr/kde3) +/etc/opt/kde3. (This was added by +&SuSE;). + + +If you have the KIOSK Admin tool v0.7 or later installed you can +check which directory trees are used with the following command: +kiosktool-kdedirs + + + +&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. + + +For information about the text/plain &MIME; type +the following files are searched: + + +$HOME/.kde/share/mimelnk/text/plain.desktop +/opt/kde3/share/mimelnk/text/plain.desktop +/etc/opt/kde3/share/mimelnk/text/plain.desktop + + +If a user makes a change, the change is written to $HOME/.kde/share/mimelnk/text/plain.desktop + + +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. + + +For example, if the following two files exist, with these contents: + +$HOME/.kde/share/config/foobar + +Color=red +Shape=circle + + + + + +/etc/opt/kde3/share/config/foobar + +Color=blue +Position=10,10 + + + + + +The files will be merged to result in: + + +Color=red +Shape=circle +Position=10,10 + + + + + + +Specifying Directories + + + + +Environment Variable +Example Setting(s) +Comment + + +KDEHOME +~/.kde + + + + +KDEROOTHOME +/root/.kde +Different variable to prevent +root writing to $KDEHOME of the user after running +su. + + + +KDEDIR +/opt/kde3, /usr, /usr/kde3 +Vendor dependent. Used by &kde; 2. If not set, falls back to +compiled-in default. + + + +KDEDIRS +/opt/kde3, /usr, /usr/kde3 +New in &kde;3. Can list multiple locations separated by a +colon. If not set, falls back to $KDEDIR + + + + +Don't need to be set, defaults work just fine. +Running &kde;2 next to &kde;3? Point $KDEDIR to +&kde; 2 and $KDEDIRS to &kde; 3. + + +A staff member at a university could have the following +settings: + +KDEHOME='~/.kde3' +KDEROOTHOME='/root/.kde3' +KDEDIRS='/opt/kde_staff:/opt/kde3' + + + + + + + +User Profiles + +In the previous example /opt/kde_staff contained additional settings +and applications for staff members. User Profiles allow you +to add this directory only for certain users and not for others. Add the +following to /etc/kderc: + + +[Directories-staff] +prefixes=/opt/kde_staff + + +This creates a profile named staff that adds the +/opt/kde_staff directory +tree. (Note that &SuSE; &Linux; uses +/etc/kde3rc instead of +/etc/kderc. Now that we have a named profile it +can be assigned to users. + +To map profiles to users a mapping file needs to be specified in +/etc/kderc: + + +[Directories] +userProfileMapFile=/etc/kde-user-profile + + +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. + +To assign the staff profile to all users that are a member of the +&UNIX; group staff_members add the following to +/etc/kde-user-profile: + + +[General] +groups=staff_members +[Groups] +staff_members=staff + + +It is also possible to assign a profile to a single user: + + +[Users] +bastian=staff + + + + + +Directory Layout Revisited + +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 $KDEHOME but not in any other +directory tree. + + + + +Architecture-specific Directories + +Architecture (OS and CPU type) specific directories: + + + +bin +Used for &kde; executables. + + + +lib +Used for &kde; libraries. + + + + +lib/kde3 +This directory contains components, plugins, and other +runtime loadable objects for use by &kde; 3.x +applications. + + + + + + +Shared Directories + +Shared: Not architecture specific, can be shared between different +archs. + + + +share/applnk +.desktop files for +&kde;-menu (old) + + + +share/applications +.desktop files for +&kde;-menu (since &kde; 3.2) + + + + +share/apps +Contains application-specific data files. Each +application has a sub-directory here for storing additional data +files. + + + +share/config +Configuration files. Configuration files are normally +named after the application they belong to plus the letters +rc. A special case is kdeglobals. +This file is read by all &kde; applications. + + + +share/config/session +This directory is used by session management and is +normally only available under $KDEHOME. 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 ksmserver stores references to +these numbers when saving a session in +ksmserverrc. + + + +share/doc/HTML +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: index.docbook, which contains the +documentation in the unformatted DocBook format, and +index.cache.bz2, which contains the same +documentation formatted as bzip2-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. + + + + +share/icons +Under this directory icons are stored. Icons are +categorized by theme, dimension and usage category. + + + +share/mimelnk +In this directory,.desktop files that describe &MIME; types +are stored. &kde; uses &MIME; types to identify the type of a +file. + + + + +share/services +This directory contains .desktop 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. + + + + +share/servicetypes +This directory contains .desktop files that describe +servicetypes. A servicetype usually represents a certain programming +interface. Applications and Services include in their >.desktop files the servicetypes that they +provide. + + +share/sounds +This directory contains sound files. + + + +share/templates +This directory contains templates for creating files +of various types. A template consists of a .desktop file that describes the file and +that includes a reference to a file in the .source sub-directory. The templates in +this directory appear in the Create New menu +available on the desktop and in the file browser. When a user selects +a template from the menu its source file is copied. + + + + +share/wallpapers +This directory contains images that can be used as +background picture + + + + + + + +Host-specific Directories + +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 +lnusertemp utility: + + + + +$KDEHOME/socket-$HOSTNAME +Usually /tmp/ksocket-$USER/, this +is used for various &UNIX; sockets. + + + + +$KDEHOME/tmp-$HOSTNAME +Usually /tmp/kde-$USER/, this is used for temporary files. + + + + +$KDEHOME/cache-$HOSTNAME +Usually /var/tmp/kdecache-$USER/, +this is used for cached files. + + + + +Since both /tmp and +/var/tmp 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 +lnusertemp utility will create a new directory with +an alternative name and link to that instead. + + + + +Configuration Files &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 UTF-8 encoding for text outside the +ASCII range. + +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. + +The following example shows a configuration +file that consists of two groups. The first group contains the keys +LargeCursor and SingleClick, the +second group contains the keys Show hidden files +and Sort by: + + +[KDE] +LargeCursor=false +SingleClick=true + + + +[KFileDialog Settings] +Show hidden files=false +Sort by=Name + + + +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: + + +entry=value + + +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 +s. + +There are several other backslash codes; here is a complete +list: + +\s can be used as space + +\t can be used to include a tab + +\r for a carriage return character + +\n for a linefeed character (new line) + +\\ to include the backslash itself + + + +In the following example the value of the +Caption entry starts with two spaces while the +Description entry contains three lines of +text. Linefeeds in backslash notation are used to separate the +different lines. + + +[Preview Image] +Caption=\s My Caption +Description=This is\na very long\ndescription. + + + +Empty lines in configuration files are ignored, as are lines that +start with a hash mark (#). 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 +not preserved. + +There can be multiple configuration files with the same name in the +share/config 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 $KDEHOME 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. + + +If $HOME/.kde/share/config/foobar +contains: + +[MyGroup] +Color=red +Shape=circle + +and /etc/opt/kde3/share/config/foobar contains + +[MyGroup] +Color=blue +Position=10,10 + +the result will be: + +[MyGroup] +Color=red +Shape=circle +Position=10,10 + + + + + +If + $HOME/.kde/share/config/foobar + contains + +[MyGroup] +Color=red +Shape=circle +[MyGroup] +Color=green + +and /opt/kde_staff/share/config/foobar contains + +[MyGroup] +Color=purple +Position=20,20 + +and /etc/opt/kde3/share/config/foobar contains + +[MyGroup] +Color=blue +Position=10,10 + +the result will be: + +[MyGroup] +Color=green +Shape=circle +Position=20,20 + + + + +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 [$i] behind the key, ⪚: + +Color[$i]=blue + + +A group of entries can be locked down by placing +[$i] behind the group name, ⪚: + +[MyGroup][$i] + + +To lock down the entire file, start the file with +[$i] on a single line, &ie;: + +[$i] + + + + +If + $HOME/.kde/share/config/foobar + contains: + +[MyGroup] +Color=red +Shape=circle + +and /etc/opt/kde3/share/config/foobar contains: + +[MyGroup][$i] +Color=blue +Position=10,10 + +the result will be: + +[MyGroup] +Color=blue +Position=10,10 + + + + +If + $HOME/.kde/share/config/foobar + contains: + +[MyGroup] +Color=red +Shape=circle + +and /opt/kde_staff/share/config/foobar contains + +[MyGroup] +Color=purple +Shape=rectangle + +and /etc/opt/kde3/share/config/foobar contains + +[MyGroup][$i] +Color=blue +Position=10,10 + +the result will be + +[MyGroup] +Color=purple +Shape=rectangle +Position=10,10 + + + + + +So-called Shell Expansion 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 [$e]. 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 [$ie]. The user can't change it then of course. + + +In the following example the value for the Host +entry is determined by the output of the hostname +program. This setting is also locked down to ensure that the value is always +determined dynamically. + +The value for the Email entry is determined by +filling in the values of the $USER and $HOST +environment variables. When joe is +logged in on joes_host this will +result in a value equal to joe@joes_host. The setting is +not locked down. + + +[Mail Settings] +Host[$ie]=$(hostname) +Email[$e]=${USER}@${HOST} + + + +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. + + +In the following example the value of the Caption +entry depends on the language. If the user has selected French as language +(language code fr) the value of the entry will be +Ma Légende. In all other cases the value My +Caption will be used. + + +[Preview Image] +Caption=My Caption +Caption[fr]=Ma Légende + + + + +In this example the value of the Caption entry +depends on the language. If the user has selected French as language +(language code fr) the value of the entry will be +Ma Légende. In all other cases the value My +Caption will be used. + + +[Preview Image] +Caption=My Caption +Caption[fr]=Ma Légende + + + +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 +$KDEDIR/share/config.kcfg, 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. + + +Here is an example &XML; configuration file: + + +<?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> + + + +It has the same effect as: + +[General] +Auto Save=false +Auto Save Interval=25 + + + + + + + +&kde; Startup Sequence + + +&kdm; + +Always runs as root! Uses +$KDEDIR/share/config/kdmrc and +/etc/X11/xdm/Xservers. The latter contains entries +like: + + +:0 local /usr/X11R6/bin/X :0 vt07 + + +Relevant startup files are also: + + +[X-*-Core] section in kdmrc + + +Setup - /etc/X11/xdm/Xsetup + + +User enters username & password + + +Startup - /etc/X11/xdm/Xstartup - prepare as root + + +Session - /etc/X11/xdm/Xsession - starts session as user + + += For a KDE session: kde or startkde + + += If present ~/.xsession or ~/.xinitrc + + +Reset - /etc/X11/xdm/Xreset - after session finished + + + + + + +The &kde; Startup Script: <command>startkde</command> + +The &kde; startup sequence starts with the +startkde 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 startkde +script: + + +LD_BIND_NOW=true kdeinit +kcminit +knotify and kwrapper +ksmserver $KDEWM + + +The first line starts the kdeinit master process. +The kdeinit master process is used to start all other +&kde; processes. It show up in the output of ps + as kdeinit: +Running.... The arguments after kdeinit +are the names of additional processes to be started. The + +indicates that kdeinit needs to wait till the process has +finished. kdeinit also starts +dcopserver, klauncher and +kded. + +The second of the two lines asks kdeinit to start +the ksmserver session manager process. The session +manager determines the lifetime of the session. When this process exits, the +user is logged out. + + + + + +Background Processes + +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: + + + +dcopserver +Desktop communication + + + + +kded +Generic service daemon. +Triggers Sycoca database updates when +needed + + + + +kcminit +Initialization service +See for more information. + + + + +klauncher +Program launch (this is not the +&Alt;F2 +dialog!) +See for more information. + + + + +knotify +User notifications. +See for more information. + + + + +ksmserver +Session management +See for more information. + + + + + + +<command>kdeinit</command> +kdeinit is used to start all other &kde; +programs. kdeinit can start normal binary program files +as well as kdeinit loadable modules +(KLMs). KLMs work just like binary +program files but can be started more efficiently. KLMs +live in $KDEDIR/lib/kde3 + +The drawback is that programs started this way appear as +kdeinit in the output of +top and ps. Use top + or ps +to see the actual program name: + + +%ps + +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 + + + +kdeinit: Running... indicates the +master kdeinit process. The other processes listed are +programs started as KLMs. + +When kdeinit starts for the first time it will +launch dcopserver, klauncher, and +kded, as well as any additional programs specified on its +command line in the startkde script, normally +kcminit and knotify. + + + + +<command>dcopserver</command> + +dcopserver 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 +dcop command line tool. &DCOP; is essential for all &kde; +applications. + +Some related files: + + + +$HOME/.DCOPserver_$HOSTNAME_$DISPLAY +.DCOPserver_linux__0. Controlled by $DCOPAUTHORITY + + + + +/tmp/.ICE-unix/dcoppid-number +dcop7634-1069677856. This is +the file that the DCOPserver file above points to. + + + + +$HOME/.ICEauthority +Authorization information controlled by +$ICEAUTHORITY + + + + + + + +kcminit + +kcminit executes initialization services during +startup. Initialization services are specified in the .desktop files of +applications or services via the X-KDE-Init line: + + +[Desktop Entry] +Encoding=UTF-8 +Exec=kcmshell energy +Icon=energy_star +Type=Application +X-KDE-Library=energy +X-KDE-Init=energy + + +Initialization services are typically used for initializing +hardware based on user-specified settings. + +kcminit + can be used to show all +initialization services and kcminit +service can be used to +execute a single service explicitly. This can be useful when investigating +startup problems. + + + + +<command>klauncher</command> + +klauncher is a daemon which is responsible for +service activation within &kde;. It operates in close connection with the +kdeinit master process to start new processes. &kde; +applications communicate with klauncher over &DCOP; in +order to start new applications or services. + +Best known from the error message: +KLauncher could not be reached via DCOP which +either indicates a serious problem with the dcopserver or +that klauncher crashed. + +klauncher can be restarted by restarting +kdeinit from a console window. Make sure that +$HOME, $DISPLAY and the various +$KDEDIR(S) are set correctly when doing so! + + + + +<command>knotify</command> + +The primary task of knotify is to relay sound +notifications to the sound server, it also provides alternative notification +methods. + + + + + + + +KSMServer + +ksmserver 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 .desktop files in the +$KDEDIR/share/autostart +directory. Whether or not to auto-start an application can be made +conditional upon some configuration entry determined by the +X-KDE-autostart-condition entry in the .desktop file. + + +The ktip.desktop file for example +contains: + + +X-KDE-autostart-condition=ktiprc:TipOfDay:RunOnStart:true + + +This means that the ktiprc configuration +file is checked for a RunOnStart entry in the +[TipOfDay] section. If no such entry is found, +true is assumed, which means that +ktip is one of the applications that is +auto-started by default. + + +Some of the applications auto-started by ksmserver +are: + + + + +kdesktop +The &kde; desktop + + + + +&kicker; +The &kde; panel + + + + +ktip +A tip of the day program + + + + +kwrited +A utility to receive system messages sent to the user + + + + +&klipper; +A clipboard utility that docks in the panel + + + + +kalarm +A utility that warns about upcoming events and appointments + + + + + +kdesktop in its turn automatically starts +applications stored in $KDEHOME/Autostart. kdesktop +will automatically open any files stored in this directory including +documents, binary files or applications in the form of .desktop files. + +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 +ksmserverrc configuration file which contains +references to application-specific state information. The +application-specific state information is saved in $KDEHOME/share/config/session. +The state information of &kwin; contains the location of the application +windows of all the other applications in the session. + + + + + +Environment variables + +Some important environment variables used by &kde;: + + + + +$KDEDIR +Has to be set if +KDEDIRS 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. + + + +$KDEDIRS +Overrides KDEDIR 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;. + + + +$KDEHOMEIf +not set, &kde; uses ~/.kde as +the directory where personal data is stored. + + + +$KDEROOTHOMEIf +not set, &kde; uses ~root/.kde +as the directory for root'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 su to root. + + + +$KDEWMIf the +KDEWM environment variable has been set, then it will +be used as &kde;'s window manager within the +startkde script instead of &kwin;. + + + +$KDE_LANGOverrides +the &kde; language configuration, ⪚ KDE_LANG=fr kprogram +& starts a program with French translation if the +necessary files are installed. + + + +$KDE_MULTIHEADSet +this variable to true to indicate that &kde; is running +on a multi-head system. + + + +$KDE_FORK_SLAVES +(Since &kde; 3.2.3) Set this variable to spawn +KIO-slaves directly from the application process +itself. By default KIO-slaves are spawned using +klauncher/kdeinit. This option is +useful if the KIO-slave should run in the same +environment as the application. This can be the case with +Clearcase. + + + +$KDE_HOME_READONLY +Set this variable to indicate that your home directory is +mounted as read-only. + + + +$KDE_NO_IPV6 +(Since &kde; 3.2.3) - Set this variable to disable IPv6 +support and IPv6 DNS +lookups. + + + +$KDE_IS_PRELINKED +(Since &kde; 3.2) - Set this variable to indicate that you have prelinked +your &kde; binaries and libraries. This will turn off +kdeinit. + + + +$KDE_UTF8_FILENAMESIf +this environment variable is set, &kde; assumes all filenames are in +UTF-8 encoding regardless of the current C +locale. + + + +$KDE_FULL_SESSION +(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). + + + +$KDESYCOCAAllows +you to specify the path and the name of the generated &kde; system +configuration cache file. + + + +$KDETMPAllows +to specify another path than /tmp where &kde; stores its temporary +files. + + + +$KDEVARTMPAllows +to specify another path than /var/tmp where &kde; stores its variable +files. + + + +$XDG_DATA_HOME +(Since &kde; 3.2) Defines the base directory relative to which user-specific +data files should be stored. Default is $HOME/.local/share + + + +$XDG_DATA_DIRS +(Since &kde; 3.2) Defines the preference-ordered set of base directories to +search for data files in addition to the $XDG_DATA_HOME base +directory. Default is +/usr/local/share/:/usr/share/ + +&kde; adds locations from $KDEDIRS and profiles +as well. Used for .desktop and +.directory menu files. .desktop files under $XDG_DATA_DIRS/applications. +.directory files under +$XDG_DATA_DIRS/desktop-directories + + + + +$XDG_CONFIG_HOME +(&kde; 3.2) - Defines the base directory relative to which user +specific configuration files should be stored. Default is +$HOME/.config. + + + +$XDG_CONFIG_DIRS +(&kde; 3.2) - Defines the preference-ordered set of base directories +to search for configuration files in addition to the $XDG_CONFIG_HOME +base directory. The default is /etc/xdg &kde; adds locations from +$KDEDIRS and profiles as well. Used by .menu descriptions in +$XDG_CONFIG_DIRS/menus. + + + + + + + + +The kdeinit Mystery + + + +kdeinit is used to start all other &kde; +programs. kdeinit can start normal binary program f iles +as well as kdeinit loadable modules +(KLMs). KLMs work just like binary +program files but can be started more efficiently. KLMs +live in $KDEDIR/lib/kde3 + +The drawback is that programs started this way appear as +kdeinit in the +output of top and ps. Use +top or ps + to see the actual program name: + + +% ps aux | grep bastian + +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 + + +As you might have noticed, this has another side effect, making it +difficult to kill a process that is causing trouble: + +% killall kdesktop +kdesktop: no process killed + +You might be tempted to try killall +kdeinit, but killing all kdeinit processes will have +the effect of shutting down all of &kde;. In effect, total +destruction! + +There are two simple solutions to this: + +% kdekillall kdesktop +or good old +% kill 26195 +kdekillall is part of the &kde; SDK +package. + + + + + + +Customizing &kde; + + + +Desktop Icons + +&kde; uses several types of icons: + +Documents + +Links to Websites (using .desktop file) + +Links to Applications (using .desktop file) + +Devices - Disks, Partitions & Peripherals: + +Explicit using .desktop file + +Automatic via devices:// io-slave + + + + +Vendor-specific (⪚ &SuSE;'s My Computer) + + + + +Websites + +Links to Websites using .desktop +file: Create +NewFileLink to +Location (URL). Change Icon using +Properties dialogs. The resulting .desktop file: + +[Desktop Entry] +Encoding=UTF-8 +Icon=/opt/kde3/share/apps/kdesktop/pics/ksslogo.png +Type=Link +URL=http://www.kde.org/ + + + + + +Applications + +Links to Applications using .desktop file: Create +NewFileLink to +Application. You must provide details +yourself. Drag from &kde; Menu: Either copy or link (creates symlink), +much easier + + + + + + +[Desktop Entry] +Encoding=UTF-8 +GenericName=IRC Client +GenericName[af]=Irc Kliët +GenericName[de]=IRC Programm +... +GenericName[zu]=Umthengi we IRC +SwallowExec= +Name=KSirc +Name[af]=Ksirc +Name[de]=KSirc +... + + + +Boiler plate + +Translated generic description, not used on desktop + +Legacy, can be removed + +Translated name as it appears on desktop + + + +Desktop Icons + +... +Name[zu]=Ksirc +MimeType= +Exec=ksirc %i %m +Icon=ksirc +TerminalOptions= +Path= +Type=Application +Terminal=0 +X-KDE-StartupNotify=true +X-DCOP-ServiceType=Multi +Categories=Qt;KDE;Network + + + +Supported &MIME; types, not used on +desktop + +The command line to execute + +The icon, from icon theme or full path + +Only used if terminal is +needed + +Working directory for command + +More boiler plate + +Use true if terminal is needed, +text application + +Show bouncy cursor, +disable if it doesn't work. + +Has app started ok? +Remove if it doesn't work + +Categories for &kde; Menu, not +used on desktop + + + + + + + + +The <varname>Exec</varname> option in <literal +role="extension">.desktop</literal> files + +Following the command, you can have several place holders which will +be replaced with the actual values when the actual program is run: + + +%f A single file name; used when dropping +file on icon, or with file associations. + + + + +%F +A list of files; use for applications that can +open several local files at once. + + + + +%u +A single &URL;: if the app can +handle ⪚ &FTP; or &HTTP; &URL;s itself, otherwise &kde;. + + + + +%U +A list of +&URL;s; will download the file first and pass a local file to the app +(!!) + + + + +%d +The folder of the file to open; useful if app needs to +have file in current working directory. + + + + +%D +A list of folders, not very practical. + + + + +%i +The icon; option; &kde; app +will use icon from Icon= line in taskbar. + + + + +%m +The mini-icon; legacy. + + + + +%c +The caption; option; &kde; +app will use name from Name= line in +taskbar. + + + + + + + +Examples: + +Exec line +Command executed +ksirc %iksirc --icon ksirc + +cd %d; kedit $(basename %f)cd /tmp; kedit file.txt + + + + + + + + + + + +Devices + +Links to Devices using .desktop file: +o Create New -> Device + + + + + +Where to Define + +Many places to define Desktop Icons: + + +~/Desktop: +copied from /etc/skel/Desktop + +$KDEDIR/apps/kdesktop/Desktop +(merged) + +$KDEDIR/apps/kdesktop/DesktopLinks +(copied) + +Device Icons (dynamically +merged) + +Distribution Specific SUSE Linux copies certain icons +in startkde.theme from /opt/kde3/share/config/SuSE/default/ + + + + + + + +&kde; Menu + + +How it Works + +In &kde; 3.2 a common menu format is introduced at +http://freedesktop.org/Standards/menu-spec/ +Before &kde; 3.2: + + +Directory structure under share/applnk + +Directory structure represents menu +structure + +Each .desktop file +represents a single application + + + + +It was difficult to rearrange the structure in &kde; 3.2 so the +new menu format: + +Defines structure in a single .menu file +Is based on categories +is shared between GNOME and &kde; +Supports applnk style menus as well + + + + +Example from applications.menu: + + + <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> + + + +Menu entry with 3 applications: + + +/usr/share/applications/Acrobat +Reader.desktop + +/opt/kde3/share/applications/kde/kpresenter.desktop + +/opt/kde3/share/applications/kde/kword.desktop + + + + + + + +Stored Where? + +.menu files describing the +menu structure. The files are stored in $KDEDIR/etc/xdg/menus and +/etc/xdg/menus. These store the +system-wide menu structure and are controlled by +$XDG_CONFIG_DIRS. $HOME/.config/menus stores +user-specific changes to the menu structure and is controlled by +$XDG_CONFIG_HOME. For more information, see http://www.freedesktop.org/Standards/basedir-spec. + +.desktop files describe the +applications and are stored in: $KDEDIR/share/applications, +/usr/share/applications, +/usr/local/share/applications. These are +the system-wide application .desktop files which are controlled by +$XDG_DATA_DIRS. + +$HOME/.local/applications +contains user-specific .desktop +files and user-specific changes. It is controlled by +$XDG_DATA_HOME. For more information, see http://www.freedesktop.org/Standards/basedir-spec + + +.directory files describing +the sub-menus are stored in: $KDEDIR/share/desktop-directories, +/usr/share/desktop-directories, /usr/local/share/desktop-directories. +These are the system-wide menu .directory files, controlled by +$XDG_DATA_DIRS. The user-specific changes are stored in $HOME/.local/desktop-directories. +These are controlled by $XDG_DATA_HOME. For more +information, see http://www.freedesktop.org/Standards/basedir-spec + + +Example from applications.menu: + + + <Menu> + <Name>Art</Name> + <Directory>suse-edutainment-art.directory</Directory> + <Include> + <Category>X-SuSE-Art</Category> + </Include> + </Menu> + + + + +Art is the internal name for this +menu. suse-edutainment-art.directory defines the +name and icon for this menu, and the menu includes all applications +that have X-SuSE-Art listed as a category, ⪚: + +Categories=Qt;KDE;Education;X-SuSE-Art + + +suse-edutainment-art.directory defines the +name and icon for this menu: + +[Desktop Entry] +Name=Art and Culture +Icon=kcmsystem + + + + + + +Common Pitfalls + +Applications not in the menu do +not 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. + +When applications are unwanted in the menu, either place them in +.hidden menu or a dedicated menu with + +NoDisplay=true + in the .directory file + + + +Essential Menus + +$KDEDIR/etc/xdg/menus/applications-merged/ +contains kde-essential.menu which includes some +essential menus that are normally not shown in the &kde; menu itself: + +Control Center has a hidden Settings menu whose +contents are defined by kde-settings.menu and +whose icon and name are defined by kde-settings.directory + +Info Center has a hidden Information menu whose +contents are defined by kde-information.menu and +whose icon and name are defined by kde-information.directory. + + +Screensavers contains a hidden System/Screensavers menu, +whose contents are defined by +kde-screensavers.menu and whose icon and name +are defined by +kde-system-screensavers.directory. +$KDEDIR/share/desktop-directories/kde-system-screensavers.directory +contains: + +NoDisplay=true + + + + + + + +Old-Style Menus + +&kde; continues to support old-style menus that are defined by +the directory structures in $KDEDIR/share/applnk +(system wide) and $HOME/.kde/share/applnk +(user specific). This is observed unless the .desktop file has a Categories= line. In that case the categories determine the location in the menu. + + + +<application>KSycoca</application> +KSycoca caches menu structure and +information about all available applications. You can rebuild the +database with +kbuildsycoca. The database +which is built lives in /var/tmp/kdecache-${USER}/ksycoca. +It is automatically updated by KDED, +checked during &kde; login, and KDED +watches for changes while logged in. + +To disable watching for changes (since it may hurt over NFS) add +the following to kdedrc: + +[General] +CheckSycoca=false + + + +To force regeneration, run touch $KDEDIR/share/services/update_ksycoca. + + + + +&kmenuedit; + +&kmenuedit; is aimed at a single user setup. Changes to menu +structure are saved to +~/.config/menus/applications-kmenuedit.menu, +changes to applications are saved in ~/.local/share/applications/ and changes +to sub-menus (icon, name) are saved in ~/.local/share/desktop-directories/. The +KIOSK Admin Tool uses &kmenuedit; and copies the above changes to +profile- or system-wide locations. + + + + + + + + +&kde; Panel + +The &kde; panel is also known as &kicker;. It is modular and +consists of the following components: + +Applets +Application buttons +Special Buttons + + + +By default, the panel contains the following applets: + +Pager - shows the virtual desktops +Taskbar +System Tray +Clock + +and the following special buttons: + +&kde; menu +Desktop Button + + + +Various application buttons are also added, space permitting: + +Home Button +Browser Button +KMail Button + + + + + +File Associations + +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 $KDEDIR/share/mimelnk and +each application's .desktop file +contains a list of &MIME; types supported by that application. + + +kview.desktop: + +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 + + + +kuickshow.desktop: + +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 + + + +Both can open image/gif Which one is used to open a .gif file? + +The application with highest +preference!. kview.desktop contains + +InitialPreference=3 + +whereas kuickshow.desktop contains + +InitialPreference=6 + +Therefore, &kuickshow; will be used to open .gif files. + + +How can we make &kview; default? + +A user can change file association in the +&kcontrolcenter;. These changes are stored in +$HOME/.kde/share/config/profilerc. +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. + + + + + + + + +Locking Down &kde; + + +How It Works - The Basics + +&kde;'s lock down features are centered around the following +options: + + +Make +configuration options immutable +Restriction of specific +actions +Restrict access to certain +&URL;s +Restrict access to +certain configuration modules + + + + + +Immutable Configuration Options +Locking Down &kde; + +Immutable options allow system administrator to provide default +settings that can not be changed by the user. + +Pre-existing configuration options of the user will be ignored once a +configuration option is made immutable. + +Options can be controlled either on a per entry basis, per group of +entries or on a file by file basis. + +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. + +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. + + + + +Action Restrictions + +&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. Save Document 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 Save +Document action is . 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 restriction which disables all +functionality that would offer the user access to a &UNIX; shell. + + +Restrict User Access to Shells + +In order to prevent the user access to a command shell we can restrict +the action by adding the following to +kdeglobals: + + +[KDE Action Restrictions] +shell_access=false + +Since this affects the &kde; menu and the available applications, we +must force an update of the sycoca database: + +touch $KDEDIR/share/services/update_ksycoca + +Now re-login to &kde; and check the following points: + + +The &kmenu; +In &konqueror;, +ToolsOpen +Terminal +The &Alt;F2 run +command + + +Full documentation about available actions can be found on http://www.kde.org/areas/sysadmin/. + +A few of the more interesting actions are listed below: + + + + +The Configure option form the +Settings menu + + + +The Report Bug option from the +Help menu. + + + +&RMB; mouse button menu on the desktop. + + + +&RMB; mouse button menu on the panel. + + + +Hide all actions or applications that require root access. + + + +Hides all actions or applications that provide shell +access. + + + +Disables the option to select the printing system +(backend). + + + +Whether the user will be able to lock the +screen + + + +Whether the user may start a second X session (see also +&kdm;) + + + +Whether OpenGL screensavers are allowed to be +used. + + + +Permit screensavers that do not hide the entire +screen + + + + + + +&URL; Restrictions + +There are three types of restrictions that can be applied to +&URL;s: + + + +list +To control whether a directory listing is +allowed. + + +open +To control whether certain &URL;s can be +opened + + +Redirect +To control whether one &URL; can open another &URL;, either +automatically or via a hyperlink. + + + +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. + +The following rules disable opening http and https &URL;s outside +.ourcompany.com: + + + + + + +[KDE URL Restrictions] +rule_count=2 +rule_1=open,,,,http,,,false +rule_2=open,,,,http,*.ourcompany.com,,true + + + +The first four commas skip over the selection criteria with respect to +the originating &URL;. This part is only needed with redirect type +rules. + + forbids the +opening of any http or https &URL; + allows the +opening of any http and https &URL; in the .ourcompany.com domain. Note the wildcard +* is only allowed at the start of a domain. + + +The following rules makes that the user can no longer browse +directories on the local file system that are outside his +$HOME directory: + + + + + +[KDE URL Restrictions] +rule_count=2 +rule_1=list,,,,file,,,false +rule_2=list,,,,file,,$HOME,true + + + forbids the +listing of any local directory + allows listing +directories under the users own $HOME +directory. + + +$HOME and $TMP are special values to +indicate the users home directory and the &kde; temporary directory of the +user, ⪚ /tmp/kde-bastian + +The following rules makes that the user can no longer open local files +that are outside his $HOME directory: + + + + + + +[KDE URL Restrictions] +rule_count=3 +rule_1=open,,,,file,,,false +rule_2=open,,,,file,,$HOME,true +rule_3=open,,,,file,,$TMP,true + + + forbids the +opening of any local file + allows opening +files under the users own $HOME directory. + 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. + + + +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. + +For example, if we want to give the intranet-server www.mycompany.com the possibility to refer +to local files we could add the following rule: + +[KDE URL Restrictions] +rule_count=1 +rule_1=redirect,http,www.mycompany.com,,file,,,true + +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: + + + +:local +Protocols that access locally stored information, examples +are file:/, man:/, fonts:/, floppy:/ + + +:internet +Common internet protocols such as http and +ftp + + + +Information about protocols is stored in *.protocol files stored in +$KDEDIR/share/services. + +The = entry defines the group a protocol is part +of: +grep +$KDEDIR/share/services/*.protocol + +General rules: + + +The :local protocols may refer to any other +protocol +It's always allowed to refer to an :internet +protocol +Not all protocols are part of a group, fish:/ for +example. + + + + + +Configuration Modules + +&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. + + +The proxy configuration module appears in the Control Center but also +as part of the Configure Konqueror dialog in +&konqueror; + +Individual configuration modules can be started with +kcmshell module + +To start the Proxy module use: + +kcmshell +kde-proxy.desktop +kcmshell proxy + + +Not all applications use configuration modules, often the +configuration dialog is an integral part of the application +itself. + + +All configuration modules are strictly speaking part of the &kde; +menu. + + + +The modules that are visible in the Control Center normally +have a .desktop file in $KDEDIR/share/applications/kde +and are sorted under the hidden Settings-Modules menu by +the kde-settings.menu, included from +kde-essential.menu +kbuildsycoca 2> /dev/null | grep Settings-Modules + + +Application specific modules normally have a .desktop file under +$KDEDIR/share/applnk/.hidden which +corresponds to the hidden .hidden menu, included as a result of +<KDELegacyDirs/> +kbuildsycoca 2> /dev/null | grep .hidden + +In &kde; 3.3 it is possible to edit the Control Center with +kcontroledit. +kcontroledit works just like +kmenuedit, changes for current user only. Use +kiosktool to make changes for +everyone. + + +Individual configuration modules can be disables by adding the +following to kdeglobals: + +[KDE Control Module Restrictions] +module-id=false +For example, to disable the proxy module use +[KDE Control Module Restrictions] +kde-proxy.desktop=false +Check the Control Center and the Configure +Konqueror dialog if the proxy configuration is still +there. + + + + + + +The Lazy Admin + + + + + + + +Remote Desktop Sharing + +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. + +Remote desktop sharing involves two applications: &krfb; (&kde; remote +frame buffer, a VNC server) and &krdc; (&kde; remote desktop connection; a +VNC client.) + +&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. + +Incoming connections are handled by the kinetd kded module. You can +use the command dcop kded kinetd +services 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. + + + + + + +&kde; DIY - Building Your Own Tools + + +DCOP + + +Desktop COmmunication Protocol, DCOP, is a lightweight mechanism for inter-process communication. +DCOP allows the user to interact with programs that are currently running. +&kde; supplies two programs to utilitize DCOP: +dcop, a command-line program, and +kdcop, a GUI program. + + +A few notes about using dcop: + + + + + + +dcop [options] [application [object [function [arg1] [arg2] ... ] ] ] + + + + +Applications that can open more than one window at a time will be listed as +<application>-PID + + + + +All the arguments are case-sensitve. setFullScreen and setfullscreen are two different functions. + + + + +The regular expression token * can be used in the application and object arguments. +% dcop +konqueror-16006 +konsole-8954 + + + + + + + + +Some example commands and their output are below: + + + +% dcop +konsole-8954 + +One &konsole; is running with a PID of 8954. + +% dcop +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 + +Here you see that there are four sessions running. + +% dcop +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() + +Here are the options for the main &konsole; program. + + +% dcop +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) + +Here are the options for the first session, session-1. + +% dcop true + +This sets &konsole; to full screen. + + + + +When there is more than one application/object, which one should you use? + Got a reference? + +% echo +DCOPRef(konsole-7547,konsole) + +% dcop +session-6 + +% dcopstart +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' + + + + + + +KDialog +&kde; DIY - Building Your Own Tools + +You can use &kde; dialogs from your own scripts, to combine the power +of &UNIX; shell scripting with the ease of use of &kde;. + +kdialog + +kdialog + +The KDialog part can be replaced via + option + +kdialog + +Saves whether to show again in +$KDEHOME/share/config/myfile (by writing +into this file the following lines: + +[Notification Messages] +mykey=false + +Instead of you can also use + and , as appropriate. For +instance, you might use kdialog or kdialog +. + +It is also possible to create message boxes that accept a yes or no +answer. + +kdialog echo $? + + + + + +Return Value +Meaning + + + +0Yes, OK, Continue +1No +2Cancel + + + + +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 + here as well, it will remember the users choice +and returns it the next times without showing the dialog any more. + +Further variations are: + + + + + +like but with a different +icon + + + + +With Continue and +Cancel buttons. + + + + +With Yes, No +and Cancel button. For example: +kdialog + + + + +kdialog + +The result is printed to stdout, to put it in a variable you can use +name=$(kdialog --inputbox "Enter your name:" +"YourName"). The last argument is optional, it is used to +pre-fill the dialog. + +password=$(kdialog ) + +The option does not work with + or + +There are two dialogs that let the user make a choice from a +list: + + + + + +Lets the user select a single item from a list. + + + + + +Lets the user select one or more items from a list. + + + + +city=$(kdialog ) + +$city will a, b, c or d. + +city=$(kdialog ) + +Madrid and Paris will be pre-selected. The result with Madrid and +Paris selected will be "b" +"c". + +If you add the option, it will put +b and c each on a line +of its own, making the result easier to process. + +file=$(kdialog --getopenfilename $HOME) +file=$(kdialog --getopenfilename $HOME "*.png *.jpg|Image Files") +file=$(kdialog --getsavefilename $HOME/SaveMe.png) +file=$(kdialog --getexistingdirectory $HOME) + + + + + + + +&groupware-with-kontact; + + + + -- cgit v1.2.1