diff options
| author | rezso <[email protected]> | 2017-08-15 23:58:52 +0200 | 
|---|---|---|
| committer | raveit65 <[email protected]> | 2017-08-16 17:22:08 +0200 | 
| commit | 923a0d96b4de690e48e1ebd2efe9ff544cc7b254 (patch) | |
| tree | 7f4265c39ee5dd3f7106c89cd925ed82ac0f70ea | |
| parent | 91778df1025aefd86dd1074b6f483657a65f83b2 (diff) | |
| download | mate-menus-923a0d96b4de690e48e1ebd2efe9ff544cc7b254.tar.bz2 mate-menus-923a0d96b4de690e48e1ebd2efe9ff544cc7b254.tar.xz  | |
make mate-applications-merged symlink
in ~/.config/menus if not exists
| -rw-r--r-- | libmenu/matemenu-tree.c | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/libmenu/matemenu-tree.c b/libmenu/matemenu-tree.c index cb32464..31623cf 100644 --- a/libmenu/matemenu-tree.c +++ b/libmenu/matemenu-tree.c @@ -21,6 +21,7 @@  #include "matemenu-tree.h" +#include <gio/gio.h>  #include <string.h>  #include <errno.h> @@ -2085,6 +2086,34 @@ static MenuLayoutNode* add_directory_dir(MateMenuTree* tree, MenuLayoutNode* bef  	return tmp;  } +/* According to desktop spec, since our menu file is called 'mate-applications', our + * merged menu folders need to be called 'mate-applications-merged'.  We'll setup the folder + * 'applications-merged' if it doesn't exist yet, and a symlink pointing to it in the + * ~/.config/menus directory + */ +static void +setup_merge_dir_symlink(void) +{ +    gchar *user_config = (gchar *) g_get_user_config_dir(); +    gchar *merge_path = g_build_filename (user_config, "menus", "applications-merged", NULL); +    GFile *merge_file = g_file_new_for_path (merge_path); +    gchar *sym_path; +    GFile *sym_file; + +    g_file_make_directory_with_parents (merge_file, NULL, NULL); + +    sym_path = g_build_filename (user_config, "menus", "mate-applications-merged", NULL); +    sym_file = g_file_new_for_path (sym_path); +    if (!g_file_query_exists (sym_file, NULL)) { +        g_file_make_symbolic_link (sym_file, merge_path, NULL, NULL); +    } + +    g_free (merge_path); +    g_free (sym_path); +    g_object_unref (merge_file); +    g_object_unref (sym_file); +} +  static void  resolve_default_directory_dirs (MateMenuTree      *tree,                                  MenuLayoutNode *layout) @@ -2129,6 +2158,8 @@ resolve_default_merge_dirs (MateMenuTree      *tree,    const char * const *system_config_dirs;    int                 i; +  setup_merge_dir_symlink(); +    root = menu_layout_node_get_root (layout);    menu_name = menu_layout_node_root_get_name (root);  | 
