iced-rs / iced

A cross-platform GUI library for Rust, inspired by Elm
https://iced.rs
MIT License
22.96k stars 1.06k forks source link

error: WaylandError(Connection(NoWaylandLib)) when using nixos and shell.nix from DEPENDECIES.md #2385

Closed vavakado closed 3 weeks ago

vavakado commented 1 month ago

Is there an existing issue for this?

Is this issue related to iced?

What happened?

I am using wayland(hyprland) and when i try to run any example when in a nix-shell supplied from DEPENDECIES.md i get an error that there is "NoWaylandLib"

What is the expected behavior?

A running application

Version

crates.io release

Operating System

Linux

Do you have any log output?

❯ RUST_BACKTRACE=1 cargo run --package todos
    Finished dev [unoptimized + debuginfo] target(s) in 0.13s
     Running `target/debug/todos`
thread 'main' panicked at /home/vavakado/Documents/projects/iced/winit/src/application.rs:151:10:
Create event loop: Os(OsError { line: 80, file: "/home/vavakado/.cargo/git/checkouts/winit-57d3141eaf559308/592bd15/src/platform_impl/linux/wayland/event_loop/mod.rs", error: WaylandError(Connection(NoWaylandLib)) })
stack backtrace:
   0: rust_begin_unwind
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:647:5
   1: core::panicking::panic_fmt
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panicking.rs:72:14
   2: core::result::unwrap_failed
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/result.rs:1649:5
   3: core::result::Result<T,E>::expect
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/result.rs:1030:23
   4: iced_winit::application::run::{{closure}}
             at ./winit/src/application.rs:149:22
   5: futures_executor::local_pool::block_on::{{closure}}
             at /home/vavakado/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-executor-0.3.30/src/local_pool.rs:317:23
   6: futures_executor::local_pool::run_executor::{{closure}}
             at /home/vavakado/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-executor-0.3.30/src/local_pool.rs:90:37
   7: std::thread::local::LocalKey<T>::try_with
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/thread/local.rs:286:16
   8: std::thread::local::LocalKey<T>::with
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/thread/local.rs:262:9
   9: futures_executor::local_pool::run_executor
             at /home/vavakado/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-executor-0.3.30/src/local_pool.rs:86:5
  10: futures_executor::local_pool::block_on
             at /home/vavakado/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-executor-0.3.30/src/local_pool.rs:317:5
  11: iced::application::Application::run
             at ./src/application.rs:234:12
  12: iced::program::Program<P>::run_with
             at ./src/program.rs:247:9
  13: iced::program::Program<P>::run
             at ./src/program.rs:171:9
  14: todos::main
             at ./examples/todos/src/main.rs:20:5
  15: core::ops::function::FnOnce::call_once
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
i509VCB commented 1 month ago

winit (the windowing library iced uses) by default loads libwayland using dlopen. You need to tell nix to put libwayland on the path. Otherwise disable the dlopen feature in winit so that the compiler is forced to link to the system library.

https://github.com/rust-windowing/winit/issues/3244 https://github.com/rust-windowing/winit/issues/3603