Display i3-nagbar when commands lead to an error
e.g. pressing Mod1+x when having the following in your configfile: bindsym Mod1+x some invalid command will lead to an i3-nagbar instance popping up, offering you to view the error log (which will contain parser errors from this commit on).
This commit is contained in:
@ -77,58 +77,6 @@ bool event_is_ignored(const int sequence, const int response_type) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* There was a key press. We compare this key code with our bindings table and pass
|
||||
* the bound action to parse_command().
|
||||
*
|
||||
*/
|
||||
static void handle_key_press(xcb_key_press_event_t *event) {
|
||||
|
||||
last_timestamp = event->time;
|
||||
|
||||
DLOG("Keypress %d, state raw = %d\n", event->detail, event->state);
|
||||
|
||||
/* Remove the numlock bit, all other bits are modifiers we can bind to */
|
||||
uint16_t state_filtered = event->state & ~(xcb_numlock_mask | XCB_MOD_MASK_LOCK);
|
||||
DLOG("(removed numlock, state = %d)\n", state_filtered);
|
||||
/* Only use the lower 8 bits of the state (modifier masks) so that mouse
|
||||
* button masks are filtered out */
|
||||
state_filtered &= 0xFF;
|
||||
DLOG("(removed upper 8 bits, state = %d)\n", state_filtered);
|
||||
|
||||
if (xkb_current_group == XkbGroup2Index)
|
||||
state_filtered |= BIND_MODE_SWITCH;
|
||||
|
||||
DLOG("(checked mode_switch, state %d)\n", state_filtered);
|
||||
|
||||
/* Find the binding */
|
||||
Binding *bind = get_binding(state_filtered, event->detail);
|
||||
|
||||
/* No match? Then the user has Mode_switch enabled but does not have a
|
||||
* specific keybinding. Fall back to the default keybindings (without
|
||||
* Mode_switch). Makes it much more convenient for users of a hybrid
|
||||
* layout (like us, ru). */
|
||||
if (bind == NULL) {
|
||||
state_filtered &= ~(BIND_MODE_SWITCH);
|
||||
DLOG("no match, new state_filtered = %d\n", state_filtered);
|
||||
if ((bind = get_binding(state_filtered, event->detail)) == NULL) {
|
||||
ELOG("Could not lookup key binding (modifiers %d, keycode %d)\n",
|
||||
state_filtered, event->detail);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
char *command_copy = sstrdup(bind->command);
|
||||
struct CommandResult *command_output = parse_command(command_copy);
|
||||
free(command_copy);
|
||||
|
||||
if (command_output->needs_tree_render)
|
||||
tree_render();
|
||||
|
||||
yajl_gen_free(command_output->json_gen);
|
||||
}
|
||||
|
||||
/*
|
||||
* Called with coordinates of an enter_notify event or motion_notify event
|
||||
* to check if the user crossed virtual screen boundaries and adjust the
|
||||
|
Reference in New Issue
Block a user