DioxusLabs / DioxusLabs/dioxus
[desktop] Window is created but never mapped on Linux/X11 — app runs, webview starts, nothing appears
- Dominant language
- Rust
- Stars
- 39.1k
- Forks
- 1.9k
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 4
Description
**Problem**
On Linux/X11, a desktop app builds and starts fine but **no window ever appears**. The process runs, the webview initialises (both `WebKitNetworkProcess` and `WebKitWebProcess` spawn as children), and an 800x600 X11 window is created — but it is never mapped, so nothing is shown:
```
$ xdotool search --pid $PID
win 60817409: Width: 10 Height: 10 Map State: IsUnMapped
win 60817411: Width: 800 Height: 600 Map State: IsUnMapped
$ wmctrl -l | grep -c dxprobe
0
```
There is **no output at all**, including with `RUST_LOG=debug` (0 bytes on stdout and stderr). `dx serve --platform linux` reports `Build completed successfully, launching app!` and then nothing happens.
This looks distinct from the existing blank-window reports (#3453, #5191): in those the window *is* mapped and displayed, it just renders black/white. Here the window is never mapped at all, so there is nothing on screen to be blank.
**Steps To Reproduce**
- `Cargo.toml`:
```toml
[dependencies]
dioxus = { version = "=0.7.9", features = ["desktop"] }
```
(pinned to `=0.7.9` because `dx` 0.7.9 refuses `0.7.10` with *"dx and dioxus versions are incompatible"*)
- `src/main.rs`:
```rust
use dioxus::prelude::*;
fn main() {
dioxus::launch(app);
}
fn app() -> Element {
rsx! { h1 { "hello" } }
}
```
- `dx build --platform linux`, then run `target/dx//debug/linux/app/` — no window.
- `dx serve --platform linux` — same, no window.
**Expected behavior**
A window showing "hello".
**What I ruled out**
- **Not the display or session.** `xclock` launched from the same shell maps immediately and is managed by the WM, so `DISPLAY`/`XAUTHORITY` are fine from that context.
- **Not the known accelerated-surface issues.** Tried `WEBKIT_DISABLE_DMABUF_RENDERER=1` (the workaround in #3453), `WEBKIT_DISABLE_COMPOSITING_MODE=1`, and both together — no change in any case.
- **Not a mapping race.** Still `IsUnMapped` after 25s, and forcing it with `xdotool windowmap ` does not stick — it stays unmapped.
- **Not the build path.** Identical from the `dx build` output binary and from `dx serve`.
- **Not app code.** Reduced to the hello-world above; same result.
**Environment:**
- Dioxus version: 0.7.9 (`dx` 0.7.9, `bfcc111`)
- Rust version: 1.97.1
- OS info: Ubuntu 26.04 LTS, kernel 7.0.0-28-generic, X11 + XFCE
- App platform: desktop
- Graphics: Intel CometLake-U GT2 [UHD Graphics], `i915`
- webkit2gtk: 2.52.3 (`libwebkit2gtk-4.1-dev`)
Happy to run any diagnostic that would help narrow this down — the reproducer above is the whole thing.
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the issue with the minimal app in src/main.rs and the pinned dependency in Cargo.toml, first using dx serve --platform linux and then the built binary. Inspect the Linux/X11 desktop launch path and verify the window’s map state; done means the hello-world app opens an 800x600 window showing "hello" under the stated environment.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, rust
- Domain
- desktop, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100