mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-18 13:54:36 -05:00
[Keyb] Add a -list-keybindings command.
This commit is contained in:
parent
0b72ff2a74
commit
5ae8fa5a3f
5 changed files with 57 additions and 8 deletions
|
@ -220,6 +220,13 @@ Dump the current active theme, in rasi format, to stdout and exit.
|
|||
.PP
|
||||
Try to parse the file and return 0 when successful, non-zero when failed.
|
||||
|
||||
.PP
|
||||
\fB\fC-list-keybindings\fR
|
||||
|
||||
.PP
|
||||
List all known keybindings without trying to parse them. This can be used to
|
||||
look for duplicate bindings.
|
||||
|
||||
.PP
|
||||
\fB\fC-threads\fR \fInum\fP
|
||||
|
||||
|
|
|
@ -143,6 +143,11 @@ Dump the current active theme, in rasi format, to stdout and exit.
|
|||
|
||||
Try to parse the file and return 0 when successful, non-zero when failed.
|
||||
|
||||
`-list-keybindings`
|
||||
|
||||
List all known keybindings without trying to parse them. This can be used to
|
||||
look for duplicate bindings.
|
||||
|
||||
`-threads` *num*
|
||||
|
||||
Specify the number of threads **rofi** should use:
|
||||
|
|
|
@ -186,6 +186,7 @@ gboolean parse_keys_abe(NkBindings *bindings);
|
|||
*/
|
||||
void setup_abe(void);
|
||||
|
||||
void abe_list_all_bindings(gboolean is_term);
|
||||
/**
|
||||
* @param name Don't have the name.
|
||||
*
|
||||
|
|
|
@ -24,11 +24,11 @@
|
|||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
#include "rofi.h"
|
||||
#include "xrmoptions.h"
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "nkutils-bindings.h"
|
||||
#include "rofi.h"
|
||||
#include "xrmoptions.h"
|
||||
|
||||
typedef struct {
|
||||
guint id;
|
||||
|
@ -372,6 +372,24 @@ static const gchar *mouse_default_bindings[] = {
|
|||
[MOUSE_DCLICK_UP] = "!MouseDPrimary",
|
||||
};
|
||||
|
||||
void abe_list_all_bindings(gboolean is_term ) {
|
||||
|
||||
int length = 0;
|
||||
for (gsize i = 0; i < G_N_ELEMENTS(rofi_bindings); ++i) {
|
||||
ActionBindingEntry *b = &rofi_bindings[i];
|
||||
int sl = strlen(b->name);
|
||||
length = MAX(length, sl);
|
||||
}
|
||||
for (gsize i = 0; i < G_N_ELEMENTS(rofi_bindings); ++i) {
|
||||
ActionBindingEntry *b = &rofi_bindings[i];
|
||||
if (is_term) {
|
||||
printf("%s%*s%s - %s\n", color_bold,length, b->name, color_reset,b->binding);
|
||||
} else {
|
||||
printf("%*s - %s\n", length, b->name, b->binding);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setup_abe(void) {
|
||||
for (gsize i = 0; i < G_N_ELEMENTS(rofi_bindings); ++i) {
|
||||
ActionBindingEntry *b = &rofi_bindings[i];
|
||||
|
@ -421,12 +439,22 @@ gboolean parse_keys_abe(NkBindings *bindings) {
|
|||
if (!nk_bindings_add_binding(bindings, b->scope, entry,
|
||||
binding_check_action, binding_trigger_action,
|
||||
GUINT_TO_POINTER(b->id), NULL, &error)) {
|
||||
if ( error->code == NK_BINDINGS_ERROR_ALREADY_REGISTERED && error->domain == NK_BINDINGS_ERROR){
|
||||
char *str = g_markup_printf_escaped(
|
||||
"Failed to set binding <i>%s</i> for: <i>%s (%s)</i>:\n\t<span "
|
||||
"size=\"smaller\" style=\"italic\">Binding `%s` is already bound.\n"
|
||||
"\tExecute <b>rofi -list-keybindings</b> to get the current list of configured bindings.</span>\n",
|
||||
b->binding, b->comment, b->name, entry);
|
||||
g_string_append(error_msg, str);
|
||||
g_free(str);
|
||||
} else {
|
||||
char *str = g_markup_printf_escaped(
|
||||
"Failed to set binding <i>%s</i> for: <i>%s (%s)</i>:\n\t<span "
|
||||
"size=\"smaller\" style=\"italic\">%s</span>\n",
|
||||
b->binding, b->comment, b->name, error->message);
|
||||
g_string_append(error_msg, str);
|
||||
g_free(str);
|
||||
}
|
||||
g_clear_error(&error);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -327,6 +327,9 @@ static void print_main_application_options(int is_term) {
|
|||
print_help_msg("-dump-theme", "",
|
||||
"Dump the current theme in rasi format and exit.", NULL,
|
||||
is_term);
|
||||
print_help_msg("-list-keybindings", "",
|
||||
"Print a list of current keybindings and exit.", NULL,
|
||||
is_term);
|
||||
}
|
||||
static void help(G_GNUC_UNUSED int argc, char **argv) {
|
||||
int is_term = isatty(fileno(stdout));
|
||||
|
@ -1094,6 +1097,11 @@ int main(int argc, char *argv[]) {
|
|||
cleanup();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
if (find_arg("-list-keybindings") >= 0) {
|
||||
int is_term = isatty(fileno(stdout));
|
||||
abe_list_all_bindings(is_term);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
unsigned int interval = 1;
|
||||
if (find_arg_uint("-record-screenshots", &interval)) {
|
||||
|
|
Loading…
Reference in a new issue