-
Notifications
You must be signed in to change notification settings - Fork 53
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=1
to verify the call toget_layer_surface