warpdotdev / Warp

Warp is a modern, Rust-based terminal with AI built in so you and your team can build great software, faster.
https://warp.dev
Other
21.53k stars 377 forks source link

Warp won't run with Wayland/Sway on Arch #4219

Open Areskiko opened 9 months ago

Areskiko commented 9 months ago

Discord username (optional)

No response

Describe the bug

Warp won't start when running it using sway, it immediately crashes complaining that neither WAYLAND_DISPLAY nor DISPLAY is set.

To reproduce

Installing newest version from the download page

$ sudo pacman -U warp-terminal-v0.2024.02.20.08.01.stable_01-1-x86_64.pkg.tar.zst

Running warp

warp-terminal

Expected behavior

Expected warp to start without issue

Screenshots

stdout is a tty true, in CI false.  using logfile: false
18:00:04 [INFO] Spawning terminal server process...
thread 'main' panicked at ui/src/windowing/winit/app.rs:118:14:
should be able to create event loop: Os(OsError { line: 776, file: "/home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.29.7/src/platform_impl/linux/mod.rs", error: Misc("neither WAYLAND_DISPLAY nor DISPLAY is set.") })
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
18:00:04 [INFO] Received empty message; assuming the connection has been closed.

Operating system

Linux

Operating system and version

Arch 6.7.3-arch1-1

Shell Version

zsh 5.9 (x86_64-pc-linux-gnu)

Current Warp version

v0.2024.02.20.08.01.stable_01-1

Regression

No, this bug or issue has existed throughout my experience using Warp

Recent working Warp date

No response

Additional context

XWayland is disabled

Does this block you from using Warp daily?

Yes, this issue prevents me from using Warp daily.

Is this a Warp specific issue? (i.e. does it happen in Terminal, iTerm, Kitty, etc.)

Yes, this I confirmed this only happens in Warp, not other terminals.

Warp Internal (ignore): linear-label:b9d78064-c89e-4973-b153-5178a31ee54e

None

cmprmsd commented 9 months ago

Same here, but with xWayland support:

18:30:24 [INFO] Received channel versions from Warp server: dev: ChannelVersion { version_info: VersionInfo { version: "v0.2024.02.22.08.02.dev_00", update_by: None, soft_cutoff: Some("v0.2023.05.12.08.03.dev_00") }, overrides: [] }; preview: ChannelVersion { version_info: VersionInfo { version: "v0.2024.02.22.08.02.preview_00", update_by: None, soft_cutoff: None }, overrides: [] }; canary: ChannelVersion { version_info: VersionInfo { version: "v0.2022.09.29.08.08.canary_00", update_by: None, soft_cutoff: None }, overrides: [] }; beta: ChannelVersion { version_info: VersionInfo { version: "v0.2024.02.20.08.02.beta_00", update_by: None, soft_cutoff: None }, overrides: [] }; stable: ChannelVersion { version_info: VersionInfo { version: "v0.2024.02.13.08.02.stable_00", update_by: None, soft_cutoff: Some("v0.2023.12.19.08.02.stable_00") }, overrides: [VersionOverride { predicate: TargetOS(Linux), version_info: VersionInfo { version: "v0.2024.02.20.08.01.stable_01", update_by: None, soft_cutoff: None } }] }
18:30:24 [INFO] Enabled wgpu backends: Backends(VULKAN | GL | METAL | DX12 | DX11 | BROWSER_WEBGPU)
18:30:24 [INFO] Available wgpu adapters:
18:30:24 [INFO] DiscreteGpu: NVIDIA GeForce RTX 3080
18:30:24 [INFO]     Driver: NVIDIA (545.29.06)
18:30:24 [INFO] Other: zink Vulkan 1.3(NVIDIA GeForce RTX 3080 (NVIDIA_PROPRIETARY))
18:30:24 [INFO]     Driver: Unknown
18:30:24 [INFO] Using DiscreteGpu (NVIDIA GeForce RTX 3080) for rendering new window.
thread 'main' panicked at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/wgpu-0.18.0/src/backend/direct.rs:778:18:
Error in Surface::configure: Validation Error

Caused by:
    Not enough memory left.

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
18:30:24 [INFO] Shutting down SQLite writer thread
18:30:24 [INFO] Shut down SQLite writer in 309.316µs
18:30:24 [INFO] Received empty message; assuming the connection has been closed.

My user is not /home/runner/ btw. 🤔

vorporeal commented 9 months ago

Thanks for the bug report!

Warp currently requires Xwayland, but we're working on fixing issues that currently prevent the use of Wayland natively.

If you run Warp with WGPU_BACKEND=gl warp-terminal, do you get the same crash?

Areskiko commented 9 months ago

Yes the error persists

cmprmsd commented 9 months ago

With xwayland and WGPU_BACKEND=gl it does not segfault for me but no terminal appears. I just see:

23:13:03 [INFO] Enabled wgpu backends: Backends(GL)
23:13:03 [INFO] Available wgpu adapters:
23:13:03 [INFO] Other: zink Vulkan 1.3(NVIDIA GeForce RTX 3080 (NVIDIA_PROPRIETARY))
23:13:03 [INFO]     Driver: Unknown
23:13:03 [INFO] Using Other (zink Vulkan 1.3(NVIDIA GeForce RTX 3080 (NVIDIA_PROPRIETARY))) for rendering new window.
23:13:03 [INFO] No update available
MESA: error: CreateSwapchainKHR failed with VK_ERROR_OUT_OF_DEVICE_MEMORY
MESA: error: zink: could not create swapchain
23:13:03 [WARN] redraw_frame was called 3 times before the frame was drawn
23:13:03 [INFO] active window changed: None
23:13:03 [INFO] dispatching global action for root_view:update_quake_mode_state
23:13:03 [INFO] dispatching global action for workspace:save_app
23:13:33 [INFO] Start to flush telemetry events to Segment
23:13:33 [INFO] Dropping empty telemetry batch
23:13:33 [INFO] Flushed telemetry events.

the last three lines keep repeating.

vorporeal commented 9 months ago

@cmprmsd Are you using something like VNC or RDP? What version of Mesa do you have installed? Some additional context about your execution environment would be helpful, as there are many factors that can lead to issues with direct/accelerated rendering.

dwbconsultingllc commented 6 months ago

Similar issue for me. WSL / Ubuntu 24.04 Nvidia Geoforce rtx 4050, works on my WSL Ubuntu 22.04 intel chip

DESKTOP-4IJH802:~$ WGPU_BACKEND=gl warp-terminal
08:40:03 [INFO] Spawning terminal server process...
thread 'main' panicked at /home/runner/work/warp-internal/warp-internal/ui/src/windowing/winit/app.rs:156:14:
should be able to create event loop: Os(OsError { line: 81, file: "/home/runner/.cargo/git/checkouts/winit-3c8ffa8180ed95ae/4cdd894/src/platform_impl/linux/wayland/event_loop/mod.rs", error: WaylandError(Connection(NoCompositor)) })
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
08:40:03 [INFO] Received empty message; assuming the connection has been closed.
DESKTOP-4IJH802:~$ warp-terminal
08:40:07 [INFO] Spawning terminal server process...
thread 'main' panicked at /home/runner/work/warp-internal/warp-internal/ui/src/windowing/winit/app.rs:156:14:
should be able to create event loop: Os(OsError { line: 81, file: "/home/runner/.cargo/git/checkouts/winit-3c8ffa8180ed95ae/4cdd894/src/platform_impl/linux/wayland/event_loop/mod.rs", error: WaylandError(Connection(NoCompositor)) })
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
08:40:07 [INFO] Received empty message; assuming the connection has been closed.
vorporeal commented 6 months ago

There's a known issue where wslg (provider of the Wayland compositor for WSL) isn't compatible with Ubuntu 24.04: https://github.com/microsoft/WSL/issues/11542

Unfortunately, I don't have a good recommendation on a workaround here at the moment. We can see about making some changes on our end in the next release (Thursday) to work around things, but not sure how much we can do on our end. :(

leonardobetti commented 5 months ago

same blurry text for me, is there a way to force Wayland? I've tried same fix that I did on Slack and VSCode, still no luck.

vorporeal commented 5 months ago

@leonardobetti if you run Warp with WARP_ENABLE_WAYLAND=1 in your environment, it'll enable use of native Wayland (no Xwayland). We're working on addressing some final stability issues, and hope to enable this by default soon, but the environment variable can be used in the meantime to opt-in.

presi300 commented 5 months ago

Here to report that WARP_ENABLE_WAYLAND=1 just causes warp to stop launching on KDE plasma 6.0.5...

leonardobetti commented 5 months ago

done working for me thanks guys

aidan-gibson commented 5 months ago

Works for me on Arch+Hyprland! Thanks

satoterin commented 5 months ago

VM / Ubuntu 22.04, I got following logs. Terminal doesn't show.

14:12:11 [INFO] Spawning terminal server process...
14:12:11 [INFO] Running terminal server...
14:12:11 [WARN] Tried to initialize the wayland data control protocol clipboard, but failed. Falling back to the X11 clipboard protocol. The error was: Unknown error while interacting with the clipboard: A required Wayland protocol (zwlr_data_control_manager_v1 version 1) is not supported by the compositor
14:12:11 [INFO] Running app with windowing system: X11
14:12:11 [INFO] Failed to read User from secure storage NotFound
14:12:11 [INFO] Initializing crash reporting Some("linux_stable_release") with tag "v0.2024.06.25.08.02.stable_01"...
14:12:11 [INFO] Starting warp with channel state ChannelState { channel: Stable, app_id: AppId { qualifier: "dev", organization: "warp", application_name: "Warp" }, additional_features: {}, firebase_api_key: "AIzaSyBdy3O3S9hrdayLJxJ7mriBR4qgUaUygAs", server_root_url: "https://app.warp.dev", ws_server_url: "wss://rtc.app.warp.dev/graphql", session_sharing_server_url: Some("wss://sessions.app.warp.dev"), segment_write_key: "sTT9ZajzIaQ0phzLFOnqZ6VOqplJTlaJ", segment_root_url: "https://api.segment.io", releases_base_url: "https://releases.warp.dev", sentry_url: "https://0195a81da0714f55a93ee4624825f9ec@o540343.ingest.sentry.io/5658526", logfile_name: "warp.log", show_autoupdate_menu_items: true } and version Some("v0.2024.06.25.08.02.stable_01")
14:12:11 [INFO] Start to flush telemetry events to Segment
14:12:11 [INFO] Start to flush telemetry events to Segment
14:12:11 [INFO] Performance metrics collector started
14:12:11 [INFO] Initializing app services
14:12:11 [WARN]     EGL context: -robust access
14:12:11 [INFO] Connecting to SQLite database
14:12:11 [INFO] fetching team tester status
14:12:11 [INFO] Checking for update on channel stable_release. Update id is 7OaLQjO
14:12:11 [INFO] Fetching channel versions (without changelogs) from Warp server
14:12:11 [INFO] dispatching global action for root_view:open_from_restored
14:12:11 [INFO] dispatching global action for root_view:open_new
14:12:11 [WARN] error getting team tester status: Failed to get access token for GraphQL request. Falling back to in-memory state.
14:12:11 [WARN] Failed to retrieve initial request limit info: Failed to get access token for GraphQL request

Caused by:
    Attempted to retrieve access token when user is logged out
14:12:11 [WARN]     EGL context: -robust access
14:12:11 [INFO] Enabled wgpu backends: Backends(VULKAN | GL | METAL | DX12 | DX11 | BROWSER_WEBGPU)
14:12:11 [INFO] Available wgpu adapters (in priority order):
14:12:11 [WARN] Deprioritizing Vulkan-backed llvmpipe adapter due to Mesa < 24.0.2 (unsupported)
14:12:11 [INFO] Other: SVGA3D; build: RELEASE;  LLVM;
    Backend: Gl
    Driver: Unknown
    Can present: true
    Supported texture format: Some(Rgba8UnormSrgb)
14:12:11 [INFO] Cpu: llvmpipe (LLVM 15.0.7, 256 bits)
    Backend: Vulkan
    Driver: llvmpipe (Mesa 23.2.1-1ubuntu3.1~22.04.2 (LLVM 15.0.7))
    Can present: true
    Supported texture format: Some(Bgra8UnormSrgb)
14:12:11 [INFO] Verifying adapter "SVGA3D; build: RELEASE;  LLVM;" is valid...
14:12:11 [INFO] Using Other (SVGA3D; build: RELEASE;  LLVM;) for rendering new window.
14:12:11 [ERROR] surface size changed but does not require reconfiguration!
14:12:11 [WARN] redraw_frame was called 2 times before the frame was drawn
14:12:11 [INFO] window resized
14:12:11 [INFO] dispatching global action for workspace:save_app
14:12:11 [INFO] window resized
14:12:11 [INFO] dispatching global action for workspace:save_app
14:12:11 [INFO] active window changed: Some(WindowId(0))
14:12:11 [INFO] dispatching global action for root_view:update_quake_mode_state
14:12:11 [INFO] dispatching global action for workspace:save_app
14:12:11 [WARN] redraw_frame was called 2 times before the frame was drawn
14:12:12 [INFO] Received channel versions from Warp server: dev: ChannelVersion { version_info: VersionInfo { version: "v0.2024.07.03.08.02.dev_00", update_by: None, soft_cutoff: Some("v0.2023.05.12.08.03.dev_00") }, overrides: [] }; preview: ChannelVersion { version_info: VersionInfo { version: "v0.2024.07.03.08.02.preview_00", update_by: None, soft_cutoff: None }, overrides: [] }; canary: ChannelVersion { version_info: VersionInfo { version: "v0.2022.09.29.08.08.canary_00", update_by: None, soft_cutoff: None }, overrides: [] }; beta: ChannelVersion { version_info: VersionInfo { version: "v0.2024.07.02.08.02.beta_00", update_by: None, soft_cutoff: None }, overrides: [] }; stable: ChannelVersion { version_info: VersionInfo { version: "v0.2024.06.25.08.02.stable_01", update_by: None, soft_cutoff: Some("v0.2024.05.14.08.01.stable_04") }, overrides: [] }
14:12:12 [INFO] No update available
14:12:13 [INFO] Successfully flushed events to segment from disk
14:12:13 [INFO] Flushed telemetry events.
14:12:14 [INFO] active window changed: None
14:12:14 [INFO] dispatching global action for root_view:update_quake_mode_state
14:12:14 [INFO] dispatching global action for workspace:save_app
14:12:43 [INFO] Start to flush telemetry events to Segment
14:12:43 [INFO] Dropping empty telemetry batch
14:12:43 [INFO] Flushed telemetry events.
S14:13:11 [INFO] window resized
14:13:11 [INFO] dispatching global action for workspace:save_app
14:13:13 [INFO] Start to flush telemetry events to Segment
14:13:13 [INFO] Dropping empty telemetry batch
14:13:13 [INFO] Flushed telemetry events.
S14:13:43 [INFO] Start to flush telemetry events to Segment
14:13:43 [INFO] Dropping empty telemetry batch
14:13:43 [INFO] Flushed telemetry events.