slint-ui / slint

Slint is a declarative GUI toolkit to build native user interfaces for Rust, C++, or JavaScript apps.
https://slint.dev
Other
16.8k stars 553 forks source link

LinuxKMS: better error message than "Error presenting fb: permission denied" #4619

Open jasper-at-windswept opened 6 months ago

jasper-at-windswept commented 6 months ago

I was originally having troubles in issue #3412 but resolved it by setting up Nix-ld.

However now when i press the Show Preview code lense the slint server crashes.

Using Skia Software renderer
Rendering at 1920x1080
thread 'main' panicked at tools/lsp/preview/native.rs:83:40:
called `Result::unwrap()` on an `Err` value: OtherError("Error presenting fb: permission denied")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[Info  - 9:52:00 AM] Connection to server got closed. Server will restart.
true
The Slint Language Server crashed. This is a bug.
hunger commented 6 months ago

Looks like the next missing dependency: The preview needs a few more things to run than the "normal" LSP:-/

Try running ldd on the slint-lsp binary in your extension directory: Does it report anything missing?

jasper-at-windswept commented 6 months ago

Ldd outputs the below:

ldd slint-lsp-x86_64-unknown-linux-gnu

    linux-vdso.so.1 (0x00007ffcc15f5000)
    libxkbcommon.so.0 => not found
    libudev.so.1 => not found
    libinput.so.10 => not found
    libgbm.so.1 => not found
    libstdc++.so.6 => not found
    libfontconfig.so.1 => not found
    libfreetype.so.6 => not found
    libdl.so.2 => /nix/store/cyrrf49i2hm1w7vn2j945ic3rrzgxbqs-glibc-2.38-44/lib/libdl.so.2 (0x00007ff60e03c000)
    libgcc_s.so.1 => /nix/store/f5my15qww10swmf66ns13l24yp6j5dmq-xgcc-13.2.0-libgcc/lib/libgcc_s.so.1 (0x00007ff60e017000)
    libpthread.so.0 => /nix/store/cyrrf49i2hm1w7vn2j945ic3rrzgxbqs-glibc-2.38-44/lib/libpthread.so.0 (0x00007ff60e012000)
    libm.so.6 => /nix/store/cyrrf49i2hm1w7vn2j945ic3rrzgxbqs-glibc-2.38-44/lib/libm.so.6 (0x00007ff60df2e000)
    libc.so.6 => /nix/store/cyrrf49i2hm1w7vn2j945ic3rrzgxbqs-glibc-2.38-44/lib/libc.so.6 (0x00007ff60bc17000)
    /lib64/ld-linux-x86-64.so.2 => /nix/store/cyrrf49i2hm1w7vn2j945ic3rrzgxbqs-glibc-2.38-44/lib64/ld-linux-x86-64.so.2 (0x00007ff60e045000)

What does not make sense is i have all those not found dependencies outlined in nix-ld and i can use sudo find and locate all those .so files

ogoffart commented 6 months ago

Thanks for reporting the problem

We have two problem:

  1. the lsp is panicking because we unwrap the error from slint::run_event_loop instead of properly reporting it as an error and maybe use a fallback. This is tracked in https://github.com/slint-ui/slint/issues/204

  2. You have a problem that you can't connect to the display. This error comes from the linuxkms backend. The linuxkms is used because the winit backend failled to initialize, probably because the X11 DISPLAY or equivalent wayland env variable were not properly set. And you probably don't want anyway that linuxkms backend takes your whole screen

Since the LSP Preview bug is already tracked by #204, the actual problem seems to be a configuration problem.

I'm just going to keep this bug open because I think the linuxkms error is less than ideal.