Issues with libxcb and xcb-cursor0 with PyQt6

I am currently working on a new snap (checksumchecker) and I’ve been trying multiple avenues to get it to work. I keep running into the same error no matter what I’ve tried. I know the fix has to be simple, but I’m just not seeing it. Here’s my current yaml:

name: checksumchecker
version: '1.0'
summary: Verify and generate checksums for files on Linux
description: |
  A simple GUI application to verify and generate checksums for files on Linux
grade: stable
confinement: strict
license: MIT
base: core24
compression: lzo

website: https://github.com/kz6fittycent/checksum_checker
contact: https://github.com/kz6fittycent/checksum_checker/issues
issues: https://github.com/kz6fittycent/checksum_checker/issues
source-code: https://github.com/kz6fittycent/checksum_checker
icon: snap/gui/checksum_checker.png
donation: https://www.patreon.com/kz6fittycent

platforms:
  amd64:
    build-on: [amd64]
    build-for: [amd64]
    
apps:
  checksumchecker:
    command: checksum_checker
    extensions:
      - kde-neon-6
    environment:
      LC_ALL: C.UTF-8
      LANG: C.UTF-8
      PYTHONPATH: $SNAP/lib/python3.12/site-packages
      LD_LIBRARY_PATH: $SNAP/usr/lib:$SNAP/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$SNAP/kde-neon-6/lib:$SNAP/kde-neon-6/lib/x86_64-linux-gnu:$SNAP/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
    plugs:
      - home
      - removable-media
      - desktop
      - desktop-legacy
      - network
      - wayland
      - x11
      - unity7

parts:
  checksumchecker:
    source: https://github.com/kz6fittycent/checksum_checker
    source-type: git
    plugin: python
    python-packages: 
      - PyQt6==6.9.1
    build-packages:
      - libxcb-cursor0
      - libxcb-xinerama0
    stage-packages:
      - libxcb-cursor0
      - libxcb-xinerama0

  launcher:
    plugin: dump
    source: scripts

Here’s the error I get, no matter what I do (including adding scriptlets to try and force the snap to see the binaries in staging):

snap run checksumchecker
Warning: Schema “org.gnome.system.locale” has path “/system/locale/”.  Paths starting with “/apps/”, “/desktop/” or “/system/” are deprecated.
Warning: Schema “org.gnome.system.proxy” has path “/system/proxy/”.  Paths starting with “/apps/”, “/desktop/” or “/system/” are deprecated.
Warning: Schema “org.gnome.system.proxy.http” has path “/system/proxy/http/”.  Paths starting with “/apps/”, “/desktop/” or “/system/” are deprecated.
Warning: Schema “org.gnome.system.proxy.https” has path “/system/proxy/https/”.  Paths starting with “/apps/”, “/desktop/” or “/system/” are deprecated.
Warning: Schema “org.gnome.system.proxy.ftp” has path “/system/proxy/ftp/”.  Paths starting with “/apps/”, “/desktop/” or “/system/” are deprecated.
Warning: Schema “org.gnome.system.proxy.socks” has path “/system/proxy/socks/”.  Paths starting with “/apps/”, “/desktop/” or “/system/” are deprecated.
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vkkhrdisplay, vnc, wayland-egl, wayland, xcb.

Aborted (core dumped)

ANY help is much appreciated!

This may be a bit counter-intuitive, but don’t use kde extensions but gnome extensions.

QT applications are basically a pain, there are a lot of environment variables and dependencies to deal with, you can refer to this i made.

1 Like

I got it fixed - thanks. I almost went back to gnome but stuck it out, and got some help from @kenvandine and @Lin-Buo-Ren on a side-chat.

It turned out (maybe) to be the LD_LIBRARY_PATH causing the issue, or it was the version of PyQt6 I was using. I happened to both downgrade the version and change the paths in the same commit, and it worked. :stuck_out_tongue:

At this point, it’s up and running and published. I will circle back around to add some tweaks to this snap as time progresses, but for now, I need to lick my wounds.