Skip to content

GNOME Wayland busy cursor persists ~15s after launch #59397

Description

@nitipit

Summary

On Fedora GNOME Wayland, launching Zed leaves the mouse cursor in GNOME's busy/loading state for about 15 seconds. The Zed window is visible and usable immediately; only the global cursor feedback remains busy until it times out.

The busy cursor appears everywhere, not just over the Zed window.

Environment

  • Zed: 1.6.3 stable.306, commit 601ecb3ee5c16940191818ee7f244837abf6983c
  • Install method: official per-user install under ~/.local/zed.app
    • CLI: ~/.local/bin/zed -> ~/.local/zed.app/bin/zed
    • App binary: ~/.local/zed.app/libexec/zed-editor
  • OS: Fedora release 44 (Forty Four)
  • GNOME Shell: 50.2
  • Session: Wayland
    • XDG_SESSION_TYPE=wayland
    • XDG_CURRENT_DESKTOP=GNOME
    • WAYLAND_DISPLAY=wayland-0

Reproduction

  1. Launch Zed from GNOME app launcher, or from terminal with zed.
  2. Zed window appears and is usable immediately.
  3. Mouse cursor stays in the GNOME loading/busy state globally for about 15 seconds.
  4. Cursor then returns to normal.

This happens even when launching from terminal, not only from the app launcher.

Expected behavior

The cursor should return to the normal pointer once the Zed window is visible/ready.

Actual behavior

The cursor remains in GNOME's busy/loading state globally for about 15 seconds, despite Zed being visible and usable.

Things tested

Desktop file StartupNotify

The installed desktop entry originally had:

StartupNotify=true
Exec=/home/user/.local/zed.app/bin/zed %U

I tested copied/local desktop entries with:

StartupNotify=false

and also patched the original local desktop entry to StartupNotify=false. The problem still occurs.

Debug launcher wrapper

A wrapper launcher with StartupNotify=false showed no startup notification env vars being passed:

DESKTOP_STARTUP_ID=
XDG_ACTIVATION_TOKEN=
GIO_LAUNCHED_DESKTOP_FILE=/home/user/.local/share/applications/dev.zed.Zed-debug-no-startupnotify.desktop
XDG_CURRENT_DESKTOP=GNOME
XDG_SESSION_TYPE=wayland

The cursor still remained busy for ~15 seconds.

CLI variants

  • zed: starts quickly; cursor still becomes busy globally for ~15 seconds.
  • zed --foreground: starts and renders first frame immediately.
  • zed --disable-gpu: not accepted by this CLI version:
error: unexpected argument '--disable-gpu' found

Relevant Zed logs

Startup appears fast; first frame is rendered immediately:

INFO  [zed] ========== starting zed version 1.6.3+stable.306.601ecb3ee5c16940191818ee7f244837abf6983c, sha 601ecb3 ==========
INFO  [gpui_wgpu::wgpu_context] Selected GPU adapter: "Intel(R) Graphics (LNL)" (Vulkan)
INFO  [workspace] Rendered first frame
INFO  [zed::zed] Using GPU: GpuSpecs { is_software_emulated: false, device_name: "Intel(R) Graphics (LNL)", driver_name: "Intel open-source Mesa driver", driver_info: "Mesa 26.0.8" }
ERROR [gpui_linux::linux::wayland::client] activation token received with no pending activation

Other related logs seen during startup:

INFO  [gpui_linux::linux::platform] activate is not implemented on Linux, ignoring the call

WAYLAND_DEBUG observations

With WAYLAND_DEBUG=1 zed --foreground, Zed sets the expected app id:

xdg_toplevel.set_app_id("dev.zed.Zed")

Then it requests activation tokens with serial 0 and activates the surface:

xdg_activation_token_v1.set_app_id("dev.zed.Zed")
xdg_activation_token_v1.set_serial(0, wl_seat)
xdg_activation_token_v1.set_surface(wl_surface#29)
xdg_activation_token_v1.commit()
xdg_activation_v1.activate("..._TIME0", wl_surface#29)

Given the log message activation token received with no pending activation, this may be related to Wayland activation/startup notification handling under GNOME.

Additional note

Because the busy cursor appears everywhere, this seems to be GNOME Shell launch feedback/activation timeout rather than Zed setting a cursor shape only over its own window.

Metadata

Metadata

Assignees

Labels

area:gpuiGPUI rendering framework supportfrequency:uncommonBugs that happen for a small subset of users, special configurations, rare circumstances, etcplatform:linux/waylandhappens only on Linux Waylandpriority:P3Papercuts, minor issues with a clear workaround, cosmetic bugsstate:needs reproNeeds reproduction steps and/or someone to reproduce

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions