diff --git a/sway/input/seat.c b/sway/input/seat.c index 82e0e7543..1a4ccd772 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -357,6 +357,14 @@ struct sway_seat *seat_create(const char *seat_name) { root_for_each_workspace(collect_focus_workspace_iter, seat); root_for_each_container(collect_focus_container_iter, seat); + if (!wl_list_empty(&server.input->seats)) { + // Since this is not the first seat, attempt to set initial focus + struct sway_seat *current_seat = input_manager_current_seat(); + struct sway_node *current_focus = + seat_get_focus_inactive(current_seat, &root->node); + seat_set_focus(seat, current_focus); + } + wl_signal_add(&root->events.new_node, &seat->new_node); seat->new_node.notify = handle_new_node;