Introduction to D-BUS
        
        
          D-BUS is a message bus system, a
          simple way for applications to talk to one another. D-BUS supplies both a system daemon (for
          events such as “new hardware device
          added” or “printer queue
          changed”) and a per-user-login-session daemon (for
          general IPC needs among user applications). Also, the message bus
          is built on top of a general one-to-one message passing framework,
          which can be used by any two applications to communicate directly
          (without going through the message bus daemon).
        
        
          Package Information
        
        
        
          D-BUS Dependencies
        
        
          Required
        
        
          expat-2.0.1 or both pkg-config-0.22 and
          libxml2-2.6.31
        
        
          Optional
        
        
          X Window
          System, Doxygen-1.5.2 (to generate the API
          documentation), and xmlto (to generate HTML
          documentation and manuals)
        
        
          User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dbus
        
       
      
        
          Installation of D-BUS
        
        
          As the root user, create a system
          user and group to handle the system message bus activity:
        
        
groupadd -g 18 messagebus &&
useradd -c "D-BUS Message Daemon User" -d /dev/null \
        -u 18 -g messagebus -s /bin/false messagebus
        
          This package's test suite cannot be run without passing additional
          parameters to configure and exposing additional
          functionality in the binaries. These interfaces are not intended to
          be used in a production build of D-BUS, so it will have to be built twice in
          this situation. If you would like to run the unit tests, issue the
          following commands:
        
        
./configure --enable-tests &&
make &&
make check &&
make distclean
        
          Install D-BUS by running the
          following commands (you may wish to review the output from
          ./configure --help
          first and add any desired parameters to the configure command shown below):
        
        
./configure --prefix=/usr \
            --sysconfdir=/etc \
            --localstatedir=/var &&
make
        
          The --enable-doxygen-docs parameter
          does not work properly. If you have Doxygen installed and you wish to build the
          API documentation, issue doxygen.
        
        
          Now, as the root user:
        
        
make install &&
install -v -m755 -d /usr/share/doc/dbus-1.0.2 &&
install -v -m644 doc/{TODO,*.{dtd,xml,xsl,txt,c}} \
    /usr/share/doc/dbus-1.0.2
        
          If you built the HTML documentation, install it by issuing the
          following commands as the root
          user:
        
        
install -v -m644 doc/*.html /usr/share/doc/dbus-1.0.2
        
          If you built the API documentation, install it by issuing the
          following commands as the root
          user:
        
        
install -v -m755 -d /usr/share/doc/dbus-1.0.2/api \
    /usr/share/man/man3dbus &&
install -v -m644 doc/api/html/* \
    /usr/share/doc/dbus-1.0.2/api &&
install -v -m644 doc/api/man/man3dbus/* \
    /usr/share/man/man3dbus
       
      
        
          Configuring dbus
        
        
          
            Config Files
          
          
            /etc/dbus-1/session.conf,
            /etc/dbus-1/system.conf and
            /etc/dbus-1/system.d/*
          
         
        
          
            Configuration Information
          
          
            The configuration files listed above should probably not be
            modified. If changes are required, you should create /etc/dbus-1/session-local.conf and/or
            /etc/dbus-1/system-local.conf and
            make any desired changes to these files.
          
          
            If any packages install a D-Bus
            .service file outside of the
            standard /usr/share/dbus-1/services
            directory, that directory should be added to the local session
            configuration. For instance, /usr/local/share/dbus-1/services can be added
            by performing the following commands as the root user:
          
          
cat > /etc/dbus-1/session-local.conf << "EOF"
<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <!-- Search for .service files in /usr/local -->
  <servicedir>/usr/local/share/dbus-1/services</servicedir>
</busconfig>
EOF
         
        
          
            Boot Script
          
          
            To automatically start dbus-daemon when the system is
            rebooted, install the /etc/rc.d/init.d/dbus bootscript from the
            blfs-bootscripts-20080816 package.
          
          
make install-dbus
          
            Note that this boot script only starts the system-wide
            D-BUS daemon. Each user
            requiring access to D-BUS
            services will also need to run a session daemon as well. There
            are many methods you can use to start a session daemon using the
            dbus-launch
            command. Review the dbus-launch man page for
            details about the available parameters and options. Here are some
            suggestions and examples:
          
          
            
              - 
                
                  Add dbus-launch to the line
                  in the ~/.xinitrcfile that
                  starts your graphical desktop environment as shown in
                  the section called
                  “Configuring the Core GNOME Packages”.
 
- 
                
                  If you use xdm or some other display
                  manager that calls the ~/.xsessionfile, you can add
                  dbus-launch
                  to the line in your~/.xsessionfile that starts your
                  graphical desktop environment. The syntax would be similar
                  to the example in the~/.xinitrcfile.
 
- 
                
                  If you use gdm or some other display
                  manager that utilizes custom files to initiate sessions,
                  use the example in the section called
                  “Configuration Information” of the
                  GDM instructions to create
                  a file containing dbus-launch.
                 
- 
                
                  The examples shown previously use dbus-launch to specify a
                  program to be run. This has the benefit (when also using
                  the --exit-with-sessionparameter) of stopping the session daemon when the
                  specified program is stopped. You can also start the
                  session daemon in your system or personal startup scripts
                  by adding the following lines:
 
# Start the D-BUS session daemon
eval `dbus-launch`
export DBUS_SESSION_BUS_ADDRESS
 
                  This method will not stop the session daemon when you exit
                  your shell, therefore you should add the following line to
                  your ~/.bash_logoutfile:
 
# Kill the D-BUS session daemon
kill $DBUS_SESSION_BUS_PID
 
- 
                
                  A hint has been written that provides ways to start scripts
                  using the KDM session manager of KDE. The concepts in this
                  hint could possibly used with other session managers as
                  well. The hint is located at 
                  http://www.linuxfromscratch.org/hints/downloads/files/execute-session-scripts-using-kdm.txt.