Hi and happy newyear !
I've no idea where I could post this. It's about OctoPi + OctoPrint + TouchUI, and X11.
I'm developping (in C/C++) a little app that is not a plugin, but is intended to run along with OctoPrint+TouchUI. I coded with X APIs a daemon that popup a window with no decorations and that shows when pushing a button hooked to the GPIO. Fine ! Until I tested it over a maximized Chromium browser displaying OctoPrint. Bummer ! My "always on top" little window was covered with Chromium, and couldn't be seen. I learned the hard way that no window can be over a full screen window ! The Raspbian window manager does not allow it. (seems silly to me, but it is so)
But it is intended to run on a RasPi with TouchUI and therefore Matchbox as window manager... And I read that matchbox allows for dialogs (with or without parent window) floating over a full screen windows (for example for virtual keyboards).
So, I tested again my app against Matchbox... No way ! X tells me permission denied or whatever, refusing to give me a display when I call XOpenDisplay() : always returns NULL. And I didn't find any totorial about Matchbox.
TouchUI launches the X srever as root. Could it be the reason why I can't get access to the screen ? But "sudo" does not help.
For now, there are two workarounds :
- writing directly to the framebuffer, bare metal. Already done. It was the first version, it works fine, but it is really dirty ! No need to explain further why...
- making my app a OctoPrint plugin. A bit too much for the little thing I made, and overcomplicated (however, I installed the dev tools and started with the tutorials ; not easy because my app relies on high speed SPI)
Could someone tell me why a Pi running OctoPi and TouchUi refuses to give me a screen when calling XOpenDisplay() ?
PS : this is not the only problem : after installing Pixel on the Pi, no more system menu bar (or dock), booting to Pixel, or starting it from a console with "sudo startx".