Provided by: desktop-profiles_1.4.26_all bug


       desktop-profiles - introduction and overview


       Desktop-profiles offers a standard way of managing the conditional activation of installed
       profiles (sets of configuration and/or data files) for the various Desktop Environments in

       It currently supports Freedesktop, KDE, Gconf (i.e Gnome), Xfce (>= 4.2), ROX, GNUSTEP and


       Each available profile has some metadata associated with it. On X  startup  an  Xsession.d
       script  is  run  that  looks  through the metadata for all profiles and activates profiles
       based on what it finds.

       Specifically each profile is associated with a  set  of  requirements,  and  a  precedence
       value.  On  X  startup  the  Xsession.d  script  will  filter  out  those  profiles  whose
       requirements are not met, and then activate the remaining profiles in order of precedence.

       Exactly how a profile is activated depends on the profile kind (you  don't  need  to  know
       this in order to use this package):

       •  For  KDE,  Freedesktop, Xfce (>= 4.2), ROX, GNUSTEP and UDE activating profiles is done
          by setting environment variables: KDEDIRS for KDE,  XDG_CONFIG_DIRS  and  XDG_DATA_DIRS
          for  both  Freedesktop  and  Xfce,  CHOICESPATH  for  ROX, GNUSTEP_PATHLIST for GNUSTEP
          (usually initialized from the various GNUSTEP_*_ROOT variables)  and  UDEdir  for  UDE.
          With  the  exception of UDEdir, which takes a single directory, each of these variables
          takes a precedence ordered list of root-directories (of activated profiles).

       •  For GConf profiles two user-specific path  files  are  generated.  One  containing  the
          activated  mandatory "configuration sources", one containing the default "configuration
          sources" that are activated.

          Environment variables will only be set if their value is  different  from  the  default
          value,  and  user-specific  path  files are only generated if the systemwide gconf path
          file will include them. This to avoid unnecessary clutter.

          The above means that for Freedesktop, KDE, GNOME, Xfce (>= 4.2), GNUSTEP  and  ROX  any
          number  of  profiles can be activated at the same time. Whereas UDE can only activate 1
          profiles at the time.

          By default the Xsession.d script will assume  the  metadata  files  are  authoritative,
          meaning  it  will  ignore  any  values  already  assigned  to  the relevant environment

          The default system-wide path contains a number of configuration sources not managed  by
          desktop-profiles.  In  order  to  facilitate  the  management of all your configuration
          sources    through    desktop-profiles    this    package     provides     a     script
          (/usr/sbin/path2listing)  that  looks at your current gconf configuration and adapts it
          so your configuration sources are all controlled by desktop-profiles (see the man  page
          for  path2listing or the /usr/share/doc/destkop-profiles/README for more information on


       Since profiles are activated through environment  variables  one  issue  is  how  desktop-
       profiles  deals with the situation where those environment variables have already been set
       up by other agents (such an agent could be another script, or the user).  Desktop-profiles
       has a personality setting that determines how it handles such a situation:

       •  autocrat:  assume  desktop-profiles  is the only agent allowed to touch the environment
          variables, and consequently ignore the contents of already set environment variables.

       •  rude: profiles added by desktop-profiles take precedence over profiles added  by  other

       •  polite:  profiles added by other agents take precedence over profiles added by desktop-

       •  sheep: just meekly follow along with what the  other  agents  have  set,  don't  change
          anything (this essentially deactivates desktop-profiles).

       The default personality setting of desktop-profiles is polite.


       The  metadata  is specified in .listing files that are placed in the /etc/desktop-profiles
       directory.  The  format  of  those  files  is  specified  in  the  'FORMAT   OF   .listing
       FILES'-section below.

       NOTE:  In  order  to  ensure  that packages containing .listing files don't run in to each
              other,  packages  should  install   such   files   as   <packagename>.listing,   or
              <packagename>_<something>.listing (there's a debhelper script provided to help with
              that :)


       Each non-empty line in a .listing file is  either  a  comment  line,  or  line  containing
       profile metadata.

       Comment  lines  start with ´#´ and are purely for human consumption, like empty lines they
       are ignored completely by the Xsession.d script.

       Lines containing profile metadata are made up of 6 fields separated by a semi-colon (´;´).
       Where the meaning of the fields is as follows:

       •  1st  field  :  Name of the profile, arbitrary, must be unique within each file, and may
          (but probably should not) be empty.

       •  2nd field : The kind of profile,  must  be  set,  must  be  one  of:  KDE,  XDG_CONFIG,

       •  3th field:

          Location  of  the root of the profile directory tree, may contain more then 1 directory
          (in which case directories should be separated with spaces). Environment variables  may
          be used when specifying root directories (e.g. $HOME/.extra_config).

          Except for Gconf profiles, which use the this field to contain exactly one directive to
          be   included    in    the    generated    path    file    (directives    are    either
          ´xml:(readonly|readwrite):<profile-root>´, or ´include <some-path-file>' ).

       •  4th  field : A Numeric precedence value for the profile, may be empty (which is treated
          as lowest possible precedence).

          When 2 (or more) active profiles define a setup for the same thing, the value specified
          by  the profile with the highest precedence value is used (UDE will onlyuse values from
          the highest ranked profile).

       •  5th field : Space separated list of conditions that need to  be  met  to  activate  the
          profiles  (if  more  then  1  condition  is  specified all conditions need to be met to
          activate the profile).

          There are 3 different kinds of requirements:

          1) <group>      = user needs to be a member of <group>

          2) !<group>     = user mustn't be a member of <group>

             (Note: '!' deactivates the profile completely)

          3) $(<command>) = <command> needs to exit successfully ($?=0)

             (Where <command> is an arbitrary shell command)

       •  6th field : A description of what the profile is/does, may be empty.

          Note that this basically boils down to a CSV-file using ´;´ as separator  and  allowing
          shell-style comments.


KDE (through KDEDIRS):

          Each  profile  directory  is  layed out according to the KDE file system hierarchy (see

          Config files in the different profiles are merged (in case  of  conflicting  keys,  the
          value  of  the  highest  precedence  profile  is  used).  For  other  files the highest
          precedence profile that contains the file supplies it.

          Starting with kde 3.3. the kiosk framework can be used to lock  settings  down  in  the
          profiles,  for  all  unlocked  settings  user-specified  values  are  always  used when
          available. (see for more info on  the
          kiosk-framework, and the format of the kde config files).

       •  Freedesktop (using XDG_CONFIG_DIRS and XDG_DATA_DIRS)

          The  'Desktop  base  directory  specification'  defines  the  basic framework for using
          profiles (see

          The actual contents of the  profiles  is  filled  in  by  things  conforming  to  other
          freedesktop  standards (e.g. the 'menu specification'). A list of freedesktop standards
          (that are being worked on) can be found at
          Most  of  these  standards  are still under development and not (yet) widely supported.
          Eventually you can probably suspect support of at least KDE, GNOME, ROX, and Xfce.

          Xfce (>=4.2) specific settings can also be found in Freedesktop profile dirs  (see  the
          next section for details).

       •  Xfce (using XDG_CONFIG_DIRS and XDG_DATA_DIRS)

          Starting  from  Xfce  version  4.2. Xfce will completely adopt the freedesktop 'Desktop
          Base  Directory  Specification'.  Placing  any  Xfce-only  settings   in   an   'xfce4'
          subdirectory   of   the   freedesktop   profile  directories  (with  the  exception  of
          xfce4-session, which  will  use  an  'xfce4-session'  subdirectory).  A  more  complete
          description can be found at

          If two profiles contain the same config file, the one from the profile with the highest
          precedence is used.

          Xfce versions prior to 4.2. don't support multiple config sets.

       •  ROX (through CHOICESPATH):

          Each profile directory has  one  subdirectory  for  each  app  for  which  it  provides
          settings.  When a configuration value is needed the profile directories are searched in
          order, first profile that contains the file supplies it.

          Programs _may_ merge the files  the  different  profiles.  If  the  merging  encounters
          conflicting values the one from the highest order profile is used.

          See for a more detailed description.

       •  GNUSTEP (through GNUSTEP_PATHLIST)

          Profiles  in GNUSTEP parlance are called domains, and by default GNUSTEP will look in 4
          domains   (the   location   of   which   is   indicated   by   the   GNUSTEP_USER_ROOT,
          is possible to specify extra domains to use through the GNUSTEP_PATHLIST  variable,  it
          isn't  often  done  as  configuration files are currently only searched for in the user

          For        more        information        on        GNUSTEP         domains         see
 (through UDEdir):

          UDE searches for configuration files in the following directories (first find is used):

          1. $HOME/.ude/config

          2. $UDEdir/config  (or in absence of $UDEdir in the install dir which is /usr/share/ude
          on debian)

          3. If the configuration file is still not found,  UWM  takes  the  filename  as  it  is
          (usually dereferencing any environment variables first)

       •  GNOME (using GConf 'Configuration Sources'):

          Two  gconf  path  files  are generated for each user on login: one with all the sources
          from activated profiles that have a  higher  precedence  then  the  gconf-user  profile
          (which  is  in default.listing), and one containing the sources from activated profiles
          with a lower precedence then the gconf-user profiles. Generated path files are  put  in

          Each  configuration  source  is  structured  like  a simple hierarchical file system as

          - Directories correspond to applications that use the GConf repository, except for  the
          ' schemas' directory which contains files describing all of the preference keys.

          - Subdirectories correspond to categories of preferences.

          -  Files  list  the preference keys in the directory, and contain information about the

          - Configuration Sources are searched in order for each value, first source that has the
          value (or is writeable in case of storing values) is used.

          -> See the GNOME administration manual for a detailed explanation


       /etc/desktop-profiles/desktop-profiles.listing  -  Details  the  default  settings for the
       various environments. By default the system-wide settings provided  by  the  packager  are
       given  no precedence, which means they will be loaded after all profiles with a precedence
       specified (which should be true for all profiles you create).

       /etc/X11/Xsession.d/20desktop-profiles_activateDesktopProfiles - Xsesssion.d  script  that
       activates the profiles

       /etc/default/desktop-profiles  -  File containing default settings for the scripts in this


       This manual page was written by Bart Cornelis <>.


       list-desktop-profiles(1),           update-profile-cache(1),           profile-manager(1),
       dh_installlisting(1), path2listing(1)