ch11ng / exwm

Emacs X Window Manager
2.85k stars 134 forks source link

Floating window fails to dock with EXWM #252

Closed QiangF closed 5 years ago

QiangF commented 7 years ago

That happens to the 3D CAD software ug NX 11. It uses libmotif4 to draw the interface, generating a lot of small windows in the tint2 taskbar when NX is in focus. Those small windows docks nicely in openbox, like in the following figure. nx_in_openbox

Those small windows fails to stick together in EXWM. Each one has a modeline and scatters around. nx_in_exwm_1

QiangF commented 7 years ago

I can get around this by using Xephyr. Xephyr buffer looks like any other floating window, but the input method (chinese-pyim) and keyboard short cut don't work.

ch11ng commented 7 years ago

EXWM only provides limited support for motif currently. I believe ug is a proprietary software so I can't try it myself. Could you list the properties of those X windows with the xprop tool?

QiangF commented 7 years ago

The main window always stay whether it is of focus or not, the other windows only appear when the main window is in focus, so I guess the main window redraws the mall windows each time the focus switches to it, and upon redrawing the small windows position changes back to the default position. The xprop output of the main window is:

_NET_WM_ICON_GEOMETRY(CARDINAL) = 1734, 5, 102, 20
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x0, 0x24, 0x71, 0x80, 0x2, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 
0x5, 0x0, 0x0, 0x66, 0x3, 0x1, 0x47, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0, 0x5, 0x0, 0x0, 0x66, 0x3, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 
0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xb4, 0x1, 0x38, 0x2, 0x29, 0x0, 0x39, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x
0, 0x0, 0x4a, 0x3, 0xdc, 0x3, 0x1e, 0x0, 0x2f, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x22, 0x3, 0x33, 0x3, 0x10, 0x43, 0x2, 0x
0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x8, 0x0, 0x95, 0x0, 0x86, 0x0, 0x96, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 
0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xad, 0x0, 0x43, 0x1, 0x86, 0x0, 0x96, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x7e, 0x0, 0x8
f, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x7e, 0x0, 0x8f, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0
xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x7e, 0x0, 0x8f, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
0x92, 0x0, 0x7e, 0x0, 0x8f, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x7e, 0x0, 0x8f, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 
0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x7e, 0x0, 0x8f, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2
, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x7e, 0x0, 0x8f, 0x0, 0x21, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f, 0x6f, 0xfe, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x
0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x0, 0x0, 0x11, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0
x0, 0x0, 0x92, 0x0, 0x0, 0x0, 0x11, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x0, 0x0, 0x11, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x0, 0x0, 0x11, 0x0, 0x11, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0
, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x0, 0x0, 0x11, 0x0                                                                                                                                                                                
_NET_WM_DESKTOP(CARDINAL) = 1
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
WM_CLIENT_LEADER(WINDOW): window id # 0x2400058
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "ugnx11", "Ugnx11"
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                Initial state is Normal State.
                bitmap id # to use for icon: 0x2400327
                bitmap id # of mask for icon: 0x2400329
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                program specified location: 312, 105
                program specified size: 2496 by 840
                window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "debian"
WM_ICON_NAME(STRING) = "NX 11"
WM_NAME(STRING) = "NX 11 - Modeling"

Two other windows that sticks together as tabs in a common area when managed by openbox. One is "assembly navigator":

_NET_WM_ICON_GEOMETRY(CARDINAL) = 2562, 5, 101, 20
_NET_WM_STATE(ATOM) = 
_NET_WM_DESKTOP(CARDINAL) = 1
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0xe8, 0x1, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x1
, 0x0, 0x0, 0x70, 0x2, 0x50, 0x43, 0x5, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x13, 0x1, 0x34, 0x2, 0x36, 0x2, 0x2, 0x0, 0x13, 0x1, 0x6c, 0x2, 0x6e, 0x2, 0x50,
0x43, 0x6, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x36, 0x2, 0x6e, 0x2, 0x11, 0x1, 0x13, 0x1, 0x36, 0x2, 0x6e, 0x2, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0
x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0, 0x28, 0x0, 0x10, 0x47, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x1, 0x0, 0x0, 0x1, 0x0, 0x50, 0x43, 0x7, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xb1, 0xff, 0xa8, 0x0, 0x52, 0x2, 0x54, 0x2, 0xb1, 0x
ff, 0xa8, 0x0, 0xa, 0x3, 0xc, 0x3, 0x50, 0x43, 0x8, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xb0, 0xff, 0xb2, 0xff, 0x53, 0x2, 0xc, 0x3, 0xa6, 0x0, 0xa8, 0x0, 0x53, 0x2, 0
xc, 0x3, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xe, 0x0, 0x36, 0x0, 0x6e, 0x2, 0x96, 0x2, 0x10, 0x47, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 
0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xe, 0x0, 0x4c, 0x0, 0x6e, 0x2, 0x6f, 0x2, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0
, 0x28, 0x0, 0x0, 0x0, 0x28, 0x0, 0x10, 0x47, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x1, 0x0, 0x0, 0x2e, 0x2, 0x30, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x
0, 0x0, 0x0, 0x8f, 0x6f, 0xfe, 0x7f, 0x0, 0x0, 0xb0, 0xff, 0xa9, 0x0, 0xd, 0x3, 0x20, 0x3, 0x30, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f, 0x6f, 0xfe, 0x7f, 0x0, 0x0, 0xa9, 0x0, 0xbc, 0x0, 0x52, 0x2, 0xd, 0x3, 0x30, 0x0, 0x0, 0x0,
0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f, 0x6f, 0xfe, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x15, 0x1, 0x70, 0x2, 0x83, 0x2, 0x31, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f, 0x6f, 0xfe, 0x7f, 0x0, 0x0, 0x15, 0x1, 0x28, 0x1, 0x34, 0x2, 0x70, 0x2   
WM_TRANSIENT_FOR(WINDOW): window id # 0x24000db
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x7, 0x26, 0xe, 0x0, 0x0
WM_CLIENT_LEADER(WINDOW): window id # 0x2400058
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "Assembly Navigator", "Ugnx11"
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                Initial state is Normal State.
                window id # of group leader: 0x24000db
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                program specified location: 1712, 160
                program specified size: 277 by 624
                program specified maximum size: 3120 by 1050
                window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "debian"
WM_NAME(STRING) = "Assembly Navigator"

the other is "constraint navigator":

_NET_WM_ICON_GEOMETRY(CARDINAL) = 2665, 5, 101, 20
_NET_WM_STATE(ATOM) = 
_NET_WM_DESKTOP(CARDINAL) = 1
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0xe8, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x1
, 0x0, 0x0, 0x84, 0x2, 0x50, 0x43, 0x1b, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x62, 0x0, 0x0, 0x0, 0x2, 0x0, 0x2, 0x0, 0x62, 0x0, 0x60, 0x0, 0x62, 0x0, 0x50, 
0x43, 0x1c, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x2, 0x0, 0x62, 0x0, 0x60, 0x0, 0x62, 0x0, 0x2, 0x0, 0x62, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0
, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0, 0x28, 0x0, 0x10, 0x47, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x
2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x1, 0x0, 0x0, 0x84, 0x2, 0x30, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f, 0x6f, 0xfe, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x6c, 0x0, 0x64, 0x0, 0x77, 0x0, 0x31, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x8f, 0x6f, 0xfe, 0x7f, 0x0, 0x0, 0x64, 0x0, 0x77, 0x0, 0x0, 0x0, 0x6c, 0x0                                                                                                                                                                   
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE
WM_TRANSIENT_FOR(WINDOW): window id # 0x24000db
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x7, 0x26, 0xe, 0x0, 0x7ff4
WM_CLIENT_LEADER(WINDOW): window id # 0x2400058
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "Constraint Navigator", "Ugnx11"
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                Initial state is Normal State.
                window id # of group leader: 0x24000db
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                program specified location: 1712, 160
                program specified size: 277 by 624
                program specified maximum size: 3120 by 1050
                window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "debian"
WM_NAME(STRING) = "Constraint Navigator"

As a comaprison, I have the xprop of xterm:

_NET_WM_ICON_GEOMETRY(CARDINAL) = 1830, 5, 94, 20
_NET_WM_DESKTOP(CARDINAL) = 1
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW
_NET_WM_PID(CARDINAL) = 5447
WM_CLIENT_LEADER(WINDOW): window id # 0x300000d
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "xterm", "XTerm"
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                Initial state is Normal State.
                bitmap id # to use for icon: 0x300001b
                bitmap id # of mask for icon: 0x300001d
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                program specified size: 484 by 316
                program specified minimum size: 10 by 17
                program specified resize increment: 6 by 13
                program specified base size: 4 by 4
                window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "debian"
WM_COMMAND(STRING) = { "xterm" }
WM_ICON_NAME(STRING) = "xterm"
WM_NAME(STRING) = "xterm"

A comparison of the "constraint navigator" and "xterm" shows that properties unique to "constrain navigator" are:

_NET_WM_STATE(ATOM) = 
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO)
WM_TRANSIENT_FOR(WINDOW): window id # 0x24000db
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x7, 0x26, 0xe, 0x0, 0x7ff4
WM_HINTS(WM_HINTS):
WM_NORMAL_HINTS(WM_SIZE_HINTS):

properties unique to "xterm" is:

WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW
_NET_WM_PID(CARDINAL) = 5447
WM_HINTS(WM_HINTS):
WM_NORMAL_HINTS(WM_SIZE_HINTS):
WM_COMMAND(STRING) = { "xterm" }
WM_ICON_NAME(STRING) = "xterm"
QiangF commented 7 years ago

There are more problems. Some times click "OK" on the dialogue box doesn't close it, I need to type "enter", some options are not selectable, like the following(dialogue box in openbox), I can't change the journal language to python, and OK buttons are grayed out. But it works in openbox.

img_2017_04_26__09_58_36

Just used xprop on the window when run in openbox and Xephyr. Ug NX appears as a single window on tint2 taskbar. The xprop output of the main window is:

_NET_WM_ICON_GEOMETRY(CARDINAL) = 196, 5, 140, 20
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x70, 0x1, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7e, 0x4, 0x0, 0x0, 0xb3, 0x2, 0x1, 0x47, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7e, 0x4, 0x0, 0x0, 0xb3, 0x2, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x1e, 0x0, 0x2f, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x7e, 0x4, 0x58, 0x0, 0x59, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x58, 0x0, 0x69, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x58, 0x0, 0x69, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x58, 0x0, 0x69, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x58, 0x0, 0x69, 0x0, 0x11, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x58, 0x0, 0x69, 0x0, 0x21, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x7e, 0x4, 0x94, 0x2, 0x95, 0x2, 0x21, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x94, 0x2, 0x95, 0x2, 0x11, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x94, 0x2, 0xa5, 0x2
WM_STATE(WM_STATE):
        window state: Normal
        icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_MOVE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _OB_WM_ACTION_UNDECORATE
_KDE_NET_WM_FRAME_STRUT(CARDINAL) = 1, 1, 28, 5
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 28, 5
_NET_WM_STATE(ATOM) = 
_NET_WM_ICON(CARDINAL) =    Icon (48 x 48):

    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  
    ▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒  
    ▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒  
    ▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒  
    ▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒  
    ▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒  
    ▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒  
    ▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒  
    ▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒  
    ▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒  
    ▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒  
    ▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒  
    ▒                                          ▒  
    ░                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ▒                                          ▒  
    ░                                          ▒  
    ░                                          ▒  
    ░                                          ░  
    ░                                          ▒  
    ▒                                          ▒  
    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  
    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  
    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  
    ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  
        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░    

_OB_APP_TYPE(UTF8_STRING) = "normal"
_OB_APP_TITLE(UTF8_STRING) = "NX 11"
_OB_APP_GROUP_CLASS(UTF8_STRING) = "Ugnx11"
_OB_APP_GROUP_NAME(UTF8_STRING) = "ugnx11"
_OB_APP_CLASS(UTF8_STRING) = "Ugnx11"
_OB_APP_NAME(UTF8_STRING) = "ugnx11"
_OB_APP_ROLE(UTF8_STRING) = 
_NET_WM_VISIBLE_ICON_NAME(UTF8_STRING) = "NX 11"
_NET_WM_VISIBLE_NAME(UTF8_STRING) = "NX 11 -  "
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
WM_CLIENT_LEADER(WINDOW): window id # 0x600056
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "ugnx11", "Ugnx11"
WM_HINTS(WM_HINTS):
        Client accepts input or input focus: True
        Initial state is Normal State.
        bitmap id # to use for icon: 0x600324
        bitmap id # of mask for icon: 0x600326
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified location: 144, 90
        program specified size: 1152 by 720
        window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "debian"
WM_ICON_NAME(STRING) = "NX 11"
WM_NAME(STRING) = "NX 11 -  "

The xprop when I click on the docking area is the same as the main window. The xprop of one window that has an icon on the docking area is:

_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x4, 0x3, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0xc8, 0x1, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x1, 0x0, 0x0, 0x1e, 0x2, 0x50, 0x43, 0x2d, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x13, 0x1, 0xc8, 0x1, 0xca, 0x1, 0x2, 0x0, 0x13, 0x1, 0x1a, 0x2, 0x1c, 0x2, 0x50, 0x43, 0x2e, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xca, 0x1, 0x1c, 0x2, 0x11, 0x1, 0x13, 0x1, 0xca, 0x1, 0x1c, 0x2, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0, 0x28, 0x0, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xc, 0x0, 0xd, 0x0, 0xed, 0x1, 0x4, 0x2, 0x10, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xe, 0x0, 0x36, 0x0, 0x23, 0x2, 0x4b, 0x2, 0x10, 0x47, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xe, 0x0, 0xd2, 0x0, 0x23, 0x2, 0x7d, 0x3, 0x50, 0x43, 0x2f, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xb1, 0xff, 0xa8, 0x0, 0x24, 0x2, 0x26, 0x2, 0xb1, 0xff, 0xa8, 0x0, 0xdc, 0x2, 0xde, 0x2, 0x50, 0x43, 0x30, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xb0, 0xff, 0xb2, 0xff, 0x25, 0x2, 0xde, 0x2, 0xa6, 0x0, 0xa8, 0x0, 0x25, 0x2, 0xde, 0x2, 0x10, 0x47, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15, 0x1, 0x0, 0x0, 0xc2, 0x1, 0x30, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0xb0, 0xff, 0xa9, 0x0, 0xdf, 0x2, 0xf2, 0x2, 0x30, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0xa9, 0x0, 0xbc, 0x0, 0x24, 0x2, 0xdf, 0x2, 0x30, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x15, 0x1, 0x1e, 0x2, 0x31, 0x2, 0x31, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0x15, 0x1, 0x28, 0x1, 0xc8, 0x1, 0x1e, 0x2
WM_STATE(WM_STATE):
        window state: Normal
        icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_MOVE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _OB_WM_ACTION_UNDECORATE
_KDE_NET_WM_FRAME_STRUT(CARDINAL) = 1, 1, 28, 5
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 28, 5
_NET_WM_STATE(ATOM) = _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_SKIP_PAGER
_OB_APP_TYPE(UTF8_STRING) = "dialog"
_OB_APP_TITLE(UTF8_STRING) = "Reuse Library"
_OB_APP_GROUP_CLASS(UTF8_STRING) = "Ugnx11"
_OB_APP_GROUP_NAME(UTF8_STRING) = "ugnx11"
_OB_APP_CLASS(UTF8_STRING) = "Ugnx11"
_OB_APP_NAME(UTF8_STRING) = "Reuse Library"
_OB_APP_ROLE(UTF8_STRING) = 
_NET_WM_VISIBLE_ICON_NAME(UTF8_STRING) = "Reuse Library"
_NET_WM_VISIBLE_NAME(UTF8_STRING) = "Reuse Library"
WM_TRANSIENT_FOR(WINDOW): window id # 0x6000d9
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x7, 0x26, 0xe, 0x0, 0x0
WM_CLIENT_LEADER(WINDOW): window id # 0x600056
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "Reuse Library", "Ugnx11"
WM_HINTS(WM_HINTS):
        Client accepts input or input focus: True
        Initial state is Normal State.
        window id # of group leader: 0x6000d9
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified location: 177, 207
        program specified size: 277 by 542
        program specified maximum size: 1440 by 900
        window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "debian"
WM_NAME(STRING) = "Reuse Library"

The drawing area has no icon in the docking area, its xprop is

_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0xe0, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x46, 0x3, 0x0, 0x0, 0x1e, 0x2, 0x10, 0x47, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x46, 0x3, 0x0, 0x0, 0x8, 0x2, 0x21, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x46, 0x3, 0x8, 0x2, 0x1e, 0x2, 0x50, 0x43, 0x5, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x62, 0x0, 0x8, 0x2, 0xa, 0x2, 0x2, 0x0, 0x62, 0x0, 0x68, 0x2, 0x6a, 0x2, 0x50, 0x43, 0x6, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcc, 0xcc, 0xcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xa, 0x2, 0x6a, 0x2, 0x60, 0x0, 0x62, 0x0, 0xa, 0x2, 0x6a, 0x2, 0x30, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x6c, 0x0, 0x8, 0x2, 0x1b, 0x2, 0x31, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x46, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x8, 0x2, 0x74, 0x2
WM_COLORMAP_WINDOWS(WINDOW): window id # 0x6000eb, 0x6000d9
WM_STATE(WM_STATE):
        window state: Normal
        icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_STATE(ATOM) = _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_SKIP_PAGER
_NET_WM_VISIBLE_ICON_NAME(UTF8_STRING) = "No Part"
_NET_WM_VISIBLE_NAME(UTF8_STRING) = "No Part"
_MOTIF_WM_MENU(STRING) = "PNG\\ Image f.send_msg 479\nJPEG\\ Image f.send_msg 480\nTIFF\\ Image f.send_msg 481\nCompressed\\ TIFF\\ Image f.send_msg 482\nGIF\\ Image f.send_msg 483\nXWD\\ Image f.send_msg 484\nNext\\ In\\ Sequence f.send_msg 485"
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_MOVE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _OB_WM_ACTION_UNDECORATE
_KDE_NET_WM_FRAME_STRUT(CARDINAL) = 1, 1, 28, 5
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 28, 5
_OB_APP_TYPE(UTF8_STRING) = "dialog"
_OB_APP_TITLE(UTF8_STRING) = "No Part"
_OB_APP_GROUP_CLASS(UTF8_STRING) = "Ugnx11"
_OB_APP_GROUP_NAME(UTF8_STRING) = "ugnx11"
_OB_APP_CLASS(UTF8_STRING) = "Ugnx11"
_OB_APP_NAME(UTF8_STRING) = "gw"
_OB_APP_ROLE(UTF8_STRING) = 
WM_TRANSIENT_FOR(WINDOW): window id # 0x600056
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET, _UGII_IMAGE_1, _UGII_IMAGE_2, _UGII_IMAGE_3, _UGII_IMAGE_4, _UGII_IMAGE_5, _UGII_IMAGE_6, _UGII_IMAGE_NEXT
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x7, 0x6, 0xe, 0x0, 0x0
WM_CLIENT_LEADER(WINDOW): window id # 0x600056
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "gw", "Ugnx11"
WM_HINTS(WM_HINTS):
        Client accepts input or input focus: True
        Initial state is Normal State.
        window id # of group leader: 0x600056
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified location: 454, 207
        program specified size: 838 by 542
        program specified minimum size: 100 by 100
        program specified maximum size: 1440 by 900
        window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "debian"
WM_NAME(STRING) = "No Part"
ch11ng commented 7 years ago

The problem is that EXWM should not manage the "small windows". But I can't find out what criteria should be used here. The following properties might be relevant:

1.

_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x7, 0x26, 0xe, 0x0, 0x0 _MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x7, 0x26, 0xe, 0x0, 0x7ff4

0xe here means showing titles, borders and resize handles only. I haven't figure out the meaning of 0x7ff4 yet.

2.

_NET_WM_STATE(ATOM) = _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_SKIP_PAGER

These properties weren't present when the X windows were managed by EXWM. Perhaps it's because EXWM does not declare the support for them. You may try comment out these lines and see if they would appear.

QiangF commented 7 years ago

I have deleted all .elc file and changed these two lines in ~/.emacs.d/elpa/exwm-0.14/. Then did a exwm-restart. But the problem still exists. But I did see in the main window, where those small window docks, docking icon appeared for a moment and then disappear, small windows pop up, those small windows can't be killed, when I try to kill them, the position that used to show its icon flashes and soon the small window first disappears then pops up in another position.

ch11ng commented 7 years ago

I think we need more info. Please run the following script at various cases and upload the outputs.

#!/bin/sh

xwininfo_output="$(xwininfo -root -tree)"

echo '>>> XWININFO <<<'
echo "$xwininfo_output"
echo

for id in $(echo "$xwininfo_output" | \
                grep -o '^\s*0x[0-9a-f]\+' | \
                sed -e 's/^\s*//'); do
    echo ">>> XPROP $id <<<"
    xprop -id "$id"
    echo
done
QiangF commented 6 years ago

@ch11ng Running UG NX in xnest can't use hardware acceleration and freezes sometimes. I have to get this to work. The output for your script for two cases are:

  1. when nx in hidden, and there is only one icon on the task bar (tint2). https://gist.github.com/QiangF/84c1601b586c281a009aeeddc899480e The task bar looks like this img_2018_10_16__22_10_03
  2. when nx is shown. https://gist.github.com/QiangF/bc6fbce984614dffac567b5f8ef66fd0
ch11ng commented 6 years ago

I checked a few nx windows and should say the property combinations chosen are kind of strange. Let's take one of the X window (the "Role" window) for instance. Its properties are set as:

>>> XPROP 0x3e006a0 <<<
_NET_WM_DESKTOP(CARDINAL) = 0
WM_STATE(WM_STATE):
        window state: Normal
        icon window: 0x0
_NET_WM_STATE(ATOM) = 
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x4, 0xcd, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0xcd, 0xb0, 0x48, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f, 0x1, 0x0, 0x0, 0x66, 0x3, 0x11, 0x43, 0x2, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x8, 0x0, 0x2b, 0x1, 0x9, 0x0, 0x1d, 0x0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE
_NET_WM_ICON_GEOMETRY(CARDINAL) = 1271, 5, 138, 20
WM_TRANSIENT_FOR(WINDOW): window id # 0x3e00058
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x7, 0x26, 0xe, 0x0, 0x0
WM_CLIENT_LEADER(WINDOW): window id # 0x3e00058
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "Roles", "Ugnx12"
WM_HINTS(WM_HINTS):
        Client accepts input or input focus: True
        Initial state is Normal State.
        window id # of group leader: 0x3e00058
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified location: 32, 127
        program specified size: 399 by 870
        program specified maximum size: 1920 by 1080
        window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "debian"
WM_NAME(STRING) = "Roles"

This X window does not have _NET_WM_WINDOW_TYPE set while having:

WM_TRANSIENT_FOR(WINDOW): window id # 0x3e00058

According to EWMH this combination basically means this is a 'dialog window'. As a result, EXWM treats it as a floating X window (which I suppose is not what nx wants).

Besides this X window has:

_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x7, 0x26, 0xe, 0x0, 0x0

Part of this property means this X windows has 'border', 'resize' and 'title' GUI elements. I wonder how could they be created if this X windows is not managed by a WM.

Please try my script on openbox. It might give us some insights on how to deal with such X window.

QiangF commented 6 years ago

After open NX in openbox in a Xephyr window, it also has some floating windows to select create or open file, but when I create a new model, everything looks nice, the panels (smaller windows) are all docked as tabs in a bar, those smaller windows occupies the same area, click on the corresponding button on the docking panel and the window is shown.

But when I click create new model, I can see the docking bar shows the docking icons for smaller windows for just a moment, the the docking bar is gone and I left with a bunch of smaller windows floating around.

So the outputs below are all after I create a new model step (windows may be different from the last replay).

Script output in openbox is https://gist.github.com/QiangF/5529da737eab6010d1e5d4e49f7cba21 Script output in exwm is https://gist.github.com/QiangF/3f7e1f8d48a6624f4d0e7b12eb809aef

ch11ng commented 5 years ago

TBH I have not found anything reasonable to treat these X windows specially. I'm not quite sure how openbox handles this but it seems they are not managed there. So I'm considering making it configurable for users to blacklist X windows, but I have to prove that first. So please make a change to your EXWM installation by inserting a line into exwm-manage.el (see the snippet below) and see if there is anything different.

      (when (or
             ;; >>> Below is what to insert.
             (and (= exwm-class-name "Ugnx12") (cl-member exwm-instance-name '("HD3D Tools" "Roles" "History" "Web Browser" "Reuse Library" "Assembly Navigator") :test #'equal))
             ;; <<<
             (not
              (or (not exwm-window-type)
                  (memq xcb:Atom:_NET_WM_WINDOW_TYPE_UTILITY exwm-window-type)
                  (memq xcb:Atom:_NET_WM_WINDOW_TYPE_DIALOG exwm-window-type)
                  (memq xcb:Atom:_NET_WM_WINDOW_TYPE_NORMAL exwm-window-type)))
QiangF commented 5 years ago

Since there are some instances not in your list, I modified it and changed the function exwm-manage--manage-window. Now the small windows are not managed by exwm, but still the docking panel only show for an instance and then gone. These small windows still scatters around and stops responding to window movement.

  (when (or
         (and (string= exwm-class-name "Ugnx12")
              (not (string= exwm-instance-name "ugnx12")))
         ;; <<<
         (not
          (or (not exwm-window-type)
              (memq xcb:Atom:_NET_WM_WINDOW_TYPE_UTILITY exwm-window-type)
              (memq xcb:Atom:_NET_WM_WINDOW_TYPE_DIALOG exwm-window-type)
              (memq xcb:Atom:_NET_WM_WINDOW_TYPE_NORMAL exwm-window-type)))
ch11ng commented 5 years ago

So should they be managed? If this is the case then they will make requests to move themselves. Please refer to the wiki to turn on exwm-debug and make a log when you interact with ug.

QiangF commented 5 years ago

When I add these small window to no manage list with :

  ;; No need to manage (please check OverrideRedirect outside)
  (when (or
        ;; <<<
        (and (string= exwm-class-name "Ugnx12")
            (not (string= exwm-instance-name "ugnx12")))
        ;; <<<

The debug buffer is : https://gist.github.com/QiangF/9e6cf8579fd713cc5226167773c0e697 I just start ug in a terminal and then is the greeting layout, after that I go to the modeling part and create a new model. There are two noticable abnormal behaviour :

  1. the docking icons did show for a very short period, I think the docking icons is on a small window, and it must have detect something so it commit suicide.
  2. In the pull down menu, different window layout is all grayed out.
QiangF commented 5 years ago

At the moment that the dock is shown, I quickly click on the icon, and for my surprise, I successfull get some of the icons and the dock bar. I can swith by click on these buttons. See img_2018_11_09__10_32_44 I think I did not click fast enough, so still some small windows are not on the dock bar. When I switch buffer and get back to ug, the dock area is blank, but I can bring the small windows out by click on the icons. img_2018_11_09__10_30_24 Anoter issue is I can not type in the pop out windows, but the mouse click is working. The debug buffer is https://gist.github.com/QiangF/c7ef50db39082ec12fe17b547604844c

QiangF commented 5 years ago

To be able to type in the pop out window, these window has to be managed, in that case I can't click on the dock bar fast enough, the mouse is moving round like crazy when these small windows pop out.

ch11ng commented 5 years ago

This issue has made me rethinking of the present implementation of floating X windows which seems fundamentally incompatible with certain apps/libs. I'm afraid I could not provide a fix to this problem in the short term.

QiangF commented 5 years ago

The docking issue is solve by not managing small windows. See https://github.com/ch11ng/exwm/issues/518