mirror of
https://github.com/swaywm/sway.git
synced 2025-11-06 13:29:50 -05:00
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"
}
This commit is contained in:
parent
7727c9efbc
commit
c20c63b677
5 changed files with 57 additions and 8 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue