This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2goserver.

commit 40ce0b2d7cb59a94f66fd1979e72299a95b01e7d
Author: Oleksandr Shneyder <[email protected]>
Date:   Fri Aug 5 11:38:58 2022 -0500

    setting keyboard layout by agent start and resuming for kdrive sessions.
---
 debian/changelog                  |  1 +
 x2goserver/bin/x2goresume-session | 16 ++++++++++++++--
 x2goserver/bin/x2gostartagent     | 25 ++++++++++++-------------
 3 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 0e7efd72..87c17b1b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -473,6 +473,7 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium
     - Setting keyboard layout in rootless X2GoKdrive sessions.
     - x2gostartagent: save the XDMCP server in the session id.
     - x2gotermin atesession: don't terminate x2goruncommand on XDMCP sessions.
+    - setting keyboard layout by agent start and resuming for kdrive sessions.
 
   [ Orion Paplowski ]
   * New upstream version (4.1.0.4):
diff --git a/x2goserver/bin/x2goresume-session 
b/x2goserver/bin/x2goresume-session
index 3f00a24e..9b0ec35c 100755
--- a/x2goserver/bin/x2goresume-session
+++ b/x2goserver/bin/x2goresume-session
@@ -333,13 +333,25 @@ if kill -HUP "${x2go_agent_pid}" &>'/dev/null'; then
        "${x2go_lib_path}/x2goresume" "${x2go_client}" "${session_name}" 
"${gr_port}" "${sound_port}" "${fs_port}" >'/dev/null'
        "${x2go_lib_path}/x2gosyslog" "${0}" 'notice' "client ${x2go_client} 
has successfully resumed session with ID ${session_name}"
 
+       typeset x2go_display="$(cut -d '-' -f '2' <<< "${session_name}")"
        # set client-side keyboard model, type, variant, etc.
        if [[ "${set_kbd}" != '0' ]] && [[ "${kbd_type_val}" = 'auto' ]]; then
-               typeset x2go_display="$(cut -d '-' -f '2' <<< 
"${session_name}")"
                export DISPLAY=":${x2go_display}.0"
                x2gosetkeyboard "${session_name}" &>'/dev/null' &
        fi
-
+       if [[ "${set_kbd}" != '0'  &&  "${kbd_type_val}" != 'auto' ]]; then
+               typeset xkbmap="$(sed -e 's/\\//' -e 's/\// /' -e 's/(/ /'  -e 
's/)/ /'<<< "${kbd_type_val}")"
+               typeset model="$(awk '{print $1}' <<< "${xkbmap}")"
+               typeset layout="$(awk '{print $2}' <<< "${xkbmap}")"
+               typeset variant="$(awk '{print $3}' <<< "${xkbmap}")"
+               typeset xkbmap_arg="-model ${model} -layout ${layout}"
+               if [[ "${variant}" != "" ]]; then
+                       xkbmap_arg="${xkbmap_arg} -variant ${variant}"
+               fi
+               export DISPLAY=":${x2go_display}.0"
+               setxkbmap ${xkbmap_arg}
+               echo "!!!!!SETTING LAYOUT ${x2go_display} ${xkbmap_arg}  ----  
${xkbmap}  ------- ${kbd_type_val}!!!!!!"
+       fi
        # resume x2godesktopsharing, if it has been in use before the session 
got suspended
        x2gofeature 'X2GO_DESKTOPSHARING' &>'/dev/null' && 
x2goresume-desktopsharing "${session_name}" || true
 
diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent
index 24d88f64..ddf4c75b 100755
--- a/x2goserver/bin/x2gostartagent
+++ b/x2goserver/bin/x2gostartagent
@@ -262,7 +262,6 @@ for ((retry = 0; retry < max_retry; ++retry)); do
                        SESSION_NAME="${SESSION_NAME}_${X2GOXDMCP}"
                fi
 
-
                # sanitize session name
                SESSION_NAME="$(perl -pe 's/[^a-zA-Z0-9\.\_\-\@]//g' <<< 
"${SESSION_NAME}")"
 
@@ -478,6 +477,17 @@ if [[ "${X2GO_STYPE}" = 'A' ]]; then
        AGENTBIN='x2gokdrive'
 fi
 
+XKBMAP=''
+if [[ "${X2GO_SET_KBD}" != '0'  &&  "${X2GO_KBD_TYPE}" != 'auto' &&  
"${AGENTBIN}" = 'x2gokdrive'  ]]; then
+    XKBMAP="$(sed -e 's/\// /' -e 's/(/ /'  -e 's/)/ /'<<< "${X2GO_KBD_TYPE}")"
+    XKBMODEL="$(awk '{print $1}' <<< "${XKBMAP}")"
+    XKBLAYOUT="$(awk '{print $2}' <<< "${XKBMAP}")"
+    XKBVARIANT="$(awk '{print $3}' <<< "${XKBMAP}")"
+    XKBMAP="-xkb-model ${XKBMODEL} -xkb-layout ${XKBLAYOUT}"
+    if [[ "${XKBVARIANT}" != "" ]]; then
+       XKBMAP="${XKBMAP} -xkb-variant ${XKBVARIANT}"
+    fi
+fi
 
 X2GO_AGENT_PID='0'
 if [[ "${X2GO_STYPE}" = 'S' ]]; then
@@ -489,7 +499,7 @@ if [[ "${X2GO_STYPE}" = 'S' ]]; then
 else
        # set NX_TEMP to /tmp, make sure agent starts when pam_tmpdir.so is in 
use
        "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'debug' "started nxagent: 
NX_TEMP=/tmp \"${AGENTBIN}\" X2GO_NXAGENT_OPTIONS ('${X2GO_NXAGENT_OPTIONS}') 
NOLISTOPT ('${NOLISTOPT}') X2GODPIOPTION_ ('${X2GODPIOPTION_}') XDMCPPOPT 
('${XDMCPOPT}') -SESSION_TYPE ('-${SESSION_TYPE}') NOEXITPARAM 
('${NOEXITPARAM}') -auth \"XAUTHORITY\" ('\"${XAUTHORITY}\"') agent_geometry 
('${agent_geometry}') -name \"SESSION_WINDOW_TITLE\" 
('\"${SESSION_WINDOW_TITLE}\"') \"NX_AGENT\" ('\"${NX_AGENT}\"') 
2>\"SESSION_LOG\"  [...]
-       NX_TEMP='/tmp' "${AGENTBIN}" ${X2GO_NXAGENT_OPTIONS} ${NOLISTOPT} 
${X2GODPIOPTION_} ${XDMCPOPT} -${SESSION_TYPE} ${NOEXITPARAM} -auth 
"${XAUTHORITY}" ${agent_geometry} -name "${SESSION_WINDOW_TITLE}" "${NX_AGENT}" 
2>"${SESSION_LOG}" &
+       NX_TEMP='/tmp' "${AGENTBIN}" ${X2GO_NXAGENT_OPTIONS} ${NOLISTOPT} 
${X2GODPIOPTION_} ${XDMCPOPT} ${XKBMAP} -${SESSION_TYPE} ${NOEXITPARAM} -auth 
"${XAUTHORITY}" ${agent_geometry} -name "${SESSION_WINDOW_TITLE}" "${NX_AGENT}" 
2>"${SESSION_LOG}" &
 fi
 
 X2GO_AGENT_PID="${!}"
@@ -509,17 +519,6 @@ if [[ "${X2GO_SET_KBD}" = '0' ]] || [[ "${X2GO_KBD_TYPE}" 
!= 'auto' ]]; then
        mkdir -p -- "${SESSION_DIR}/keyboard"
 fi
 
-if [[ "${X2GO_SET_KBD}" != '0'  &&  "${X2GO_KBD_TYPE}" != 'auto' &&  
"${X2GO_STYPE}" = 'A'  ]]; then
-    XKBMAP="$(sed -e 's/\// /' -e 's/(/ /'  -e 's/)/ /'<<< "${X2GO_KBD_TYPE}")"
-    XKBMODEL="$(awk '{print $1}' <<< "${XKBMAP}")"
-    XKBLAYOUT="$(awk '{print $2}' <<< "${XKBMAP}")"
-    XKBVARIANT="$(awk '{print $3}' <<< "${XKBMAP}")"
-    XKBMAP="setxkbmap -model ${XKBMODEL} -layout ${XKBLAYOUT}"
-    if [[ "${XKBVARIANT}" != "" ]]; then
-       XKBMAP="${XKBMAP} -variant ${XKBVARIANT}"
-    fi
-    DISPLAY=:${X2GO_PORT} ${XKBMAP}
-fi
 
 if ps -p "${X2GO_AGENT_PID}" &>'/dev/null'; then
        "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'notice' "successfully started 
X2Go Agent session with ID ${SESSION_NAME}"

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on 
/srv/git/code.x2go.org/x2goserver.git
_______________________________________________
x2go-commits mailing list
[email protected]
https://lists.x2go.org/listinfo/x2go-commits

Reply via email to