diff options
author | Mikkel Oscar Lyderik <[email protected]> | 2016-01-05 02:20:20 +0100 |
---|---|---|
committer | Mikkel Oscar Lyderik <[email protected]> | 2016-01-05 02:25:56 +0100 |
commit | c20c63b677c03b17441f0d135b5325e23d65f38d (patch) | |
tree | e16dde2339d7cb1079a83842c53324ac91fed600 /sway/handlers.c | |
parent | 7727c9efbc105269befe06a5bb12d2019c52515e (diff) |
Send IPC modifier event on bar_modifier up/down
Detects when a bar modifier key is pressed/released and sends a modifier
IPC event to any listeners (usually swaybars).
This way a swaybar can listen on the modifier event and hide/show the
bar accordingly (not implemented yet)
The modifier event looks like this:
{
"change": "pressed", // or released
"modifier": "Mod4"
}
Diffstat (limited to 'sway/handlers.c')
-rw-r--r-- | sway/handlers.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/sway/handlers.c b/sway/handlers.c index 5e523468..4cbec0ab 100644 --- a/sway/handlers.c +++ b/sway/handlers.c @@ -20,6 +20,7 @@ #include "resize.h" #include "extensions.h" #include "criteria.h" +#include "ipc-server.h" // Event should be sent to client #define EVENT_PASSTHROUGH false @@ -392,13 +393,15 @@ static bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifier struct bar_config *bar; for (i = 0; i < config->bars->length; ++i) { bar = config->bars->items[i]; - switch (modifier_state_changed(modifiers->mods, bar->modifier)) { - case MOD_STATE_PRESSED: - sway_log(L_INFO, "pressed!!!"); - break; - case MOD_STATE_RELEASED: - sway_log(L_INFO, "released!!!"); - break; + if (strcmp(bar->mode, "hide") == 0 && strcmp(bar->hidden_state, "hide") == 0) { + switch (modifier_state_changed(modifiers->mods, bar->modifier)) { + case MOD_STATE_PRESSED: + ipc_event_modifier(bar->modifier, "pressed"); + break; + case MOD_STATE_RELEASED: + ipc_event_modifier(bar->modifier, "released"); + break; + } } } // update modifiers state |