Fix setting $DBUS_SESSION_BUS_ADDRESS after Emacs has started

* doc/misc/dbus.texi (Alternative Buses): Explain using
$DBUS_SESSION_BUS_ADDRESS after Emacs has started.

* src/dbusbind.c (XD_DBUS_VALIDATE_BUS_ADDRESS): Use egetenv.
This commit is contained in:
Michael Albinus 2023-06-12 12:45:38 +02:00
parent bdb0bc2b4e
commit 1383efe01d
2 changed files with 19 additions and 3 deletions

View file

@ -1847,8 +1847,24 @@ This function establishes the connection to D-Bus @var{bus}.
corresponding bus. For the system and session buses, this function is
called when loading @file{dbus.el}, there is no need to call it again.
The function returns the number of connections this Emacs session has
established to the @var{bus} under the same unique name
If Emacs was invoked when there was no D-Bus session bus available
yet, you can set the environment variable
@env{DBUS_SESSION_BUS_ADDRESS} once the session bus daemon is running
and offering the address. Calling @code{dbus-init-bus} initializes
the connection to the session bus.
@lisp
(setenv "DBUS_SESSION_BUS_ADDRESS" "unix:path=/run/user/1000/bus")
@result{} "unix:path=/run/user/1000/bus"
(dbus-init-bus :session)
@result{} 2
@end lisp
@code{dbus-init-bus} returns the number of connections this Emacs
session has established to the @var{bus} under the same unique name
(@pxref{dbus-get-unique-name}). It depends on the libraries Emacs is
linked with, and on the environment Emacs is running. For example, if
Emacs is linked with the GTK+ toolkit, and it runs in a GTK+-aware

View file

@ -276,7 +276,7 @@ XD_OBJECT_TO_STRING (Lisp_Object object)
#define XD_DBUS_VALIDATE_BUS_ADDRESS(bus) \
do { \
char const *session_bus_address = getenv ("DBUS_SESSION_BUS_ADDRESS"); \
char const *session_bus_address = egetenv ("DBUS_SESSION_BUS_ADDRESS"); \
if (STRINGP (bus)) \
{ \
DBusAddressEntry **entries; \