Keyboard focus unavailable for an above_lock = 2 layer surface

I am using Hyprland with hyprlock and a GTK4 layer-shell application called wleave.

The application is launched while the session is locked:

hl.bind(mod .. "Escape", hl.dsp.exec_cmd("wleave"), {
    locked = true,
})

Its layer rule is:

hl.layer_rule({
    match = { namespace = "wleave" },
    blur = true,
    dim_around = true,
    above_lock = 2,
})

On the application side, the layer surface is configured as an overlay and requests exclusive keyboard input:

window.init_layer_shell();
window.set_layer(gtk4_layer_shell::Layer::Overlay);
window.set_namespace(Some("wleave"));
window.set_keyboard_mode(KeyboardMode::Exclusive);

When wleave is opened above hyprlock:

  • the window is displayed correctly;
  • mouse interactions work;
  • keyboard input does not work;
  • arrow keys, Enter and application shortcuts are still unavailable.

The same keyboard navigation works correctly when wleave is launched outside the lock screen.

It looks like hyprlock keeps keyboard focus through its session-lock surface, even though the wleave layer surface uses above_lock = 2 and requests KeyboardMode::Exclusive.

Is this the intended behavior of above_lock = 2? Does “interactive” only include pointer and touch input, or should keyboard focus also be transferred to the layer surface?