Codebase list gnome-settings-daemon / 147b202
* debian/patches/git_keyring_environment.patch: - "Get the environment from gnome-keyring When launching custom applications." (lp: #839444) (bzr r311) Sebastien Bacher 12 years ago
3 changed file(s) with 109 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
33 - display the logout action on ctrl-alt-del (lp: #961501)
44 * debian/patches/60_unity_hide_status_icon.patch:
55 - don't show the power status icon under classic either (lp: #965279)
6 * debian/patches/git_keyring_environment.patch:
7 - "Get the environment from gnome-keyring When launching
8 custom applications." (lp: #839444)
69
710 -- Sebastien Bacher <seb128@ubuntu.com> Fri, 30 Mar 2012 13:40:48 +0200
811
0 From a9388f70abc975da31c90867d9ab9bd7253b1d30 Mon Sep 17 00:00:00 2001
1 From: Bastien Nocera <hadess@hadess.net>
2 Date: Fri, 30 Mar 2012 09:36:58 +0000
3 Subject: media-keys: Get the environment from gnome-keyring
4
5 When launching custom applications.
6
7 https://bugzilla.gnome.org/show_bug.cgi?id=662528
8 ---
9 Index: gnome-settings-daemon-3.4.0/plugins/media-keys/gsd-media-keys-manager.c
10 ===================================================================
11 --- gnome-settings-daemon-3.4.0.orig/plugins/media-keys/gsd-media-keys-manager.c 2012-04-03 16:25:00.312602471 +0200
12 +++ gnome-settings-daemon-3.4.0/plugins/media-keys/gsd-media-keys-manager.c 2012-04-03 16:25:00.332602472 +0200
13 @@ -69,6 +69,10 @@
14 #define GNOME_SESSION_DBUS_PATH "/org/gnome/SessionManager"
15 #define GNOME_SESSION_DBUS_INTERFACE "org.gnome.SessionManager"
16
17 +#define GNOME_KEYRING_DBUS_NAME "org.gnome.keyring"
18 +#define GNOME_KEYRING_DBUS_PATH "/org/gnome/keyring/daemon"
19 +#define GNOME_KEYRING_DBUS_INTERFACE "org.gnome.keyring.Daemon"
20 +
21 #define GCONF_BINDING_DIR "/desktop/gnome/keybindings"
22
23 static const gchar introspection_xml[] =
24 @@ -360,6 +364,57 @@
25 return cmd;
26 }
27
28 +static char **
29 +get_keyring_env (GsdMediaKeysManager *manager)
30 +{
31 + GError *error = NULL;
32 + GVariant *variant, *item;
33 + GVariantIter *iter;
34 + char **envp;
35 +
36 + variant = g_dbus_connection_call_sync (manager->priv->connection,
37 + GNOME_KEYRING_DBUS_NAME,
38 + GNOME_KEYRING_DBUS_PATH,
39 + GNOME_KEYRING_DBUS_INTERFACE,
40 + "GetEnvironment",
41 + NULL,
42 + NULL,
43 + G_DBUS_CALL_FLAGS_NONE,
44 + -1,
45 + NULL,
46 + &error);
47 + if (variant == NULL) {
48 + g_warning ("Failed to call GetEnvironment on keyring daemon: %s", error->message);
49 + g_error_free (error);
50 + return NULL;
51 + }
52 +
53 + envp = g_get_environ ();
54 +
55 + g_variant_get (variant, "(a{ss})", &iter);
56 +
57 + while ((item = g_variant_iter_next_value (iter))) {
58 + char *key;
59 + char *value;
60 +
61 + g_variant_get (item,
62 + "{ss}",
63 + &key,
64 + &value);
65 +
66 + envp = g_environ_setenv (envp, key, value, TRUE);
67 +
68 + g_variant_unref (item);
69 + g_free (key);
70 + g_free (value);
71 + }
72 +
73 + g_variant_iter_free (iter);
74 + g_variant_unref (variant);
75 +
76 + return envp;
77 +}
78 +
79 static void
80 execute (GsdMediaKeysManager *manager,
81 char *cmd,
82 @@ -385,15 +440,21 @@
83 }
84
85 if (g_shell_parse_argv (exec, &argc, &argv, NULL)) {
86 + char **envp;
87 +
88 + envp = get_keyring_env (manager);
89 +
90 retval = g_spawn_async (g_get_home_dir (),
91 argv,
92 - NULL,
93 + envp,
94 G_SPAWN_SEARCH_PATH,
95 NULL,
96 NULL,
97 NULL,
98 &error);
99 +
100 g_strfreev (argv);
101 + g_strfreev (envp);
102 }
103
104 if (retval == FALSE) {
2222 revert_git_a11y_gsettings.patch
2323 bugzilla_segfault_dpms.patch
2424 correct_logout_action.patch
25 git_keyring_environment.patch