211 lines
7.6 KiB
Groff
211 lines
7.6 KiB
Groff
.\"
|
|
.\" dbus\-launch manual page.
|
|
.\" Copyright (C) 2003 Red Hat, Inc.
|
|
.\"
|
|
.TH dbus\-launch 1
|
|
.SH NAME
|
|
dbus\-launch \- Utility to start a message bus from a shell script
|
|
.SH SYNOPSIS
|
|
.PP
|
|
.B dbus\-launch [\-\-version] [\-\-sh\-syntax] [\-\-csh\-syntax] [\-\-auto\-syntax] [\-\-exit\-with\-session] [\-\-autolaunch=MACHINEID] [\-\-config\-file=FILENAME] [PROGRAM] [ARGS...]
|
|
|
|
.SH DESCRIPTION
|
|
|
|
The \fIdbus\-launch\fP command is used to start a session bus
|
|
instance of \fIdbus\-daemon\fP from a shell script.
|
|
It would normally be called from a user's login
|
|
scripts. Unlike the daemon itself, \fIdbus\-launch\fP exits, so
|
|
backticks or the $() construct can be used to read information from
|
|
\fIdbus\-launch\fP.
|
|
|
|
With no arguments, \fIdbus\-launch\fP will launch a session bus
|
|
instance and print the address and PID of that instance to standard
|
|
output.
|
|
|
|
You may specify a program to be run; in this case, \fIdbus\-launch\fP
|
|
will launch a session bus instance, set the appropriate environment
|
|
variables so the specified program can find the bus, and then execute the
|
|
specified program, with the specified arguments. See below for
|
|
examples.
|
|
|
|
If you launch a program, \fIdbus\-launch\fP will not print the
|
|
information about the new bus to standard output.
|
|
|
|
When \fIdbus\-launch\fP prints bus information to standard output, by
|
|
default it is in a simple key\-value pairs format. However, you may
|
|
request several alternate syntaxes using the \-\-sh\-syntax, \-\-csh\-syntax,
|
|
\-\-binary\-syntax, or
|
|
\-\-auto\-syntax options. Several of these cause \fIdbus\-launch\fP to emit shell code
|
|
to set up the environment.
|
|
|
|
With the \-\-auto\-syntax option, \fIdbus\-launch\fP looks at the value
|
|
of the SHELL environment variable to determine which shell syntax
|
|
should be used. If SHELL ends in "csh", then csh\-compatible code is
|
|
emitted; otherwise Bourne shell code is emitted. Instead of passing
|
|
\-\-auto\-syntax, you may explicitly specify a particular one by using
|
|
\-\-sh\-syntax for Bourne syntax, or \-\-csh\-syntax for csh syntax.
|
|
In scripts, it's more robust to avoid \-\-auto\-syntax and you hopefully
|
|
know which shell your script is written in.
|
|
|
|
.PP
|
|
See http://www.freedesktop.org/software/dbus/ for more information
|
|
about D\-Bus. See also the man page for \fIdbus\-daemon\fP.
|
|
|
|
.SH EXAMPLES
|
|
|
|
Distributions running
|
|
.B dbus\-launch
|
|
as part of a standard X session should run
|
|
.B "dbus\-launch \-\-exit\-with\-session"
|
|
after the X server has started and become available, as a wrapper around
|
|
the "main" X client (typically a session manager or window manager), as in
|
|
these examples:
|
|
|
|
.RS
|
|
.B "dbus\-launch \-\-exit\-with\-session gnome\-session"
|
|
|
|
.B "dbus\-launch \-\-exit\-with\-session openbox"
|
|
|
|
.B "dbus\-launch \-\-exit\-with\-session ~/.xsession"
|
|
.RE
|
|
|
|
If your distribution does not do this, you can achieve similar results
|
|
by running your session or window manager in the same way in a script
|
|
run by your X session, such as
|
|
.BR ~/.xsession ,
|
|
.B ~/.xinitrc
|
|
or
|
|
.BR ~/.Xclients .
|
|
|
|
To start a D-Bus session within a text-mode session, you can run
|
|
dbus-launch in the background. For instance, in a sh-compatible shell:
|
|
|
|
.nf
|
|
## test for an existing bus daemon, just to be safe
|
|
if test \-z "$DBUS_SESSION_BUS_ADDRESS" ; then
|
|
## if not found, launch a new one
|
|
eval `dbus\-launch \-\-sh\-syntax`
|
|
echo "D\-Bus per\-session daemon address is: $DBUS_SESSION_BUS_ADDRESS"
|
|
fi
|
|
.fi
|
|
Note that in this case, dbus-launch will exit, and dbus-daemon will not be
|
|
terminated automatically on logout.
|
|
|
|
.SH AUTOMATIC LAUNCHING
|
|
|
|
.PP
|
|
If DBUS_SESSION_BUS_ADDRESS is not set for a process that tries to use
|
|
D\-Bus, by default the process will attempt to invoke dbus\-launch with
|
|
the \-\-autolaunch option to start up a new session bus or find the
|
|
existing bus address on the X display or in a file in
|
|
~/.dbus/session\-bus/
|
|
|
|
.PP
|
|
Whenever an autolaunch occurs, the application that had to
|
|
start a new bus will be in its own little world; it can effectively
|
|
end up starting a whole new session if it tries to use a lot of
|
|
bus services. This can be suboptimal or even totally broken, depending
|
|
on the app and what it tries to do.
|
|
|
|
.PP
|
|
There are two common reasons for autolaunch. One is ssh to a remote
|
|
machine. The ideal fix for that would be forwarding of
|
|
DBUS_SESSION_BUS_ADDRESS in the same way that DISPLAY is forwarded.
|
|
In the meantime, you can edit the session.conf config file to
|
|
have your session bus listen on TCP, and manually set
|
|
DBUS_SESSION_BUS_ADDRESS, if you like.
|
|
|
|
.PP
|
|
The second common reason for autolaunch is an su to another user, and
|
|
display of X applications running as the second user on the display
|
|
belonging to the first user. Perhaps the ideal fix in this case
|
|
would be to allow the second user to connect to the session bus of the
|
|
first user, just as they can connect to the first user's display.
|
|
However, a mechanism for that has not been coded.
|
|
|
|
.PP
|
|
You can always avoid autolaunch by manually setting
|
|
DBUS_SESSION_BUS_ADDRESS. Autolaunch happens because the default
|
|
address if none is set is "autolaunch:", so if any other address is
|
|
set there will be no autolaunch. You can however include autolaunch in
|
|
an explicit session bus address as a fallback, for example
|
|
DBUS_SESSION_BUS_ADDRESS="something:,autolaunch:" \- in that case if
|
|
the first address doesn't work, processes will autolaunch. (The bus
|
|
address variable contains a comma\-separated list of addresses to try.)
|
|
|
|
.PP
|
|
The \-\-autolaunch option is considered an internal implementation
|
|
detail of libdbus, and in fact there are plans to change it. There's
|
|
no real reason to use it outside of the libdbus implementation anyhow.
|
|
|
|
.SH OPTIONS
|
|
The following options are supported:
|
|
.TP
|
|
.I "\-\-auto\-syntax"
|
|
Choose \-\-csh\-syntax or \-\-sh\-syntax based on the SHELL environment variable.
|
|
|
|
.I "\-\-binary\-syntax"
|
|
Write to stdout a nul\-terminated bus address, then the bus PID as a
|
|
binary integer of size sizeof(pid_t), then the bus X window ID as a
|
|
binary integer of size sizeof(long). Integers are in the machine's
|
|
byte order, not network byte order or any other canonical byte order.
|
|
|
|
.TP
|
|
.I "\-\-close\-stderr"
|
|
Close the standard error output stream before starting the D\-Bus
|
|
daemon. This is useful if you want to capture dbus\-launch error
|
|
messages but you don't want dbus\-daemon to keep the stream open to
|
|
your application.
|
|
|
|
.TP
|
|
.I "\-\-config\-file=FILENAME"
|
|
Pass \-\-config\-file=FILENAME to the bus daemon, instead of passing it
|
|
the \-\-session argument. See the man page for dbus\-daemon
|
|
|
|
.TP
|
|
.I "\-\-csh\-syntax"
|
|
Emit csh compatible code to set up environment variables.
|
|
|
|
.TP
|
|
.I "\-\-exit\-with\-session"
|
|
If this option is provided, a persistent "babysitter" process will be
|
|
created that watches stdin for HUP and tries to connect to the X
|
|
server. If this process gets a HUP on stdin or loses its X connection,
|
|
it kills the message bus daemon.
|
|
|
|
.TP
|
|
.I "\-\-autolaunch=MACHINEID"
|
|
This option implies that \fIdbus\-launch\fP should scan for a
|
|
previously\-started session and reuse the values found there. If no
|
|
session is found, it will start a new session. The
|
|
\-\-exit\-with\-session option is implied if \-\-autolaunch is given.
|
|
This option is for the exclusive use of libdbus, you do not want to
|
|
use it manually. It may change in the future.
|
|
|
|
.TP
|
|
.I "\-\-sh\-syntax"
|
|
Emit Bourne\-shell compatible code to set up environment variables.
|
|
|
|
.TP
|
|
.I "\-\-version"
|
|
Print the version of dbus\-launch
|
|
|
|
.SH NOTES
|
|
|
|
If you run
|
|
.B "dbus\-launch myapp"
|
|
(with any other options), dbus\-daemon will
|
|
.I not
|
|
exit when
|
|
.B myapp
|
|
terminates: this is because
|
|
.B myapp
|
|
is assumed to be part of a larger session, rather than a session in its
|
|
own right.
|
|
|
|
.SH AUTHOR
|
|
See http://www.freedesktop.org/software/dbus/doc/AUTHORS
|
|
|
|
.SH BUGS
|
|
Please send bug reports to the D\-Bus mailing list or bug tracker,
|
|
see http://www.freedesktop.org/software/dbus/
|