--- /dev/null
+diff -urN aa/desktop-file-utils-0.6/src/menu-entries.c desktop-file-utils-0.6/src/menu-entries.c
+--- aa/desktop-file-utils-0.6/src/menu-entries.c 2004-07-22 01:22:36.741865272 +0200
++++ desktop-file-utils-0.6/src/menu-entries.c 2004-07-22 01:37:57.796843632 +0200
+@@ -1753,6 +1753,7 @@
+ GError *err;
+ char *categories;
+ Entry *e;
++ gboolean show;
+
+ str = NULL;
+ len = 0;
+@@ -1765,10 +1766,32 @@
+ return NULL;
+ }
+
++ /* Check for NoDisplay */
++ char *nodisplay;
++
++ show = TRUE;
++
++ nodisplay = find_value (str, "NoDisplay");
++
++ if (nodisplay != NULL)
++ if (strcasecmp (nodisplay, "True") == 0)
++ show = FALSE;
++
++ if (!show)
++ menu_verbose ("Not showing \"%s\" due to NoDisplay=%s\n",
++ filename, nodisplay);
++
++ g_free (nodisplay);
++
++ if (!show){
++ g_free (str);
++ return NULL;
++ }
++ /* End checking for NoDisplay */
++
+ if (cache->only_show_in_name)
+ {
+ char *onlyshowin;
+- gboolean show;
+
+ show = TRUE;
+
+diff -urN aa/desktop-file-utils-0.6/src/menu-layout.c desktop-file-utils-0.6/src/menu-layout.c
+--- aa/desktop-file-utils-0.6/src/menu-layout.c 2004-07-22 01:22:36.741865272 +0200
++++ desktop-file-utils-0.6/src/menu-layout.c 2004-07-22 01:43:43.405303160 +0200
+@@ -1645,6 +1645,9 @@
+ case MENU_NODE_MENU_ONLY_SHOW_IN:
+ append_simple (node, depth, "OnlyShowIn", str);
+ break;
++ case MENU_NODE_MENU_NO_DISPLAY:
++ append_simple (node, depth, "NoDisplay", str);
++ break;
+ case MENU_NODE_APP_DIR:
+ append_simple (node, depth, "AppDir", str);
+ break;
+diff -urN aa/desktop-file-utils-0.6/src/menu-layout.h desktop-file-utils-0.6/src/menu-layout.h
+--- aa/desktop-file-utils-0.6/src/menu-layout.h 2004-07-22 01:22:36.741865272 +0200
++++ desktop-file-utils-0.6/src/menu-layout.h 2004-07-22 01:43:10.477308976 +0200
+@@ -37,6 +37,7 @@
+ MENU_NODE_PASSTHROUGH,
+ MENU_NODE_MENU,
+ MENU_NODE_MENU_ONLY_SHOW_IN,
++ MENU_NODE_MENU_NO_DISPLAY,
+ MENU_NODE_APP_DIR,
+ MENU_NODE_DEFAULT_APP_DIRS,
+ MENU_NODE_DIRECTORY_DIR,
+diff -urN aa/desktop-file-utils-0.6/src/menu-parser.c desktop-file-utils-0.6/src/menu-parser.c
+--- aa/desktop-file-utils-0.6/src/menu-parser.c 2004-07-22 01:22:36.742865120 +0200
++++ desktop-file-utils-0.6/src/menu-parser.c 2004-07-22 01:45:04.482977480 +0200
+@@ -338,6 +338,10 @@
+ {
+ push_node (parser, MENU_NODE_MENU_ONLY_SHOW_IN);
+ }
++ else if (ELEMENT_IS ("NoDisplay"))
++ {
++ push_node (parser, MENU_NODE_MENU_NO_DISPLAY);
++ }
+ else if (ELEMENT_IS ("AppDir"))
+ {
+ push_node (parser, MENU_NODE_APP_DIR);
+@@ -785,6 +789,7 @@
+ switch (menu_node_get_type (parser->stack_top))
+ {
+ case MENU_NODE_MENU_ONLY_SHOW_IN:
++ case MENU_NODE_MENU_NO_DISPLAY:
+ case MENU_NODE_APP_DIR:
+ case MENU_NODE_DIRECTORY_DIR:
+ case MENU_NODE_NAME:
+@@ -873,6 +878,7 @@
+ switch (menu_node_get_type (parser->stack_top))
+ {
+ case MENU_NODE_MENU_ONLY_SHOW_IN:
++ case MENU_NODE_MENU_NO_DISPLAY:
+ case MENU_NODE_APP_DIR:
+ case MENU_NODE_DIRECTORY_DIR:
+ case MENU_NODE_NAME:
+diff -urN aa/desktop-file-utils-0.6/src/menu-process.c desktop-file-utils-0.6/src/menu-process.c
+--- aa/desktop-file-utils-0.6/src/menu-process.c 2004-07-22 01:22:36.746864512 +0200
++++ desktop-file-utils-0.6/src/menu-process.c 2004-07-22 01:49:07.279066864 +0200
+@@ -1995,6 +1995,13 @@
+ }
+ break;
+
++ case MENU_NODE_MENU_NO_DISPLAY:
++ {
++ if (strcasecmp (menu_node_get_content (child), "True") == 0)
++ deleted = TRUE;
++ }
++ break;
++
+ case MENU_NODE_NAME:
+ {
+ if (tree_node->name)