Exemplo n.º 1
0
static void
collect_sessions_from_directory (const char *dirname)
{
        GDir       *dir;
        const char *filename;

        /* FIXME: add file monitor to directory */

        dir = g_dir_open (dirname, 0, NULL);
        if (dir == NULL) {
                return;
        }

        while ((filename = g_dir_read_name (dir))) {
                char *id;
                char *full_path;

                if (! g_str_has_suffix (filename, ".desktop")) {
                        continue;
                }
                id = g_strndup (filename, strlen (filename) - strlen (".desktop"));

                full_path = g_build_filename (dirname, filename, NULL);

                load_session_file (id, full_path);

                g_free (id);
                g_free (full_path);
        }

        g_dir_close (dir);
}
Exemplo n.º 2
0
static void
collect_sessions_from_directory (const char *dirname)
{
        GDir       *dir;
        const char *filename;

        gboolean is_x11 = g_getenv ("WAYLAND_DISPLAY") == NULL &&
                          g_getenv ("RUNNING_UNDER_GDM") != NULL;

        /* FIXME: add file monitor to directory */

        dir = g_dir_open (dirname, 0, NULL);
        if (dir == NULL) {
                return;
        }

        while ((filename = g_dir_read_name (dir))) {
                char *id;
                char *full_path;

                if (! g_str_has_suffix (filename, ".desktop")) {
                        continue;
                }

                if (is_x11 && g_str_has_suffix (filename, "-xorg.desktop")) {
                        char *base_name = g_strndup (filename, strlen (filename) - strlen ("-xorg.desktop"));
                        char *fallback_name = g_strconcat (base_name, ".desktop", NULL);
                        g_free (base_name);
                        char *fallback_path = g_build_filename (dirname, fallback_name, NULL);
                        g_free (fallback_name);
                        if (g_file_test (fallback_path, G_FILE_TEST_EXISTS)) {
                                g_free (fallback_path);
                                g_debug ("Running under X11, ignoring %s", filename);
                                continue;
                        }
                        g_free (fallback_path);
                }

                id = g_strndup (filename, strlen (filename) - strlen (".desktop"));

                full_path = g_build_filename (dirname, filename, NULL);

                load_session_file (id, full_path);

                g_free (id);
                g_free (full_path);
        }

        g_dir_close (dir);
}