Cannot run WebGPU Deno Desktop apps, even through Steam
Author: TheHans255Created Jul 26, 2026Updated Sep 16, 2026
Labelsbugdesktop
Version: Deno 2.9.2
System:
- 64-bit AMD Ryzen 7 9800X3D
- 64 GB RAM
- AMD Radeon RX 7900 XTX
- NixOS unstable (26.11, revision
1d4e0f865d68258aada31e68e6d79c8c463f3b34) - DE: Hyprland 0.55.4
- Using
nix-ldto run unpatched Linux binaries
Steps to Reproduce:
- Create the files
deno.jsonandmain.tsin a new directorydeno-desktop-sandboxexactly as outlined in https://docs.deno.com/runtime/desktop/webgpu/ $ deno desktop main.tscd deno-desktop-sandbox./deno-desktop-sandbox
Expected results:
- A new window appears, cleared to teal
Actual results:
./deno-desktop-sandbox: error while loading shared libraries: libxdo.so.3: cannot open shared object file: No such file or directory
Full strace of this process:
$ strace ./deno-desktop-sandbox
execve("./deno-desktop-sandbox", ["./deno-desktop-sandbox"], 0x7ffc6e695f10 /* 97 vars */) = 0
mmap(NULL, 56, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7d2faeaa4000
openat(AT_FDCWD, "/run/current-system/sw/share/nix-ld/lib/ld.so", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\375\1\0\0\0\0\0"..., 64) = 64
mmap(NULL, 680, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7d2faeaa3000
mmap(NULL, 241664, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7d2faea68000
mmap(0x7d2faea68000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x7d2faea68000
mmap(0x7d2faea69000, 176128, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0x1000) = 0x7d2faea69000
mmap(0x7d2faea94000, 45056, PROT_READ, MAP_PRIVATE|MAP_FIXED, 3, 0x2c000) = 0x7d2faea94000
mmap(0x7d2faea9f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x37000) = 0x7d2faea9f000
mmap(0x7d2faeaa2000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7d2faeaa2000
munmap(0x7d2faeaa3000, 680) = 0
close(3) = 0
brk(NULL) = 0x5c57300aa000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7d2faea66000
access("/etc/ld-nix.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/current-system/sw/share/nix-ld/lib/glibc-hwcaps/x86-64-v4/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/run/current-system/sw/share/nix-ld/lib/glibc-hwcaps/x86-64-v4/", 0x7ffd33833880, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/current-system/sw/share/nix-ld/lib/glibc-hwcaps/x86-64-v3/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/run/current-system/sw/share/nix-ld/lib/glibc-hwcaps/x86-64-v3/", 0x7ffd33833880, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/current-system/sw/share/nix-ld/lib/glibc-hwcaps/x86-64-v2/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/run/current-system/sw/share/nix-ld/lib/glibc-hwcaps/x86-64-v2/", 0x7ffd33833880, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/current-system/sw/share/nix-ld/lib/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/run/current-system/sw/share/nix-ld/lib/", {st_mode=S_IFDIR|0555, st_size=36864, ...}, 0) = 0
openat(AT_FDCWD, "/nix/store/ias8xacs1h3jy7xgwi2awvim61k2ji6c-glibc-2.42-67/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/ias8xacs1h3jy7xgwi2awvim61k2ji6c-glibc-2.42-67/lib/glibc-hwcaps/x86-64-v4/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/ias8xacs1h3jy7xgwi2awvim61k2ji6c-glibc-2.42-67/lib/glibc-hwcaps/x86-64-v4/", 0x7ffd33833880, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/ias8xacs1h3jy7xgwi2awvim61k2ji6c-glibc-2.42-67/lib/glibc-hwcaps/x86-64-v3/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/ias8xacs1h3jy7xgwi2awvim61k2ji6c-glibc-2.42-67/lib/glibc-hwcaps/x86-64-v3/", 0x7ffd33833880, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/ias8xacs1h3jy7xgwi2awvim61k2ji6c-glibc-2.42-67/lib/glibc-hwcaps/x86-64-v2/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/ias8xacs1h3jy7xgwi2awvim61k2ji6c-glibc-2.42-67/lib/glibc-hwcaps/x86-64-v2/", 0x7ffd33833880, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/ias8xacs1h3jy7xgwi2awvim61k2ji6c-glibc-2.42-67/lib/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/ias8xacs1h3jy7xgwi2awvim61k2ji6c-glibc-2.42-67/lib/", {st_mode=S_IFDIR|0555, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/nix/store/hps7pxvcgq32x46yx5a2nx53js5j41vb-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v4/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/hps7pxvcgq32x46yx5a2nx53js5j41vb-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v4/", 0x7ffd33833880, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/hps7pxvcgq32x46yx5a2nx53js5j41vb-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v3/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/hps7pxvcgq32x46yx5a2nx53js5j41vb-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v3/", 0x7ffd33833880, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/hps7pxvcgq32x46yx5a2nx53js5j41vb-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v2/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/hps7pxvcgq32x46yx5a2nx53js5j41vb-xgcc-15.2.0-libgcc/lib/glibc-hwcaps/x86-64-v2/", 0x7ffd33833880, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/hps7pxvcgq32x46yx5a2nx53js5j41vb-xgcc-15.2.0-libgcc/lib/libxdo.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/hps7pxvcgq32x46yx5a2nx53js5j41vb-xgcc-15.2.0-libgcc/lib/", {st_mode=S_IFDIR|0555, st_size=4096, ...}, 0) = 0
writev(2, [{iov_base="./deno-desktop-sandbox", iov_len=22}, {iov_base=": ", iov_len=2}, {iov_base="error while loading shared libra"..., iov_len=36}, {iov_base=": ", iov_len=2}, {iov_base="libxdo.so.3", iov_len=11}, {iov_base=": ", iov_len=2}, {iov_base="cannot open shared object file", iov_len=30}, {iov_base=": ", iov_len=2}, {iov_base="No such file or directory", iov_len=25}, {iov_base="\n", iov_len=1}], 10./deno-desktop-sandbox: error while loading shared libraries: libxdo.so.3: cannot open shared object file: No such file or directory
) = 133
exit_group(127) = ?
+++ exited with 127 +++
I have not been able to locate a NixOS package that provides libxdo.so.3 - the xdo and xdotool packages do not contain it.
EDIT: The same issue also happens when attempting to run the resulting binary through Steam (it crashes immediately without showing a window). So this is not a NixOS exclusive problem.
Source: denoland/deno