summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mate-session/main.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/mate-session/main.c b/mate-session/main.c
index f09806f..63cc5fc 100644
--- a/mate-session/main.c
+++ b/mate-session/main.c
@@ -58,6 +58,17 @@
#define GSM_REQUIRED_COMPONENTS_SCHEMA GSM_SCHEMA ".required-components"
#define GSM_REQUIRED_COMPONENTS_LIST_KEY "required-components-list"
+#define ACCESSIBILITY_KEY "accessibility"
+#define ACCESSIBILITY_SCHEMA "org.mate.interface"
+
+#define VISUAL_SCHEMA "org.mate.applications-at-visual"
+#define VISUAL_KEY "exec"
+#define VISUAL_STARTUP_KEY "startup"
+
+#define MOBILITY_SCHEMA "org.mate.applications-at-mobility"
+#define MOBILITY_KEY "exec"
+#define MOBILITY_STARTUP_KEY "startup"
+
#define GSM_DBUS_NAME "org.mate.SessionManager"
#define IS_STRING_EMPTY(x) \
@@ -284,6 +295,54 @@ static void append_required_apps(GsmManager* manager)
g_object_unref(settings_required_components);
}
+static void append_accessibility_apps(GsmManager* manager)
+{
+ GSettings* mobility_settings;
+ GSettings* visual_settings;
+
+ g_debug("main: *** Adding accesibility apps");
+
+ mobility_settings = g_settings_new (MOBILITY_SCHEMA);
+ visual_settings = g_settings_new (VISUAL_SCHEMA);
+
+ if (g_settings_get_boolean (mobility_settings, MOBILITY_STARTUP_KEY))
+ {
+ gchar *mobility_exec;
+ mobility_exec = g_settings_get_string (mobility_settings, MOBILITY_KEY);
+ if (mobility_exec != NULL && mobility_exec[0] != 0)
+ {
+ char* app_path;
+ app_path = gsm_util_find_desktop_file_for_app_name(mobility_exec, NULL);
+ if (app_path != NULL)
+ {
+ gsm_manager_add_autostart_app(manager, app_path, NULL);
+ g_free (app_path);
+ }
+ g_free (mobility_exec);
+ }
+ }
+
+ if (g_settings_get_boolean (visual_settings, VISUAL_STARTUP_KEY))
+ {
+ gchar *visual_exec;
+ visual_exec = g_settings_get_string (visual_settings, VISUAL_KEY);
+ if (visual_exec != NULL && visual_exec[0] != 0)
+ {
+ char* app_path;
+ app_path = gsm_util_find_desktop_file_for_app_name(visual_exec, NULL);
+ if (app_path != NULL)
+ {
+ gsm_manager_add_autostart_app(manager, app_path, NULL);
+ g_free (app_path);
+ }
+ g_free (visual_exec);
+ }
+ }
+
+ g_object_unref (mobility_settings);
+ g_object_unref (visual_settings);
+}
+
static void maybe_load_saved_session_apps(GsmManager* manager)
{
GsmConsolekit* consolekit = NULL;
@@ -351,6 +410,7 @@ static void load_standard_apps (GsmManager* manager, const char* default_session
* 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);
}
@@ -476,6 +536,7 @@ int main(int argc, char** argv)
GsmManager* manager;
GsmStore* client_store;
GsmXsmpServer* xsmp_server;
+ GSettings* accessibility_settings;
MdmSignalHandler* signal_handler;
static char** override_autostart_dirs = NULL;
@@ -545,6 +606,14 @@ int main(int argc, char** argv)
if (initialize_gsettings () != TRUE)
exit (1);
+ /* Look if accessibility is enabled */
+ accessibility_settings = g_settings_new (ACCESSIBILITY_SCHEMA);
+ if (g_settings_get_boolean (accessibility_settings, ACCESSIBILITY_KEY))
+ {
+ gsm_util_setenv("GTK_MODULES", "gail:atk-bridge");
+ }
+ g_object_unref (accessibility_settings);
+
client_store = gsm_store_new();
xsmp_server = gsm_xsmp_server_new(client_store);