Bug 589260 - Don't replace panel in Xephyr mode

Avoid grabbing the org.gnome.Panel name if we're running in
Xephyr, since that affects the main desktop.
This commit is contained in:
Colin Walters 2009-07-29 15:05:05 -04:00
parent 93ea4b07c1
commit 66e48da7cb
2 changed files with 16 additions and 10 deletions

2
src/gnome-shell.in Executable file → Normal file
View File

@ -273,6 +273,8 @@ if options.debug:
try:
if run_in_xephyr:
shell = start_xephyr()
# This makes us not grab the org.gnome.Panel name
os.environ['GNOME_SHELL_NO_REPLACE_PANEL'] = '1'
start_shell()
else:
if gnome_panel_pid is not None:

View File

@ -741,18 +741,22 @@ shell_global_grab_dbus_service (ShellGlobal *global)
exit (0);
}
/* Also grab org.gnome.Panel to replace any existing panel process */
if (!dbus_g_proxy_call (bus, "RequestName", &error,
G_TYPE_STRING, "org.gnome.Panel",
G_TYPE_UINT, DBUS_NAME_FLAG_REPLACE_EXISTING | DBUS_NAME_FLAG_DO_NOT_QUEUE,
G_TYPE_INVALID,
G_TYPE_UINT, &request_name_result,
G_TYPE_INVALID))
/* Also grab org.gnome.Panel to replace any existing panel process,
* unless a special environment variable is passed. The environment
* variable is used by the gnome-shell (no --replace) launcher in
* Xephyr */
if (!g_getenv ("GNOME_SHELL_NO_REPLACE_PANEL"))
{
if (!dbus_g_proxy_call (bus, "RequestName", &error, G_TYPE_STRING,
"org.gnome.Panel", G_TYPE_UINT,
DBUS_NAME_FLAG_REPLACE_EXISTING | DBUS_NAME_FLAG_DO_NOT_QUEUE,
G_TYPE_INVALID, G_TYPE_UINT,
&request_name_result, G_TYPE_INVALID))
{
g_print ("failed to acquire org.gnome.Panel: %s\n", error->message);
exit (1);
}
}
g_object_unref (bus);
}