From 2f3c6cccf5d6b2d6ffd3cee62e7b624dc80dc6e6 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Wed, 11 Dec 2019 11:00:39 -0500 Subject: Add seat idle_{inhibit,wake} This adds seat configuration options which can be used to configure what events affect the idle behavior of sway. An example use-case is mobile devices: you would remove touch from the list of idle_wake events. This allows the phone to stay on while you're actively using it, but doesn't wake from idle on touch events while it's sleeping in your pocket. --- include/sway/commands.h | 2 ++ include/sway/config.h | 10 ++++++++++ include/sway/input/seat.h | 6 ++++++ 3 files changed, 18 insertions(+) (limited to 'include') diff --git a/include/sway/commands.h b/include/sway/commands.h index 5f249980..982125c1 100644 --- a/include/sway/commands.h +++ b/include/sway/commands.h @@ -285,6 +285,8 @@ sway_cmd seat_cmd_attach; sway_cmd seat_cmd_cursor; sway_cmd seat_cmd_fallback; sway_cmd seat_cmd_hide_cursor; +sway_cmd seat_cmd_idle_inhibit; +sway_cmd seat_cmd_idle_wake; sway_cmd seat_cmd_keyboard_grouping; sway_cmd seat_cmd_pointer_constraint; sway_cmd seat_cmd_xcursor_theme; diff --git a/include/sway/config.h b/include/sway/config.h index 9a00ccb5..3e3d2725 100644 --- a/include/sway/config.h +++ b/include/sway/config.h @@ -182,6 +182,15 @@ enum seat_keyboard_grouping { KEYBOARD_GROUP_KEYMAP }; +enum sway_input_idle_source { + IDLE_SOURCE_KEYBOARD = 1 << 0, + IDLE_SOURCE_POINTER = 1 << 1, + IDLE_SOURCE_TOUCH = 1 << 2, + IDLE_SOURCE_TABLET_PAD = 1 << 3, + IDLE_SOURCE_TABLET_TOOL = 1 << 4, + IDLE_SOURCE_SWITCH = 1 << 5, +}; + /** * Options for multiseat and other misc device configurations */ @@ -192,6 +201,7 @@ struct seat_config { int hide_cursor_timeout; enum seat_config_allow_constrain allow_constrain; enum seat_keyboard_grouping keyboard_grouping; + uint32_t idle_inhibit_sources, idle_wake_sources; struct { char *name; int size; diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h index 32795b03..9c3028c5 100644 --- a/include/sway/input/seat.h +++ b/include/sway/input/seat.h @@ -4,6 +4,7 @@ #include #include #include +#include "sway/config.h" #include "sway/input/input-manager.h" struct sway_seat; @@ -80,6 +81,8 @@ struct sway_seat { uint32_t last_button_serial; + uint32_t idle_inhibit_sources, idle_wake_sources; + list_t *deferred_bindings; // struct sway_binding struct wl_listener focus_destroy; @@ -196,6 +199,9 @@ struct seat_config *seat_get_config(struct sway_seat *seat); struct seat_config *seat_get_config_by_name(const char *name); +void seat_idle_notify_activity(struct sway_seat *seat, + enum sway_input_idle_source source); + bool seat_is_input_allowed(struct sway_seat *seat, struct wlr_surface *surface); void drag_icon_update_position(struct sway_drag_icon *icon); -- cgit v1.2.3