On 11/28/2013 01:46 AM, Mike Gabriel wrote:
Hi Orion,
On Do 28 Nov 2013 01:12:18 CET, Orion Poplawski wrote:
This in x2gostartagent seems wrong:
if [ "$X2GO_SET_KBD" == "0" ] || [ "$X2GO_KBD_TYPE" != "auto" ]; then $X2GO_LIB_PATH/x2gosyslog "$0" "info" "blocking creation of agent's keyboard file ${SESSION_DIR}/keyboard as requested by session startup command" mkdir -p ${SESSION_DIR}/keyboard fi
In the normal case, X2GO_SET_KBD is 1 and the type is specified as pc105/us or pc105/gb, etc. Since X2GO_KBD_TYPE != auto it does not set the keyboard setttings.
This is a bit hacky, I agree. Let me start from the beginning...
The ~/.x2go/<session>/keyboard file gets created by x2goagent. Always. It is a file containing settings for the client-side keyboard. This parameter in this file can be used to configure the session keyboard automagically.
Now, we have three different keyboard setup types (actually four):
do not do anything about keyboard setup
-> X2GO_SET_KBD = 0 -> X2GO_KBD_TYPE = null/null (or so)
set a keyboard specified in X2Go Client
-> X2GO_SET_KBD = 1 -> X2GO_KBD_TYPE = pc105/de (or so)
So, in this case, how are the keyboard settings supposed to be applied?
auto-detect client-side keyboard
-> X2GO_SET_KBD = 1 -> X2GO_KBD_TYPE = auto
Only with this third parameter combination we want the ~/.x2go/<session>/keyboard to be created by x2goagent. Best (only?) way for this is blocking the file name with a directory. x2goagent will silently stumble over this blocked directory/file name and it will not create the keyboard file.
(4. from Mac OS X you can theoretically use X2GO_KBD_TYPE = query. In X2Go Client, however, there is code that sets X2GO_KBD_TYPE=query and X2GO_SET_KBD=0, this basically disables the X2GO_KBD_TYPE=query. I tested with a Mac User on IRC lately how the effect would be if we switched this combination to X2GO_KBD_TYPE=query and X2GO_SET_KBD=1. On his setup that change worked, so I added that to the latest X2Go Server release. However, Anders has just reported a f****-up keyboard layout since the latest X2Go Server release and I suspect that that code is effecting that).
Next fact that comes into play here now is: the script x2gosetkeyboard. This script is responsible for reading the ~/.x2go/<session>/keyboard, extracting its information and running setxkbmap on the X2Go session's $DISPLAY. This, I found, is only good working well, if that x2gosetkeyboard call is evoked from x2goruncommand. However, x2goruncommand does not know about X2GO_SET_KBD and X2GO_KBD_TYPE.
Thus, I have to leave a message for x2gosetkeyboard via the x2gostartagent script. The information required is: is x2gosetkeyboard supposed to run or not. This I do with creating ~/.x2go/<session>/keyboard as a directory prior to launching x2goagent.
So, IMHO the if clause above is just selecting the described case.
I'm not sure what is trying to be done here. An earlier comparison is:
if [ "$X2GO_SET_KBD" == "0" ] || [ "$X2GO_KBD_TYPE" == "auto" ];then
X2GO_HOST="nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=$X2GO_COOKIE,errors=${SESSION_LOG},kbtype=null/null,${option_geometry}resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0"
else
X2GO_HOST="nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=$X2GO_COOKIE,errors=${SESSION_LOG},kbtype=${X2GO_KBD_TYPE},${option_geometry}resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0"
fi
This one is also correct... In this if clause we set the NX option kbtype=null/null or kbtype=${X2GO_KBD_TYPE}. We only want to set kbtype=${X2GO_KBD_TYPE}, if it is not auto and X2GO_SET_KBD is enabled. This is handled by the above quoted if-clause IMHO.
So you probably want a == auto.
Don't think so...
You may be right - we tried this and apparently it doesn't help (with both KDE and XFCE). I wonder if something in the desktop environment settings is overriding the settings.
-- Orion Poplawski Technical Manager 303-415-9701 x222 NWRA/CoRA Division FAX: 303-415-9702 3380 Mitchell Lane orion@cora.nwra.com Boulder, CO 80301 http://www.cora.nwra.com