-
Notifications
You must be signed in to change notification settings - Fork 65
Description
Software used
Alpine Linux edge 3.23.0_alpha20250612 on Linux 6.12.40-1-lts
riverwm 0.3.11
tofi 0.9.1
Description of the bug
When leaving the output option unset in the config file, tofi should appear on the output that "the compositor decides", but in my setup, the chosen output is completely unpredictable (doesn't seem to depend on cursor position, focused window or focused tag).
When using WAYLAND_DEBUG=1 t seems that get_layer_surface is called with NULL for the "dummy" namespace, but then with a random(?) output for the "launcher" namespace.
STDERR output
With the config set to
output = ""
I ran this command multiple times, while using sleep time to move the cursor and focus between the outputs (which had no predictable effect):
sleep 1 && WAYLAND_DEBUG=1 tofi-drun 2>&1 | grep get_layer_surface
[ 591042.565] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#16, wl_surface#3, nil, 0, "dummy")
[ 591045.600] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#21, wl_surface#20, wl_output#12, 3, "launcher")
[ 606355.035] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#16, wl_surface#3, nil, 0, "dummy")
[ 606358.144] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#21, wl_surface#20, wl_output#12, 3, "launcher")
[ 636045.274] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#16, wl_surface#3, nil, 0, "dummy")
[ 636048.655] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#21, wl_surface#20, wl_output#12, 3, "launcher")
[ 804879.427] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#16, wl_surface#3, nil, 0, "dummy")
[ 804882.752] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#21, wl_surface#20, wl_output#12, 3, "launcher")
After many attempts, including disconnecting and reconnecting the external monitor, I managed to have it display on the other output:
[1811622.926] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#15, wl_surface#3, nil, 0, "dummy")
[1811626.040] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#20, wl_surface#19, wl_output#11, 3, "launcher")
When output is set to a specific one, it works properly:
[2092025.828] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#16, wl_surface#3, wl_output#11, 0, "dummy")
[2092029.678] {Default Queue} -> zwlr_layer_shell_v1#8.get_layer_surface(new id zwlr_layer_surface_v1#21, wl_surface#20, wl_output#11, 3, "launcher")
Steps to reproduce
- have multiple outputs
- do not specify any output in tofi's config file
- launch tofi with a keyboard shortcut
- (optionally) execute with
WAYLAND_DEBUG=1to verify the call toget_layer_surface