This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch master in repository x2goserver. from ef4bdbeb - x2gostartagent: save the XDMCP server in the session id. - x2gotermin atesession: don't terminate x2goruncommand on XDMCP sessions. new 40ce0b2d setting keyboard layout by agent start and resuming for kdrive sessions. The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: debian/changelog | 1 + x2goserver/bin/x2goresume-session | 16 ++++++++++++++-- x2goserver/bin/x2gostartagent | 25 ++++++++++++------------- 3 files changed, 27 insertions(+), 15 deletions(-) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
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 <o.shneyder@phoca-gmbh.de> 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