Bug 5182

Summary: ThinLinc Client with OpenBox doesn't correctly setup multi-monitor sessions
Product: ThinLinc Reporter: Jens Maus <J.Langner>
Component: ClientAssignee: Peter Åstrand <astrand>
Status: CLOSED FIXED    
Severity: Normal CC: hean01
Priority: P2 Keywords: prosaic
Version: 4.2.0   
Target Milestone: 4.3.0   
Hardware: PC   
OS: Unknown   
Acceptance Criteria:
Attachments: log out of a thinstation 5.1 session with working multi-monitor output
log out of a thinstation 5.2 session with broken multi-monitor output

Description Jens Maus 2014-06-05 11:21:57 CEST
Created attachment 550 [details]
log out of a thinstation 5.1 session with working multi-monitor output

When using the latest Thinstation 5.2 OS (https://github.com/Thinstation/thinstation) which includes updates to Xorg 7.7 the thinstation client used (4.1.1, 4.2.0 or nightly build) will not correctly setup a multi-monitor session and presents the user with a session where only one screen is used but with double desktop size. The problem vanishes immediately when downgrading to thinstation 5.1 which uses an older Xorg environment.

The reason why I report this problem here instead of in the thinstation bug tracker is, that other applications like freerdp doesn't seem to have these kind of problem and correctly setup a multi-monitor connection with two separate screens being utilized correctly.

Please find attached two text log file summarizes where "works.txt" refers to a session with thinstation 5.1 being used together with the thinstation client (in that case 4.1.1 – however, the 4.2.0 behaves the same) and correctly setting up a multi-monitor session. This can be seen by the "remote xrandr output" section where two correctly setup VNC screens (VNC-0 and VNC-1) are shown with size 1920x1200 and being put correctly aside.

On the other hand the "broken.txt" file refers to a thinstation 5.2 session with Xorg 7.7 being used. There the "remote xrandr output" shows only one VNC screen (VNC-0) with double width size (3840x1200) causing an incorrect setup and resulting in seeing that screen being scrolled if the mouse is moved to the right edge of the screen. Please note also the "local xrandr output" section in both files which essentially show the same correct output of having two separate screens. This output was generated directly on the used thinclient (intel NUC). So looking at that output it seems both screens were correctly identified via xrandr (xinerama) but this setup is only correctly used with thinstation 5.1 (older Xorg).

Currently I am still not sure which side to blame (ThinLinc or ThinStation) so I would like to receive some advice of performing some additional debugging to actually identify the root of the problem.
Comment 1 Jens Maus 2014-06-05 11:22:42 CEST
Created attachment 551 [details]
log out of a thinstation 5.2 session with broken multi-monitor output
Comment 3 Jens Maus 2014-06-12 12:36:19 CEST
Any comments from a ThinLinc developer on this issue? As we are a paid customer I would expect some faster replies on that matter. We really need to debug that situation since we want to move to Thinstation 5.2 use soon.
Comment 4 Henrik Andersson cendio 2014-06-12 13:17:41 CEST
(In reply to comment #3)
> Any comments from a ThinLinc developer on this issue? As we are a paid customer
> I would expect some faster replies on that matter. We really need to debug that
> situation since we want to move to Thinstation 5.2 use soon.

The bug has our attention and you will get updates on this bug of our progress looking into this issue.
Comment 5 Henrik Andersson cendio 2014-06-12 13:37:50 CEST
Could you provide the configuration file for your TS5.2 image(In reply to comment #0)
> Currently I am still not sure which side to blame (ThinLinc or ThinStation) so
> I would like to receive some advice of performing some additional debugging to
> actually identify the root of the problem.

Which window manager did you select to use in you TS5.2 configuration ?

Could you provide your build.conf / thinstation.conf.buildtime for the TS5.2 ?
Comment 6 Jens Maus 2014-06-12 13:41:34 CEST
The window manager used is openbox and its configuration file can be viewed from:

https://github.com/hzdr/thinstation/blob/master/ts/5.2/packages/hzdr/etc/xdg/openbox/rc-single-app.xml

The build.conf and thinstation.conf.buildtime can be also downloaded from

https://github.com/hzdr/thinstation/tree/master/ts/5.2/conf/hzdr
Comment 7 Henrik Andersson cendio 2014-06-13 09:56:03 CEST
The issue is reproducible on Ubuntu 14.04 - Xorg 7.7, opebox 3.5.2
Comment 8 Jens Maus 2014-06-13 09:57:37 CEST
Perfect. Any suggested workaround?
Comment 9 Henrik Andersson cendio 2014-06-13 10:12:17 CEST
openbox seems to not support multihead;

prop -root | grep _NET_WM_FULLSCREEN_MONITORS

Could it be that xfwm is used as default WM in Thinstation 5.1 ?
Comment 10 Jens Maus 2014-06-13 10:22:42 CEST
Yes, xfwm is the default.

However, we currently use openbox 3.5.0 within thinstation 5.1 and perform correct multi-headed connections via ThinLinc and the openbox version there also doesn't reply to _NET_WM_FULLSCREEN_MONITORS property requests. In fact, in thinstation 5.2 also openbox 3.5.0 is still used.
Comment 11 Henrik Andersson cendio 2014-06-13 10:40:40 CEST
Could you provide output for xprop -root for both 5.1 and 5.2 ?
Comment 12 Jens Maus 2014-06-13 10:46:45 CEST
Sure.

Here for Thinstation 5.2+OpenBox (non-working multi-head):

-- cut here --
_NET_ACTIVE_WINDOW(WINDOW): window id # 0xa0000e
_NET_CLIENT_LIST(WINDOW): window id # 0xa0000e
_NET_SHOWING_DESKTOP(CARDINAL) = 0
_NET_CURRENT_DESKTOP(CARDINAL) = 0
_NET_DESKTOP_NAMES(UTF8_STRING) = "qutselect"
_NET_WORKAREA(CARDINAL) = 0, 0, 1920, 1200
_NET_DESKTOP_VIEWPORT(CARDINAL) = 0, 0
_NET_NUMBER_OF_DESKTOPS(CARDINAL) = 1
_NET_DESKTOP_GEOMETRY(CARDINAL) = 1920, 1200
_NET_CLIENT_LIST_STACKING(WINDOW): window id # 0xa0000e
_OB_THEME(UTF8_STRING) = "Clearlooks"
_OB_CONFIG_FILE(UTF8_STRING) = "/etc/xdg/openbox/rc-single-app.xml"
_OB_VERSION(UTF8_STRING) = "3.5.0"
_NET_SUPPORTED(ATOM) = _NET_SUPPORTING_WM_CHECK, _NET_WM_FULL_PLACEMENT, _NET_CURRENT_DESKTOP, _NET_NUMBER_OF_DESKTOPS, _NET_DESKTOP_GEOMETRY, _NET_DESKTOP_VIEWPORT, _NET_ACTIVE_WINDOW, _NET_WORKAREA, _NET_CLIENT_LIST, _NET_CLIENT_LIST_STACKING, _NET_DESKTOP_NAMES, _NET_CLOSE_WINDOW, _NET_DESKTOP_LAYOUT, _NET_SHOWING_DESKTOP, _NET_WM_NAME, _NET_WM_VISIBLE_NAME, _NET_WM_ICON_NAME, _NET_WM_VISIBLE_ICON_NAME, _NET_WM_DESKTOP, _NET_WM_STRUT, _NET_WM_STRUT_PARTIAL, _NET_WM_ICON, _NET_WM_ICON_GEOMETRY, _NET_WM_WINDOW_TYPE, _NET_WM_WINDOW_TYPE_DESKTOP, _NET_WM_WINDOW_TYPE_DOCK, _NET_WM_WINDOW_TYPE_TOOLBAR, _NET_WM_WINDOW_TYPE_MENU, _NET_WM_WINDOW_TYPE_UTILITY, _NET_WM_WINDOW_TYPE_SPLASH, _NET_WM_WINDOW_TYPE_DIALOG, _NET_WM_WINDOW_TYPE_NORMAL, _NET_WM_ALLOWED_ACTIONS, _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _NET_WM_STATE, _NET_WM_STATE_MODAL, _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_SHADED, _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_SKIP_PAGER, _NET_WM_STATE_HIDDEN, _NET_WM_STATE_FULLSCREEN, _NET_WM_STATE_ABOVE, _NET_WM_STATE_BELOW, _NET_WM_STATE_DEMANDS_ATTENTION, _NET_MOVERESIZE_WINDOW, _NET_WM_MOVERESIZE, _NET_WM_USER_TIME, _NET_FRAME_EXTENTS, _NET_REQUEST_FRAME_EXTENTS, _NET_RESTACK_WINDOW, _NET_STARTUP_ID, _NET_WM_SYNC_REQUEST, _NET_WM_SYNC_REQUEST_COUNTER, _NET_WM_PID, _NET_WM_PING, _KDE_WM_CHANGE_STATE, _KDE_NET_WM_FRAME_STRUT, _KDE_NET_WM_WINDOW_TYPE_OVERRIDE, _OB_WM_ACTION_UNDECORATE, _OB_WM_STATE_UNDECORATED, _OPENBOX_PID, _OB_THEME, _OB_CONFIG_FILE, _OB_CONTROL, _OB_VERSION, _OB_APP_ROLE, _OB_APP_TITLE, _OB_APP_NAME, _OB_APP_CLASS, _OB_APP_TYPE
_NET_SUPPORTING_WM_CHECK(WINDOW): window id # 0x800123
_OPENBOX_PID(CARDINAL) = 3438
_XKB_RULES_NAMES(STRING) = "evdev", "pc104", "de,us", "", "grp:sclk_toggle,grp_led:scroll"
XFree86_VT(INTEGER) = 5
-- cut here --

And here for thinstation 5.1+openbox (working multi-head):

-- cut here --
_NET_ACTIVE_WINDOW(WINDOW): window id # 0xa0000e
_NET_CLIENT_LIST(WINDOW): window id # 0xa0000e
_NET_SHOWING_DESKTOP(CARDINAL) = 0
_NET_CURRENT_DESKTOP(CARDINAL) = 0
_NET_DESKTOP_NAMES(UTF8_STRING) = "qutselect"
_NET_WORKAREA(CARDINAL) = 0, 0, 1920, 1200
_NET_DESKTOP_VIEWPORT(CARDINAL) = 0, 0
_NET_NUMBER_OF_DESKTOPS(CARDINAL) = 1
_NET_DESKTOP_GEOMETRY(CARDINAL) = 1920, 1200
_NET_CLIENT_LIST_STACKING(WINDOW): window id # 0xa0000e
_OB_THEME(UTF8_STRING) = "Clearlooks"
_OB_CONFIG_FILE(UTF8_STRING) = "/etc/xdg/openbox/rc-single-app.xml"
_OB_VERSION(UTF8_STRING) = "3.5.0"
_NET_SUPPORTED(ATOM) = _NET_SUPPORTING_WM_CHECK, _NET_WM_FULL_PLACEMENT, _NET_CURRENT_DESKTOP, _NET_NUMBER_OF_DESKTOPS, _NET_DESKTOP_GEOMETRY, _NET_DESKTOP_VIEWPORT, _NET_ACTIVE_WINDOW, _NET_WORKAREA, _NET_CLIENT_LIST, _NET_CLIENT_LIST_STACKING, _NET_DESKTOP_NAMES, _NET_CLOSE_WINDOW, _NET_DESKTOP_LAYOUT, _NET_SHOWING_DESKTOP, _NET_WM_NAME, _NET_WM_VISIBLE_NAME, _NET_WM_ICON_NAME, _NET_WM_VISIBLE_ICON_NAME, _NET_WM_DESKTOP, _NET_WM_STRUT, _NET_WM_STRUT_PARTIAL, _NET_WM_ICON, _NET_WM_ICON_GEOMETRY, _NET_WM_WINDOW_TYPE, _NET_WM_WINDOW_TYPE_DESKTOP, _NET_WM_WINDOW_TYPE_DOCK, _NET_WM_WINDOW_TYPE_TOOLBAR, _NET_WM_WINDOW_TYPE_MENU, _NET_WM_WINDOW_TYPE_UTILITY, _NET_WM_WINDOW_TYPE_SPLASH, _NET_WM_WINDOW_TYPE_DIALOG, _NET_WM_WINDOW_TYPE_NORMAL, _NET_WM_ALLOWED_ACTIONS, _NET_WM_WINDOW_OPACITY, _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _NET_WM_STATE, _NET_WM_STATE_MODAL, _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_SHADED, _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_SKIP_PAGER, _NET_WM_STATE_HIDDEN, _NET_WM_STATE_FULLSCREEN, _NET_WM_STATE_ABOVE, _NET_WM_STATE_BELOW, _NET_WM_STATE_DEMANDS_ATTENTION, _NET_MOVERESIZE_WINDOW, _NET_WM_MOVERESIZE, _NET_WM_USER_TIME, _NET_FRAME_EXTENTS, _NET_REQUEST_FRAME_EXTENTS, _NET_RESTACK_WINDOW, _NET_STARTUP_ID, _NET_WM_SYNC_REQUEST, _NET_WM_SYNC_REQUEST_COUNTER, _NET_WM_PID, _NET_WM_PING, _KDE_WM_CHANGE_STATE, _KDE_NET_WM_FRAME_STRUT, _KDE_NET_WM_WINDOW_TYPE_OVERRIDE, _OB_WM_ACTION_UNDECORATE, _OB_WM_STATE_UNDECORATED, _OPENBOX_PID, _OB_THEME, _OB_CONFIG_FILE, _OB_CONTROL, _OB_VERSION, _OB_APP_ROLE, _OB_APP_TITLE, _OB_APP_NAME, _OB_APP_CLASS, _OB_APP_TYPE
_NET_SUPPORTING_WM_CHECK(WINDOW): window id # 0x800123
_OPENBOX_PID(CARDINAL) = 3245
_XKB_RULES_NAMES(STRING) = "evdev", "evdev", "de,us", "", "grp:sclk_toggle,grp_led:scroll"
XFree86_VT(INTEGER) = 5
-- cut here --
Comment 13 Henrik Andersson cendio 2014-06-16 09:33:27 CEST
From ThinLinc client point of view, multi-monitor is only fully supported if the window manager supports EWMH and the properties; _NET_WM_ACTION_FULLSCREEN, _NET_WM_STATE_FULLSCREEN and _NET_WM_FULLSCREEN_MONITORS. This is not the case for OpenBox.

There is a corner case which I believe you see in ThinStation 5.1; if the window manager is not supporting EWMH, fltk will do an override redirect to handle multi head as good as we can. However this fallback is preventing other parts to function correctly in ThinLinc client, such as disable send of system keys etc.

Your options are to switch WM to one which has support for the above requirements, such as xfwm4 or you could try to drill down why OpenBox announce support for EWMH in TS5.2 and not in TS5.1 (probably due to some compilation flag or dependency while built).
Comment 14 Pierre Ossman cendio 2014-06-17 11:09:59 CEST
We'll report a bug with upstream that they need to add this functionality, then we'll close this bug here.
Comment 15 Jens Maus 2014-06-17 13:05:42 CEST
Ok, perfect. In the meantime I replaced openbox with a minimal setup of xfwm4 and now thinlinc works fine within a multi-monitor setup. So reporting this upstream should be really a good idea so that the openbox people can implement these extensions.

It however would also be probably a good idea to add a "Window Manager Compatibility" section to the ThinLinc administration documentation or somewhere only where you can report und which window managers the thinlinc client works best.
Comment 16 Peter Åstrand cendio 2014-07-07 13:58:17 CEST
Added upstream bug:

https://bugzilla.icculus.org/show_bug.cgi?id=6246