I’m building an embedded OS for a custom kiosk-like device using buildroot 2024.05.
The goal is to display an interactive 3d application written in Unity3d.
The reference/developement hardware I’m using is Odroid H3 with integrated graphics (the app is not very demanding).
I’ve already worked my way through setting up all the drivers and libraries, at this point I have a working Xserver with 3d acceleration via opengl and vulkan. The app itself also works fine.
What i had in mind for this project was a raw Xserver instance launching just the app, but unless i launch a window manager (fluxbox/matchbox) first unity does not receive any inputs from keyboard or mouse, there is no cursor being renered either.
Basically all relevant configs are buildroot defaults except xinitrc from which i removed launching unnecessary apps.
What i got after some experimentation:
- xinit xterm – Standard white console in top-left corner, mouse and keyboard working on it, standard black cursor.
- xinit myapp – App launches and renders just fine, no keyboard/mouse, no cursor.
With window manager in xinitrc:
- twm + myapp – There is cross-shaped cursor rendered over the app, but it cannot interact with anything, keyboard also not working.
- fluxbox + myapp – Full interaction as expected, cursor can click, keyboard can type.
- matchbox + myapp – Same as above.
All above test were done with the same configuration, the only difference is the launched apps.
I compared xorg logs, unity player logs, and dmesg between the runs and couldn’t find any meaningful differences or even a warning.
Normal ubuntu installation also works fine.
So there’s my question, what sorcery do these window managers do that enables unity to process inputs? Why does launching raw xorg result in cursor and working keyboard with xterm and not with unity? Is it possible to make xorg + unity work?
Konrad Osiński is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.