[beryl-commits] r1461 - in trunk: beryl-core/include beryl-core/libberylsettings beryl-core/src beryl-plugins/src beryl-vidcap

quinn at server.beryl-project.org quinn at server.beryl-project.org
Sat Dec 2 00:22:15 CET 2006


Author: quinn
Date: 2006-12-02 00:22:11 +0100 (Sat, 02 Dec 2006)
New Revision: 1461

Modified:
   trunk/beryl-core/include/beryl-settings.h
   trunk/beryl-core/include/beryl.h
   trunk/beryl-core/libberylsettings/main.c
   trunk/beryl-core/src/display_options.c
   trunk/beryl-core/src/screen_options.c
   trunk/beryl-plugins/src/animation.c
   trunk/beryl-plugins/src/annotate.c
   trunk/beryl-plugins/src/bench.c
   trunk/beryl-plugins/src/blurfx.c
   trunk/beryl-plugins/src/clone.c
   trunk/beryl-plugins/src/crashhandler.c
   trunk/beryl-plugins/src/cube.c
   trunk/beryl-plugins/src/decoration.c
   trunk/beryl-plugins/src/fade.c
   trunk/beryl-plugins/src/group.c
   trunk/beryl-plugins/src/inputzoom.c
   trunk/beryl-plugins/src/move.c
   trunk/beryl-plugins/src/neg.c
   trunk/beryl-plugins/src/place.c
   trunk/beryl-plugins/src/plane.c
   trunk/beryl-plugins/src/put.c
   trunk/beryl-plugins/src/resize.c
   trunk/beryl-plugins/src/rotate.c
   trunk/beryl-plugins/src/scale.c
   trunk/beryl-plugins/src/screenshot.c
   trunk/beryl-plugins/src/showdesktop.c
   trunk/beryl-plugins/src/splash.c
   trunk/beryl-plugins/src/state.c
   trunk/beryl-plugins/src/switcher.c
   trunk/beryl-plugins/src/trailfocus.c
   trunk/beryl-plugins/src/water.c
   trunk/beryl-plugins/src/wobbly.c
   trunk/beryl-plugins/src/zoom.c
   trunk/beryl-vidcap/capture.c
Log:
beryl-core, beryl-vidcap, beryl-plugins:
-add new groups system for options
-add hints to options
-still none of these are filled out
-beryl-settings isn't converted to use the new hint checking function yet


Modified: trunk/beryl-core/include/beryl-settings.h
===================================================================
--- trunk/beryl-core/include/beryl-settings.h	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-core/include/beryl-settings.h	2006-12-01 23:22:11 UTC (rev 1461)
@@ -37,10 +37,23 @@
     BerylSettingsContextWriteSettingFunc	write_setting;
 };
 
+typedef struct _BerylSettingsSubGroup
+{
+    gchar 	* name;		//in current locale
+    GSList	* settings;	//list of BerylSetting
+} BerylSettingsSubGroup;
+
+typedef struct _BerylSettingsGroup
+{
+    gchar	* name;		//in current locale
+    GSList	* subGroups;	//list of BerylSettingsSubGroup
+} BerylSettingsGroup;
+
 typedef struct _BerylSettingsPlugin
 {
     gchar    *  gettext_domain;     // gettext domain for the plugin
     gchar    *  name;
+    gchar    *  hints;
     gchar    *  short_desc;         // in current locale
     gchar    *  long_desc;          // in current locale
     GSList   *  load_after;         // list_of(gchar *)
@@ -48,6 +61,7 @@
     GSList   *  provides;           // list_of(gchar *)
     GSList   *  requires;           // list_of(gchar *)
     GSList   *  settings;           // list_of(BerylSetting)
+    GSList   *  groups;		    // list_of(BerylSettingsGroup)
     gpointer    private_ptr;
 } BerylSettingsPlugin;
 
@@ -186,6 +200,9 @@
     gchar                 * name;
     gchar                 * short_desc;        // in current locale
     gchar                 * long_desc;        // in current locale
+    gchar	 	  * group;		// in current locale
+    gchar		  * subGroup;		// in current locale
+    gchar		  * displayHints;	// in current locale
     BerylSettingValue       value;
     BerylSettingValue       default_value;
     gboolean                is_default; // never read setting->value unless this is set to FALSE
@@ -213,6 +230,38 @@
         will free the context and all its contents.
         $context    context to free.*/
 
+GSList * beryl_settings_plugin_get_groups(BerylSettingsPlugin * plugin);
+/*	This function returns a list of BerylSettingsGroup
+ *	$plugin		the plugin to get the groups for
+ *	%return		the list of groups */
+
+gchar * beryl_settings_group_get_name(BerylSettingsGroup * group);
+/*	Get the name
+ *	$group		the group
+ *	%return		its name in current locale */
+
+GSList * beryl_settings_group_get_subgroups(BerylSettingsGroup * group);
+/*	This function returns a list of BerylSettingsSubGroup
+ *	$group		the group to get subgroups of
+ *	%return		the list of subgroups */
+
+gchar * beryl_settings_subgroup_get_name(BerylSettingsSubGroup * group);
+/*	Get the name
+ *	$group		the subgroup
+ *	%return		its name in current locale */
+
+GSList * beryl_settings_subgroup_get_settings(BerylSettingsSubGroup * subGroup);
+/*	This function returns the settings in a subgroup
+ *	$group		the subgroups to get settings for
+ *	%return		the list of settings */
+
+gboolean beryl_setting_has_hint(BerylSetting * setting, gchar * hint);
+/*	This function returns wether a given display-hint is set
+ *	on the setting in question
+ *	$setting	the setting to look at
+ *	$hint		the hint to look for
+ *	%return		wether it is there */
+
 BerylSettingsPlugin * beryl_settings_context_find_plugin(
                         BerylSettingsContext * context, gchar * name);
 /*          This function looks up a given plugin in the SettingsContext.

Modified: trunk/beryl-core/include/beryl.h
===================================================================
--- trunk/beryl-core/include/beryl.h	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-core/include/beryl.h	2006-12-01 23:22:11 UTC (rev 1461)
@@ -410,6 +410,9 @@
     char                  *name;
     char                  *shortDesc;
     char                  *longDesc;
+    char		  *group;
+    char		  *subGroup;
+    char		  *displayHints;
     CompOptionType        type;
     CompOptionValue       value;
     CompOptionRestriction rest;

Modified: trunk/beryl-core/libberylsettings/main.c
===================================================================
--- trunk/beryl-core/libberylsettings/main.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-core/libberylsettings/main.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -288,6 +288,9 @@
     setting->short_desc=g_strdup(
             dgettext(plugin->gettext_domain,o->shortDesc));
     setting->long_desc=g_strdup(dgettext(plugin->gettext_domain,o->longDesc));
+    setting->group=g_strdup(dgettext(plugin->gettext_domain,o->group));
+    setting->subGroup=g_strdup(dgettext(plugin->gettext_domain,o->subGroup));
+    setting->displayHints=g_strdup(o->displayHints);
     setting->type=translate_type(o->type);
     setting->default_value.parent=setting;
     if (setting->type==BERYL_SETTING_TYPE_LIST)
@@ -443,6 +446,77 @@
     }
 }
 
+typedef struct _FindSubGroup
+{
+    gchar * subGroup;
+    gboolean found;
+    BerylSettingsSubGroup * found_at;
+} FindSubGroup;
+
+static void find_subgroup(BerylSettingsSubGroup * subGroup, FindSubGroup * find)
+{
+    if (find->found) return;
+    if (!strcmp(subGroup->name,find->subGroup))
+    {
+	find->found=TRUE;
+	find->found_at=subGroup;
+    }
+}
+
+static void subgroup_add(BerylSetting * setting, BerylSettingsGroup * group)
+{
+    FindSubGroup f;
+    f.found=FALSE;
+    f.subGroup=setting->subGroup;
+    g_slist_foreach(group->subGroups,(GFunc)find_subgroup,&f);
+    if (!f.found)
+    {
+	NEW(BerylSettingsSubGroup,g);
+	group->subGroups=g_slist_append(group->subGroups,g);
+	g->name=g_strdup(setting->subGroup);
+	f.found_at=g;
+    }
+    f.found_at->settings=g_slist_append(f.found_at->settings,setting);
+}
+
+typedef struct _FindGroup
+{
+    gchar * group;
+    gboolean found;
+    BerylSettingsGroup * found_at;
+} FindGroup;
+
+static void find_group(BerylSettingsGroup * group, FindGroup * find)
+{
+    if (find->found) return;
+    if (!strcmp(group->name,find->group))
+    {
+	find->found=TRUE;
+	find->found_at=group;
+    }
+}
+
+static void group_add(BerylSetting * setting, BerylSettingsPlugin * plugin)
+{
+    FindGroup f;
+    f.found=FALSE;
+    f.group=setting->group;
+    g_slist_foreach(plugin->groups,(GFunc)find_group,&f);
+    if (!f.found)
+    {
+	NEW(BerylSettingsGroup,g);
+	plugin->groups=g_slist_append(plugin->groups,g);
+	g->name=g_strdup(setting->group);
+	f.found_at=g;
+    }
+    subgroup_add(setting,f.found_at);
+}
+
+static void collate_groups(BerylSettingsPlugin * plugin)
+{
+    g_slist_foreach(plugin->settings,(GFunc)group_add,plugin);
+}
+
 static void load_plugin(BerylSettingsContext * context, gchar * filename)
 {
     void * dlhand;
@@ -538,6 +612,7 @@
         }
     }
     dlclose(dlhand);
+    collate_groups(plugin);
     context->plugins=g_slist_append(context->plugins,plugin);
 }
 
@@ -585,6 +660,7 @@
         init_option(plugin,o,TRUE);
         o++;
     }
+    collate_groups(plugin);
     context->plugins=g_slist_append(context->plugins,plugin);
 }
 
@@ -630,6 +706,9 @@
     if (setting->name) g_free(setting->name);
     if (setting->short_desc) g_free(setting->short_desc);
     if (setting->long_desc) g_free(setting->long_desc);
+    if (setting->group) g_free(setting->group);
+    if (setting->subGroup) g_free(setting->subGroup);
+    if (setting->displayHints) g_free(setting->displayHints);
     free_value(&setting->default_value);
     free_value(&setting->value);
     if (setting->type == BERYL_SETTING_TYPE_STRING)       
@@ -642,6 +721,19 @@
     free(setting);
 }
 
+static void free_subgroup(BerylSettingsSubGroup * subGroup)
+{
+    g_free(subGroup->name);
+    if (subGroup->settings) g_slist_free(subGroup->settings);
+}
+
+static void free_group(BerylSettingsGroup * group)
+{
+    g_slist_foreach(group->subGroups,(GFunc)free_subgroup,NULL);
+    if (group->subGroups) g_slist_free(group->subGroups);
+    g_free(group->name);
+}
+
 static void free_plugin(BerylSettingsPlugin * plugin)
 {
     if (plugin->name) g_free(plugin->name);
@@ -653,6 +745,8 @@
     g_slist_foreach(plugin->provides,(GFunc)g_free,NULL);
     g_slist_foreach(plugin->requires,(GFunc)g_free,NULL);
     g_slist_foreach(plugin->settings,(GFunc)free_setting,NULL);
+    g_slist_foreach(plugin->groups,(GFunc)free_group,NULL);
+    if (plugin->groups) g_slist_free(plugin->groups);
     if (plugin->load_after) g_slist_free(plugin->load_after);
     if (plugin->load_before) g_slist_free(plugin->load_before);
     if (plugin->provides) g_slist_free(plugin->provides);
@@ -1354,6 +1448,40 @@
     free(display);
 }
 
+GSList * beryl_settings_plugin_get_groups(BerylSettingsPlugin * plugin)
+{
+    return plugin->groups;
+}
+
+gchar * beryl_settings_group_get_name(BerylSettingsGroup * group)
+{
+    return group->name;
+}
+
+GSList * beryl_settings_group_get_subgroups(BerylSettingsGroup * group)
+{
+    return group->subGroups;
+}
+
+gchar * beryl_settings_subgroup_get_name(BerylSettingsSubGroup * subGroup)
+{
+    return subGroup->name;
+}
+
+GSList * beryl_settings_subgroup_get_settings(BerylSettingsSubGroup * subGroup)
+{
+    return subGroup->settings;
+}
+
+gboolean beryl_setting_has_hint(BerylSetting * setting, gchar * hint)
+{
+    gboolean ret;
+    gchar * hhint = g_strconcat(hint,";",NULL);
+    ret=strstr(setting->displayHints,hhint)?TRUE:FALSE;
+    g_free(hhint);
+    return ret;
+}
+
 BerylSettingsPlugin * beryl_settings_context_find_plugin(BerylSettingsContext * context, gchar * name)
 {
     BerylSettingsFindPlugin find;

Modified: trunk/beryl-core/src/display_options.c
===================================================================
--- trunk/beryl-core/src/display_options.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-core/src/display_options.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -182,7 +182,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_ACTIVE_PLUGINS];
     o->name = "active_plugins";
-    o->shortDesc = N_("Active Plugins");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Active Plugins");
     o->longDesc = N_("List of currently active plugins");
     o->type = CompOptionTypeList;
     o->value.list.type = CompOptionTypeString;
@@ -197,7 +200,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_TEXTURE_FILTER];
     o->name = "texture_filter";
-    o->shortDesc = N_("Texture Filter");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Texture Filter");
     o->longDesc = N_("Texture filtering");
     o->type = CompOptionTypeString;
     o->value.s = strdup ("Good");
@@ -206,21 +212,30 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_CLICK_TO_FOCUS];
     o->name = "click_to_focus";
-    o->shortDesc = N_("Click To Focus");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Click To Focus");
     o->longDesc = N_("Click on window moves input focus to it");
     o->type = CompOptionTypeBool;
     o->value.b = CLICK_TO_FOCUS_DEFAULT;
 
     o = &display->opt[COMP_DISPLAY_OPTION_AUTORAISE];
     o->name = "autoraise";
-    o->shortDesc = N_("Auto-Raise");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Auto-Raise");
     o->longDesc = N_("Raise selected windows after interval");
     o->type = CompOptionTypeBool;
     o->value.b = AUTORAISE_DEFAULT;
 
     o = &display->opt[COMP_DISPLAY_OPTION_AUTORAISE_DELAY];
     o->name = "autoraise_delay";
-    o->shortDesc = N_("Auto-Raise Delay");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Auto-Raise Delay");
     o->longDesc = N_("Interval before raising selected windows");
     o->type = CompOptionTypeInt;
     o->value.i = AUTORAISE_DELAY_DEFAULT;
@@ -229,7 +244,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_CLOSE_WINDOW];
     o->name = "close_window";
-    o->shortDesc = N_("Close Window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Close Window");
     o->longDesc = N_("Close active window");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -243,7 +261,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_MAIN_MENU];
     o->name = "main_menu";
-    o->shortDesc = N_("Show Main Menu");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Show Main Menu");
     o->longDesc = N_("Show the main menu");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -257,7 +278,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_RUN_DIALOG];
     o->name = "run";
-    o->shortDesc = N_("Run Dialog");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Run Dialog");
     o->longDesc = N_("Show Run Application dialog");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -271,7 +295,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_UNMAXIMIZE_WINDOW];
     o->name = "unmaximize_window";
-    o->shortDesc = N_("Unmaximize Window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Unmaximize Window");
     o->longDesc = N_("Unmaximize active window");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -282,7 +309,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_MINIMIZE_WINDOW];
     o->name = "minimize_window";
-    o->shortDesc = N_("Minimize Window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Minimize Window");
     o->longDesc = N_("Minimize active window");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -296,7 +326,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_MAXIMIZE_WINDOW];
     o->name = "maximize_window";
-    o->shortDesc = N_("Maximize Window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Maximize Window");
     o->longDesc = N_("Maximize active window");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -309,7 +342,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_MAXIMIZE_WINDOW_HORZ];
     o->name = "maximize_window_horizontally";
-    o->shortDesc = N_("Maximize Window Horizontally");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Maximize Window Horizontally");
     o->longDesc = N_("Maximize active window horizontally");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -320,7 +356,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_MAXIMIZE_WINDOW_VERT];
     o->name = "maximize_window_vertically";
-    o->shortDesc = N_("Maximize Window Vertically");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Maximize Window Vertically");
     o->longDesc = N_("Maximize active window vertically");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -331,7 +370,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_SHOW_DESKTOP];
     o->name = "show_desktop";
-    o->shortDesc = N_("Hide all windows and focus desktop");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Hide all windows and focus desktop");
     o->longDesc = N_("Hide all windows and focus desktop");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -355,7 +397,10 @@
     o = &display->opt[COMP_DISPLAY_OPTION_COMMAND ## num ];            \
     o->name              = cname;                    \
     asprintf (&str, COMMAND_OPTION_SHORT, num);                    \
-    o->shortDesc          = str;                    \
+    o->group=N_("");\
+    o->subGroup=N_("");\
+    o->displayHints="";\
+o->shortDesc          = str;                    \
     asprintf (&str, COMMAND_OPTION_LONG, num);                    \
     o->longDesc              = str;                    \
     o->type              = CompOptionTypeString;            \
@@ -365,7 +410,10 @@
     o = &display->opt[COMP_DISPLAY_OPTION_RUN_COMMAND ## num ];            \
     o->name              =  rname;                    \
     asprintf (&str, RUN_OPTION_SHORT, num);                    \
-    o->shortDesc          = str;                    \
+    o->group=N_("");\
+o->subGroup=N_("");\
+o->displayHints="";\
+o->shortDesc          = str;                    \
     asprintf (&str, RUN_OPTION_LONG, num);                    \
     o->longDesc              = str;                    \
     o->type                  = CompOptionTypeAction;            \
@@ -390,7 +438,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_SLOW_ANIMATIONS];
     o->name = "slow_animations";
-    o->shortDesc = N_("Slow Animations");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Slow Animations");
     o->longDesc = N_("Toggle use of slow animations");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -404,7 +455,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_LOWER_WINDOW];
     o->name = "lower_window";
-    o->shortDesc = N_("Lower Window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Lower Window");
     o->longDesc = N_("Lower window beneath other windows");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -417,7 +471,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_RAISE_WINDOW];
     o->name = "raise_window";
-    o->shortDesc = N_("Raise Window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Raise Window");
     o->longDesc = N_("Raise window above other windows");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -430,7 +487,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_OPACITY_INCREASE];
     o->name = "opacity_increase";
-    o->shortDesc = N_("Increase Opacity");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Increase Opacity");
     o->longDesc = N_("Increase window opacity");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -443,7 +503,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_OPACITY_DECREASE];
     o->name = "opacity_decrease";
-    o->shortDesc = N_("Decrease Opacity");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Decrease Opacity");
     o->longDesc = N_("Decrease window opacity");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -456,7 +519,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_SATURATION_INCREASE];
     o->name = "saturation_increase";
-    o->shortDesc = N_("Increase Saturation");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Increase Saturation");
     o->longDesc = N_("Increase Saturation");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -470,7 +536,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_SATURATION_DECREASE];
     o->name = "saturation_decrease";
-    o->shortDesc = N_("Decrease Saturation");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Decrease Saturation");
     o->longDesc = N_("Decrease Saturation");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -484,7 +553,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_BRIGHTNESS_INCREASE];
     o->name = "brightness_increase";
-    o->shortDesc = N_("Increase Brightness");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Increase Brightness");
     o->longDesc = N_("Increase Brightness");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -498,7 +570,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_BRIGHTNESS_DECREASE];
     o->name = "brightness_decrease";
-    o->shortDesc = N_("Decrease Brightness");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Decrease Brightness");
     o->longDesc = N_("Decrease Brightness");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -512,7 +587,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_RUN_SCREENSHOT];
     o->name = "run_command_screenshot";
-    o->shortDesc = N_("Take a screenshot");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Take a screenshot");
     o->longDesc = N_("Take a screenshot");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -526,7 +604,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_SCREENSHOT];
     o->name = "command_screenshot";
-    o->shortDesc = N_("Screenshot command line");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Screenshot command line");
     o->longDesc = N_("Screenshot command line");
     o->type = CompOptionTypeString;
     o->value.s = strdup (SCREENSHOT_DEFAULT);
@@ -535,7 +616,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_RUN_WINDOW_SCREENSHOT];
     o->name = "run_command_window_screenshot";
-    o->shortDesc = N_("Take a screenshot of a window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Take a screenshot of a window");
     o->longDesc = N_("Take a screenshot of a window");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -550,7 +634,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_WINDOW_SCREENSHOT];
     o->name = "command_window_screenshot";
-    o->shortDesc = N_("Window screenshot command line");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Window screenshot command line");
     o->longDesc = N_("Window screenshot command line");
     o->type = CompOptionTypeString;
     o->value.s = strdup (WINDOW_SCREENSHOT_DEFAULT);
@@ -559,7 +646,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_WINDOW_MENU];
     o->name = "window_menu";
-    o->shortDesc = N_("Window Menu");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Window Menu");
     o->longDesc = N_("Open window menu");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -576,21 +666,30 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_RAISE_ON_CLICK];
     o->name = "raise_on_click";
-    o->shortDesc = N_("Raise On Click");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Raise On Click");
     o->longDesc = N_("Raise windows when clicked");
     o->type = CompOptionTypeBool;
     o->value.b = RAISE_ON_CLICK_DEFAULT;
 
     o = &display->opt[COMP_DISPLAY_OPTION_AUDIBLE_BELL];
     o->name = "audible_bell";
-    o->shortDesc = N_("Audible Bell");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Audible Bell");
     o->longDesc = N_("Audible system beep");
     o->type = CompOptionTypeBool;
     o->value.b = AUDIBLE_BELL_DEFAULT;
 
     o = &display->opt[COMP_DISPLAY_OPTION_TOGGLE_WINDOW_MAXIMIZED];
     o->name = "toggle_window_maximized";
-    o->shortDesc = N_("Toggle Window Maximized");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Toggle Window Maximized");
     o->longDesc = N_("Toggle active window maximized");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -605,7 +704,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_TOGGLE_WINDOW_FULLSCREEN];
     o->name = "toggle_window_fullscreen";
-    o->shortDesc = N_("Toggle Window Fullscreen");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Toggle Window Fullscreen");
     o->longDesc = N_("Toggle active window fullscreen, kiosk mode");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -620,7 +722,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_TOGGLE_WINDOW_MAXIMIZED_HORZ];
     o->name = "toggle_window_maximized_horizontally";
-    o->shortDesc = N_("Toggle Window Maximized Horizontally");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Toggle Window Maximized Horizontally");
     o->longDesc = N_("Toggle active window maximized horizontally");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -635,7 +740,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_TOGGLE_WINDOW_MAXIMIZED_VERT];
     o->name = "toggle_window_maximized_vertically";
-    o->shortDesc = N_("Toggle Window Maximized Vertically");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Toggle Window Maximized Vertically");
     o->longDesc = N_("Toggle active window maximized vertically");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -650,7 +758,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_HIDE_SKIP_TASKBAR_WINDOWS];
     o->name = "hide_skip_taskbar_windows";
-    o->shortDesc = N_("Hide Skip Taskbar Windows");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Hide Skip Taskbar Windows");
     o->longDesc = N_("Hide windows not in taskbar when entering show "
                      "desktop mode");
     o->type = CompOptionTypeBool;
@@ -658,7 +769,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_TOGGLE_WINDOW_SHADED];
     o->name = "toggle_window_shaded";
-    o->shortDesc = N_("Toggle Window Shaded");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Toggle Window Shaded");
     o->longDesc = N_("Toggle active window shaded");
     o->type = CompOptionTypeAction;
     o->value.action.bell = FALSE;
@@ -673,14 +787,20 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_DIM_DEAD];
     o->name = "dim_dead";
-    o->shortDesc = N_("Dim Unresponsive Windows");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Dim Unresponsive Windows");
     o->longDesc = N_("Desaturate and dim windows that are unresponsive");
     o->type = CompOptionTypeBool;
     o->value.b = DIM_DEAD_DEFAULT;
 
     o = &display->opt[COMP_DISPLAY_OPTION_IGNORE_HINTS_WHEN_MAXIMIZED];
     o->name	 = "ignore_hints_when_maximized";
-    o->shortDesc = N_("Ignore Hints When Maximized");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Ignore Hints When Maximized");
     o->longDesc	 = N_("Ignore size increment and aspect hints when window is "
 	"maximized");
     o->type	 = CompOptionTypeBool;
@@ -688,7 +808,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_EDGE_TRIGGERING_DELAY];
     o->name = "edge_triggering_delay";
-    o->shortDesc = N_("Edge Triggering Delay");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Edge Triggering Delay");
     o->longDesc = N_("Interval before triggering actions on edges");
     o->type = CompOptionTypeInt;
     o->value.i = EDGE_TRIGGERING_DELAY_DEFAULT;
@@ -697,7 +820,10 @@
 
     o = &display->opt[COMP_DISPLAY_OPTION_FOCUS_STEALING_LEVEL];
     o->name = "focus_stealing_prevention_level";
-    o->shortDesc = N_("Level of FSP");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Level of FSP");
     o->longDesc = N_("How aggressive the focus-stealing-prevention should be");
     o->type = CompOptionTypeString;
     o->value.s = strdup(DEFAULT_FSP);

Modified: trunk/beryl-core/src/screen_options.c
===================================================================
--- trunk/beryl-core/src/screen_options.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-core/src/screen_options.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -60,21 +60,30 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_DETECT_REFRESH_RATE];
     o->name = "detect_refresh_rate";
-    o->shortDesc = N_("Detect Refresh Rate");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Detect Refresh Rate");
     o->longDesc = N_("Automatic detection of refresh rate");
     o->type = CompOptionTypeBool;
     o->value.b = DETECT_REFRESH_RATE_DEFAULT;
 
     o = &screen->opt[COMP_SCREEN_OPTION_LIGHTING];
     o->name = "lighting";
-    o->shortDesc = N_("Lighting");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Lighting");
     o->longDesc = N_("Use diffuse light when screen is transformed");
     o->type = CompOptionTypeBool;
     o->value.b = LIGHTING_DEFAULT;
 
     o = &screen->opt[COMP_SCREEN_OPTION_REFRESH_RATE];
     o->name = "refresh_rate";
-    o->shortDesc = N_("Refresh Rate");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Refresh Rate");
     o->longDesc =
         N_("The rate at which the screen is redrawn (times/second)");
     o->type = CompOptionTypeInt;
@@ -84,7 +93,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_SIZE];
     o->name = "size";
-    o->shortDesc = N_("Horizontal Virtual Size");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Horizontal Virtual Size");
     o->longDesc = N_("Screen size multiplier for virtual size");
     o->type = CompOptionTypeInt;
     o->value.i = SCREEN_SIZE_DEFAULT;
@@ -93,7 +105,10 @@
 
     o = &(screen->opt[COMP_SCREEN_OPTION_VSIZE]);
     o->name = "vsize";
-    o->shortDesc = N_("Vertical Virtual Size");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Vertical Virtual Size");
     o->longDesc = N_("Screen size multiplier for vertical virtual size");
     o->type = CompOptionTypeInt;
     o->value.i = SCREEN_VSIZE_DEFAULT;
@@ -102,7 +117,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_OPACITY_STEP];
     o->name = "opacity_step";
-    o->shortDesc = N_("Opacity Step");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Opacity Step");
     o->longDesc = N_("Opacity change step");
     o->type = CompOptionTypeInt;
     o->value.i = OPACITY_STEP_DEFAULT;
@@ -111,7 +129,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_SATURATION_STEP];
     o->name = "saturation_step";
-    o->shortDesc = N_("Saturation Step");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Saturation Step");
     o->longDesc = N_("Saturation change step");
     o->type = CompOptionTypeInt;
     o->value.i = SATURATION_STEP_DEFAULT;
@@ -120,7 +141,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_BRIGHTNESS_STEP];
     o->name = "brightness_step";
-    o->shortDesc = N_("Brightness Step");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Brightness Step");
     o->longDesc = N_("Brightness change step");
     o->type = CompOptionTypeInt;
     o->value.i = BRIGHTNESS_STEP_DEFAULT;
@@ -129,7 +153,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_UNREDIRECT_FS];
     o->name = "unredirect_fullscreen_windows";
-    o->shortDesc = N_("Unredirect Fullscreen Windows");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Unredirect Fullscreen Windows");
     o->longDesc =
         N_("Allow drawing of fullscreen windows to not be redirected "
            "to offscreen pixmaps");
@@ -138,7 +165,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_DEFAULT_ICON];
     o->name = "default_icon";
-    o->shortDesc = N_("Default Icon");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Default Icon");
     o->longDesc = N_("Default window icon image");
     o->type = CompOptionTypeString;
     o->value.s = strdup (DEFAULT_ICON_DEFAULT);
@@ -147,7 +177,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_SLOWNESS_FIX];
     o->name = "slowness_fix";
-    o->shortDesc = N_("Slowness Fix");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Slowness Fix");
     o->longDesc = N_("Toggle this option if beryl is slow or choppy. "
                      "On some cards, enabling it makes beryl smoother, and on "
                      "others, disabling makes beryl smoother.");
@@ -156,7 +189,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_SYNC_TO_VBLANK];
     o->name = "sync_to_vblank";
-    o->shortDesc = N_("Sync To VBlank");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Sync To VBlank");
     o->longDesc = N_("Only perform screen updates during vertical "
                      "blanking period");
     o->type = CompOptionTypeBool;
@@ -164,7 +200,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_NUMBER_OF_DESKTOPS];
     o->name	          = "number_of_desktops";
-    o->shortDesc      = N_("Number of Desktops");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc      = N_("Number of Desktops");
     o->longDesc	      = N_("Number of virtual desktops");
     o->type	          = CompOptionTypeInt;
     o->value.i	      = SCREEN_NUMBER_OF_DESKTOPS_DEFAULT;
@@ -173,14 +212,20 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_CUSTOM_OUTPUT_GRID];
     o->name = "custom_output_grid";
-    o->shortDesc = N_("Custom Output Grid");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Custom Output Grid");
     o->longDesc = N_("Use custom output grid instead of Xinerama info.");
     o->type = CompOptionTypeBool;
     o->value.b = FALSE;
 
     o = &screen->opt[COMP_SCREEN_OPTION_OUTPUT_GRID_ROWS];
     o->name = "output_grid_rows";
-    o->shortDesc = N_("Output grid rows");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Output grid rows");
     o->longDesc = N_("Number of rows in the custom output grid.");
     o->type = CompOptionTypeInt;
     o->value.i = 1;
@@ -189,7 +234,10 @@
 
     o = &screen->opt[COMP_SCREEN_OPTION_OUTPUT_GRID_COLS];
     o->name = "output_grid_cols";
-    o->shortDesc = N_("Output grid columns");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Output grid columns");
     o->longDesc = N_("Number of columns in the custom output grid.");
     o->type = CompOptionTypeInt;
     o->value.i = 2;

Modified: trunk/beryl-plugins/src/animation.c
===================================================================
--- trunk/beryl-plugins/src/animation.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/animation.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -3328,7 +3328,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_ALL_RANDOM];
     o->name = "all_random";
-    o->shortDesc = N_("Random Animations For All Events");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Random Animations For All Events");
     o->longDesc =
         N_
         ("All effects get to be chosen randomly, ignoring the selected effect. If None is selected for an event, that event won't be animated.");
@@ -3337,14 +3340,20 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_ROLLUP_FIXED_INTERIOR];
     o->name = "rollup_fixed_interior";
-    o->shortDesc = N_("Rollup Fixed Interior");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Rollup Fixed Interior");
     o->longDesc = N_("Fixed window interior during Rollup effect");
     o->type = CompOptionTypeBool;
     o->value.b = ANIM_ROLLUP_FIXED_INTERIOR_DEFAULT;
 
     o = &as->opt[ANIM_SCREEN_OPTION_HORIZONTAL_FOLDS_NUM_FOLDS];
     o->name = "horizontal_folds_num_folds";
-    o->shortDesc = N_("Horizontal Folds Number of Folds");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Horizontal Folds Number of Folds");
     o->longDesc = N_("Horizontal Folds number of complete folds");
     o->type = CompOptionTypeInt;
     o->value.i = ANIM_HORIZONTAL_FOLDS_NUM_FOLDS_DEFAULT;
@@ -3353,7 +3362,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_HORIZONTAL_FOLDS_AMP];
     o->name = "horizontal_folds_amp";
-    o->shortDesc = N_("Horizontal Folds Amplitude");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Horizontal Folds Amplitude");
     o->longDesc =
         N_
         ("Horizontal folds amplitude relative to window width. Negative values fold outward.");
@@ -3365,7 +3377,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CURVED_FOLD_AMP];
     o->name = "curved_fold_amp";
-    o->shortDesc = N_("Curved Fold Amplitude");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Curved Fold Amplitude");
     o->longDesc =
         N_
         ("Curved fold amplitude relative to window width. Negative values fold outward.");
@@ -3377,7 +3392,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_ZOOM_FROM_CENTER];
     o->name = "zoom_from_center";
-    o->shortDesc = N_("Zoom From Center");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Zoom From Center");
     o->longDesc =
         N_("Zoom from center when playing Zoom and Sidekick effects");
     o->type = CompOptionTypeBool;
@@ -3385,7 +3403,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_TIME_STEP];
     o->name = "time_step";
-    o->shortDesc = N_("Animation Time Step");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Animation Time Step");
     o->longDesc = N_("Animation time step in milliseconds");
     o->type = CompOptionTypeInt;
     o->value.i = ANIM_TIME_STEP_DEFAULT;
@@ -3394,7 +3415,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_TIME_STEP_INTENSE];
     o->name = "time_step_intense";
-    o->shortDesc = N_("Animation Time Step For Intense Effects");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Animation Time Step For Intense Effects");
     o->longDesc = N_("Animation time step in milliseconds for intense effects like Burn");
     o->type = CompOptionTypeInt;
     o->value.i = ANIM_TIME_STEP_INTENSE_DEFAULT;
@@ -3403,7 +3427,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_DISABLE_PP_FX];
     o->name = "disable_pp_fx";
-    o->shortDesc = N_("Disable Postprocessing Effects During Animation");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Disable Postprocessing Effects During Animation");
     o->longDesc = N_("Disables Blur during animation");
     o->type = CompOptionTypeString;
     o->value.s = strdup (ppDisablingName[ANIM_DISABLE_PP_FX_DEFAULT]);
@@ -3412,7 +3439,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP1_GRID_RES];
     o->name = "magic_lamp1_grid_res";
-    o->shortDesc = N_("Magic Lamp 1 Grid Y Resolution");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Magic Lamp 1 Grid Y Resolution");
     o->longDesc =
         N_
         ("Vertex Grid Resolution (2-200) for Magic Lamp 1 (Y dimension only)");
@@ -3423,7 +3453,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP1_MAX_WAVES];
     o->name = "magic_lamp1_max_waves";
-    o->shortDesc = N_("Magic Lamp 1 Max Waves");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Magic Lamp 1 Max Waves");
     o->longDesc = N_("Maximum number of waves for Magic Lamp 1");
     o->type = CompOptionTypeInt;
     o->value.i = ANIM_MAGIC_LAMP1_MAX_WAVES_DEFAULT;
@@ -3432,7 +3465,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP1_WAVE_AMP_MIN];
     o->name = "magic_lamp1_wave_amp_min";
-    o->shortDesc = N_("Magic Lamp 1 Wave Min Amplitude");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Magic Lamp 1 Wave Min Amplitude");
     o->longDesc =
         N_
         ("Magic Lamp 1 waves will have random amplitudes between min and max");
@@ -3444,7 +3480,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP1_WAVE_AMP_MAX];
     o->name = "magic_lamp1_wave_amp_max";
-    o->shortDesc = N_("Magic Lamp 1 Wave Max Amplitude");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Magic Lamp 1 Wave Max Amplitude");
     o->longDesc =
         N_
         ("Magic Lamp 1 waves will have random amplitudes between min and max");
@@ -3456,7 +3495,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP2_GRID_RES];
     o->name = "magic_lamp2_grid_res";
-    o->shortDesc = N_("Magic Lamp 2 Grid Y Resolution");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Magic Lamp 2 Grid Y Resolution");
     o->longDesc =
         N_
         ("Vertex Grid Resolution (2-200) for Magic Lamp 2 (Y dimension only)");
@@ -3467,7 +3509,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP2_MAX_WAVES];
     o->name = "magic_lamp2_max_waves";
-    o->shortDesc = N_("Magic Lamp 2 Max Waves");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Magic Lamp 2 Max Waves");
     o->longDesc = N_("Maximum number of waves for Magic Lamp 2");
     o->type = CompOptionTypeInt;
     o->value.i = ANIM_MAGIC_LAMP2_MAX_WAVES_DEFAULT;
@@ -3476,7 +3521,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP2_WAVE_AMP_MIN];
     o->name = "magic_lamp2_wave_amp_min";
-    o->shortDesc = N_("Magic Lamp 2 Wave Min Amplitude");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Magic Lamp 2 Wave Min Amplitude");
     o->longDesc =
         N_
         ("Magic Lamp 2 waves will have random amplitudes between min and max");
@@ -3488,7 +3536,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP2_WAVE_AMP_MAX];
     o->name = "magic_lamp2_wave_amp_max";
-    o->shortDesc = N_("Magic Lamp 2 Wave Max Amplitude");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Magic Lamp 2 Wave Max Amplitude");
     o->longDesc =
         N_
         ("Magic Lamp 2 waves will have random amplitudes between min and max");
@@ -3500,7 +3551,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FOCUS_WAVE_WIDTH];
     o->name = "focus_wave_width";
-    o->shortDesc = N_("Focus Wave Width");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Focus Wave Width");
     o->longDesc = N_("Focus wave width relative to window height");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_FOCUS_WAVE_WIDTH_DEFAULT;
@@ -3510,7 +3564,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FOCUS_WAVE_AMP];
     o->name = "focus_wave_amp";
-    o->shortDesc = N_("Focus Wave Amplitude");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Focus Wave Amplitude");
     o->longDesc = N_("Focus wave amplitude relative to window height");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_FOCUS_WAVE_AMP_DEFAULT;
@@ -3520,7 +3577,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_SIDEKICK_NUM_ROTATIONS];
     o->name = "sidekick_num_rotations";
-    o->shortDesc = N_("Sidekick Number of Rotations");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Sidekick Number of Rotations");
     o->longDesc =
         N_("Sidekick number of rotations (with +/-10% randomness)");
     o->type = CompOptionTypeFloat;
@@ -3533,7 +3593,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MINIMIZE_EFFECT];
     o->name = "minimize_effect";
-    o->shortDesc = N_("Minimize Effect");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Minimize Effect");
     o->longDesc = N_("Minimize Window Effect");
     o->type = CompOptionTypeString;
     o->value.s = strdup (allEffectName[ANIM_MINIMIZE_DEFAULT]);
@@ -3542,7 +3605,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MINIMIZE_WINDOW_TYPE];
     o->name = "minimize_window_types";
-    o->shortDesc = N_("Minimize Window Types");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Minimize Window Types");
     o->longDesc =
         N_
         ("Window types that should animate with this effect when minimized");
@@ -3560,7 +3626,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_MINIMIZE_DURATION];
     o->name = "minimize_duration";
-    o->shortDesc = N_("Minimize Animation Duration");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Minimize Animation Duration");
     o->longDesc = N_("Minimize animation duration in seconds");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_MINIMIZE_DURATION_DEFAULT;
@@ -3572,7 +3641,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_UNMINIMIZE_EFFECT];
     o->name = "unminimize_effect";
-    o->shortDesc = N_("Unminimize Effect");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Unminimize Effect");
     o->longDesc = N_("Unminimize Window Effect");
     o->type = CompOptionTypeString;
     o->value.s = strdup (allEffectName[ANIM_UNMINIMIZE_DEFAULT]);
@@ -3581,7 +3653,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_UNMINIMIZE_WINDOW_TYPE];
     o->name = "unminimize_window_types";
-    o->shortDesc = N_("Unminimize Window Types");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Unminimize Window Types");
     o->longDesc =
         N_
         ("Window types that should animate with this effect when unminimized");
@@ -3599,7 +3674,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_UNMINIMIZE_DURATION];
     o->name = "unminimize_duration";
-    o->shortDesc = N_("Unminimize Animation Duration");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Unminimize Animation Duration");
     o->longDesc = N_("Unminimize animation duration in seconds");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_UNMINIMIZE_DURATION_DEFAULT;
@@ -3611,7 +3689,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CLOSE1_EFFECT];
     o->name = "close1_effect";
-    o->shortDesc = N_("Close Effect 1");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Close Effect 1");
     o->longDesc = N_("Close Window Effect 1");
     o->type = CompOptionTypeString;
     o->value.s = strdup (allEffectName[ANIM_CLOSE1_DEFAULT]);
@@ -3620,7 +3701,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CLOSE1_WINDOW_TYPE];
     o->name = "close1_window_types";
-    o->shortDesc = N_("Close Window Types 1");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Close Window Types 1");
     o->longDesc =
         N_("Window types that should animate with this effect when closed");
     o->type = CompOptionTypeList;
@@ -3637,7 +3721,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CLOSE1_DURATION];
     o->name = "close1_duration";
-    o->shortDesc = N_("Close Animation Duration 1");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Close Animation Duration 1");
     o->longDesc = N_("Animation duration in seconds for close effect 1");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_CLOSE1_DURATION_DEFAULT;
@@ -3649,7 +3736,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CLOSE2_EFFECT];
     o->name = "close2_effect";
-    o->shortDesc = N_("Close Effect 2");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Close Effect 2");
     o->longDesc = N_("Close Window Effect 2");
     o->type = CompOptionTypeString;
     o->value.s = strdup (allEffectName[ANIM_CLOSE2_DEFAULT]);
@@ -3658,7 +3748,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CLOSE2_WINDOW_TYPE];
     o->name = "close2_window_types";
-    o->shortDesc = N_("Close Window Types 2");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Close Window Types 2");
     o->longDesc =
         N_("Window types that should animate with this effect when closed");
     o->type = CompOptionTypeList;
@@ -3675,7 +3768,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CLOSE2_DURATION];
     o->name = "close2_duration";
-    o->shortDesc = N_("Close Animation Duration 2");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Close Animation Duration 2");
     o->longDesc = N_("Animation duration in seconds for close effect 2");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_CLOSE2_DURATION_DEFAULT;
@@ -3687,7 +3783,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CREATE1_EFFECT];
     o->name = "create1_effect";
-    o->shortDesc = N_("Create Effect 1");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Create Effect 1");
     o->longDesc = N_("Create Window Effect 1");
     o->type = CompOptionTypeString;
     o->value.s = strdup (allEffectName[ANIM_CREATE1_DEFAULT]);
@@ -3696,7 +3795,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CREATE1_WINDOW_TYPE];
     o->name = "create1_window_types";
-    o->shortDesc = N_("Create Window Types 1");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Create Window Types 1");
     o->longDesc =
         N_("Window types that should animate with this effect when created");
     o->type = CompOptionTypeList;
@@ -3713,7 +3815,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CREATE1_DURATION];
     o->name = "create1_duration";
-    o->shortDesc = N_("Create Animation Duration 1");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Create Animation Duration 1");
     o->longDesc = N_("Animation duration in seconds for create effect 1");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_CREATE1_DURATION_DEFAULT;
@@ -3725,7 +3830,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CREATE2_EFFECT];
     o->name = "create2_effect";
-    o->shortDesc = N_("Create Effect 2");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Create Effect 2");
     o->longDesc = N_("Create Window Effect 2");
     o->type = CompOptionTypeString;
     o->value.s = strdup (allEffectName[ANIM_CREATE2_DEFAULT]);
@@ -3734,7 +3842,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CREATE2_WINDOW_TYPE];
     o->name = "create2_window_types";
-    o->shortDesc = N_("Create Window Types 2");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Create Window Types 2");
     o->longDesc =
         N_("Window types that should animate with this effect when created");
     o->type = CompOptionTypeList;
@@ -3751,7 +3862,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_CREATE2_DURATION];
     o->name = "create2_duration";
-    o->shortDesc = N_("Create Animation Duration 2");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Create Animation Duration 2");
     o->longDesc = N_("Animation duration in seconds for create effect 2");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_CREATE2_DURATION_DEFAULT;
@@ -3763,7 +3877,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FOCUS_EFFECT];
     o->name = "focus_effect";
-    o->shortDesc = N_("Focus Effect");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Focus Effect");
     o->longDesc = N_("Focus Window Effect");
     o->type = CompOptionTypeString;
     o->value.s = strdup (allEffectName[ANIM_FOCUS_DEFAULT]);
@@ -3772,7 +3889,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FOCUS_WINDOW_TYPE];
     o->name = "focus_window_types";
-    o->shortDesc = N_("Focus Window Types");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Focus Window Types");
     o->longDesc =
         N_("Window types that should animate with this effect when focused");
     o->type = CompOptionTypeList;
@@ -3789,7 +3909,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FOCUS_DURATION];
     o->name = "focus_duration";
-    o->shortDesc = N_("Focus Animation Duration");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Focus Animation Duration");
     o->longDesc = N_("Focus animation duration in seconds");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_FOCUS_DURATION_DEFAULT;
@@ -3801,7 +3924,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_SHADE_EFFECT];
     o->name = "shade_effect";
-    o->shortDesc = N_("Shade Effect");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Shade Effect");
     o->longDesc = N_("Shade Window Effect");
     o->type = CompOptionTypeString;
     o->value.s = strdup (allEffectName[ANIM_SHADE_DEFAULT]);
@@ -3810,7 +3936,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_SHADE_WINDOW_TYPE];
     o->name = "shade_window_types";
-    o->shortDesc = N_("Shade Window Types");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Shade Window Types");
     o->longDesc =
         N_("Window types that should animate with this effect when shaded");
     o->type = CompOptionTypeList;
@@ -3827,7 +3956,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_SHADE_DURATION];
     o->name = "shade_duration";
-    o->shortDesc = N_("Shade Animation Duration");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Shade Animation Duration");
     o->longDesc = N_("Shade animation duration in seconds");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_SHADE_DURATION_DEFAULT;
@@ -3839,7 +3971,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_UNSHADE_EFFECT];
     o->name = "unshade_effect";
-    o->shortDesc = N_("Unshade Effect");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Unshade Effect");
     o->longDesc = N_("Unshade Window Effect");
     o->type = CompOptionTypeString;
     o->value.s = strdup (allEffectName[ANIM_UNSHADE_DEFAULT]);
@@ -3848,7 +3983,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_UNSHADE_WINDOW_TYPE];
     o->name = "unshade_window_types";
-    o->shortDesc = N_("Unshade Window Types");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Unshade Window Types");
     o->longDesc =
         N_("Window types that should animate with this effect when unshaded");
     o->type = CompOptionTypeList;
@@ -3865,7 +4003,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_UNSHADE_DURATION];
     o->name = "unshade_duration";
-    o->shortDesc = N_("Unshade Animation Duration");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Unshade Animation Duration");
     o->longDesc = N_("Unshade animation duration in seconds");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_UNSHADE_DURATION_DEFAULT;
@@ -3876,7 +4017,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FIRE_PARTICLES];
     o->name = "fire_particles";
-    o->shortDesc = N_("Number Of Fire Particles");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Number Of Fire Particles");
     o->longDesc = N_("Number of fire particles");
     o->type = CompOptionTypeInt;
     o->value.i = ANIM_FIRE_PARTICLES_DEFAULT;
@@ -3885,7 +4029,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FIRE_SIZE];
     o->name = "fire_size";
-    o->shortDesc = N_("Fire Particle Size");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Fire Particle Size");
     o->longDesc = N_("Fire particle size");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_FIRE_SIZE_DEFAULT;
@@ -3895,7 +4042,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FIRE_SLOWDOWN];
     o->name = "fire_slowdown";
-    o->shortDesc = N_("Fire Particle Slowdown");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Fire Particle Slowdown");
     o->longDesc = N_("Fire particle slowdown");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_FIRE_SLOWDOWN_DEFAULT;
@@ -3905,7 +4055,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FIRE_LIFE];
     o->name = "fire_life";
-    o->shortDesc = N_("Fire Particle Life");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Fire Particle Life");
     o->longDesc = N_("Fire particle life");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_FIRE_LIFE_DEFAULT;
@@ -3915,7 +4068,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FIRE_COLOR];
     o->name = "fire_color";
-    o->shortDesc = N_("Fire Particle Color");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Fire Particle Color");
     o->longDesc = N_("Fire Particle Color");
     o->type = CompOptionTypeColor;
     o->value.c[0] = ANIM_FIRE_COLOR_RED_DEFAULT;
@@ -3925,7 +4081,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FIRE_DIRECTION];
     o->name = "fire_direction";
-    o->shortDesc = N_("Fire direction");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Fire direction");
     o->longDesc = N_("Fire direction");
     o->type = CompOptionTypeString;
     o->value.s = strdup (animDirectionName[ANIM_FIRE_DIRECTION_DEFAULT]);
@@ -3934,28 +4093,40 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_FIRE_CONSTANT_SPEED];
     o->name = "fire_constant_speed";
-    o->shortDesc = N_("Fire constant speed");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Fire constant speed");
     o->longDesc = N_("Make fire effect duration be dependent of window height");
     o->type = CompOptionTypeBool;
     o->value.b = ANIM_FIRE_CONSTANT_SPEED_DEFAULT;
 
     o = &as->opt[ANIM_SCREEN_OPTION_FIRE_SMOKE];
     o->name = "fire_smoke";
-    o->shortDesc = N_("Fire smoke");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Fire smoke");
     o->longDesc = N_("Fire Smoke");
     o->type = CompOptionTypeBool;
     o->value.b = ANIM_FIRE_SMOKE_DEFAULT;
 
     o = &as->opt[ANIM_SCREEN_OPTION_FIRE_MYSTICAL];
     o->name = "fire_mystical";
-    o->shortDesc = N_("Randomly Colored Fire");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Randomly Colored Fire");
     o->longDesc = N_("Have random colors for the fire effect, also known as Mystical Fire");
     o->type = CompOptionTypeBool;
     o->value.b = ANIM_FIRE_MYSTICAL_DEFAULT;
 
     o = &as->opt[ANIM_SCREEN_OPTION_BEAMUP_SIZE];
     o->name = "beam_size";
-    o->shortDesc = N_("Beam Width");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Beam Width");
     o->longDesc = N_("Beam Width");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_BEAMUP_SIZE_DEFAULT;
@@ -3965,7 +4136,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_BEAMUP_SPACING];
     o->name = "beam_spacing";
-    o->shortDesc = N_("Beam spacing");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Beam spacing");
     o->longDesc = N_("Spacing between beams");
     o->type = CompOptionTypeInt;
     o->value.i = ANIM_BEAMUP_SPACING_DEFAULT;
@@ -3974,7 +4148,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_BEAMUP_COLOR];
     o->name = "beam_color";
-    o->shortDesc = N_("Beam Color");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Beam Color");
     o->longDesc = N_("Beam Color");
     o->type = CompOptionTypeColor;
     o->value.c[0] = ANIM_BEAMUP_COLOR_RED_DEFAULT;
@@ -3984,7 +4161,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_BEAMUP_SLOWDOWN];
     o->name = "beam_slowdown";
-    o->shortDesc = N_("Beam Slowdown");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Beam Slowdown");
     o->longDesc = N_("Beam slowdown");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_BEAMUP_SLOWDOWN_DEFAULT;
@@ -3994,7 +4174,10 @@
 
     o = &as->opt[ANIM_SCREEN_OPTION_BEAMUP_LIFE];
     o->name = "beam_life";
-    o->shortDesc = N_("Beam Life");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Beam Life");
     o->longDesc = N_("Beam life");
     o->type = CompOptionTypeFloat;
     o->value.f = ANIM_BEAMUP_LIFE_DEFAULT;

Modified: trunk/beryl-plugins/src/annotate.c
===================================================================
--- trunk/beryl-plugins/src/annotate.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/annotate.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -740,7 +740,10 @@
 
     o = &ad->opt[ANNO_DISPLAY_OPTION_INITIATE];
     o->name			     = "initiate";
-    o->shortDesc		     = N_("Initiate");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc		     = N_("Initiate");
     o->longDesc			     = N_("Initiate annotate drawing");
     o->type			     = CompOptionTypeAction;
     o->value.action.initiate	     = annoInitiate;
@@ -755,7 +758,10 @@
 
     o = &ad->opt[ANNO_DISPLAY_OPTION_DRAW];
     o->name		      = "draw";
-    o->shortDesc	      = N_("Draw");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc	      = N_("Draw");
     o->longDesc		      = N_("Draw using tool");
     o->type		      = CompOptionTypeAction;
     o->value.action.initiate  = annoDraw;
@@ -767,7 +773,10 @@
 
     o = &ad->opt[ANNO_DISPLAY_OPTION_ERASE];
     o->name			     = "erase";
-    o->shortDesc		     = N_("Initiate erase");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc		     = N_("Initiate erase");
     o->longDesc			     = N_("Initiate annotate erasing");
     o->type			     = CompOptionTypeAction;
     o->value.action.initiate	     = annoEraseInitiate;
@@ -782,7 +791,10 @@
 
     o = &ad->opt[ANNO_DISPLAY_OPTION_CLEAR];
     o->name			  = "clear";
-    o->shortDesc		  = N_("Clear");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc		  = N_("Clear");
     o->longDesc			  = N_("Clear");
     o->type			  = CompOptionTypeAction;
     o->value.action.initiate	  = annoClear;
@@ -798,7 +810,10 @@
 
     o = &ad->opt[ANNO_DISPLAY_OPTION_FILL_COLOR];
     o->name       = "fill_color";
-    o->shortDesc  = N_("Annotate Fill Color");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc  = N_("Annotate Fill Color");
     o->longDesc   = N_("Fill color for annotations");
     o->type       = CompOptionTypeColor;
     o->value.c[0] = ANNO_FILL_COLOR_RED_DEFAULT;
@@ -808,7 +823,10 @@
 
     o = &ad->opt[ANNO_DISPLAY_OPTION_STROKE_COLOR];
     o->name       = "stroke_color";
-    o->shortDesc  = N_("Annotate Stroke Color");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc  = N_("Annotate Stroke Color");
     o->longDesc   = N_("Stroke color for annotations");
     o->type       = CompOptionTypeColor;
     o->value.c[0] = ANNO_STROKE_COLOR_RED_DEFAULT;
@@ -818,7 +836,10 @@
 
     o = &ad->opt[ANNO_DISPLAY_OPTION_LINE_WIDTH];
     o->name             = "line_width";
-    o->shortDesc        = N_("Line width");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc        = N_("Line width");
     o->longDesc         = N_("Line width for annotations");
     o->type             = CompOptionTypeFloat;
     o->value.f          = ANNO_LINE_WIDTH_DEFAULT;
@@ -828,7 +849,10 @@
 
     o = &ad->opt[ANNO_DISPLAY_OPTION_STROKE_WIDTH];
     o->name             = "stroke_width";
-    o->shortDesc        = N_("Stroke width");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc        = N_("Stroke width");
     o->longDesc         = N_("Stroke width for annotations");
     o->type             = CompOptionTypeFloat;
     o->value.f          = ANNO_STROKE_WIDTH_DEFAULT;

Modified: trunk/beryl-plugins/src/bench.c
===================================================================
--- trunk/beryl-plugins/src/bench.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/bench.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -558,7 +558,10 @@
 
     o = &bd->opt[BENCH_DISPLAY_OPTION_INITIATE];
     o->name = "initiate";
-    o->shortDesc = N_("Initiate");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Initiate");
     o->longDesc = N_("Start benchmark");
     o->type = CompOptionTypeAction;
     o->value.action.initiate = benchInitiate;
@@ -574,21 +577,30 @@
 
     o = &bd->opt[BENCH_DISPLAY_OPTION_OUTPUT_SCREEN];
     o->name = "output_screen";
-    o->shortDesc = N_("Output Screen");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Output Screen");
     o->longDesc = N_("Display FPS on screen");
     o->type = CompOptionTypeBool;
     o->value.b = BENCH_DISPLAY_OPTION_OUTPUT_SCREEN_DEFAULT;
 
     o = &bd->opt[BENCH_DISPLAY_OPTION_OUTPUT_CONSOLE];
     o->name = "output_console";
-    o->shortDesc = N_("Output Console");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Output Console");
     o->longDesc = N_("Print FPS to console");
     o->type = CompOptionTypeBool;
     o->value.b = BENCH_DISPLAY_OPTION_OUTPUT_CONSOLE_DEFAULT;
 
     o = &bd->opt[BENCH_DISPLAY_OPTION_CONSOLE_UPDATE_TIME];
     o->name = "console_update_time";
-    o->shortDesc = N_("Console Update Time");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Console Update Time");
     o->longDesc = N_("Console output update time");
     o->type = CompOptionTypeInt;
     o->value.i = BENCH_DISPLAY_OPTION_CONSOLE_UPDATE_TIME_DEFAULT;
@@ -597,14 +609,20 @@
 
     o = &bd->opt[BENCH_DISPLAY_OPTION_DISABLE_LIMIT];
     o->name = "disable_limiter";
-    o->shortDesc = N_("Disable limiter");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Disable limiter");
     o->longDesc = N_("Disable beryl integrated FPS limiter");
     o->type = CompOptionTypeBool;
     o->value.b = BENCH_DISPLAY_OPTION_DISABLE_LIMIT_DEFAULT;
 
     o = &bd->opt[BENCH_DISPLAY_OPTION_POS_X];
     o->name = "position_x";
-    o->shortDesc = N_("Position x");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Position x");
     o->longDesc = N_("X Position of benchmark window");
     o->type = CompOptionTypeInt;
     o->value.i = BENCH_DISPLAY_OPTION_POS_X_DEFAULT;
@@ -613,7 +631,10 @@
 
     o = &bd->opt[BENCH_DISPLAY_OPTION_POS_Y];
     o->name = "position_y";
-    o->shortDesc = N_("Position y");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Position y");
     o->longDesc = N_("Y Position of benchmark window");
     o->type = CompOptionTypeInt;
     o->value.i = BENCH_DISPLAY_OPTION_POS_X_DEFAULT;

Modified: trunk/beryl-plugins/src/blurfx.c
===================================================================
--- trunk/beryl-plugins/src/blurfx.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/blurfx.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -434,7 +434,10 @@
 
     o = &bd->opt[BLURFX_DISPLAY_OPTION_MOTION_BLUR_TOGGLE];
     o->name = "motion_blur_toggle";
-    o->shortDesc = N_("Toggle motion blur");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Toggle motion blur");
     o->longDesc = N_("Toggle motion blur effect");
     o->type = CompOptionTypeAction;
     o->value.action.initiate = blurfxToggleMotionBlur;
@@ -713,49 +716,70 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_BLUR_DECORATION];
     o->name = "blur_decoration";
-    o->shortDesc = N_("Blur decoration");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Blur decoration");
     o->longDesc = N_("Blur decorations");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_BLUR_DECORATION_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_BLUR_WINDOWS];
     o->name = "blur_windows";
-    o->shortDesc = N_("Blur windows");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Blur windows");
     o->longDesc = N_("Blur windows");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_BLUR_WINDOWS_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_REFLECTION_DECORATION];
     o->name = "reflection_decoration";
-    o->shortDesc = N_("Reflection decoration");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Reflection decoration");
     o->longDesc = N_("Draw reflection for decorations");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_REFLECTION_DECORATION_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_REFLECTION_WINDOWS];
     o->name = "reflection_windows";
-    o->shortDesc = N_("Reflection windows");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Reflection windows");
     o->longDesc = N_("Draw reflection for windows");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_REFLECTION_WINDOWS_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_BLUR_ON_TRANSFORMED_SCREEN];
     o->name = "blur_transformed_screen";
-    o->shortDesc = N_("Blur transformed screen");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Blur transformed screen");
     o->longDesc = N_("Draw blur if the screen is transformed");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_BLUR_ON_TRANSFORMED_SCREEN_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_BLUR_TRANSFORMED_WINDOW];
     o->name = "blur_transformed_window";
-    o->shortDesc = N_("Blur transformed window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Blur transformed window");
     o->longDesc = N_("Draw blur if window is transformed");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_BLUR_TRANSFORMED_WINDOW_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_BLUR_SHADER];
     o->name = "blur_shader";
-    o->shortDesc = N_("Blur Shader");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Blur Shader");
     o->longDesc = N_("Blur Shader");
     o->type = CompOptionTypeString;
     o->value.s = strdup (BLURFX_SCREEN_OPTION_BLUR_SHADER_DEFAULT);
@@ -764,14 +788,20 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_FORCE_NON_FBO_BLUR];
     o->name = "force_non_fbo_blur";
-    o->shortDesc = N_("Force non fbo blur");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Force non fbo blur");
     o->longDesc = N_("Force non fbo blur");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_FORCE_NON_FBO_BLUR_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_NON_FBO_BLUR_STRENGTH];
     o->name = "non_fbo_blur_strength";
-    o->shortDesc = N_("Non fbo blur strength");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Non fbo blur strength");
     o->longDesc = N_("Non fbo mode blur strength");
     o->type = CompOptionTypeInt;
     o->value.i = BLURFX_SCREEN_OPTION_NON_FBO_BLUR_STRENGTH_DEFAULT;
@@ -780,14 +810,20 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_BLUR_CACHE_TEXTURES];
     o->name = "blur_cache";
-    o->shortDesc = N_("Use blur cache");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Use blur cache");
     o->longDesc = N_("Enables blur cache texture system");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_BLUR_CACHE_TEXTURES_DEFAULT;
 
 	o = &bs->opt[BLURFX_SCREEN_OPTION_NO_BLUR_CACHE_ON_TRANSFORMED_SCREEN];
     o->name = "no_cache_when_transformed";
-    o->shortDesc = N_("Disable blur cache on transformed screen");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Disable blur cache on transformed screen");
     o->longDesc = N_("Disables blur cache on transformed screen");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_NO_BLUR_CACHE_ON_TRANSFORMED_SCREEN_DEFAULT;
@@ -795,14 +831,20 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_DISABLE_DECORATION_ALPHADEP];
     o->name = "disable_deco_alpha_dep";
-    o->shortDesc = N_("Disable decoration alpha dependency");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Disable decoration alpha dependency");
     o->longDesc = N_("Disable decoration alpha dependency");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_DISABLE_DECORATION_ALPHADEP_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_DISABLE_BLUR_ON_SCREENGRAB_OF];
     o->name = "disable_blur_on_screengrab_of";
-    o->shortDesc = N_("Disable blur on screengrab of");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Disable blur on screengrab of");
     o->longDesc =
         N_("Disable drawing of blur when an other plugin grabs the input");
     o->type = CompOptionTypeList;
@@ -815,7 +857,10 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_REFLECTION_ON_TRANSFORMED_SCREEN];
     o->name = "reflection_transformed_screen";
-    o->shortDesc = N_("Reflection transformed screen");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Reflection transformed screen");
     o->longDesc = N_("Draw reflection if the screen is transformed");
     o->type = CompOptionTypeBool;
     o->value.b =
@@ -823,14 +868,20 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_REFLECTION_TRANSFORMED_WINDOW];
     o->name = "reflection_transformed_window";
-    o->shortDesc = N_("Reflection transformed window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Reflection transformed window");
     o->longDesc = N_("Draw reflection if the screen is transformed");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_REFLECTION_TRANSFORMED_WINDOW_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_DISABLE_REFLECTION_ON_SCREENGRAB_OF];
     o->name = "disable_reflection_on_screengrab_of";
-    o->shortDesc = N_("Disable reflection on screengrab of");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Disable reflection on screengrab of");
     o->longDesc =
         N_("Disable drawing of reflection when an other plugin grabs the input");
     o->type = CompOptionTypeList;
@@ -840,7 +891,10 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_REFLECTION_FILE];
     o->name = "reflection_file";
-    o->shortDesc = N_("Reflection file");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Reflection file");
     o->longDesc = N_("Reflection image file");
     o->type = CompOptionTypeString;
     o->value.s = strdup (BLURFX_SCREEN_OPTION_REFLECTION_FILE_DEFAULT);
@@ -849,35 +903,50 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_REFLECTION_SCALE];
     o->name = "reflection_scale";
-    o->shortDesc = N_("Reflection scale");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Reflection scale");
     o->longDesc = N_("Scale reflection image");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_REFLECTION_SCALE_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_REFLECTION_PROPORTIONAL];
     o->name = "reflection_proportional";
-    o->shortDesc = N_("Reflection proportional");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Reflection proportional");
     o->longDesc = N_("Scale proportional");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_REFLECTION_PROPORTIONAL_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_REFLECTION_USE_IMAGE_COLOR];
     o->name = "reflection_use_image_colors";
-    o->shortDesc = N_("Reflection Use Colors");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Reflection Use Colors");
     o->longDesc = N_("Do not generate grayscale reflection");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_REFLECTION_USE_IMAGE_COLOR_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_REFLECTION_USE_IMAGE_ALPHA];
     o->name = "reflection_use_image_alpha";
-    o->shortDesc = N_("Reflection Use Alpha");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Reflection Use Alpha");
     o->longDesc = N_("Use image alpha channel");
     o->type = CompOptionTypeBool;
     o->value.b = BLURFX_SCREEN_OPTION_REFLECTION_USE_IMAGE_ALPHA_DEFAULT;
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_MOTION_BLUR_MODE];
     o->name = "motion_blur_mode";
-    o->shortDesc = N_("Motion Blur Mode");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Motion Blur Mode");
     o->longDesc =
         N_("Motion blur mode: simple = uses texture copy and blending; accum ="
            " uses gl accumulation buffer; fbo = uses framebuffer objects and float texture;");
@@ -888,7 +957,10 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_MOTION_BLUR_ON_SCREENGRAB_OF];
     o->name = "motion_blur_on_screengrab_of";
-    o->shortDesc = N_("Motion blur on screengrab of");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Motion blur on screengrab of");
     o->longDesc = N_("Activate motion blur on screengrab");
     o->type = CompOptionTypeList;
     o->value.list.type = CompOptionTypeString;
@@ -897,7 +969,10 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_MOTION_BLUR_ON_TRANSFORMED_SCREEN];
     o->name = "motion_blur_on_transformed_screen";
-    o->shortDesc = N_("Motion blur on transformed screen");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Motion blur on transformed screen");
     o->longDesc = N_("Execute motion blur if the screen is transformed");
     o->type = CompOptionTypeBool;
     o->value.b =
@@ -905,7 +980,10 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_MOTION_BLUR_STRENGTH];
     o->name = "motion_blur_strength";
-    o->shortDesc = N_("Motion blur strength");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Motion blur strength");
     o->longDesc = N_("Motion blur strength");
     o->type = CompOptionTypeFloat;
     o->value.f = BLURFX_SCREEN_OPTION_MOTION_BLUR_STRENGTH_DEFAULT;
@@ -915,7 +993,10 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_DISABLE_BLUR_WINDOW_TYPE];
     o->name = "disable_blur_window_types";
-    o->shortDesc = N_("Disable Blur Window Types");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Disable Blur Window Types");
     o->longDesc = N_("Window types for that blur should be disabled");
     o->type = CompOptionTypeList;
     o->value.list.type = CompOptionTypeString;
@@ -926,7 +1007,10 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_DISABLE_REFLECTION_WINDOW_TYPE];
     o->name = "disable_reflection_window_types";
-    o->shortDesc = N_("Disable Reflection Window Types");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Disable Reflection Window Types");
     o->longDesc = N_("Window types for that reflection should be disabled");
     o->type = CompOptionTypeList;
     o->value.list.type = CompOptionTypeString;
@@ -937,7 +1021,10 @@
 
     o = &bs->opt[BLURFX_SCREEN_OPTION_BLUR_SATURATION];
     o->name = "blur_saturation";
-    o->shortDesc = N_("Blur saturation");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Blur saturation");
     o->longDesc = N_("Blur saturation");
     o->type = CompOptionTypeFloat;
     o->value.f = BLURFX_SCREEN_OPTION_BLUR_SATURATION_DEFAULT;

Modified: trunk/beryl-plugins/src/clone.c
===================================================================
--- trunk/beryl-plugins/src/clone.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/clone.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -678,7 +678,10 @@
 
     o = &cd->opt[CLONE_DISPLAY_OPTION_INITIATE];
     o->name			     = "initiate";
-    o->shortDesc		     = N_("Initiate");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc		     = N_("Initiate");
     o->longDesc			     = N_("Initiate clone selection");
     o->type			     = CompOptionTypeAction;
     o->value.action.initiate	     = cloneInitiate;

Modified: trunk/beryl-plugins/src/crashhandler.c
===================================================================
--- trunk/beryl-plugins/src/crashhandler.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/crashhandler.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -145,21 +145,30 @@
 
     o = &cd->opt[CRASHHANDLER_DISPLAY_OPTION_ENABLED];
     o->name = "enabled";
-    o->shortDesc = N_("Enabled");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Enabled");
     o->longDesc = N_("Activate crash handler");
     o->type = CompOptionTypeBool;
     o->value.b = CRASHHANDLER_DISPLAY_OPTION_ENABLED_DEFAULT;
 
     o = &cd->opt[CRASHHANDLER_DISPLAY_OPTION_START_WM];
     o->name = "start_window_manager";
-    o->shortDesc = N_("Start Window Manager");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Start Window Manager");
     o->longDesc = N_("Start other window manager on crash");
     o->type = CompOptionTypeBool;
     o->value.b = CRASHHANDLER_DISPLAY_OPTION_START_WM_DEFAULT;
 
     o = &cd->opt[CRASHHANDLER_DISPLAY_OPTION_WM];
     o->name = "window_manager_command_line";
-    o->shortDesc = N_("Window manager command line");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Window manager command line");
     o->longDesc = N_("Window manager command line. DO NOT ENTER BERYL HERE!!!");
     o->type = CompOptionTypeString;
     o->value.s = strdup (CRASHHANDLER_DISPLAY_OPTION_WM_DEFAULT);

Modified: trunk/beryl-plugins/src/cube.c
===================================================================
--- trunk/beryl-plugins/src/cube.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/cube.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -1185,7 +1185,10 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_COLOR];
     o->name = "color";
-    o->shortDesc = N_("Cube Color");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Cube Color");
     o->longDesc = N_("Color of top and bottom sides of the cube");
     o->type = CompOptionTypeColor;
     o->value.c[0] = CUBE_COLOR_RED_DEFAULT;
@@ -1195,21 +1198,30 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_IN];
     o->name = "in";
-    o->shortDesc = N_("Inside Cube");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Inside Cube");
     o->longDesc = N_("Inside cube");
     o->type = CompOptionTypeBool;
     o->value.b = CUBE_IN_DEFAULT;
 
     o = &cs->opt[CUBE_SCREEN_OPTION_SCALE_IMAGE_TOP];
     o->name = "scale_image_top";
-    o->shortDesc = N_("Scale image on top");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Scale image on top");
     o->longDesc = N_("Scale images to cover top face of cube");
     o->type = CompOptionTypeBool;
     o->value.b = CUBE_SCALE_IMAGE_TOP_DEFAULT;
 
     o = &cs->opt[CUBE_SCREEN_OPTION_IMAGES_TOP];
     o->name = "images_top";
-    o->shortDesc = N_("Image files on top");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Image files on top");
     o->longDesc = N_("List of PNG and SVG files that should be rendered "
         "on top face of cube");
     o->type = CompOptionTypeList;
@@ -1223,14 +1235,20 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_SCALE_IMAGE_BOTTOM];
     o->name = "scale_image_bottom";
-    o->shortDesc = N_("Scale image on bottom");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Scale image on bottom");
     o->longDesc = N_("Scale images to cover bottom face of cube");
     o->type = CompOptionTypeBool;
     o->value.b = CUBE_SCALE_IMAGE_BOTTOM_DEFAULT;
 
     o = &cs->opt[CUBE_SCREEN_OPTION_IMAGES_ROTATE_MODE];
  	o->name = "images_rotate_mode";
-	o->shortDesc = N_("Images Rotate Mode");
+	o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Images Rotate Mode");
 	o->longDesc =
 		N_("Select between never, after moving and while moving mode.");
 	o->type = CompOptionTypeString;
@@ -1240,7 +1258,10 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_IMAGES_BOTTOM];
     o->name = "images_bottom";
-    o->shortDesc = N_("Image files on bottom");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Image files on bottom");
     o->longDesc = N_("List of PNG and SVG files that should be rendered "
         "on bottom face of cube");
     o->type = CompOptionTypeList;
@@ -1254,14 +1275,20 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_SKYDOME];
     o->name = "skydome";
-    o->shortDesc = N_("Skydome");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Skydome");
     o->longDesc = N_("Render skydome");
     o->type = CompOptionTypeBool;
     o->value.b = CUBE_SKYDOME_DEFAULT;
 
     o = &cs->opt[CUBE_SCREEN_OPTION_SKYDOME_IMG];
     o->name = "skydome_image";
-    o->shortDesc = N_("Skydome Image");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Skydome Image");
     o->longDesc = N_("Image to use as texture for the skydome");
     o->type = CompOptionTypeString;
     o->value.s = strdup ("");
@@ -1270,14 +1297,20 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_SKYDOME_ANIM];
     o->name = "skydome_animated";
-    o->shortDesc = N_("Animate Skydome");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Animate Skydome");
     o->longDesc = N_("Animate skydome when rotating cube");
     o->type = CompOptionTypeBool;
     o->value.b = CUBE_SKYDOME_ANIMATE_DEFAULT;
 
     o = &cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_START];
     o->name	  = "skydome_gradient_start_color";
-    o->shortDesc  = N_("Skydome Gradient Start Color");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc  = N_("Skydome Gradient Start Color");
     o->longDesc	  = N_("Color to use for the top color-stop of the skydome-fallback gradient");
     o->type	  = CompOptionTypeColor;
     o->value.c[0] = CUBE_SKYDOME_GRAD_START_RED_DEFAULT;
@@ -1287,7 +1320,10 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_END];
     o->name	  = "skydome_gradient_end_color";
-    o->shortDesc  = N_("Skydome Gradient End Color");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc  = N_("Skydome Gradient End Color");
     o->longDesc	  = N_("Color to use for the bottom color-stop of the skydome-fallback gradient");
     o->type	  = CompOptionTypeColor;
     o->value.c[0] = CUBE_SKYDOME_GRAD_END_RED_DEFAULT;
@@ -1297,7 +1333,10 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_ACCELERATION];
     o->name = "acceleration";
-    o->shortDesc = N_("Acceleration");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Acceleration");
     o->longDesc = N_("Fold Acceleration");
     o->type = CompOptionTypeFloat;
     o->value.f = CUBE_ACCELERATION_DEFAULT;
@@ -1307,7 +1346,10 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_SPEED];
     o->name = "speed";
-    o->shortDesc = N_("Speed");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Speed");
     o->longDesc = N_("Fold Speed");
     o->type = CompOptionTypeFloat;
     o->value.f = CUBE_SPEED_DEFAULT;
@@ -1317,7 +1359,10 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_TIMESTEP];
     o->name = "timestep";
-    o->shortDesc = N_("Timestep");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Timestep");
     o->longDesc = N_("Fold Timestep");
     o->type = CompOptionTypeFloat;
     o->value.f = CUBE_TIMESTEP_DEFAULT;
@@ -1327,7 +1372,10 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_MIPMAP];
     o->name = "mipmap";
-    o->shortDesc = N_("Mipmap");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Mipmap");
     o->longDesc =
         N_("Generate mipmaps when possible for higher quality scaling");
     o->type = CompOptionTypeBool;
@@ -1335,28 +1383,40 @@
 
     o = &cs->opt[CUBE_SCREEN_OPTION_VIEWPORT_SLIDE];
     o->name = "change_viewport_slide";
-    o->shortDesc = N_("Slide when changing viewports instead of rotating.");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Slide when changing viewports instead of rotating.");
     o->longDesc = N_("Slide when changing viewports instead of rotating.");
     o->type = CompOptionTypeBool;
     o->value.b = CUBE_VIEWPORT_SLIDE_DEFAULT;
 
     o = &cs->opt[CUBE_SCREEN_OPTION_VIEWPORT_SLIDE_NO3D];
     o->name = "change_viewport_slide_no3d";
-    o->shortDesc = N_("Keep the cube plannar even when mouse grabbing.");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Keep the cube plannar even when mouse grabbing.");
     o->longDesc = N_("Keep the cube plannar even when mouse grabbing.");
     o->type = CompOptionTypeBool;
     o->value.b = CUBE_VIEWPORT_SLIDE_NO3D_DEFAULT;
 
     o = &cs->opt[CUBE_SCREEN_OPTION_DRAW_CAPS];
     o->name = "draw_caps";
-    o->shortDesc = N_("Draw Caps");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Draw Caps");
     o->longDesc = N_("Draw the cube 'caps'");
     o->type = CompOptionTypeBool;
     o->value.b = CUBE_DRAW_CAPS_DEFAULT;
 
 	o = &cs->opt[CUBE_SCREEN_OPTION_MULTIMONITOR];
  	o->name = "multimonitor_mode";
-	o->shortDesc = N_("MultiMonitor Mode");
+	o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("MultiMonitor Mode");
 	o->longDesc =
 		N_("Multi monitor mode behavior");
 	o->type = CompOptionTypeString;
@@ -1367,14 +1427,20 @@
 
 	o = &cs->opt[CUBE_SCREEN_OPTION_TRANSPARENT];
     o->name = "transparent";
-    o->shortDesc = N_("Transparent Cube");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Transparent Cube");
     o->longDesc = N_("Change Desktop Window Opacity and draw complete cube");
     o->type = CompOptionTypeBool;
     o->value.b = CUBE_TRANSPARENT_DEFAULT;
 
 	o = &cs->opt[CUBE_SCREEN_OPTION_FADE_TIME];
     o->name = "fade_time";
-    o->shortDesc = N_("Fade time");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Fade time");
     o->longDesc = N_("Desktop window opacity fade time");
     o->type = CompOptionTypeFloat;
     o->value.f = CUBE_FADE_TIME_DEFAULT;
@@ -1384,7 +1450,10 @@
 
 	o = &cs->opt[CUBE_SCREEN_OPTION_ACTIVE_OPACITY];
     o->name = "active_opacity";
-    o->shortDesc = N_("Opacity during move");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Opacity during move");
     o->longDesc = N_("Opacity of desktop window during move");
     o->type = CompOptionTypeInt;
     o->value.i = CUBE_ACTIVE_OPACITY_DEFAULT;
@@ -1393,7 +1462,10 @@
 
 	o = &cs->opt[CUBE_SCREEN_OPTION_INACTIVE_OPACITY];
     o->name = "inactive_opacity";
-    o->shortDesc = N_("Opacity when not moving");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Opacity when not moving");
     o->longDesc = N_("Opacity of desktop window when not moving");
     o->type = CompOptionTypeInt;
     o->value.i = CUBE_INACTIVE_OPACITY_DEFAULT;
@@ -2602,7 +2674,10 @@
 
     o = &cd->opt[CUBE_DISPLAY_OPTION_UNFOLD];
     o->name = "unfold";
-    o->shortDesc = N_("Unfold");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Unfold");
     o->longDesc = N_("Unfold cube");
     o->type = CompOptionTypeAction;
     o->value.action.initiate = cubeUnfold;
@@ -2618,7 +2693,10 @@
 
     o = &cd->opt[CUBE_DISPLAY_OPTION_NEXT];
     o->name = "next_slide";
-    o->shortDesc = N_("Next Slide");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Next Slide");
     o->longDesc = N_("Advance to next slide");
     o->type = CompOptionTypeAction;
     o->value.action.initiate = cubeNextImage;
@@ -2634,7 +2712,10 @@
 
     o = &cd->opt[CUBE_DISPLAY_OPTION_PREV];
     o->name = "prev_slide";
-    o->shortDesc = N_("Previous Slide");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Previous Slide");
     o->longDesc = N_("Go back to previous slide");
     o->type = CompOptionTypeAction;
     o->value.action.initiate = cubePrevImage;

Modified: trunk/beryl-plugins/src/decoration.c
===================================================================
--- trunk/beryl-plugins/src/decoration.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/decoration.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -193,7 +193,10 @@
 
     o = &dd->opt[DECOR_DISPLAY_OPTION_APPLY_PAINT_MODIFIERS];
     o->name = "apply_paint_modifiers";
-    o->shortDesc = N_("Apply transparency/brightness/saturation");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Apply transparency/brightness/saturation");
     o->longDesc =
         N_("Apply the transparency/brightness/saturation of the window to the decoration");
     o->type = CompOptionTypeBool;
@@ -201,7 +204,10 @@
 
     o = &dd->opt[DECOR_DISPLAY_OPTION_COMMAND];
     o->name             = "command";
-    o->shortDesc        = N_("Command");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc        = N_("Command");
     o->longDesc         = N_("Decorator command line that is executed if no "
                              "decorator is already running");
     o->type             = CompOptionTypeString;
@@ -211,7 +217,10 @@
 
     o = &dd->opt[DECOR_DISPLAY_OPTION_SHADOWS_ON_DOCKS];
     o->name = "shadows_on_docks";
-    o->shortDesc = N_("Draw shadows on panel-type windows");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Draw shadows on panel-type windows");
     o->longDesc =
         N_("Draw basic shadow decoration on panel windows");
     o->type = CompOptionTypeBool;
@@ -219,7 +228,10 @@
 
     /*o = &dd->opt[DECOR_DISPLAY_OPTION_DROP_SHADOWS];
     o->name = "drop_shadows";
-    o->shortDesc = N_("Draw simple shaped drop-shadows");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Draw simple shaped drop-shadows");
     o->longDesc =
         N_("Draw a simple shaped drop-shadow on windows, separate from "
          "decoration manager.");
@@ -228,7 +240,10 @@
 
     o = &dd->opt[DECOR_DISPLAY_OPTION_SHADOW_OPACITY];
     o->name = "shadow_opacity";
-    o->shortDesc = N_("Shadow Opacity (percent of window opacity)");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Shadow Opacity (percent of window opacity)");
     o->longDesc =
         N_("Percentage of original window's opacity to use for shadows");
     o->type = CompOptionTypeFloat;
@@ -239,7 +254,10 @@
 
     o = &dd->opt[DECOR_DISPLAY_OPTION_SHADOW_X_OFFSET];
     o->name = "shadow_x_offset";
-    o->shortDesc = N_("Shadow X Offset");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Shadow X Offset");
     o->longDesc =
         N_("X Offset of shadow relative to window");
     o->type = CompOptionTypeInt;
@@ -249,7 +267,10 @@
 
     o = &dd->opt[DECOR_DISPLAY_OPTION_SHADOW_Y_OFFSET];
     o->name = "shadow_y_offset";
-    o->shortDesc = N_("Shadow Y Offset");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Shadow Y Offset");
     o->longDesc =
         N_("Y Offset of shadow relative to window");
     o->type = CompOptionTypeInt;

Modified: trunk/beryl-plugins/src/fade.c
===================================================================
--- trunk/beryl-plugins/src/fade.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/fade.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -124,7 +124,10 @@
     CompOption *o;
     o = &fs->opt[FADE_SCREEN_OPTION_FADE_SPEED];
     o->name = "fade_speed";
-    o->shortDesc = N_("Fade Speed");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Fade Speed");
     o->longDesc = N_("Window fade speed");
     o->type = CompOptionTypeFloat;
     o->value.f = FADE_SPEED_DEFAULT;

Modified: trunk/beryl-plugins/src/group.c
===================================================================
--- trunk/beryl-plugins/src/group.c	2006-11-29 23:14:42 UTC (rev 1460)
+++ trunk/beryl-plugins/src/group.c	2006-12-01 23:22:11 UTC (rev 1461)
@@ -615,7 +615,10 @@
 
     o = &gs->opt[GROUP_SCREEN_OPTION_TYPES];
     o->name              = "mask";
-    o->shortDesc         = N_("Window Types");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc         = N_("Window Types");
     o->longDesc          = N_("The types of windows which will be grouped");
     o->type              = CompOptionTypeList;
     o->value.list.type   = CompOptionTypeString;
@@ -630,7 +633,10 @@
 
     o = &gs->opt[GROUP_SCREEN_OPTION_OPACITY];
     o->name = "opacity";
-    o->shortDesc = N_("Opacity");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Opacity");
     o->longDesc = N_("Opacity of selected windows");
     o->type = CompOptionTypeInt;
     o->value.i = GROUP_OPACITY_DEFAULT;
@@ -639,7 +645,10 @@
     
     o = &gs->opt[GROUP_SCREEN_OPTION_SATURATION];
     o->name = "saturation";
-    o->shortDesc = N_("Saturation");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Saturation");
     o->longDesc = N_("Saturation of selected windows");
     o->type = CompOptionTypeInt;
     o->value.i = GROUP_SATURATION_DEFAULT;
@@ -648,7 +657,10 @@
     
     o = &gs->opt[GROUP_SCREEN_OPTION_BRIGHTNESS];
     o->name = "brightness";
-    o->shortDesc = N_("Brightness");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Brightness");
     o->longDesc = N_("Brightness of selected windows");
     o->type = CompOptionTypeInt;
     o->value.i = GROUP_BRIGHTNESS_DEFAULT;
@@ -657,7 +669,10 @@
 
     o = &gs->opt[GROUP_SCREEN_OPTION_TOLERANCE];
     o->name = "tolerance";
-    o->shortDesc = N_("Tolerance");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Tolerance");
     o->longDesc = N_("Tolerance of the seletion.");
     o->type = CompOptionTypeInt;
     o->value.i = GROUP_TOLERANCE_DEFAULT;
@@ -666,7 +681,10 @@
 
     o = &gs->opt[GROUP_SCREEN_OPTION_MOVE];
     o->name = "move";
-    o->shortDesc = N_("Move every window in the group");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Move every window in the group");
     o->longDesc = N_("If one window in the group gets moved, "
                   "every other window in the group gets moved as well.");
     o->type = CompOptionTypeBool;
@@ -674,7 +692,10 @@
 
     o = &gs->opt[GROUP_SCREEN_OPTION_RESIZE];
     o->name = "resize";
-    o->shortDesc = N_("Resize every window in the group");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Resize every window in the group");
     o->longDesc = N_("If one window in the group gets resized, "
                   "every other window in the group gets resized as well.");
     o->type = CompOptionTypeBool;
@@ -682,7 +703,10 @@
 
     o = &gs->opt[GROUP_SCREEN_OPTION_RAISE];
     o->name = "raise";
-    o->shortDesc = N_("Raise every window in the group");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Raise every window in the group");
     o->longDesc = N_("If one window in the group gets selected, "
                   "every window in the group gets raised.");
     o->type = CompOptionTypeBool;
@@ -690,7 +714,10 @@
 
     o = &gs->opt[GROUP_SCREEN_OPTION_AUTO_GROUP];
     o->name = "auto_group";
-    o->shortDesc = N_("Group the windows after selection");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Group the windows after selection");
     o->longDesc = N_("If you have selected your windows," 
                      "this automatically groups them. "
                      "(Doesn't work with selection mode 'normal')");
@@ -699,14 +726,20 @@
 
     o = &gs->opt[GROUP_SCREEN_OPTION_AUTO_UNGROUP];
     o->name = "auto_ungroup";
-    o->shortDesc = N_("Ungroup the windows if only one window is left");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Ungroup the windows if only one window is left");
     o->longDesc = N_("If there is only 1 window in the group left, it will be ungrouped.");
     o->type = CompOptionTypeBool;
     o->value.b = GROUP_AUTO_UNGROUP_DEFAULT;
 
     o = &gs->opt[GROUP_SCREEN_OPTION_RELATIVE_DISTANCE];
     o->name = "relative_distance";
-    o->shortDesc = N_("Compute distance relative");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc = N_("Compute distance relative");
     o->longDesc = N_("The distance between the windows is computed relative to the window size. " 
                      "This allows you to have windows staying next to eachother.");
     o->type = CompOptionTypeBool;
@@ -714,7 +747,10 @@
 
     o             = &gs->opt[GROUP_SCREEN_OPTION_SELECTION_COLOR];
     o->name       = "fill_color";
-    o->shortDesc  = N_("Selection Color");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc  = N_("Selection Color");
     o->longDesc   = N_("Fill color of the selection.");
     o->type       = CompOptionTypeColor;
     o->value.c[0] = GROUP_COLOR_SELECTION_RED_DEFAULT;
@@ -724,7 +760,10 @@
 
     o             = &gs->opt[GROUP_SCREEN_OPTION_LINE_COLOR];
     o->name       = "line_color";
-    o->shortDesc  = N_("Line Color");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc  = N_("Line Color");
     o->longDesc   = N_("Line color of the selection.");
     o->type       = CompOptionTypeColor;
     o->value.c[0] = GROUP_COLOR_LINE_RED_DEFAULT;
@@ -1619,7 +1658,10 @@
 
     o = &gd->opt[GROUP_DISPLAY_OPTION_SELECT];
     o->name                             = "select";
-    o->shortDesc                        = N_("Select");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc                        = N_("Select");
     o->longDesc                         = N_("The key for starting selecting windows.");
     o->type                             = CompOptionTypeAction;
     o->value.action.initiate            = groupSelect;
@@ -1633,7 +1675,10 @@
 
     o = &gd->opt[GROUP_DISPLAY_OPTION_SELECT_SINGLE];
     o->name                             = "select_single";
-    o->shortDesc                        = N_("Select single window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc                        = N_("Select single window");
     o->longDesc                         = N_("The key for selecting the current window.");
     o->type                             = CompOptionTypeAction;
     o->value.action.initiate            = groupSelectSingle;
@@ -1647,7 +1692,10 @@
 
     o = &gd->opt[GROUP_DISPLAY_OPTION_GROUPING];
     o->name                             = "group";
-    o->shortDesc                        = N_("Group");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc                        = N_("Group");
     o->longDesc                         = N_("The key for grouing windows.");
     o->type                             = CompOptionTypeAction;
     o->value.action.initiate            = groupGroupWindows;
@@ -1661,7 +1709,10 @@
 
     o = &gd->opt[GROUP_DISPLAY_OPTION_UNGROUPING];
     o->name                             = "ungroup";
-    o->shortDesc                        = N_("Ungroup");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc                        = N_("Ungroup");
     o->longDesc                         = N_("The key for ungrouing windows.");
     o->type                             = CompOptionTypeAction;
     o->value.action.initiate            = groupUnGroupWindows;
@@ -1675,7 +1726,10 @@
 
     o = &gd->opt[GROUP_DISPLAY_OPTION_REMOVEING];
     o->name                             = "remove";
-    o->shortDesc                        = N_("Remove Window");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc                        = N_("Remove Window");
     o->longDesc                         = N_("The key for removing the selected window.");
     o->type                             = CompOptionTypeAction;
     o->value.action.initiate            = groupRemoveWindow;
@@ -1689,7 +1743,10 @@
 
     o = &gd->opt[GROUP_DISPLAY_OPTION_CLOSEING];
     o->name                             = "close";
-    o->shortDesc                        = N_("Close Windows");
+    o->group=N_("");
+o->subGroup=N_("");
+o->displayHints="";
+o->shortDesc                        = N_("Close Windows");
     o->longDesc                         = N_("The k