static void load_standard_apps (GsmManager *manager, GKeyFile *keyfile) { g_debug ("fill: *** Adding required components"); handle_required_components (keyfile, !gsm_manager_get_failsafe (manager), append_required_components_helper, manager); g_debug ("fill: *** Done adding required components"); if (!gsm_manager_get_failsafe (manager)) { char **autostart_dirs; int i; autostart_dirs = gsm_util_get_autostart_dirs (); maybe_load_saved_session_apps (manager); for (i = 0; autostart_dirs[i]; i++) { gsm_manager_add_autostart_apps_from_dir (manager, autostart_dirs[i]); } g_strfreev (autostart_dirs); } }
static void load_standard_apps (GsmManager* manager, const char* default_session_key) { char** autostart_dirs; int i; autostart_dirs = gsm_util_get_autostart_dirs(); if (!failsafe) { maybe_load_saved_session_apps(manager); for (i = 0; autostart_dirs[i]; i++) { gsm_manager_add_autostart_apps_from_dir(manager, autostart_dirs[i]); } } /* We do this at the end in case a saved session contains an * application that already provides one of the components. */ append_default_apps(manager, default_session_key, autostart_dirs); append_required_apps(manager); append_accessibility_apps(manager); g_strfreev(autostart_dirs); }
static char * get_desktop_file_path (GsmXSMPClient *client) { SmProp *prop; char *desktop_file_path = NULL; char **dirs; const char *program_name; /* XSMP clients using eggsmclient defines a special property * pointing to their respective desktop entry file */ prop = find_property (client, GsmDesktopFile, NULL); if (prop) { GFile *file = g_file_new_for_uri (prop->vals[0].value); desktop_file_path = g_file_get_path (file); g_object_unref (file); goto out; } /* If we can't get desktop file from GsmDesktopFile then we * try to find the desktop file from its program name */ prop = find_property (client, SmProgram, NULL); program_name = prop->vals[0].value; dirs = gsm_util_get_autostart_dirs (); desktop_file_path = gsm_util_find_desktop_file_for_app_name (program_name, dirs); g_strfreev (dirs); out: g_debug ("GsmXSMPClient: desktop file for client %s is %s", gsm_client_peek_id (GSM_CLIENT (client)), desktop_file_path ? desktop_file_path : "(null)"); return desktop_file_path; }