diff options
Diffstat (limited to 'gui/greeter/greeter_session.c')
-rw-r--r-- | gui/greeter/greeter_session.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gui/greeter/greeter_session.c b/gui/greeter/greeter_session.c index e6889c7f..d4db8ef4 100644 --- a/gui/greeter/greeter_session.c +++ b/gui/greeter/greeter_session.c @@ -46,6 +46,13 @@ greeter_login_list_lookup (GSList *l, const gchar *data) if (!list || !data) return(FALSE); + /* FIXME: Hack, will support these builtin types later */ + if (strcmp (data, GDM_SESSION_DEFAULT ".desktop") == 0 || + strcmp (data, GDM_SESSION_CUSTOM ".desktop") == 0 || + strcmp (data, GDM_SESSION_FAILSAFE ".desktop") == 0) { + return TRUE; + } + while (list) { if (strcmp (list->data, data) == 0) @@ -293,6 +300,8 @@ greeter_session_init (void) char *name; char *comment; char *label; + char *tryexec; + /* ignore everything bug the .desktop files */ if (strstr (dent->d_name, ".desktop") == NULL) { dent = readdir (sessdir); @@ -303,6 +312,25 @@ greeter_session_init (void) cfg = ve_config_new (s); g_free (s); + if (ve_config_get_bool (cfg, "Desktop Entry/Hidden=false")) { + ve_config_destroy (cfg); + dent = readdir (sessdir); + continue; + } + + tryexec = ve_config_get_string (cfg, "Desktop Entry/TryExec"); + if ( ! ve_string_empty (tryexec)) { + char *full = g_find_program_in_path (tryexec); + if (full == NULL) { + g_free (tryexec); + ve_config_destroy (cfg); + dent = readdir (sessdir); + continue; + } + g_free (full); + } + g_free (tryexec); + exec = ve_config_get_string (cfg, "Desktop Entry/Exec"); name = ve_config_get_translated_string (cfg, "Desktop Entry/Name"); comment = ve_config_get_translated_string (cfg, "Desktop Entry/Comment"); |