Do not test for their existence before adding xdg_data/xdg_config folders to the lists. Otherwise, garcon won't monitor them and won't detect if they are created later (e.g. if $XDG_DATA_HOME/applications doesn't exist, then even when a menu editor creates it and writes desktop files in it, they won't be detected by garcon). --- garcon-0.1.5.orig/garcon/garcon-menu-merger.c +++ garcon-0.1.5/garcon/garcon-menu-merger.c @@ -408,12 +408,9 @@ garcon_menu_merger_insert_default_dirs ( /* Build KDE data dir */ kde_data_dir = g_build_filename (kde_dir, "share", base_name, NULL); - /* Add it as a directory dir if it exists */ - if (G_LIKELY (g_file_test (kde_data_dir, G_FILE_TEST_IS_DIR))) - { - node = g_node_new (garcon_menu_node_create (type, kde_data_dir)); - prev_node = g_node_insert_after (parent, prev_node, node); - } + /* Add it as a directory dir */ + node = g_node_new (garcon_menu_node_create (type, kde_data_dir)); + prev_node = g_node_insert_after (parent, prev_node, node); /* Free the KDE data dir */ g_free (kde_data_dir); @@ -426,21 +423,15 @@ garcon_menu_merger_insert_default_dirs ( for (i = 0; dirs[i] != NULL; i++) { path = g_build_path (G_DIR_SEPARATOR_S, dirs[i], base_name, NULL); - if (G_LIKELY (g_file_test (path, G_FILE_TEST_IS_DIR))) - { - node = g_node_new (garcon_menu_node_create (type, path)); - g_node_insert_after (parent, prev_node, node); - } + node = g_node_new (garcon_menu_node_create (type, path)); + g_node_insert_after (parent, prev_node, node); g_free (path); } /* Append user data dir */ path = g_build_path (G_DIR_SEPARATOR_S, g_get_user_data_dir (), base_name, NULL); - if (G_LIKELY (g_file_test (path, G_FILE_TEST_IS_DIR))) - { - node = g_node_new (garcon_menu_node_create (type, path)); - prev_node = g_node_append (parent, node); - } + node = g_node_new (garcon_menu_node_create (type, path)); + prev_node = g_node_append (parent, node); g_free (path); } @@ -479,22 +470,16 @@ garcon_menu_merger_insert_default_merge_ { path = g_build_path (G_DIR_SEPARATOR_S, dirs[i], "menus", merge_dir_basename, NULL); - if (G_LIKELY (g_file_test (path, G_FILE_TEST_IS_DIR))) - { - node = g_node_new (garcon_menu_node_create (GARCON_MENU_NODE_TYPE_MERGE_DIR, path)); - g_node_insert_after (parent, prev_node, node); - } + node = g_node_new (garcon_menu_node_create (GARCON_MENU_NODE_TYPE_MERGE_DIR, path)); + g_node_insert_after (parent, prev_node, node); g_free (path); } /* Append user config dir */ path = g_build_path (G_DIR_SEPARATOR_S, g_get_user_config_dir (), "menus", merge_dir_basename, NULL); - if (G_LIKELY (g_file_test (path, G_FILE_TEST_IS_DIR))) - { - node = g_node_new (garcon_menu_node_create (GARCON_MENU_NODE_TYPE_MERGE_DIR, path)); - prev_node = g_node_append (parent, node); - } + node = g_node_new (garcon_menu_node_create (GARCON_MENU_NODE_TYPE_MERGE_DIR, path)); + prev_node = g_node_append (parent, node); g_free (path); }