diff --git a/include/sway/idle.h b/include/sway/idle.h index 154e48f20..7b9228fc2 100644 --- a/include/sway/idle.h +++ b/include/sway/idle.h @@ -2,5 +2,6 @@ #define _SWAY_IDLE_H #include +void idle_setup_seat(struct sway_server *server, struct sway_seat *seat); bool idle_init(struct sway_server *server); #endif diff --git a/sway/idle.c b/sway/idle.c index 5f36361eb..b5fbf248e 100644 --- a/sway/idle.c +++ b/sway/idle.c @@ -68,12 +68,28 @@ static const struct wlr_idle_timeout_listener lock_listener = { .resumed = handle_nop, }; +void idle_setup_seat(struct sway_server *server, struct sway_seat *seat) { + if (server->idle == NULL) { + return; + } + if (config != NULL) { + wlr_log(L_DEBUG, "Setup idle timer %d", config->idle_timeout); + wlr_idle_listen(server->idle, config->idle_timeout * 1000, &idle_listener, seat->wlr_seat); + wlr_log(L_DEBUG, "Setup lock timer %d", config->lock_timeout); + wlr_idle_listen(server->idle, config->lock_timeout * 1000, &lock_listener, seat->wlr_seat); + } else { + wlr_log(L_ERROR, "Cant setup idle timers for seat since no config is available!"); + } +} + bool idle_init(struct sway_server *server) { wlr_log(L_DEBUG, "Initializing idle"); server->idle = wlr_idle_create(server->wl_display); - wlr_log(L_DEBUG, "Setup idle timer %d", config->idle_timeout); - wlr_idle_listen(server->idle, config->idle_timeout * 1000, &idle_listener); - wlr_log(L_DEBUG, "Setup lock timer %d", config->lock_timeout); - wlr_idle_listen(server->idle, config->lock_timeout * 1000, &lock_listener); + struct sway_seat *seat = NULL; + wl_list_for_each(seat, &input_manager->seats, link) { + idle_setup_seat(server, seat); + } + return true; } + diff --git a/sway/input/seat.c b/sway/input/seat.c index 8bba7d8fc..694ae0248 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -19,6 +19,7 @@ #include "sway/tree/container.h" #include "sway/tree/view.h" #include "sway/tree/workspace.h" +#include "sway/idle.h" #include "log.h" static void seat_device_destroy(struct sway_seat_device *seat_device) { @@ -257,6 +258,8 @@ struct sway_seat *seat_create(struct sway_input_manager *input, wl_list_insert(&input->seats, &seat->link); + idle_setup_seat(input->server, seat); + return seat; }