自编译OpenWrt环境下LxTerminal窗口异常的调试方法咨询
Alright, let's tackle this LXTerminal headache you're dealing with in your custom OpenWrt x86_64 build. The mix of no title bar, unresizable/movable windows, and that annoying GtkScrolledWindow resize error points to a few key areas to investigate. Here's a step-by-step debugging plan to get to the bottom of it:
1. Start with Window Manager Integration Checks
Fluxbox relies on apps sending proper window manager hints to handle decorations and resizing. If LXTerminal isn't sending those hints, fluxbox won't know to render a title bar or let you move/resize it.
- First, test another GTK3 app (like
gtk3-demo, if you included it in your build) to see if it has the same problem. If it does, the issue is with your GTK3/fluxbox setup, not LXTerminal specifically. - Check if you have
gtk3-nocsdinstalled. A lot of GTK3 apps try to use client-side decorations (CSD) which don't play nice with fluxbox—disabling CSD forces them to use the window manager's decorations instead. - Grab
xprop(from xorg-utils, if you have it) and click on the LXTerminal window. Look for properties likeWM_NAME,WM_HINTS, and_NET_WM_WINDOW_TYPE. If these are missing or wonky, fluxbox doesn't recognize it as a managed window.
2. Dig Into the GtkScrolledWindow Error
That runtime warning about gtk_widget_queue_resize() during size_allocate() usually means a widget is trying to resize itself while the window is already in the process of being sized—this can cause layout loops or breaks.
- Launch LXTerminal with GTK debug logging enabled to get more context:
Flip through the log for repeated resize-related messages or stack traces around the error—this should point to which specific widget is misbehaving.GTK_DEBUG=all lxterminal 2>&1 | tee lxterminal_debug.log - Double-check your GTK3 build for any custom patches. Sometimes OpenWrt patches can inadvertently break GTK's internal sizing logic. Compare your gtk3 package config with the upstream OpenWrt feed to see if any patches are out of place or causing issues.
3. Verify LXTerminal's Build Configuration
LXTerminal has a handful of dependencies that might be missing or misconfigured in your build:
- Make sure all required dependencies are compiled in:
vte3,gtk3,glib2,pango,cairo. Missing any of these can lead to broken window behavior. - Confirm LXTerminal was built with
--enable-gtk3(it should be, given your GTK3 setup) and that there were no build errors. Check your build logs for lines like "checking for GTK3..." to ensure it picked up the correct version. - Try re-compiling LXTerminal with verbose output to catch any missing flags or warnings:
make package/feeds/packages/lxterminal/compile V=s
4. Rule Out Fluxbox as the Culprit
To confirm if fluxbox is the issue, install a lightweight alternative like openbox (if available in your feeds) and launch LXTerminal from it. If the window works correctly (has a title bar, resizable), then the problem is with fluxbox's configuration or its interaction with GTK3.
- For fluxbox, check your
~/.fluxbox/initfile. Make suresession.screen0.windowDecorations: allis set to allow decorations for all windows. - Also, look in
~/.fluxbox/appsfor any rules targetinglxterminalthat might be hiding the title bar or locking window size.
5. Try Updating or Rolling Back Components
Sometimes version mismatches or outdated code cause these kinds of issues:
- Your LXTerminal version (0.3.2) is pretty old (released in 2017). If possible, try updating to a newer version (like 0.4.0 or later) in your build feeds—upstream might have fixed the resize bug already.
- Similarly, check if there are newer backported patches for gtk3-3.22.21 in OpenWrt. Sometimes upstream fixes applied to older versions can resolve layout glitches.
内容的提问来源于stack exchange,提问作者Bill Ross

