add descriptions to usage

This commit is contained in:
Sascha Kruse 2012-10-20 15:35:04 +02:00
parent 78d7daed12
commit bdfa4301d7
3 changed files with 103 additions and 104 deletions

74
dunst.c
View File

@ -1399,24 +1399,24 @@ void load_options(char *cmdline_config_path)
load_ini_file(config_file); load_ini_file(config_file);
#endif #endif
font = option_get_string("global", "font", "-fn", font); font = option_get_string("global", "font", "-fn", font, "The font dunst should use.");
format = option_get_string("global", "format", "-format", format); format = option_get_string("global", "format", "-format", format, "The format template for the notifictions");
sort = option_get_bool("global", "sort", "-sort", sort); sort = option_get_bool("global", "sort", "-sort", sort, "Sort notifications by urgency and date?");
indicate_hidden = option_get_bool("global", "indicate_hidden", "-indicate_hidden", indicate_hidden); indicate_hidden = option_get_bool("global", "indicate_hidden", "-indicate_hidden", indicate_hidden, "Show how many notificaitons are hidden?");
word_wrap = option_get_bool("global", "word_wrap", "-word_wrap", word_wrap); word_wrap = option_get_bool("global", "word_wrap", "-word_wrap", word_wrap, "Truncating long lines or do word wrap");
idle_threshold = option_get_int("global", "idle_threshold", "-idle_threshold", idle_threshold); idle_threshold = option_get_int("global", "idle_threshold", "-idle_threshold", idle_threshold, "Don't timeout notifications if user is longer idle than threshold");
monitor = option_get_int("global", "monitor", "-mon", monitor); monitor = option_get_int("global", "monitor", "-mon", monitor, "On which monitor should the notifications be displayed");
{ {
char *c = option_get_string("global", "follow", "-follow", ""); char *c = option_get_string("global", "follow", "-follow", "", "Follow mouse, keyboard or none?");
if (strlen(c) > 0) { if (strlen(c) > 0) {
parse_follow_mode(c); parse_follow_mode(c);
free(c); free(c);
} }
} }
geom = option_get_string("global", "geometry", "-geom/-geometry", geom); geom = option_get_string("global", "geometry", "-geom/-geometry", geom, "Geometry for the window");
line_height = option_get_int("global", "line_height", "-lh/-line_height", line_height); line_height = option_get_int("global", "line_height", "-lh/-line_height", line_height, "Add additional padding above and beneath text");
{ {
char *c = option_get_string("global", "modifier", NULL, ""); char *c = option_get_string("global", "modifier", NULL, "", "");
if (strlen(c) > 0) { if (strlen(c) > 0) {
deprecated_dunstrc_shortcuts = True; deprecated_dunstrc_shortcuts = True;
KeySym mod = string_to_mask(c); KeySym mod = string_to_mask(c);
@ -1426,12 +1426,12 @@ void load_options(char *cmdline_config_path)
free(c); free(c);
} }
} }
close_ks.str = option_get_string("global", "key", NULL, close_ks.str); close_ks.str = option_get_string("global", "key", NULL, close_ks.str, "");
close_all_ks.str = option_get_string("global", "all_key", NULL, close_all_ks.str); close_all_ks.str = option_get_string("global", "all_key", NULL, close_all_ks.str, "");
history_ks.str = option_get_string("global", "history_key", NULL, history_ks.str); history_ks.str = option_get_string("global", "history_key", NULL, history_ks.str, "");
bounce_freq = option_get_double("global", "bounce_freq", "-bounce_freq", bounce_freq); bounce_freq = option_get_double("global", "bounce_freq", "-bounce_freq", bounce_freq, "Make long text bounce from side to side");
{ {
char *c = option_get_string("global", "alignment", "-align/-alignment", ""); char *c = option_get_string("global", "alignment", "-align/-alignment", "", "Align notifications left/center/right");
if (strlen(c) > 0) { if (strlen(c) > 0) {
if (strcmp(c, "left") == 0) if (strcmp(c, "left") == 0)
align = left; align = left;
@ -1444,12 +1444,12 @@ void load_options(char *cmdline_config_path)
free(c); free(c);
} }
} }
show_age_threshold = option_get_int("global", "show_age_threshold", "-show_age_threshold", show_age_threshold); show_age_threshold = option_get_int("global", "show_age_threshold", "-show_age_threshold", show_age_threshold, "When should the age of the notification be displayed?");
sticky_history = option_get_bool("global", "sticky_history", "-sticky_history", sticky_history); sticky_history = option_get_bool("global", "sticky_history", "-sticky_history", sticky_history, "Don't timeout notifications popped up from history");
separator_height = option_get_int("global", "separator_height", "-sep_height/-separator_height", separator_height); separator_height = option_get_int("global", "separator_height", "-sep_height/-separator_height", separator_height, "height of the separator line");
transparency = option_get_int("global", "transparency", "-transparency", transparency); transparency = option_get_int("global", "transparency", "-transparency", transparency, "Transparency. range 0-100");
{ {
char *c = option_get_string("global", "separator_color", "-sep_color/-separator_color", ""); char *c = option_get_string("global", "separator_color", "-sep_color/-separator_color", "", "Color of the separator line (or 'auto')");
if (strlen(c) > 0) { if (strlen(c) > 0) {
if (strcmp(c, "auto") == 0) if (strcmp(c, "auto") == 0)
sep_color = AUTO; sep_color = AUTO;
@ -1461,21 +1461,21 @@ void load_options(char *cmdline_config_path)
} }
} }
lowbgcolor = option_get_string("urgency_low", "background", "-lb", lowbgcolor); lowbgcolor = option_get_string("urgency_low", "background", "-lb", lowbgcolor, "Background color for notifcations with low urgency");
lowfgcolor = option_get_string("urgency_low", "foreground", "-lf", lowfgcolor); lowfgcolor = option_get_string("urgency_low", "foreground", "-lf", lowfgcolor, "Foreground color for notifications with low urgency");
timeouts[LOW] = option_get_int("urgency_low", "timeout", "-lto", timeouts[LOW]); timeouts[LOW] = option_get_int("urgency_low", "timeout", "-lto", timeouts[LOW], "Timeout for notifications with low urgency");
normbgcolor = option_get_string("urgency_normal", "background", "-nb", normbgcolor); normbgcolor = option_get_string("urgency_normal", "background", "-nb", normbgcolor, "Background color for notifications with normal urgency");
normfgcolor = option_get_string("urgency_normal", "foreground", "-nf", normfgcolor); normfgcolor = option_get_string("urgency_normal", "foreground", "-nf", normfgcolor, "Foreground color for notifications with normal urgency");
timeouts[NORM] = option_get_int("urgency_normal", "timeout", "-nto", timeouts[NORM]); timeouts[NORM] = option_get_int("urgency_normal", "timeout", "-nto", timeouts[NORM], "Timeout for notifications with normal urgency");
critbgcolor = option_get_string("urgency_critical", "background", "-cb", critbgcolor); critbgcolor = option_get_string("urgency_critical", "background", "-cb", critbgcolor, "Background color for notifications with critical urgency");
critfgcolor = option_get_string("urgency_critical", "foreground", "-cf", critfgcolor); critfgcolor = option_get_string("urgency_critical", "foreground", "-cf", critfgcolor, "Foreground color for notifications with ciritical urgency");
timeouts[CRIT] = option_get_int("urgency_critical", "timeout", "-cto", timeouts[CRIT]); timeouts[CRIT] = option_get_int("urgency_critical", "timeout", "-cto", timeouts[CRIT], "Timeout for notifications with critical urgency");
close_ks.str = option_get_string("shortcuts", "close", "-key", close_ks.str); close_ks.str = option_get_string("shortcuts", "close", "-key", close_ks.str, "Shortcut for closing one notification");
close_all_ks.str = option_get_string("shortcuts", "close_all", "-all_key", close_all_ks.str); close_all_ks.str = option_get_string("shortcuts", "close_all", "-all_key", close_all_ks.str, "Shortcut for closing all notifications");
history_ks.str = option_get_string("shortcuts", "history", "-history_key", history_ks.str); history_ks.str = option_get_string("shortcuts", "history", "-history_key", history_ks.str, "Shortcut to pop the last notification from history");
print_notifications = cmdline_get_bool("-print", False); print_notifications = cmdline_get_bool("-print", False, "Print notifications to cmdline (DEBUG)");
char *cur_section = NULL; char *cur_section = NULL;
for (;;) { for (;;) {
@ -1544,15 +1544,15 @@ int main(int argc, char *argv[])
cmdline_load(argc, argv); cmdline_load(argc, argv);
if (cmdline_get_bool("-v/-version", False) || cmdline_get_bool("--version", False)) { if (cmdline_get_bool("-v/-version", False, "Print version") || cmdline_get_bool("--version", False, "Print version")) {
print_version(); print_version();
} }
char *cmdline_config_path; char *cmdline_config_path;
cmdline_config_path = cmdline_get_string("-conf/-config", NULL); cmdline_config_path = cmdline_get_string("-conf/-config", NULL, "Path to configuration file");
load_options(cmdline_config_path); load_options(cmdline_config_path);
if (cmdline_get_bool("-h/-help", False) || cmdline_get_bool("--help", False)) { if (cmdline_get_bool("-h/-help", False, "Print help") || cmdline_get_bool("--help", False, "Print help")) {
usage(EXIT_SUCCESS); usage(EXIT_SUCCESS);
} }

113
options.c
View File

@ -38,7 +38,7 @@ static int cmdline_argc;
static char **cmdline_argv; static char **cmdline_argv;
static char *usage_str = NULL; static char *usage_str = NULL;
static void cmdline_usage_append(char *key, char *type); static void cmdline_usage_append(char *key, char *type, char *description);
static int cmdline_find_option(char *key); static int cmdline_find_option(char *key);
@ -307,46 +307,56 @@ int cmdline_find_option(char *key)
return -1; return -1;
} }
char *cmdline_get_string(char *key, char *def) static char *cmdline_get_value(char *key)
{ {
cmdline_usage_append(key, "string");
int idx = cmdline_find_option(key); int idx = cmdline_find_option(key);
if (idx < 0) { if (idx < 0) {
return def; return NULL;
} }
if (idx + 1 >= cmdline_argc || cmdline_argv[idx+1][0] == '-') { if (idx + 1 >= cmdline_argc || cmdline_argv[idx+1][0] == '-') {
/* the argument is missing */ /* the argument is missing */
fprintf(stderr, "Warning: %s, missing argument. Ignoring\n", key); fprintf(stderr, "Warning: %s, missing argument. Ignoring\n", key);
return def; return NULL;
} }
return cmdline_argv[idx+1]; return cmdline_argv[idx+1];
} }
int cmdline_get_int(char *key, int def) char *cmdline_get_string(char *key, char *def, char *description)
{ {
cmdline_usage_append(key, "double"); cmdline_usage_append(key, "string", description);
char *str = cmdline_get_string(key, NULL); char *str = cmdline_get_value(key);
if (str)
return str;
else
return def;
}
int cmdline_get_int(char *key, int def, char *description)
{
cmdline_usage_append(key, "double", description);
char *str = cmdline_get_value(key);
if (str == NULL) if (str == NULL)
return def; return def;
else else
return atoi(str); return atoi(str);
} }
double cmdline_get_double(char *key, double def) double cmdline_get_double(char *key, double def, char *description)
{ {
cmdline_usage_append(key, "double"); cmdline_usage_append(key, "double", description);
char *str = cmdline_get_string(key, NULL); char *str = cmdline_get_value(key);
if (str == NULL) if (str == NULL)
return def; return def;
else else
return atof(str); return atof(str);
} }
int cmdline_get_bool(char *key, int def) int cmdline_get_bool(char *key, int def, char *description)
{ {
cmdline_usage_append(key, ""); cmdline_usage_append(key, "", description);
int idx = cmdline_find_option(key); int idx = cmdline_find_option(key);
if (idx > 0) if (idx > 0)
return true; return true;
@ -354,12 +364,12 @@ int cmdline_get_bool(char *key, int def)
return def; return def;
} }
char *option_get_string(char *ini_section, char *ini_key, char *cmdline_key, char *def) char *option_get_string(char *ini_section, char *ini_key, char *cmdline_key, char *def, char *description)
{ {
char *val = NULL; char *val = NULL;
if (cmdline_key) { if (cmdline_key) {
val = cmdline_get_string(cmdline_key, NULL); val = cmdline_get_string(cmdline_key, NULL, description);
} }
if (val) { if (val) {
@ -370,48 +380,38 @@ char *option_get_string(char *ini_section, char *ini_key, char *cmdline_key, cha
} }
int option_get_int(char *ini_section, char *ini_key, char *cmdline_key, int def) int option_get_int(char *ini_section, char *ini_key, char *cmdline_key, int def, char *description)
{ {
/* we have to get this twice in order to check wether the actual value /* *str is only used to check wether the cmdline option is actually set. */
* is the same as the first default value char *str = cmdline_get_value(cmdline_key);
*/
int val, val2;
if (cmdline_key) {
val = cmdline_get_int(cmdline_key, 1);
val2 = cmdline_get_int(cmdline_key, 0);
}
if (cmdline_key && val == val2) { /* we call cmdline_get_int even when the option isn't set in order to
/* the cmdline option has been set */ * add the usage info */
return val; int val = cmdline_get_int(cmdline_key, def, description);
} else {
if (!str)
return ini_get_int(ini_section, ini_key, def); return ini_get_int(ini_section, ini_key, def);
} else
}
double option_get_double(char *ini_section, char *ini_key, char *cmdline_key, double def)
{
/* see option_get_int */
double val, val2;
if (cmdline_key) {
val = cmdline_get_double(cmdline_key, 1);
val2 = cmdline_get_double(cmdline_key, 0);
}
if (cmdline_key && val == val2) {
return val; return val;
} else {
return ini_get_double(ini_section, ini_key, def);
} }
double option_get_double(char *ini_section, char *ini_key, char *cmdline_key, double def, char *description)
{
char *str = cmdline_get_value(cmdline_key);
double val = cmdline_get_double(cmdline_key, def, description);
if (!str)
return ini_get_int(ini_section, ini_key, def);
else
return val;
} }
int option_get_bool(char *ini_section, char *ini_key, char *cmdline_key, int def) int option_get_bool(char *ini_section, char *ini_key, char *cmdline_key, int def, char *description)
{ {
int val; int val;
if (cmdline_key) if (cmdline_key)
val = cmdline_get_bool(cmdline_key, false); val = cmdline_get_bool(cmdline_key, false, description);
if (cmdline_key && val) { if (cmdline_key && val) {
/* this can only be true if the value has been set, /* this can only be true if the value has been set,
@ -422,24 +422,23 @@ int option_get_bool(char *ini_section, char *ini_key, char *cmdline_key, int def
return ini_get_bool(ini_section, ini_key, def); return ini_get_bool(ini_section, ini_key, def);
} }
void cmdline_usage_append(char *key, char *type) void cmdline_usage_append(char *key, char *type, char *description)
{ {
static int add_linebreak = 2; char *key_type;
if (type && strlen(type) > 0)
asprintf(&key_type, "%s (%s)", key, type);
else
asprintf(&key_type, "%s", key);
if (!usage_str) { if (!usage_str) {
asprintf(&usage_str, "[%s %s]", key, type); asprintf(&usage_str, "%-40s - %s\n", key_type, description);
free(key_type);
return; return;
} }
char *tmp; char *tmp;
add_linebreak--; asprintf(&tmp, "%s%-40s - %s\n", usage_str, key_type, description);
if (add_linebreak == 0) { free(key_type);
asprintf(&tmp, "%s[%s %s]\n", usage_str, key, type);
add_linebreak = 3;
} else {
asprintf(&tmp, "%s[%s %s] ", usage_str, key, type);
}
free(usage_str); free(usage_str);
usage_str = tmp; usage_str = tmp;

View File

@ -13,16 +13,16 @@ void free_ini(void);
void cmdline_load(int argc, char *argv[]); void cmdline_load(int argc, char *argv[]);
/* for all cmdline_get_* key can be either "-key" or "-key/-longkey" */ /* for all cmdline_get_* key can be either "-key" or "-key/-longkey" */
char *cmdline_get_string(char *key, char *def); char *cmdline_get_string(char *key, char *def, char *description);
int cmdline_get_int(char *key, int def); int cmdline_get_int(char *key, int def, char *description);
double cmdline_get_double(char *key, double def); double cmdline_get_double(char *key, double def, char *description);
int cmdline_get_bool(char *key, int def); int cmdline_get_bool(char *key, int def, char *description);
char *cmdline_create_usage(void); char *cmdline_create_usage(void);
char *option_get_string(char *ini_section, char *ini_key, char *cmdline_key, char *def); char *option_get_string(char *ini_section, char *ini_key, char *cmdline_key, char *def, char *description);
int option_get_int(char *ini_section, char *ini_key, char *cmdline_key, int def); int option_get_int(char *ini_section, char *ini_key, char *cmdline_key, int def, char *description);
double option_get_double(char *ini_section, char *ini_key, char *cmdline_key, double def); double option_get_double(char *ini_section, char *ini_key, char *cmdline_key, double def, char *description);
int option_get_bool(char *ini_section, char *ini_key, char *cmdline_key, int def); int option_get_bool(char *ini_section, char *ini_key, char *cmdline_key, int def, char *description);
/* returns the next known section. /* returns the next known section.
* if section == NULL returns first section. * if section == NULL returns first section.