Add get_bindings IPC interface

The new get_bindings IPC interface (IPC_GET_BINDINGS) allows swaymsg (and
other IPC clients) to interrogate sway's input bindings for all configured
binding modes.

The output of get_bindings is a JSON object mapping each configured binding
mode (e.g. "default", "resize", etc.) to an array of binding objects. The
binding JSON objects are of the same form as those in IPC_EVENT_BINDING.

N.B. a big chunk of code from ipc_event_binding() is moved to a new
ipc_json_describe_binding() function which services both the new
IPC_GET_BINDINGS as well as the existing IPC_EVENT_BINDING commands.

Signed-off-by: Peter Grayson <pete@jpgrayson.net>
This commit is contained in:
Peter Grayson 2019-03-08 12:43:04 -05:00
parent b7fe5097e9
commit 331bcac3ea
10 changed files with 124 additions and 62 deletions

View file

@ -15,6 +15,7 @@ _swaymsg()
'get_bar_config'
'get_version'
'get_binding_modes'
'get_bindings'
'get_config'
'send_tick'
)

View file

@ -17,6 +17,7 @@ complete -c swaymsg -s t -l type -fra 'get_marks' --description "Get a JSON-enco
complete -c swaymsg -s t -l type -fra 'get_bar_config' --description "Get a JSON-encoded configuration for swaybar."
complete -c swaymsg -s t -l type -fra 'get_version' --description "Get JSON-encoded version information for the running instance of sway."
complete -c swaymsg -s t -l type -fra 'get_binding_modes' --description "Gets a JSON-encoded list of currently configured binding modes."
complete -c swaymsg -s t -l type -fra 'get_bindings' --description "Gets a JSON-encoded object mapping binding modes to their keyboard and mouse bindings."
complete -c swaymsg -s t -l type -fra 'get_config' --description "Gets a JSON-encoded copy of the current configuration."
complete -c swaymsg -s t -l type -fra 'get_seats' --description "Gets a JSON-encoded list of all seats, its properties and all assigned devices."
complete -c swaymsg -s t -l type -fra 'send_tick' --description "Sends a tick event to all subscribed clients."

View file

@ -23,6 +23,7 @@ types=(
'get_bar_config'
'get_version'
'get_binding_modes'
'get_bindings'
'get_config'
'send_tick'
)