udevbe / greenfield

HTML5 Wayland compositor :seedling:
GNU Affero General Public License v3.0
929 stars 29 forks source link

linux remote application failure? #131

Closed jpeeler closed 10 months ago

jpeeler commented 10 months ago

Maybe I did something wrong, but when trying to run a locally installed app after going through the getting started I was seeing:

yarn workspace @gfld/compositor-proxy-cli start {time:"2023-11-12T02:08:03.847Z",name:"main",msg:"Starting compositor proxy with args: { applications: { '/gtk4-demo': { name: 'GTK Demo', executable: 'gtk4-demo', args: [], env: {} }, '/kwrite': { name: 'KWrite', executable: 'kwrite', args: [Array], env: {} }, '/calc': { name: 'Calc', executable: 'qalculate-gtk', args: [], env: {} }, '/kitty': { name: 'Kitty', executable: 'kitty', args: [], env: {} }, '/xterm': { name: 'XTerm', executable: 'xterm', args: [], env: {} } }, help: false, 'bind-ip': '0.0.0.0', 'bind-port': '8081', 'allow-origin': 'http://localhost:8080', 'base-url': 'ws://localhost:8081', 'render-device': '/dev/dri/renderD128', encoder: 'x264', 'basic-auth': undefined }"} {time:"2023-11-12T02:08:03.852Z",name:"main",msg:"Compositor proxy started. Listening on 0.0.0.0:8081"} {time:"2023-11-12T02:08:09.249Z",name:"main",msg:"No proxy session exists for this compositor, spawning a new one."} { "type": "dependency", "path": "file:///var/home/jpeeler/src/greenfield/packages/compositor-proxy-cli/src/SessionProcess.ts" } {time:"2023-11-12T02:08:09.506Z",name:"main",msg:" name: TypeError message: Cannot read properties of undefined (reading 'replySerial')"} {time:"2023-11-12T02:08:09.507Z",name:"main",msg:"error object stack: "} {time:"2023-11-12T02:08:09.510Z",name:"main",msg:"TypeError: Cannot read properties of undefined (reading 'replySerial') at ChildProcess.replyListener (/var/home/jpeeler/src/greenfield/packages/compositor-proxy-cli/src/main-controller.ts:86:38) at ChildProcess.emit (node:events:514:28) at ChildProcess.emit (node:domain:488:12) at emit (node:internal/child_process:951:14) at process.processTicksAndRejections (node:internal/process/task_queues:83:21)"} { "type": "dependency", "path": "/var/home/jpeeler/src/greenfield/packages/compositor-proxy-cli/src/SessionProcess.ts" } {time:"2023-11-12T02:08:09.511Z",name:"main",msg:" name: TypeError message: Cannot read properties of undefined (reading 'replySerial')"} {time:"2023-11-12T02:08:09.511Z",name:"main",msg:"error object stack: "} {time:"2023-11-12T02:08:09.512Z",name:"main",msg:"TypeError: Cannot read properties of undefined (reading 'replySerial') at ChildProcess.replyListener (/var/home/jpeeler/src/greenfield/packages/compositor-proxy-cli/src/main-controller.ts:86:38) at ChildProcess.emit (node:events:514:28) at ChildProcess.emit (node:domain:488:12) at emit (node:internal/child_process:951:14) at process.processTicksAndRejections (node:internal/process/task_queues:83:21)"} { "type": "dependency", "path": "/var/home/jpeeler/src/greenfield/packages/compositor-proxy/dist/index.js" } {time:"2023-11-12T02:08:09.512Z",name:"main",msg:" name: TypeError message: Cannot read properties of undefined (reading 'replySerial')"} {time:"2023-11-12T02:08:09.512Z",name:"main",msg:"error object stack: "} {time:"2023-11-12T02:08:09.513Z",name:"main",msg:"TypeError: Cannot read properties of undefined (reading 'replySerial') at ChildProcess.replyListener (/var/home/jpeeler/src/greenfield/packages/compositor-proxy-cli/src/main-controller.ts:86:38) at ChildProcess.emit (node:events:514:28) at ChildProcess.emit (node:domain:488:12) at emit (node:internal/child_process:951:14) at process.processTicksAndRejections (node:internal/process/task_queues:83:21)"} { "type": "dependency", "path": "/var/home/jpeeler/src/greenfield/packages/compositor-proxy/dist/Logger.js" } {time:"2023-11-12T02:08:09.513Z",name:"main",msg:" name: TypeError message: Cannot read properties of undefined (reading 'replySerial')"} {time:"2023-11-12T02:08:09.513Z",name:"main",msg:"error object stack: "} {time:"2023-11-12T02:08:09.514Z",name:"main",msg:"TypeError: Cannot read properties of undefined (reading 'replySerial') at ChildProcess.replyListener (/var/home/jpeeler/src/greenfield/packages/compositor-proxy-cli/src/main-controller.ts:86:38) at ChildProcess.emit (node:events:514:28) at ChildProcess.emit (node:domain:488:12) at emit (node:internal/child_process:951:14) at processTicksAndRejections (node:internal/process/task_queues:83:21) at runNextTicks (node:internal/process/task_queues:64:3) at process.processImmediate (node:internal/timers:449:9)"} { "type": "dependency", "path": "/var/home/jpeeler/src/greenfield/packages/compositor-proxy/dist/SurfaceBufferEncoding.js" }

{time:"2023-11-12T02:08:09.584Z",name:"main",msg:" name: TypeError message: Cannot read properties of undefined (reading 'replySerial')"} {time:"2023-11-12T02:08:09.584Z",name:"main",msg:"error object stack: "} {time:"2023-11-12T02:08:09.585Z",name:"main",msg:"TypeError: Cannot read properties of undefined (reading 'replySerial') at ChildProcess.replyListener (/var/home/jpeeler/src/greenfield/packages/compositor-proxy-cli/src/main-controller.ts:86:38) at ChildProcess.emit (node:events:514:28) at ChildProcess.emit (node:domain:488:12) at emit (node:internal/child_process:951:14) at process.processTicksAndRejections (node:internal/process/task_queues:83:21)"} { "type": "dependency", "path": "/var/home/jpeeler/src/greenfield/libs/xtsb/dist/main/auth.js" } {time:"2023-11-12T02:08:09.586Z",name:"main",msg:" name: TypeError message: Cannot read properties of undefined (reading 'replySerial')"} {time:"2023-11-12T02:08:09.586Z",name:"main",msg:"error object stack: "} {time:"2023-11-12T02:08:09.586Z",name:"main",msg:"TypeError: Cannot read properties of undefined (reading 'replySerial') at ChildProcess.replyListener (/var/home/jpeeler/src/greenfield/packages/compositor-proxy-cli/src/main-controller.ts:86:38) at ChildProcess.emit (node:events:514:28) at ChildProcess.emit (node:domain:488:12) at emit (node:internal/child_process:951:14) at process.processTicksAndRejections (node:internal/process/task_queues:83:21)"} Supported EGL client extensions: EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device EGL_EXT_platform_wayland EGL_KHR_platform_wayland EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_EXT_platform_xcb EGL_MESA_platform_gbm EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless Using EGL device /dev/dri/renderD128 Using EGL 1.5 Supported EGL display extensions: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_IMG_context_priority EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image_base EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_WL_bind_wayland_display Supported EGL device extensions: EGL_EXT_device_drm EGL_EXT_device_drm_render_node EGL vendor: Mesa Project EGL DMA-BUF format modifiers supported amdgpu: amdgpu_cs_ctx_create2 failed. (-13) Obtained high priority context Using EGL_PLATFORM_DEVICE_EXT {time:"2023-11-12T02:08:09.613Z",name:"native-compositor-session",msg:"Listening on: WAYLAND_DISPLAY="wayland-0"."} unlinking stale lock file /tmp/.X1-lock xserver listening on display :1 {time:"2023-11-12T02:08:09.615Z",name:"compositor-proxy-session",msg:"Session created."} {time:"2023-11-12T02:08:09.615Z",name:"session-process",msg:"Session started."} {time:"2023-11-12T02:08:09.615Z",name:"session-process",msg:"Launching application Calc"} {time:"2023-11-12T02:08:09.622Z",name:"qalculate-gtk",msg:"child process error: spawn qalculate-gtk ENOENT."} { "type": "launchAppFailed", "payload": { "replySerial": 0, "message": "spawn qalculate-gtk ENOENT" } } [full-log.txt](https://github.com/udevbe/greenfield/files/13326967/full-log.txt) Unrelated, I'm being that guy that reports multiple issues in one bug. It's "yarn workspace @gfld/compositor-shell run start" (not just shell). And the ffmpeg shallow clone doesn't permit a branch change to master in build_wasm.sh.
Zubnix commented 10 months ago

Does this happen for all applications or a specific one?

As for the documentation & ffmpeg issue, there was recently a big update so some things might have slipped through. Thanks for reporting these!

jpeeler commented 10 months ago

It was for both applications I tried - I assume I didn't mess the config up.

Zubnix commented 10 months ago

I was able to reproduce the errors, however they are not the cause of the failed application launch as qalculate-gtk works just fine here. The reason qalculate-gtk is not launching is because the compositor-proxy-cli can not find it "message": "spawn qalculate-gtk ENOENT".

jpeeler commented 10 months ago

I saw that. I don't know how it is unable to find it though?

❯ type qalculate-gtk
qalculate-gtk is /usr/bin/qalculate-gtk

Am I completely misunderstanding what the compositor-proxy-cli is capable of?

Zubnix commented 10 months ago

I don’t think you are doing anything wrong or misunderstanding anything. The name of the application is basically used in a fork call so theoretically if it’s on the PATH of the compositor-proxy-cli it should be found. You could try with the absolute path if for some reason the PATH environment variable is not working. I’m a bit confused why it’s not being picked up in your case 🤔

jpeeler commented 10 months ago

Yeah that's why I'm confused, I already tried both the full path and just the base name as in the examples. I can retry later in the week locally as I'm currently executing on a remote machine. But I have my doubts that the path is not being included in a standard linux binary directory.

Zubnix commented 10 months ago

I've fixed the build errors and added argument and environment logging when launching child applications. You will need to rebuild compositor-proxy. If all went well, you should see something like this:

10:52 $ yarn workspace @gfld/compositor-proxy-cli start
{time:"2023-11-13T09:52:32.802Z",name:"main",msg:"Starting compositor proxy with args: {
  applications: {
    '/gtk4-demo': { name: 'GTK Demo', executable: 'gtk4-demo', args: [], env: {} },
    '/kwrite': { name: 'KWrite', executable: 'kwrite', args: [], env: {} },
    '/calc': { name: 'Calc', executable: 'qalculate-gtk', args: [], env: {} },
    '/kitty': { name: 'Kitty', executable: 'kitty', args: [], env: {} },
    '/xterm': { name: 'XTerm', executable: 'xterm', args: [], env: {} }
  },
  help: false,
  'bind-ip': '0.0.0.0',
  'bind-port': '8081',
  'allow-origin': 'http://localhost:8080',
  'base-url': 'ws://localhost:8081',
  'render-device': '/dev/dri/renderD128',
  encoder: 'x264',
  'basic-auth': undefined
}"}
{time:"2023-11-13T09:52:32.807Z",name:"main",msg:"Compositor proxy started. Listening on 0.0.0.0:8081"}
{time:"2023-11-13T09:52:46.706Z",name:"main",msg:"No proxy session exists for this compositor, spawning a new one."}
Supported EGL client extensions: EGL_EXT_platform_base EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_EXT_platform_device EGL_MESA_platform_surfaceless EGL_EXT_explicit_device EGL_KHR_platform_wayland EGL_EXT_platform_wayland EGL_KHR_platform_gbm EGL_MESA_platform_gbm EGL_EXT_platform_xcb
[EGL] command: eglQueryDevicesEXT, error: EGL_BAD_ALLOC (0x3003), message: EGL_BAD_ALLOC error: In eglQueryDevicesEXT: Failed to allocate device list.

[EGL] command: eglQueryDevicesEXT, error: EGL_BAD_ALLOC (0x3003), message: EGL_BAD_ALLOC error: In eglQueryDevicesEXT: Failed to allocate device list.

Using EGL device /dev/dri/renderD128

Using EGL 1.5

Supported EGL display extensions: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_IMG_context_priority EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image_base EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_WL_bind_wayland_display 

Supported EGL device extensions: EGL_EXT_device_drm EGL_EXT_device_drm_render_node

EGL vendor: Mesa Project

EGL DMA-BUF format modifiers supported
Obtained high priority context
Using EGL_PLATFORM_DEVICE_EXT
{time:"2023-11-13T09:52:48.278Z",name:"native-compositor-session",msg:"Listening on: WAYLAND_DISPLAY="wayland-0"."}
unlinking stale lock file /tmp/.X1-lock
xserver listening on display :1
{time:"2023-11-13T09:52:48.280Z",name:"compositor-proxy-session",msg:"Session created."}
{time:"2023-11-13T09:52:48.280Z",name:"session-process",msg:"Session started."}
{time:"2023-11-13T09:52:48.281Z",name:"qalculate-gtk",msg:"Launching application qalculate-gtk with args [] and environment {"TERM_SESSION_ID":"bc88fe53-bde1-47c8-a738-1c8cd2cf4b1e","GJS_DEBUG_TOPICS":"JS ERROR;JS LOG","XDG_ACTIVATION_TOKEN":"gnome-shell/IntelliJ IDEA Ultimate 2023.2.5/47238-0-erik-XPS-15-9560_TIME62727356","LESSOPEN":"| /usr/bin/lesspipe %s","USER":"erik","LC_TIME":"nl_BE.UTF-8","npm_config_user_agent":"yarn/3.6.3 npm/? node/v18.15.0 linux x64","XDG_SESSION_TYPE":"x11","BUN_INSTALL":"/home/erik/.bun","npm_node_execpath":"/tmp/xfs-6648df37/node","SHLVL":"1","HOME":"/home/erik","DESKTOP_SESSION":"ubuntu-xorg","NVM_BIN":"/home/erik/.nvm/versions/node/v18.15.0/bin","npm_package_json":"/home/erik/git/greenfield/packages/compositor-proxy-cli/package.json","NVM_INC":"/home/erik/.nvm/versions/node/v18.15.0/include/node","TERMINAL_EMULATOR":"JetBrains-JediTerm","GIO_LAUNCHED_DESKTOP_FILE":"/home/erik/.local/share/applications/jetbrains-idea.desktop","COREPACK_ROOT":"/home/erik/.nvm/versions/node/v18.15.0/lib/node_modules/corepack","GNOME_SHELL_SESSION_MODE":"ubuntu","GTK_MODULES":"gail:atk-bridge","LC_MONETARY":"nl_BE.UTF-8","MANAGERPID":"46586","SYSTEMD_EXEC_PID":"47238","DBUS_SESSION_BUS_ADDRESS":"unix:path=/run/user/1000/bus","LIBVIRT_DEFAULT_URI":"qemu:///system","GIO_LAUNCHED_DESKTOP_FILE_PID":"48077","NVM_DIR":"/home/erik/.nvm","DEBUGINFOD_URLS":"https://debuginfod.ubuntu.com ","LOGNAME":"erik","JOURNAL_STREAM":"8:373935","_":"/home/erik/.nvm/versions/node/v18.15.0/bin/yarn","XDG_SESSION_CLASS":"user","GIT_BRANCH":"master","USERNAME":"erik","TERM":"xterm-256color","GNOME_DESKTOP_SESSION_ID":"this-is-deprecated","WINDOWPATH":"2","GTK_IM_MODULES":"ibus","PATH":"/tmp/xfs-6648df37:/tmp/xfs-5a0db80e:/home/erik/gems/bin:/home/erik/.bun/bin:/home/erik/.yarn/bin:/home/erik/.config/yarn/global/node_modules/.bin:/home/erik/.nvm/versions/node/v18.15.0/bin:/home/erik/.cargo/bin:/home/erik/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/home/erik/.local/share/JetBrains/Toolbox/scripts:/home/erik/git/greenfield/node_modules/.bin","SESSION_MANAGER":"local/erik-XPS-15-9560:@/tmp/.ICE-unix/47162,unix/erik-XPS-15-9560:/tmp/.ICE-unix/47162","INVOCATION_ID":"5c0fd2029bb34f539a9051d92add0840","npm_package_name":"@gfld/compositor-proxy-cli","XDG_MENU_PREFIX":"gnome-","LC_ADDRESS":"nl_BE.UTF-8","XDG_RUNTIME_DIR":"/run/user/1000","DISPLAY":":1","DESKTOP_STARTUP_ID":"gnome-shell/IntelliJ IDEA Ultimate 2023.2.5/47238-0-erik-XPS-15-9560_TIME62727356","LANG":"en_US.UTF-8","XDG_CURRENT_DESKTOP":"ubuntu:GNOME","LC_TELEPHONE":"nl_BE.UTF-8","XMODIFIERS":"@im=ibus","XDG_SESSION_DESKTOP":"ubuntu-xorg","XAUTHORITY":"/run/user/1000/gdm/Xauthority","LS_COLORS":"rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.swp=00;90:*.tmp=00;90:*.dpkg-dist=00;90:*.dpkg-old=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:","SSH_AGENT_LAUNCHER":"openssh","SSH_AUTH_SOCK":"/run/user/1000/keyring/ssh","PROJECT_CWD":"/home/erik/git/greenfield","SHELL":"/bin/bash","LC_NAME":"nl_BE.UTF-8","npm_package_version":"1.0.0-alpha.0","npm_lifecycle_event":"start","QT_ACCESSIBILITY":"1","GDMSESSION":"ubuntu-xorg","YARN_IGNORE_CWD":"1","GEM_HOME":"/home/erik/gems","LESSCLOSE":"/usr/bin/lesspipe %s %s","LC_MEASUREMENT":"nl_BE.UTF-8","__GIT_PROMPT_SHOW_UNTRACKED_FILES":"","GPG_AGENT_INFO":"/run/user/1000/gnupg/S.gpg-agent:0:1","GJS_DEBUG_OUTPUT":"stderr","LC_IDENTIFICATION":"nl_BE.UTF-8","QT_IM_MODULE":"ibus","PWD":"/home/erik/git/greenfield/packages/compositor-proxy-cli","BERRY_BIN_FOLDER":"/tmp/xfs-6648df37","npm_execpath":"/tmp/xfs-6648df37/yarn","XDG_CONFIG_DIRS":"/etc/xdg/xdg-ubuntu-xorg:/etc/xdg","NVM_CD_FLAGS":"","FIG_JETBRAINS_SHELL_INTEGRATION":"1","XDG_DATA_DIRS":"/usr/share/ubuntu-xorg:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop","LC_NUMERIC":"nl_BE.UTF-8","LC_PAPER":"nl_BE.UTF-8","QT_IM_MODULES":"ibus","INIT_CWD":"/home/erik/git/greenfield/packages/compositor-proxy-cli","WAYLAND_DISPLAY":"wayland-0"}"}
{time:"2023-11-13T09:52:48.288Z",name:"qalculate-gtk",msg:"Child process started."}
jpeeler commented 10 months ago

Thanks for fixing up the minor issues I found. Turns out, I believe I confused myself while working remotely and forgot that I was running the compositor proxy inside a container. So that's why it couldn't find the expected binaries. Perhaps it should be mentioned in the docs that gstreamer plugins are required and note the useful tool gst-inspect-1.0 for verifying plugin installation.

All that said I got things working! Need to play around with it a bit more.