Conversation
Fixes: LinuxCNC#4522 Signed-off-by: Alec Ari <neotheuser@ymail.com>
|
What about the other GUIs? |
|
Good questions. The other GUIs are already covered: everything launched through the It is not actually unconditional: |
|
if gremlin has been converted to modern opengl, we dont need the dlopen hack anymore, and can use gtkglarea, which might or might not work on wayland. Background: the hack was needed, as gtkglarea cannot provide a legacy opengl context. this was a major pain during the gtk3 conversion. |
I will check what can be done for this. |
|
pncconf and gremlin are confirmed to run on Weston Wayland with #4538 and without this fix. There are other showstoppers to run on native Wayland [ for example use of GtkSocket in gmoccapy - that is X11-only, CasildaCompositor probably can help here ], but at least Gremlin is now ready for this move. |
|
What is gtksocket used for? |
AI generated: VerdictNothing in the tree runs under native Wayland by default — Only the Qt (qtvcp) family and the GTK3 GUIs without embedded tabs are close to native-capable. S1 — Hard blockers (no Wayland path exists)1. The launcher pins everything to X11Default path forces XWayland for GTK, Qt and PyOpenGL simultaneously. There is no 2. Tk/Tkinter has no Wayland backend — and it is the primary GUIAXIS is the default GUI (16 of the sim configs;
Togl specifics: 28 3. XEmbed — the entire
|
| Item | Location | Wayland behaviour |
|---|---|---|
xhost -SI:localuser:gdm -SI:localuser:root at AXIS import |
axis.py:142 | no-op / error |
| same in ngcgui | tcl/ngcgui.tcl:2762 | no-op |
xset -r <keycode> to kill autorepeat for jogging |
qt_action.py:854 | no-op; uneven jog repeat returns |
Tk detectable-autorepeat (XkbSetDetectableAutoRepeat) |
tkdarmodule.c | X-only by construction |
| Xinerama multihead query for screen layout | emcsh.cc:3584, linked -lXinerama (Submakefile:25) |
X-only |
d.warp_pointer() (touchy invisible-cursor hack) |
touchy.py:1226 | unsupported on GDK Wayland |
Absolute window placement window1.move(x, y) |
gmoccapy.py:3343, :5334, :5340, :5349, :5357; gscreen.py:1622 | ignored — no client-side positioning |
| Notification popup placement | gmoccapy/notification.py:204, :283 | ignored |
w.get_origin() for dialog placement |
gscreen.py:2387 | returns garbage/0 |
halmeter -g x y |
src/hal/utils/meter.c:316 gtk_window_move |
ignored |
QtVCP -g +x+y |
qtvcp.py:417 window.move() |
ignored |
QtVCP --always-top |
qtvcp.py:438 WindowStaysOnTopHint |
ignored (no protocol) |
Tk wm attributes -topmost / overrideredirect / +x+y |
tcl/bin/halshow.tcl:105,1201,1511, tcl/bin/popimage:79, tcl/scripts/balloon.tcl:104 |
X-only |
cv2.imshow camera windows |
set_offsets.py:275 | OpenCV highgui is X11 on Debian |
S3 — Packaging / build
debian/controlhas noqtwayland5/libqt5waylandclient5dependency →QT_QPA_PLATFORM=waylandfails on a stock install even for qtvcp.- Hard build deps on X:
AC_PATH_XTRA,X11/extensions/Xinerama.h(mandatory),X11/Xmu/Xmu.h(mandatory, error if missing) — src/configure.ac:1569, :1576, :1743. - Runtime deps:
python3-xlib,x11-xserver-utils,x11-utils,tcl8.6/tk8.6—debian/control:41,47,debian/control.main-pkg.in:24,37. - All UI tests run under
xvfb-run(tests/ui-smoke/_lib/launch.sh:61);tests/ui-smoke/_lib/window-fit.shrequiresxwininfo. There is zero Wayland test coverage in-tree.
Already Wayland-clean
- gremlin GTK preview — ported to
Gtk.GLAreaon this branch (d79f87ed67, gremlin.py:93); all GLX/Xlib/GdkX11removed, EGL via GDK. - qtvcp preview —
QOpenGLWidget(qt5_graphics.py:224). - qt_vismach —
QOpenGLWidget(qt_vismach.py:67), unlike Tk vismach. - halmeter / halscope / miscgtk — plain GTK3 C, no X calls (only the
-gplacement above). - stepconf / pncconf, gladevcp standalone (no
-x) — plain GTK3.
Minimum viable native-Wayland target
gmoccapy / touchy / gscreen / qtvcp without EMBED_TAB_* and without onboard, after: dropping the GDK_BACKEND/QT_QPA_PLATFORM force in scripts/linuxcnc.in, adding qtwayland5 to debian/control, and accepting that window placement, always-on-top and xset autorepeat become no-ops.
AXIS, tklinuxcnc, PyVCP, vismach and all XEmbed panels stay on XWayland until they are rehosted on a non-Tk toolkit and the panel system is replaced with in-process loading (GTK4/Qt) or a Wayland subsurface protocol.
Fixes: #4522