[DMenu] Document the -display-columns and -display-column-separator option.

This commit is contained in:
Dave Davenport 2022-01-31 12:56:18 +01:00
parent 36d4aee490
commit 61aa11ba12
3 changed files with 38 additions and 7 deletions

View file

@ -274,6 +274,21 @@ Position \fBrofi\fP over the window with the given X11 window ID.
.PP .PP
Set ellipsize mode to start. So, the end of the string is visible. Set ellipsize mode to start. So, the end of the string is visible.
.PP
\fB\fC\-display\-columns\fR
.PP
A comma seperated list of columns to show.
.PP
\fB\fC\-display\-column\-separator\fR
.PP
The column separator. This is a regex.
.PP
\fIdefault\fP: '\\t'
.SH RETURN VALUE .SH RETURN VALUE
.RS .RS
.IP \(bu 2 .IP \(bu 2

View file

@ -177,6 +177,16 @@ Position **rofi** over the window with the given X11 window ID.
Set ellipsize mode to start. So, the end of the string is visible. Set ellipsize mode to start. So, the end of the string is visible.
`-display-columns`
A comma seperated list of columns to show.
`-display-column-separator`
The column separator. This is a regex.
*default*: '\t'
## RETURN VALUE ## RETURN VALUE

View file

@ -239,21 +239,23 @@ static gchar *dmenu_format_output_string(const DmenuModePrivateData *pd,
for (; splitted && splitted[ns]; ns++) { for (; splitted && splitted[ns]; ns++) {
; ;
} }
GString *str_retv = g_string_new("");
for (uint32_t i = 0; pd->columns && pd->columns[i]; i++) { for (uint32_t i = 0; pd->columns && pd->columns[i]; i++) {
unsigned int index = unsigned int index =
(unsigned int)g_ascii_strtoull(pd->columns[i], NULL, 10); (unsigned int)g_ascii_strtoull(pd->columns[i], NULL, 10);
if (index < ns && index > 0) { if (index <= ns && index > 0) {
if (retv == NULL) { if (index == 1) {
retv = g_strdup(splitted[index - 1]); g_string_append(str_retv, splitted[index - 1]);
} else { } else {
gchar *t = g_strjoin("\t", retv, splitted[index - 1], NULL); g_string_append_c(str_retv, '\t');
g_free(retv); g_string_append(str_retv, splitted[index - 1]);
retv = t;
} }
} }
} }
g_strfreev(splitted); g_strfreev(splitted);
return retv ? retv : g_strdup(""); retv = str_retv->str;
g_string_free(str_retv, FALSE);
return retv;
} }
static inline unsigned int get_index(unsigned int length, int index) { static inline unsigned int get_index(unsigned int length, int index) {
@ -818,4 +820,8 @@ void print_dmenu_options(void) {
print_help_msg("-w", "windowid", "Position over window with X11 windowid.", print_help_msg("-w", "windowid", "Position over window with X11 windowid.",
NULL, is_term); NULL, is_term);
print_help_msg("-keep-right", "", "Set ellipsize to end.", NULL, is_term); print_help_msg("-keep-right", "", "Set ellipsize to end.", NULL, is_term);
print_help_msg("--display-columns", "", "Only show the selected columns",
NULL, is_term);
print_help_msg("--display-column-separator", "\t",
"Separator to use to split columns (regex)", NULL, is_term);
} }