[X2Go-Commits] [x2goserver] 01/01: setting keyboard layout by agent start and resuming for kdrive sessions.
git-admin at x2go.org
git-admin at x2go.org
Fri Aug 5 18:39:09 CEST 2022
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 at 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
More information about the x2go-commits
mailing list