Skip to content

Docker Desktop 4.x window invisible on Ubuntu/GNOME Wayland (GPU process crash) #1564

@spdrman

Description

@spdrman

Bug Report

Docker Desktop version: 4.69.0 (224084)
OS: Ubuntu 24.04 LTS (Noble)
Desktop: GNOME on Wayland (XDG_SESSION_TYPE=wayland)
GPU: NVIDIA RTX 4060 (proprietary driver not active for Wayland GL; Mesa fallback)


Description

After a fresh install of Docker Desktop on Ubuntu 24.04 with GNOME/Wayland, the application window never appears. The backend (com.docker.backend) and the Electron UI process both start successfully and remain running, but no window is visible on screen. The system tray icon is registered but clicking it has no effect.

Root Causes

Two separate issues combine to cause the invisible window:

1. GPU process crash (FATAL)

The Electron GPU process fails to launch and takes down the entire renderer:

GPU process launch failed: error_code=1002
GPU process isn't usable. Goodbye.

Log path: ~/.docker/desktop/log/host/Docker Desktop.stderr.log

This is triggered when the GPU sandbox cannot initialise — common on systems where the NVIDIA proprietary Wayland/GL stack is not fully configured.

2. Native Wayland surface not composited

Even when the GPU crash is suppressed, Docker Desktop hardcodes ozone-platform: 'wayland' in its window options. On affected systems the Wayland surface is created (confirmed via ~/.docker/desktop/log/host/electron-2026-04-20.log: [WINDOW] Open app://dd/new-license) but GNOME's Mutter compositor never renders it — the window exists but is invisible.

Forcing XWayland (--ozone-platform=x11) makes the window appear immediately via mutter-x11-frames.

Steps to Reproduce

  1. Install Docker Desktop 4.x on Ubuntu 24.04 with GNOME/Wayland session
  2. Start Docker Desktop (systemctl --user start docker-desktop)
  3. Observe: backend running, tray icon present, no window appears
  4. Check ~/.docker/desktop/log/host/Docker Desktop.stderr.log → GPU process crash

Workaround

Wrap the Docker Desktop Electron binary to inject --disable-gpu --no-sandbox --ozone-platform=x11.

Quick fix script (also shown below):

# 1. Back up the original binary
sudo mv "/opt/docker-desktop/Docker Desktop" "/opt/docker-desktop/Docker Desktop.real"

# 2. Create wrapper
sudo tee "/opt/docker-desktop/Docker Desktop" << 'WRAPPER'
#!/bin/bash
exec "/opt/docker-desktop/Docker Desktop.real" --disable-gpu --no-sandbox --ozone-platform=x11 "$@"
WRAPPER
sudo chmod +x "/opt/docker-desktop/Docker Desktop"

# 3. Add systemd environment overrides
mkdir -p ~/.config/systemd/user/docker-desktop.service.d
cat > ~/.config/systemd/user/docker-desktop.service.d/override.conf << 'CONF'
[Service]
Environment="ELECTRON_OZONE_PLATFORM_HINT=x11"
Environment="GDK_BACKEND=x11"
Environment="LIBGL_ALWAYS_SOFTWARE=1"
CONF

# 4. Reload and restart
systemctl --user daemon-reload
systemctl --user restart docker-desktop

Expected Behaviour

Docker Desktop window appears on launch on Ubuntu/GNOME Wayland without manual patching.

Notes

  • The --disable-gpu flag is required to prevent the fatal GPU process crash; without it the renderer exits before the window can be shown
  • The --ozone-platform=x11 flag is required to force XWayland; even with ELECTRON_OZONE_PLATFORM_HINT=x11 set in the environment, the app's internal windowOptions override takes precedence
  • The --no-sandbox flag is needed because the Chromium sandbox conflicts with the systemd scope unit that already exists for the process (UnitExists D-Bus error)
  • The window being targeted is app://dd/new-license (first-run licence dialog) — this is the first window opened and the one that fails to render

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions