implement input-inhibitor protocol
This commit is contained in:
parent
ae614ee512
commit
a95338ca43
2 changed files with 9 additions and 3 deletions
|
@ -17,6 +17,7 @@ dwl is not meant to provide every feature under the sun. Instead, like dwm, it s
|
|||
- Idle-inhibit protocol which lets applications such as mpv disable idle monitoring
|
||||
- Provide information to external status bars via stdout/stdin
|
||||
- Urgency hints via xdg-activate protocol
|
||||
- Support screen lockers via input-inhibitor protocol
|
||||
- Various Wayland protocols
|
||||
- XWayland support as provided by wlroots (can be enabled in `config.mk`)
|
||||
- Zero flickering - Wayland users naturally expect that "every frame is perfect"
|
||||
|
@ -26,7 +27,6 @@ dwl is not meant to provide every feature under the sun. Instead, like dwm, it s
|
|||
Features under consideration (possibly as patches) are:
|
||||
|
||||
- Protocols made trivial by wlroots
|
||||
- Implement the input-inhibitor protocol to support screen lockers (see https://github.com/djpohly/dwl/pull/132)
|
||||
- Implement the text-input and input-method protocols to support IME once ibus implements input-method v2 (see https://github.com/ibus/ibus/pull/2256 and https://github.com/djpohly/dwl/pull/12)
|
||||
|
||||
Feature *non-goals* for the main codebase include:
|
||||
|
|
10
dwl.c
10
dwl.c
|
@ -22,6 +22,7 @@
|
|||
#include <wlr/types/wlr_export_dmabuf_v1.h>
|
||||
#include <wlr/types/wlr_gamma_control_v1.h>
|
||||
#include <wlr/types/wlr_input_device.h>
|
||||
#include <wlr/types/wlr_input_inhibitor.h>
|
||||
#include <wlr/types/wlr_idle.h>
|
||||
#include <wlr/types/wlr_idle_inhibit_v1.h>
|
||||
#include <wlr/types/wlr_layer_shell_v1.h>
|
||||
|
@ -311,6 +312,7 @@ static struct wl_list clients; /* tiling order */
|
|||
static struct wl_list fstack; /* focus order */
|
||||
static struct wlr_idle *idle;
|
||||
static struct wlr_idle_inhibit_manager_v1 *idle_inhibit_mgr;
|
||||
static struct wlr_input_inhibit_manager *input_inhibit_mgr;
|
||||
static struct wlr_layer_shell_v1 *layer_shell;
|
||||
static struct wlr_output_manager_v1 *output_mgr;
|
||||
static struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard_mgr;
|
||||
|
@ -1309,8 +1311,10 @@ keypress(struct wl_listener *listener, void *data)
|
|||
|
||||
wlr_idle_notify_activity(idle, seat);
|
||||
|
||||
/* On _press_, attempt to process a compositor keybinding. */
|
||||
if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED)
|
||||
/* On _press_ if there is no active screen locker,
|
||||
* attempt to process a compositor keybinding. */
|
||||
if (!input_inhibit_mgr->active_inhibitor
|
||||
&& event->state == WL_KEYBOARD_KEY_STATE_PRESSED)
|
||||
for (i = 0; i < nsyms; i++)
|
||||
handled = keybinding(mods, syms[i]) || handled;
|
||||
|
||||
|
@ -1996,6 +2000,8 @@ setup(void)
|
|||
xdg_shell = wlr_xdg_shell_create(dpy);
|
||||
wl_signal_add(&xdg_shell->events.new_surface, &new_xdg_surface);
|
||||
|
||||
input_inhibit_mgr = wlr_input_inhibit_manager_create(dpy);
|
||||
|
||||
/* Use decoration protocols to negotiate server-side decorations */
|
||||
wlr_server_decoration_manager_set_default_mode(
|
||||
wlr_server_decoration_manager_create(dpy),
|
||||
|
|
Loading…
Reference in a new issue